JAL-1264 wip
[jalview.git] / src / jalview / datamodel / Alignment.java
index ad7cdd2..f19d117 100755 (executable)
  */
 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<AlignmentAnnotation> findAnnotation(SequenceI datasequence,
+          String calcId, String label)
+  {
+    List<AlignmentAnnotation> result = new ArrayList<AlignmentAnnotation>();
+    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;
+  }
 }