From 733490fd53e92414b5ae46a12e69581196e3419b Mon Sep 17 00:00:00 2001
From: tcarver <tjc>
Date: Fri, 13 Sep 2013 10:11:06 +0100
Subject: [PATCH] add getCDSFeatureByIdPrefix()

---
 test/uk/ac/sanger/artemis/io/Utils.java | 33 +++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/test/uk/ac/sanger/artemis/io/Utils.java b/test/uk/ac/sanger/artemis/io/Utils.java
index ab840fef0..b7a10ef91 100644
--- a/test/uk/ac/sanger/artemis/io/Utils.java
+++ b/test/uk/ac/sanger/artemis/io/Utils.java
@@ -34,6 +34,8 @@ import uk.ac.sanger.artemis.SimpleEntryGroup;
 import uk.ac.sanger.artemis.io.DocumentEntryFactory;
 import uk.ac.sanger.artemis.io.Entry;
 import uk.ac.sanger.artemis.io.EntryInformationException;
+import uk.ac.sanger.artemis.io.InvalidRelationException;
+import uk.ac.sanger.artemis.io.Qualifier;
 import uk.ac.sanger.artemis.sequence.AminoAcidSequence;
 import uk.ac.sanger.artemis.sequence.Bases;
 import uk.ac.sanger.artemis.sequence.NoSequenceException;
@@ -85,6 +87,37 @@ public class Utils
     return null;
   }
   
+  /**
+   * Get a CDS feature with the feature ID prefix
+   * @param featureName
+   * @param features
+   * @return
+   */
+  public static Feature getCDSFeatureByIdPrefix(
+                 final String id,
+                 final FeatureVector features)
+  {
+    try
+    {
+      for (int i=0; i<features.size(); i++)
+      {
+        Feature f = features.elementAt(i);
+        final Qualifier q = f.getQualifierByName("ID");
+        if (q != null)
+        {
+          final String thisId = q.getValues().get(0);
+          if (thisId.startsWith(id) && f.isCDS())
+            return f;
+        }
+      }
+    }
+    catch(InvalidRelationException e) 
+    {
+      Assert.fail(e.getMessage());
+    }
+    return null;
+  }
+  
   /**
    * Method to change the translation table being used
    * @param n - genetic code table number
-- 
GitLab