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;
/** array of sequence features - may not be null for a valid sequence object */
public SequenceFeature[] sequenceFeatures;
+ private SequenceFeatures sequenceFeatureStore;
+
/**
* Creates a new Sequence object.
*
this.sequence = sequence2;
this.start = start2;
this.end = end2;
+ sequenceFeatureStore = new SequenceFeatures();
parseId();
checkValidRange();
}
}
@Override
- public synchronized void addSequenceFeature(SequenceFeature sf)
+ public synchronized boolean addSequenceFeature(SequenceFeature sf)
{
if (sequenceFeatures == null && datasetSequence != null)
{
- datasetSequence.addSequenceFeature(sf);
- return;
+ return datasetSequence.addSequenceFeature(sf);
}
if (sequenceFeatures == null)
{
{
if (sequenceFeatures[i].equals(sf))
{
- return;
+ return false;
}
}
temp[sequenceFeatures.length] = sf;
sequenceFeatures = temp;
+
+ sequenceFeatureStore.add(sf);
+ return true;
}
@Override
return;
}
+ /*
+ * new way
+ */
+ sequenceFeatureStore.delete(sf);
+
+ /*
+ * old way - to be removed
+ */
int index = 0;
for (index = 0; index < sequenceFeatures.length; index++)
{
}
}
+ @Override
+ public List<SequenceFeature> findFeatures(String type, int from, int to)
+ {
+ if (datasetSequence != null)
+ {
+ return datasetSequence.findFeatures(type, from, to);
+ }
+ return sequenceFeatureStore.findFeatures(from, to, type);
+ }
}