Formatting
[jalview.git] / src / jalview / io / DasSequenceFeatureFetcher.java
index f6e6f9b..fbd7442 100755 (executable)
@@ -1,6 +1,6 @@
 /*\r
  * Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
  *\r
  * This program is free software; you can redistribute it and/or\r
  * modify it under the terms of the GNU General Public License\r
  */\r
 package jalview.io;\r
 \r
-import jalview.datamodel.*;\r
-\r
-import jalview.gui.*;\r
-\r
+import java.net.*;\r
 import java.util.*;\r
 \r
-import java.net.URL;\r
-\r
-import org.biojava.dasobert.das.FeatureThread;\r
-import org.biojava.dasobert.eventmodel.FeatureEvent;\r
-import org.biojava.dasobert.eventmodel.FeatureListener;\r
-import org.biojava.dasobert.dasregistry.DasSource;\r
-\r
-import org.biojava.dasobert.das2.io.DasSourceReaderImpl;\r
-import org.biojava.dasobert.dasregistry.Das1Source;\r
-import org.biojava.dasobert.dasregistry.DasSource;\r
-import org.biojava.dasobert.das2.Das2Source;\r
-import org.biojava.dasobert.das2.DasSourceConverter;\r
+import javax.swing.*;\r
 \r
+import org.biojava.dasobert.das.*;\r
+import org.biojava.dasobert.das2.*;\r
+import org.biojava.dasobert.das2.io.*;\r
+import org.biojava.dasobert.dasregistry.*;\r
+import org.biojava.dasobert.eventmodel.*;\r
 import jalview.bin.Cache;\r
-import org.biojava.dasobert.dasregistry.DasCoordinateSystem;\r
-\r
-import javax.swing.*;\r
+import jalview.datamodel.*;\r
+import jalview.gui.*;\r
 \r
 /**\r
  * DOCUMENT ME!\r
@@ -124,13 +114,17 @@ public class DasSequenceFeatureFetcher
         thread.start();\r
       }\r
       else\r
+      {\r
         startFetching();\r
+      }\r
     }\r
     else\r
+    {\r
       startFetching();\r
-\r
     }\r
 \r
+  }\r
+\r
   class FetchDBRefs\r
       implements Runnable\r
   {\r
@@ -142,173 +136,176 @@ public class DasSequenceFeatureFetcher
     }\r
   }\r
 \r
+  /**\r
+   * Spawns a number of dasobert Fetcher threads to add features to sequences in the dataset\r
+   */\r
+  void startFetching()\r
+  {\r
+    cancelled = false;\r
+    startTime = System.currentTimeMillis();\r
+    af.setProgressBar("Fetching DAS Sequence Features", startTime);\r
+\r
+    DasSource[] sources = new jalview.gui.DasSourceBrowser().getDASSource();\r
+\r
+    if (selectedSources == null || selectedSources.size() == 0)\r
+    {\r
+      String active = jalview.bin.Cache.getDefault("DAS_ACTIVE_SOURCE",\r
+          "uniprot");\r
+      StringTokenizer st = new StringTokenizer(active, "\t");\r
+      Vector selectedSources = new Vector();\r
+      String token;\r
+      while (st.hasMoreTokens())\r
+      {\r
+        token = st.nextToken();\r
+        for (int i = 0; i < sources.length; i++)\r
+        {\r
+          if (sources[i].getNickname().equals(token))\r
+          {\r
+            selectedSources.addElement(sources[i]);\r
+            break;\r
+          }\r
+        }\r
+      }\r
+    }\r
+\r
+    if (selectedSources == null || selectedSources.size() == 0)\r
+    {\r
+      System.out.println("No DAS Sources active");\r
+      af.setProgressBar("No DAS Sources Active", startTime);\r
+      return;\r
+    }\r
+\r
+    sourcesRemaining = selectedSources.size();\r
+    //Now sending requests one at a time to each server\r
+    for (int sourceIndex = 0;\r
+         sourceIndex < selectedSources.size()\r
+         && !cancelled;\r
+         sourceIndex++)\r
+    {\r
+      DasSource dasSource = (DasSource) selectedSources.elementAt(\r
+          sourceIndex);\r
+\r
+      nextSequence(dasSource, sequences[0]);\r
+    }\r
+  }\r
+\r
+  public void cancel()\r
+  {\r
+    af.setProgressBar("DAS Feature Fetching Cancelled", startTime);\r
+    cancelled = true;\r
+  }\r
+\r
+  int sourcesRemaining = 0;\r
+  void responseComplete(DasSource dasSource, SequenceI seq)\r
+  {\r
+    if (seq != null)\r
+    {\r
+      for (int seqIndex = 0;\r
+           seqIndex < sequences.length - 1\r
+           && !cancelled; seqIndex++)\r
+      {\r
+        if (sequences[seqIndex] == seq)\r
+        {\r
+          nextSequence(dasSource, sequences[++seqIndex]);\r
+          return;\r
+        }\r
+      }\r
+    }\r
+\r
+    sourcesRemaining--;\r
+\r
+    if (sourcesRemaining == 0)\r
+    {\r
+      af.setProgressBar("DAS Feature Fetching Complete", startTime);\r
+\r
+      if (af.featureSettings != null)\r
+      {\r
+        af.featureSettings.setTableData();\r
+      }\r
+\r
+      fsettings.complete();\r
+    }\r
+\r
+  }\r
 \r
