Merge branch 'develop' into features/JAL-2446NCList
[jalview.git] / src / jalview / datamodel / Sequence.java
index b0faf21..5a3ffa4 100755 (executable)
@@ -22,6 +22,7 @@ package jalview.datamodel;
 
 import jalview.analysis.AlignSeq;
 import jalview.api.DBRefEntryI;
+import jalview.datamodel.features.SequenceFeatures;
 import jalview.util.Comparison;
 import jalview.util.DBRefUtils;
 import jalview.util.MapList;
@@ -81,6 +82,8 @@ public class Sequence extends ASequence implements SequenceI
   /** array of sequence features - may not be null for a valid sequence object */
   public SequenceFeature[] sequenceFeatures;
 
+  private SequenceFeatures sequenceFeatureStore;
+
   /**
    * Creates a new Sequence object.
    * 
@@ -120,6 +123,7 @@ public class Sequence extends ASequence implements SequenceI
     this.sequence = sequence2;
     this.start = start2;
     this.end = end2;
+    sequenceFeatureStore = new SequenceFeatures();
     parseId();
     checkValidRange();
   }
@@ -338,6 +342,8 @@ public class Sequence extends ASequence implements SequenceI
     temp[sequenceFeatures.length] = sf;
 
     sequenceFeatures = temp;
+
+    sequenceFeatureStore.add(sf);
     return true;
   }
 
@@ -1475,4 +1481,13 @@ public class Sequence extends ASequence implements SequenceI
     }
   }
 
+  @Override
+  public List<SequenceFeature> findFeatures(String type, int from, int to)
+  {
+    if (datasetSequence != null)
+    {
+      return datasetSequence.findFeatures(type, from, to);
+    }
+    return sequenceFeatureStore.findFeatures(type, from, to);
+  }
 }