Replaced image
[jalview.git] / src / jalview / util / DBRefUtils.java
index 86ab201..d3788ea 100755 (executable)
@@ -1,32 +1,72 @@
 package jalview.util;
 
-import java.util.Vector;
-import java.util.Hashtable;
+import java.util.*;
+
+import jalview.datamodel.*;
+
 
 public class DBRefUtils
 {
     /**
      * Utilities for handling DBRef objects and their collections.
      */
-    public static Vector selectRefs(java.util.Vector dbrefs, String[] sources) {
+    /**
+     *
+     * @param dbrefs Vector of DBRef objects to search
+     * @param sources String[] array of source DBRef IDs to retrieve
+     * @return Vector
+     */
+    public static DBRefEntry [] selectRefs(DBRefEntry [] dbrefs, String[] sources) {
       if (dbrefs==null)
         return null;
       if (sources==null)
         return dbrefs;
       Hashtable srcs = new Hashtable();
       Vector res=new Vector();
+
       for (int i=0; i<sources.length; i++)
         srcs.put(new String(sources[i]), new Integer(i));
-      for (int i=0, j=dbrefs.size(); i<j; i++)
-        if (dbrefs.get(i) instanceof jalview.datamodel.DBRefEntry) {
-          jalview.datamodel.DBRefEntry entry = (jalview.datamodel.DBRefEntry) dbrefs.get(i);
-          if (srcs.containsKey(entry.getSource()))
-            res.add(entry);
+      for (int i = 0, j = dbrefs.length; i < j; i++)
+        {
+          if (srcs.containsKey(dbrefs[i].getSource()))
+            res.add(dbrefs[i]);
         }
+
       if (res.size()>0)
-        return res;
+      {
+        DBRefEntry [] reply = new DBRefEntry[res.size()];
+        for(int i=0; i<res.size(); i++)
+          reply[i] = (DBRefEntry)res.elementAt(i);
+        return reply;
+      }
       res = null;
       // there are probable  memory leaks in the hashtable!
       return null;
     }
+
+  /**
+   * isDasCoordinateSystem
+   *
+   * @param string String
+   * @param dBRefEntry DBRefEntry
+   * @return boolean true if Source DBRefEntry is compatible with DAS CoordinateSystem name
+   */
+  public static Hashtable DasCoordinateSystemsLookup = null;
+  public static boolean isDasCoordinateSystem(String string,
+                                              DBRefEntry dBRefEntry)
+  {
+    if (DasCoordinateSystemsLookup==null)
+    { // Initialise
+      DasCoordinateSystemsLookup = new Hashtable();
+      DasCoordinateSystemsLookup.put("pdbresnum",
+                                     jalview.datamodel.DBRefSource.PDB);
+      DasCoordinateSystemsLookup.put("uniprot",
+                                     jalview.datamodel.DBRefSource.UNIPROT);
+    }
+
+    String coordsys = (String) DasCoordinateSystemsLookup.get(string.toLowerCase());
+    if (coordsys!=null)
+      return coordsys.equals(dBRefEntry.getSource());
+    return false;
   }
+}