Selected DAS sources may differ from default
authoramwaterhouse <Andrew Waterhouse>
Thu, 13 Jul 2006 17:00:47 +0000 (17:00 +0000)
committeramwaterhouse <Andrew Waterhouse>
Thu, 13 Jul 2006 17:00:47 +0000 (17:00 +0000)
src/jalview/io/DasSequenceFeatureFetcher.java

index 7dbb183..dc51617 100755 (executable)
@@ -53,18 +53,24 @@ public class DasSequenceFeatureFetcher implements Runnable
   final AlignmentI dataset;\r
   final AlignFrame af;\r
   StringBuffer sbuffer = new StringBuffer();\r
+  Vector selectedSources;\r
 \r
+  long startTime;\r
+  int threadsRunning = 0;\r
 \r
 \r
   /**\r
    * Creates a new SequenceFeatureFetcher object.\r
+   * Uses default\r
    *\r
    * @param align DOCUMENT ME!\r
    * @param ap DOCUMENT ME!\r
    */\r
   public DasSequenceFeatureFetcher(AlignmentI align,\r
-                                   AlignFrame af)\r
+                                   AlignFrame af,\r
+                                   Vector selectedSources)\r
   {\r
+    this.selectedSources = selectedSources;\r
     this.dataset = align.getDataset();\r
     this.af = af;\r
 \r
@@ -154,6 +160,8 @@ public class DasSequenceFeatureFetcher implements Runnable
                           sourceUrl);\r
           if (id != null && id.length() > 0)\r
           {\r
+            setThreadsRunning(+1);\r
+\r
             FeatureThread fetcher = new FeatureThread(id\r
                +  ":" + seq.getStart() + "," +seq.getEnd()\r
                  , source);\r
@@ -162,6 +170,7 @@ public class DasSequenceFeatureFetcher implements Runnable
             {\r
               public void comeBackLater(FeatureEvent e)\r
               {\r
+                setThreadsRunning(-1);\r
                 Cache.log.debug("das source " + e.getDasSource().getNickname() +\r
                                 " asked us to come back in " + e.getComeBackLater() +\r
                                 " secs.");\r
@@ -169,6 +178,7 @@ public class DasSequenceFeatureFetcher implements Runnable
 \r
               public void newFeatures(FeatureEvent e)\r
               {\r
+                setThreadsRunning(-1);\r
                 Das1Source ds = e.getDasSource();\r
 \r
                 Map[] features = e.getFeatures();\r
@@ -204,34 +214,44 @@ public class DasSequenceFeatureFetcher implements Runnable
             fetcher.start();\r
          }\r
   }\r
+\r
+  synchronized void setThreadsRunning(int i)\r
+  {\r
+    threadsRunning += i;\r
+    if(threadsRunning<1)\r
+      af.setProgressBar("DAS Feature Fetching Complete", startTime);\r
+  }\r
+\r
   /**\r
    * Spawns a number of dasobert Fetcher threads to add features to sequences in the dataset\r
    */\r
   public void run()\r
   {\r
-    long startTime = System.currentTimeMillis();\r
+    startTime = System.currentTimeMillis();\r
     af.setProgressBar("Fetching DAS Sequence Features", startTime);\r
 \r
     DasSource [] sources = new jalview.gui.DasSourceBrowser().getDASSource();\r
 \r
-    String active = jalview.bin.Cache.getDefault("DAS_ACTIVE_SOURCE", "uniprot");\r
-    StringTokenizer st = new StringTokenizer(active, "\t");\r
-    Vector selectedSources = new Vector();\r
-    String token;\r
-    while (st.hasMoreTokens())\r
+    if(selectedSources==null || selectedSources.size()==0)\r
     {\r
-      token = st.nextToken();\r
-      for(int i=0; i<sources.length; i++)\r
+      String active = jalview.bin.Cache.getDefault("DAS_ACTIVE_SOURCE", "uniprot");\r
+      StringTokenizer st = new StringTokenizer(active, "\t");\r
+      Vector selectedSources = new Vector();\r
+      String token;\r
+      while (st.hasMoreTokens())\r
       {\r
-        if(sources[i].getNickname().equals(token))\r
+        token = st.nextToken();\r
+        for (int i = 0; i < sources.length; i++)\r
         {\r
-          selectedSources.addElement(sources[i]);\r
-          break;\r
+          if (sources[i].getNickname().equals(token))\r
+          {\r
+            selectedSources.addElement(sources[i]);\r
+            break;\r
+          }\r
         }\r
       }\r
     }\r
 \r
-\r
     if(selectedSources == null || selectedSources.size()==0)\r
     {\r
       System.out.println("No DAS Sources active");\r
@@ -312,8 +332,6 @@ public class DasSequenceFeatureFetcher implements Runnable
     {\r
       ex.printStackTrace();\r
     }\r
-\r
-    af.setProgressBar("DAS Feature Fetching Complete", startTime);\r
   }\r
 \r
 \r