X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2Ffeatures%2FSequenceFeatures.java;fp=src%2Fjalview%2Fdatamodel%2Ffeatures%2FSequenceFeatures.java;h=d177566f887d547c22a3c27219426d647893293d;hb=51728d3951398f9c12d7017c776953f17322cc68;hp=0000000000000000000000000000000000000000;hpb=74aef94780598806be39c9c63b85c67d0b01a6e3;p=jalview.git diff --git a/src/jalview/datamodel/features/SequenceFeatures.java b/src/jalview/datamodel/features/SequenceFeatures.java new file mode 100644 index 0000000..d177566 --- /dev/null +++ b/src/jalview/datamodel/features/SequenceFeatures.java @@ -0,0 +1,60 @@ +package jalview.datamodel.features; + +import jalview.datamodel.SequenceFeature; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SequenceFeatures +{ + + /* + * map from feature type to structured store of features for that type + */ + private Map featureStore; + + /** + * Constructor + */ + public SequenceFeatures() + { + featureStore = new HashMap(); + } + + /** + * Add one sequence feature to the store + * + * @param sf + */ + public void add(SequenceFeature sf) + { + String type = sf.getType(); + if (featureStore.get(type) == null) + { + featureStore.put(type, new FeatureStore()); + } + featureStore.get(type).addFeature(sf); + } + + /** + * Returns a (possibly empty) list of features of the given type which overlap + * the (inclusive) sequence position range + * + * @param type + * @param from + * @param to + * @return + */ + public List findFeatures(String type, int from, + int to) + { + FeatureStore features = featureStore.get(type); + if (features == null) + { + return Collections.emptyList(); + } + return features.findOverlappingFeatures(from, to); + } +}