X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FAlignment.java;h=f19d117fbdce32223cdbfb7e8e04d36154a59ded;hb=fe6b3fb39308b5c045849db2be75ba07824be776;hp=ad7cdd2a42128c91b20e73d77e8f6bdd3e88efae;hpb=3ab93880136a581ebf1e50e38e780c2b2141bca9;p=jalview.git diff --git a/src/jalview/datamodel/Alignment.java b/src/jalview/datamodel/Alignment.java index ad7cdd2..f19d117 100755 --- a/src/jalview/datamodel/Alignment.java +++ b/src/jalview/datamodel/Alignment.java @@ -20,7 +20,12 @@ */ package jalview.datamodel; -import java.util.*; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.List; +import java.util.Map; +import java.util.Vector; /** * Data structure to hold and manipulate a multiple sequence alignment @@ -1521,4 +1526,32 @@ public class Alignment implements AlignmentI { return dataset; } + + /** + * Returns an iterable collection of annotations on this alignment which match + * the given criteria. + */ + @Override + public Iterable findAnnotation(SequenceI datasequence, + String calcId, String label) + { + List result = new ArrayList(); + for (AlignmentAnnotation ann : annotations) + { + // only sequence-linked annotations can qualify (have a datasequence) + if (ann.sequenceRef == null) + { + continue; + } + boolean matchDatasequence = (ann.sequenceRef.getDatasetSequence() == datasequence); + final String annCalcId = ann.getCalcId(); + boolean matchCalcId = (annCalcId != null && annCalcId.equals(calcId)); + boolean matchLabel = (ann.label != null && ann.label.equals(label)); + if (matchDatasequence && matchCalcId && matchLabel) + { + result.add(ann); + } + } + return result; + } }