DBRefs now array
[jalview.git] / src / jalview / io / DBRefFetcher.java
index 6e44910..01e67cf 100644 (file)
@@ -48,6 +48,7 @@ public class DBRefFetcher implements Runnable
   CutAndPasteTransfer output = new CutAndPasteTransfer();\r
   StringBuffer sbuffer = new StringBuffer();\r
   boolean uniprotFlag = false;\r
+  boolean running = false;\r
 \r
   public DBRefFetcher()\r
   {}\r
@@ -91,9 +92,25 @@ public class DBRefFetcher implements Runnable
     unknownSequences = new ArrayList();\r
     this.align = align;\r
     this.dataset = align.getDataset();\r
+  }\r
 \r
+  public boolean fetchDBRefs(boolean waitTillFinished)\r
+  {\r
     Thread thread = new Thread(this);\r
     thread.start();\r
+    running = true;\r
+\r
+    if(waitTillFinished)\r
+    {\r
+      while(running)\r
+      {\r
+        try{\r
+          Thread.sleep(500);\r
+        }catch(Exception ex){}\r
+      }\r
+    }\r
+\r
+    return true;\r
   }\r
 \r
   /**\r
@@ -103,6 +120,7 @@ public class DBRefFetcher implements Runnable
   {\r
     long startTime = System.currentTimeMillis();\r
     af.setProgressBar("Fetching db refs", startTime);\r
+    running = true;\r
 \r
     try\r
     {\r
@@ -117,13 +135,13 @@ public class DBRefFetcher implements Runnable
              seqIndex++, i++)\r
         {\r
           Sequence sequence = (Sequence) sequences.get(seqIndex);\r
-          Vector uprefs = jalview.util.DBRefUtils.selectRefs(sequence.getDBRef(), new String[] {\r
+          DBRefEntry [] uprefs = jalview.util.DBRefUtils.selectRefs(sequence.getDBRef(), new String[] {\r
               jalview.datamodel.DBRefSource.UNIPROT});\r
           if (uprefs!=null)\r
           {\r
             // we know the id for this entry, so don't note its ID in the unknownSequences list\r
-            for (int j=0,k=uprefs.size(); j<k; j++)\r
-              ids.add(((DBRefEntry) uprefs.get(j)).getAccessionId());\r
+            for (int j=0,k=uprefs.length; j<k; j++)\r
+              ids.add(uprefs[j].getAccessionId());\r
             unknownSequences.add(sequence);\r
           } else {\r
             if (!ids.contains(sequence.getName()))\r
@@ -147,8 +165,12 @@ public class DBRefFetcher implements Runnable
                    ids.get(i).toString().lastIndexOf("|") + 1));\r
                uniprotFlag = true;\r
              }\r
-             remainingIds.append(ids.get(i) + ";");\r
+             else\r
+               remainingIds.append(ids.get(i));\r
+\r
+             remainingIds.append(";");\r
            }\r
+\r
           EBIFetchClient ebi = new EBIFetchClient();\r
           File file = ebi.fetchDataAsFile(remainingIds.toString(),\r
                                           "xml", "raw");\r
@@ -183,6 +205,8 @@ public class DBRefFetcher implements Runnable
     af.setProgressBar("DBRef search completed", startTime);\r
    // promptBeforeBlast();\r
 \r
+   running = false;\r
+\r
   }\r
 \r
 \r
@@ -244,7 +268,11 @@ public class DBRefFetcher implements Runnable
 \r
       else  if (sequence == null && uniprotFlag)\r
       {\r
-          sequence = dataset.findName("UniProt/Swiss-Prot|"+entry.getAccession().elementAt(0)+"|"+idmatch);\r
+          StringBuffer upid = new StringBuffer("UniProt/Swiss-Prot|");\r
+          for(int u=0; u<entry.getAccession().size(); u++)\r
+            upid.append(entry.getAccession().elementAt(u)+"|");\r
+\r
+          sequence = dataset.findName(upid+idmatch);\r
           ids.remove(idmatch);\r
       }\r
 \r