Don't parse input id, leave it as it is
[jalview.git] / src / jalview / io / SequenceFeatureFetcher.java
index 108fe08..b3de0f3 100755 (executable)
@@ -57,7 +57,7 @@ public class SequenceFeatureFetcher implements Runnable
     {\r
       // 1. Load the mapping information from the file\r
       Mapping map = new Mapping(uni.getClass().getClassLoader());\r
-      java.net.URL url = uni.getClass().getResource("/uniprot_mapping.xml");\r
+      java.net.URL url = getClass().getResource("/uniprot_mapping.xml");\r
       map.loadMapping(url);\r
 \r
       // 2. Unmarshal the data\r
@@ -112,7 +112,7 @@ public class SequenceFeatureFetcher implements Runnable
           if(!ids.contains(sequence.getName()))\r
           {\r
             ids.add(sequence.getName());\r
-            unknownSequences.add(sequence.getName());\r
+            unknownSequences.add(sequence);\r
           }\r
         }\r
 \r
@@ -156,19 +156,28 @@ public class SequenceFeatureFetcher implements Runnable
 \r
     }\r
 \r
-    if (unknownSequences.size() > 0)\r
-    {\r
-      int reply = javax.swing.JOptionPane.showInternalConfirmDialog(\r
-          Desktop.desktop, "Couldn't find a match for "+unknownSequences.size()+" sequences."\r
-              +"\nPerform blast for unknown sequences?",\r
-                  "Blast for Unidentified Sequences",\r
-                   javax.swing.JOptionPane.YES_NO_OPTION, javax.swing.JOptionPane.QUESTION_MESSAGE);\r
-\r
-      if(reply == javax.swing.JOptionPane.YES_OPTION)\r
-       new WSWUBlastClient(ap, align, unknownSequences);\r
-    }\r
-    else\r
-       ((Alignment)dataset).featuresAdded = true;\r
+    promptBeforeBlast();\r
+\r
+  }\r
+\r
+\r
+  void promptBeforeBlast()\r
+   {\r
+     // This must be outside the run() body as java 1.5\r
+     // will not return any value from the OptionPane to the expired thread.\r
+      if (unknownSequences.size() > 0)\r
+      {\r
+        int reply = javax.swing.JOptionPane.showConfirmDialog(\r
+            Desktop.desktop, "Couldn't find a match for "+unknownSequences.size()+" sequences."\r
+                +"\nPerform blast for unknown sequences?",\r
+                    "Blast for Unidentified Sequences",\r
+                     javax.swing.JOptionPane.YES_NO_OPTION, javax.swing.JOptionPane.QUESTION_MESSAGE);\r
+\r
+        if(reply == javax.swing.JOptionPane.YES_OPTION)\r
+         new WSWUBlastClient(ap, align, unknownSequences);\r
+      }\r
+      else\r
+         ((Alignment)dataset).featuresAdded = true;\r
 \r
 \r
     ap.repaint();\r
@@ -187,7 +196,6 @@ public class SequenceFeatureFetcher implements Runnable
       return;\r
 \r
     SequenceI sequence = null;\r
-    //       String pdb = null;\r
 \r
     Vector entries = getUniprotEntries(file);\r
 \r
@@ -202,25 +210,24 @@ public class SequenceFeatureFetcher implements Runnable
       if (sequence == null)\r
       {\r
         //Sequence maybe Name, not Accession\r
-        idmatch = entry.getName().elementAt(0).toString();;\r
+        idmatch = entry.getName().elementAt(0).toString();\r
         sequence = dataset.findName(idmatch);\r
       }\r
 \r
       if (sequence == null)\r
       {\r
-        System.out.println("not found");\r
+        System.out.println(idmatch+" not found");\r
         continue;\r
       }\r
 \r
       ids.remove(sequence.getName());\r
-      unknownSequences.remove(sequence.getName());\r
+      unknownSequences.remove(sequence);\r
 \r
       String nonGapped = AlignSeq.extractGaps("-. ", sequence.getSequence());\r
 \r
       int absStart = entry.getUniprotSequence().getContent().indexOf(\r
           nonGapped.toString());\r
 \r
-      int residueOffset = 0;\r
       if (absStart == -1)\r
       {\r
         // Is UniprotSequence contained in dataset sequence?\r
@@ -235,9 +242,9 @@ public class SequenceFeatureFetcher implements Runnable
         }\r
         else\r
         {\r
-          if(entry.getFeatures()!=null)\r
+          if(entry.getFeature()!=null)\r
           {\r
-            Enumeration e = entry.getFeatures().elements();\r
+            Enumeration e = entry.getFeature().elements();\r
             while (e.hasMoreElements())\r
             {\r
               SequenceFeature sf = (SequenceFeature) e.nextElement();\r
@@ -257,7 +264,19 @@ public class SequenceFeatureFetcher implements Runnable
       int absEnd = absStart + nonGapped.toString().length();\r
       absStart += 1;\r
 \r
-      sequence.setSequenceFeatures(entry.getFeatures());\r
+      Enumeration e = entry.getDbReference().elements();\r
+      Vector onlyPdbEntries = new Vector();\r
+      while(e.hasMoreElements())\r
+      {\r
+        PDBEntry pdb = (PDBEntry)e.nextElement();\r
+        if(!pdb.getType().equals("PDB"))\r
+          continue;\r
+\r
+        onlyPdbEntries.addElement(pdb);\r
+      }\r
+\r
+      sequence.setPDBId(onlyPdbEntries);\r
+      sequence.setSequenceFeatures(entry.getFeature());\r
       sequence.setStart(absStart);\r
       sequence.setEnd(absEnd);\r
 \r