pfam seed and full alignment retrieval and nicer ordering of sequence db sources...
[jalview.git] / src / jalview / ws / SequenceFetcher.java
index 073d448..0d93cb8 100644 (file)
@@ -1,5 +1,6 @@
 package jalview.ws;\r
 \r
+import java.util.ArrayList;\r
 import java.util.Enumeration;\r
 import java.util.Vector;\r
 \r
@@ -36,10 +37,62 @@ public class SequenceFetcher extends ASequenceFetcher
     addDBRefSourceImpl(jalview.ws.dbsources.Uniprot.class);\r
     addDBRefSourceImpl(jalview.ws.dbsources.UnprotName.class);\r
     addDBRefSourceImpl(jalview.ws.dbsources.Pdb.class);\r
-    addDBRefSourceImpl(jalview.ws.dbsources.Pfam.class);\r
+    addDBRefSourceImpl(jalview.ws.dbsources.PfamFull.class);\r
+    addDBRefSourceImpl(jalview.ws.dbsources.PfamSeed.class); // ensures Seed alignment is 'default' for PFAM\r
     registerDasSequenceSources();\r
   }\r
   /**\r
+   * return an ordered list of database sources suitable for using in a GUI element\r
+   */\r
+  public String[] getOrderedSupportedSources() {\r
+    String[] srcs = this.getSupportedDb();\r
+    ArrayList dassrc = new ArrayList(),\r
+      nondas=new ArrayList();\r
+    for (int i=0;i<srcs.length;i++)\r
+    {\r
+      String nm = getSourceProxy(srcs[i]).getDbName();\r
+      if (getSourceProxy(srcs[i]) instanceof jalview.ws.dbsources.DasSequenceSource)\r
+      {\r
+        if (nm.startsWith("das:"))\r
+        {\r
+          nm = nm.substring(4);\r
+        }\r
+        dassrc.add(new String[] { srcs[i], nm.toUpperCase()} );\r
+      } else {\r
+        nondas.add(new String[] { srcs[i], nm.toUpperCase()} );\r
+      }\r
+    }\r
+    Object[] sorted = nondas.toArray();\r
+    String[] tosort = new String[sorted.length];\r
+    nondas.clear();\r
+    for (int j=0;j<sorted.length;j++)\r
+    {\r
+      tosort[j] = ((String[]) sorted[j])[1];\r
+    }\r
+    jalview.util.QuickSort.sort(tosort, sorted);\r
+    int i=0;\r
+    for (int j=sorted.length-1;j>=0; j--,i++)\r
+    {\r
+      srcs[i] = ((String[]) sorted[j])[0];\r
+      sorted[j] = null;\r
+    }\r
+\r
+    sorted = dassrc.toArray();\r
+    tosort = new String[sorted.length];\r
+    dassrc.clear();\r
+    for (int j=0;j<sorted.length;j++)\r
+    {\r
+      tosort[j] = ((String[]) sorted[j])[1];\r
+    }\r
+    jalview.util.QuickSort.sort(tosort, sorted);\r
+    for (int j=sorted.length-1;j>=0; j--,i++)\r
+    {\r
+      srcs[i] = ((String[]) sorted[j])[0];\r
+      sorted[j] = null;\r
+    }\r
+    return srcs;\r
+  }\r
+  /**\r
    * simple run method to test dbsources.\r
    * @param argv\r
    */\r