-   /**\r
-    * Spawns a number of dasobert Fetcher threads to add features to sequences in the dataset\r
-    */\r
-   void startFetching()\r
-   {\r
-     cancelled = false;\r
-     startTime = System.currentTimeMillis();\r
-     af.setProgressBar("Fetching DAS Sequence Features", startTime);\r
-\r
-     DasSource[] sources = new jalview.gui.DasSourceBrowser().getDASSource();\r
-\r
-     if (selectedSources == null || selectedSources.size() == 0)\r
-     {\r
-       String active = jalview.bin.Cache.getDefault("DAS_ACTIVE_SOURCE",\r
-           "uniprot");\r
-       StringTokenizer st = new StringTokenizer(active, "\t");\r
-       Vector selectedSources = new Vector();\r
-       String token;\r
-       while (st.hasMoreTokens())\r
-       {\r
-         token = st.nextToken();\r
-         for (int i = 0; i < sources.length; i++)\r
-         {\r
-           if (sources[i].getNickname().equals(token))\r
-           {\r
-             selectedSources.addElement(sources[i]);\r
-             break;\r
-           }\r
-         }\r
-       }\r
-     }\r
-\r
-     if (selectedSources == null || selectedSources.size() == 0)\r
-     {\r
-       System.out.println("No DAS Sources active");\r
-       af.setProgressBar("No DAS Sources Active", startTime);\r
-       return;\r
-     }\r
-\r
-       sourcesRemaining = selectedSources.size();\r
-       //Now sending requests one at a time to each server\r
-       for (int sourceIndex = 0;\r
-            sourceIndex < selectedSources.size()\r
-            && !cancelled;\r
-            sourceIndex++)\r
-       {\r
-         DasSource dasSource = (DasSource) selectedSources.elementAt(\r
-             sourceIndex);\r
-\r
-         nextSequence(dasSource, sequences[0]);\r
-       }\r
-   }\r
-\r
-   public void cancel()\r
-   {\r
-     af.setProgressBar("DAS Feature Fetching Cancelled", startTime);\r
-     cancelled = true;\r
-   }\r
-\r
-   int sourcesRemaining=0;\r
-   void responseComplete(DasSource dasSource, SequenceI seq)\r
-   {\r
-     if (seq != null)\r
-     {\r
-       for (int seqIndex = 0;\r
-            seqIndex < sequences.length-1\r
-            && !cancelled; seqIndex++)\r
-       {\r
-         if (sequences[seqIndex] == seq)\r
-         {\r
-           nextSequence(dasSource, sequences[++seqIndex]);\r
-           return;\r
-         }\r
-       }\r
-     }\r
-\r
-     sourcesRemaining --;\r
-\r
-     if(sourcesRemaining==0)\r
-     {\r
-       af.setProgressBar("DAS Feature Fetching Complete", startTime);\r
-\r
-       if(af.featureSettings!=null)\r
-         af.featureSettings.setTableData();\r
-\r
-       fsettings.complete();\r
-     }\r
-\r
-   }\r
-\r
-   void featuresAdded(SequenceI seq)\r
-   {\r
-     af.getFeatureRenderer().featuresAdded();\r
-\r
-     int start = af.getViewport().getStartSeq();\r
-     int end = af.getViewport().getEndSeq();\r
-     int index;\r
-     for(index=start; index<end; index++)\r
-      if(seq == af.getViewport().getAlignment().getSequenceAt(index).getDatasetSequence())\r
-       {\r
-         af.alignPanel.repaint();\r
-         break;\r
-       }\r
-   }\r
+  void featuresAdded(SequenceI seq)\r
+  {\r
+    af.getFeatureRenderer().featuresAdded();\r
 \r
+    int start = af.getViewport().getStartSeq();\r
+    int end = af.getViewport().getEndSeq();\r
+    int index;\r
+    for (index = start; index < end; index++)\r
+    {\r
+      if (seq ==\r
+          af.getViewport().getAlignment().getSequenceAt(index).getDatasetSequence())\r
+      {\r
+        af.alignPanel.repaint();\r
+        break;\r
+      }\r
+    }\r
+  }\r
 \r
   void nextSequence(DasSource dasSource, SequenceI seq)\r
   {\r
-      DBRefEntry[] uprefs = jalview.util.DBRefUtils.selectRefs(seq.getDBRef(),\r
-          new String[]\r
-          {\r
+    DBRefEntry[] uprefs = jalview.util.DBRefUtils.selectRefs(seq.getDBRef(),\r
+        new String[]\r
+        {\r
         //  jalview.datamodel.DBRefSource.PDB,\r
-          jalview.datamodel.DBRefSource.UNIPROT\r
-      });\r
+        jalview.datamodel.DBRefSource.UNIPROT\r
+    });\r
 \r
-        if (uprefs != null)\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; j < uprefs.length; j++)\r
+      {\r
+        // Will have to pass any mapping information to the fetcher\r
+        //- the start/end for the DBRefEntry may not be the same as the sequence's start/end\r
+        DasCoordinateSystem cs[] = dasSource.getCoordinateSystem();\r
+        if (cs.length > 0)\r
         {\r
-          // we know the id for this entry, so don't note its ID in the unknownSequences list\r
-         // for (int j = 0; j < uprefs.length; j++)\r
+          // for (int l = 0; l < cs.length; l++)\r
           {\r
-            // Will have to pass any mapping information to the fetcher\r
-            //- the start/end for the DBRefEntry may not be the same as the sequence's start/end\r
-            DasCoordinateSystem cs[] = dasSource.getCoordinateSystem();\r
-            if(cs.length>0)\r
+            //\r
+            if (jalview.util.DBRefUtils\r
+                .isDasCoordinateSystem(cs[0].getName(), uprefs[0]))\r
             {\r
-             // for (int l = 0; l < cs.length; l++)\r
-              {\r
-               //\r
-               if (jalview.util.DBRefUtils\r
-                    .isDasCoordinateSystem(cs[0].getName(), uprefs[0]))\r
-                {\r
-                  Cache.log.debug("Launched fetcher for coordinate system " +\r
-                                  cs[0].getName());\r
-\r
-                  createFeatureFetcher(seq,\r
-                                       dasSource,\r
-                                       uprefs[0].getAccessionId());\r
-                }\r
-              }\r
+              Cache.log.debug("Launched fetcher for coordinate system " +\r
+                              cs[0].getName());\r
+\r
+              createFeatureFetcher(seq,\r
+                                   dasSource,\r
+                                   uprefs[0].getAccessionId());\r
             }\r
           }\r
         }\r
-        else\r
-        {\r
-          String id = null;\r
-          // try and use the name as the sequence id\r
-          if (seq.getName().indexOf("|") > -1)\r
-          {\r
-            id = seq.getName().substring(\r
-                seq.getName().lastIndexOf("|") + 1);\r
-          }\r
-          else\r
-          {\r
-            id = seq.getName();\r
-          }\r
-          if (id != null)\r
-          {\r
-            // Should try to call a general feature fetcher that\r
-            // queries many sources with name to discover applicable ID references\r
-            createFeatureFetcher(seq,\r
-                                 dasSource,\r
-                                 id);\r
-          }\r
-        }\r
+      }\r
+    }\r
+    else\r
+    {\r
+      String id = null;\r
+      // try and use the name as the sequence id\r
+      if (seq.getName().indexOf("|") > -1)\r
+      {\r
+        id = seq.getName().substring(\r
+            seq.getName().lastIndexOf("|") + 1);\r
+      }\r
+      else\r
+      {\r
+        id = seq.getName();\r
+      }\r
+      if (id != null)\r
+      {\r
+        // Should try to call a general feature fetcher that\r
+        // queries many sources with name to discover applicable ID references\r
+        createFeatureFetcher(seq,\r
+                             dasSource,\r
+                             id);\r
+      }\r
+    }\r
 \r
-   }\r
+  }\r
 \r
   /**\r
    * fetch and add das features to a sequence using the given source URL and Id to create a feature request\r
@@ -369,8 +366,8 @@ public class DasSequenceFeatureFetcher
           }\r
           else\r
           {\r
-          //  System.out.println("No features found for " + seq.getName()\r
-          //                     + " from: " + e.getDasSource().getNickname());\r
+            //  System.out.println("No features found for " + seq.getName()\r
+            //                     + " from: " + e.getDasSource().getNickname());\r
           }\r
           responseComplete(dasSource, seq);\r
 \r
@@ -404,7 +401,9 @@ public class DasSequenceFeatureFetcher
        */\r
       String desc = new String();\r
       if (dasfeature.containsKey("NOTE"))\r
+      {\r
         desc += (String) dasfeature.get("NOTE");\r
+      }\r
 \r
       int start = 0, end = 0;\r
       float score = 0f;\r
@@ -498,4 +497,3 @@ public class DasSequenceFeatureFetcher
   }\r
 \r
 }\r
-\r