Formatting changes
[jalview.git] / src / jalview / io / SequenceFeatureFetcher.java
index cdd628b..89d84b0 100755 (executable)
@@ -29,14 +29,28 @@ import java.io.*;
 import java.util.*;\r
 \r
 \r
-public class SequenceFeatureFetcher implements Runnable {\r
+/**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @author $author$\r
+ * @version $Revision$\r
+ */\r
+public class SequenceFeatureFetcher implements Runnable\r
+{\r
     AlignmentI align;\r
     AlignmentPanel ap;\r
     ArrayList unknownSequences;\r
     CutAndPasteTransfer output = new CutAndPasteTransfer();\r
     StringBuffer sbuffer = new StringBuffer();\r
 \r
-    public SequenceFeatureFetcher(AlignmentI align, AlignmentPanel ap) {\r
+    /**\r
+     * Creates a new SequenceFeatureFetcher object.\r
+     *\r
+     * @param align DOCUMENT ME!\r
+     * @param ap DOCUMENT ME!\r
+     */\r
+    public SequenceFeatureFetcher(AlignmentI align, AlignmentPanel ap)\r
+    {\r
         unknownSequences = new ArrayList();\r
         this.align = align;\r
         this.ap = ap;\r
@@ -45,28 +59,38 @@ public class SequenceFeatureFetcher implements Runnable {
         thread.start();\r
     }\r
 \r
-    public void run() {\r
-\r
+    /**\r
+     * DOCUMENT ME!\r
+     */\r
+    public void run()\r
+    {\r
         RandomAccessFile out = null;\r
 \r
-        try {\r
-            String cache = System.getProperty("user.home") + "/.jalview.uniprot.xml";\r
+        try\r
+        {\r
+            String cache = System.getProperty("user.home") +\r
+                "/.jalview.uniprot.xml";\r
 \r
             File test = new File(cache);\r
 \r
-            if (!test.exists()) {\r
+            if (!test.exists())\r
+            {\r
                 out = new RandomAccessFile(cache, "rw");\r
                 out.writeBytes("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");\r
                 out.writeBytes("<UNIPROT_CACHE>\n");\r
-            } else {\r
+            }\r
+            else\r
+            {\r
                 out = new RandomAccessFile(cache, "rw");\r
 \r
                 // open exisiting cache and remove </UNIPROT_CACHE> from the end\r
                 long lastLine = 0;\r
                 String data;\r
 \r
-                while ((data = out.readLine()) != null) {\r
-                    if (data.indexOf("</entry>") > -1) {\r
+                while ((data = out.readLine()) != null)\r
+                {\r
+                    if (data.indexOf("</entry>") > -1)\r
+                    {\r
                         lastLine = out.getFilePointer();\r
                     }\r
                 }\r
@@ -77,18 +101,21 @@ public class SequenceFeatureFetcher implements Runnable {
             int seqIndex = 0;\r
             Vector sequences = align.getSequences();\r
 \r
-            while (seqIndex < sequences.size()) {\r
+            while (seqIndex < sequences.size())\r
+            {\r
                 ArrayList ids = new ArrayList();\r
 \r
                 for (int i = 0; (seqIndex < sequences.size()) && (i < 50);\r
-                        seqIndex++, i++) {\r
+                        seqIndex++, i++)\r
+                {\r
                     SequenceI sequence = (SequenceI) sequences.get(seqIndex);\r
                     ids.add(sequence.getName());\r
                 }\r
 \r
                 tryLocalCacheFirst(ids, align);\r
 \r
-                if (ids.size() > 0) {\r
+                if (ids.size() > 0)\r
+                {\r
                     StringBuffer remainingIds = new StringBuffer("uniprot:");\r
 \r
                     for (int i = 0; i < ids.size(); i++)\r
@@ -98,23 +125,28 @@ public class SequenceFeatureFetcher implements Runnable {
                     String[] result = ebi.fetchData(remainingIds.toString(),\r
                             "xml", null);\r
 \r
-                    if (result != null) {\r
+                    if (result != null)\r
+                    {\r
                         ReadUniprotFile(result, out, align);\r
                     }\r
                 }\r
             }\r
 \r
-            if (out != null) {\r
+            if (out != null)\r
+            {\r
                 out.writeBytes("</UNIPROT_CACHE>\n");\r
                 out.close();\r
             }\r
-        } catch (Exception ex) {\r
+        }\r
+        catch (Exception ex)\r
+        {\r
             ex.printStackTrace();\r
         }\r
 \r
         findMissingIds(align);\r
 \r
-        if (sbuffer.length() > 0) {\r
+        if (sbuffer.length() > 0)\r
+        {\r
             output.setText(\r
                 "Your sequences have been matched to Uniprot. Some of the ids have been\n" +\r
                 "altered, most likely the start/end residue will have been updated.\n" +\r
@@ -123,7 +155,8 @@ public class SequenceFeatureFetcher implements Runnable {
             Desktop.addInternalFrame(output, "Sequence names updated ", 600, 300);\r
         }\r
 \r
-        if (unknownSequences.size() > 0) {\r
+        if (unknownSequences.size() > 0)\r
+        {\r
             //ignore for now!!!!!!!!!!\r
             //  WSWUBlastClient blastClient = new WSWUBlastClient(align, unknownSequences);\r
         }\r
@@ -131,7 +164,15 @@ public class SequenceFeatureFetcher implements Runnable {
         jalview.gui.PaintRefresher.Refresh(null, align);\r
     }\r
 \r
-    void ReadUniprotFile(String[] result, RandomAccessFile out, AlignmentI align) {\r
+    /**\r
+     * DOCUMENT ME!\r
+     *\r
+     * @param result DOCUMENT ME!\r
+     * @param out DOCUMENT ME!\r
+     * @param align DOCUMENT ME!\r
+     */\r
+    void ReadUniprotFile(String[] result, RandomAccessFile out, AlignmentI align)\r
+    {\r
         SequenceI sequence = null;\r
         Vector features = null;\r
         String type;\r
@@ -141,42 +182,54 @@ public class SequenceFeatureFetcher implements Runnable {
         String end;\r
         String pdb = null;\r
 \r
-        for (int r = 0; r < result.length; r++) {\r
-            if ((sequence == null) && (result[r].indexOf("<name>") > -1)) {\r
+        for (int r = 0; r < result.length; r++)\r
+        {\r
+            if ((sequence == null) && (result[r].indexOf("<name>") > -1))\r
+            {\r
                 long filePointer = 0;\r
 \r
-                if (out != null) {\r
-                    try {\r
+                if (out != null)\r
+                {\r
+                    try\r
+                    {\r
                         filePointer = out.getFilePointer();\r
                         out.writeBytes("<entry>\n");\r
-                    } catch (Exception ex) {\r
+                    }\r
+                    catch (Exception ex)\r
+                    {\r
                     }\r
                 }\r
 \r
                 String seqName = parseElement(result[r], "<name>", out);\r
                 sequence = align.findName(seqName);\r
 \r
-                if (sequence == null) {\r
+                if (sequence == null)\r
+                {\r
                     sequence = align.findName(seqName.substring(0,\r
                                 seqName.indexOf('_')));\r
 \r
-                    if (sequence != null) {\r
+                    if (sequence != null)\r
+                    {\r
                         sbuffer.append("changing " + sequence.getName() +\r
                             " to " + seqName + "\n");\r
                         sequence.setName(seqName);\r
                     }\r
                 }\r
 \r
-                if (sequence == null) {\r
+                if (sequence == null)\r
+                {\r
                     sbuffer.append("UNIPROT updated suggestion is " +\r
                         result[r] + "\n");\r
                     sequence = align.findName(result[r]);\r
 \r
                     // this entry has been suggested by ebi.\r
                     // doesn't match id in alignment file\r
-                    try {\r
+                    try\r
+                    {\r
                         out.setLength(filePointer);\r
-                    } catch (Exception ex) {\r
+                    }\r
+                    catch (Exception ex)\r
+                    {\r
                     }\r
 \r
                     // now skip to next entry\r
@@ -193,29 +246,36 @@ public class SequenceFeatureFetcher implements Runnable {
                 pdb = "";\r
             }\r
 \r
-            if (sequence == null) {\r
+            if (sequence == null)\r
+            {\r
                 continue;\r
             }\r
 \r
-            if (result[r].indexOf("<property type=\"pdb accession\"") > -1) {\r
+            if (result[r].indexOf("<property type=\"pdb accession\"") > -1)\r
+            {\r
                 pdb = parseValue(result[r], "value=", out);\r
                 sequence.setPDBId(pdb);\r
             }\r
 \r
-            if (result[r].indexOf("feature type") > -1) {\r
+            if (result[r].indexOf("feature type") > -1)\r
+            {\r
                 type = parseValue(result[r], "type=", out);\r
                 description = parseValue(result[r], "description=", null);\r
                 status = parseValue(result[r], "status=", null);\r
 \r
-                while (result[r].indexOf("position") == -1) {\r
+                while (result[r].indexOf("position") == -1)\r
+                {\r
                     r++; //<location>\r
                 }\r
 \r
                 // r++;\r
-                if (result[r].indexOf("begin") > -1) {\r
+                if (result[r].indexOf("begin") > -1)\r
+                {\r
                     start = parseValue(result[r], "position=", out);\r
                     end = parseValue(result[++r], "position=", out);\r
-                } else {\r
+                }\r
+                else\r
+                {\r
                     start = parseValue(result[r], "position=", out);\r
                     end = parseValue(result[r], "position=", null);\r
                 }\r
@@ -223,10 +283,14 @@ public class SequenceFeatureFetcher implements Runnable {
                 int sstart = Integer.parseInt(start);\r
                 int eend = Integer.parseInt(end);\r
 \r
-                if (out != null) {\r
-                    try {\r
+                if (out != null)\r
+                {\r
+                    try\r
+                    {\r
                         out.writeBytes("</feature>\n");\r
-                    } catch (Exception ex) {\r
+                    }\r
+                    catch (Exception ex)\r
+                    {\r
                     }\r
                 }\r
 \r
@@ -235,45 +299,62 @@ public class SequenceFeatureFetcher implements Runnable {
                 features.add(sf);\r
             }\r
 \r
-            if (result[r].indexOf("<sequence") > -1) {\r
+            if (result[r].indexOf("<sequence") > -1)\r
+            {\r
                 StringBuffer seqString = new StringBuffer();\r
 \r
-                if (out != null) {\r
-                    try {\r
+                if (out != null)\r
+                {\r
+                    try\r
+                    {\r
                         out.writeBytes(result[r] + "\n");\r
-                    } catch (Exception ex) {\r
+                    }\r
+                    catch (Exception ex)\r
+                    {\r
                     }\r
                 }\r
 \r
-                while (result[++r].indexOf("</sequence>") == -1) {\r
+                while (result[++r].indexOf("</sequence>") == -1)\r
+                {\r
                     seqString.append(result[r]);\r
 \r
-                    if (out != null) {\r
-                        try {\r
+                    if (out != null)\r
+                    {\r
+                        try\r
+                        {\r
                             out.writeBytes(result[r] + "\n");\r
-                        } catch (Exception ex) {\r
+                        }\r
+                        catch (Exception ex)\r
+                        {\r
                         }\r
                     }\r
                 }\r
 \r
-                if (out != null) {\r
-                    try {\r
+                if (out != null)\r
+                {\r
+                    try\r
+                    {\r
                         out.writeBytes(result[r] + "\n");\r
-                    } catch (Exception ex) {\r
+                    }\r
+                    catch (Exception ex)\r
+                    {\r
                     }\r
                 }\r
 \r
                 StringBuffer nonGapped = new StringBuffer();\r
 \r
-                for (int i = 0; i < sequence.getSequence().length(); i++) {\r
-                    if (!jalview.util.Comparison.isGap(sequence.getCharAt(i))) {\r
+                for (int i = 0; i < sequence.getSequence().length(); i++)\r
+                {\r
+                    if (!jalview.util.Comparison.isGap(sequence.getCharAt(i)))\r
+                    {\r
                         nonGapped.append(sequence.getCharAt(i));\r
                     }\r
                 }\r
 \r
                 int absStart = seqString.toString().indexOf(nonGapped.toString());\r
 \r
-                if (absStart == -1) {\r
+                if (absStart == -1)\r
+                {\r
                     unknownSequences.add(sequence.getName());\r
                     features = null;\r
                     sbuffer.append(sequence.getName() +\r
@@ -286,7 +367,8 @@ public class SequenceFeatureFetcher implements Runnable {
                 absStart += 1;\r
 \r
                 if ((absStart != sequence.getStart()) ||\r
-                        (absEnd != sequence.getEnd())) {\r
+                        (absEnd != sequence.getEnd()))\r
+                {\r
                     sbuffer.append("Updated: " + sequence.getName() + " " +\r
                         sequence.getStart() + "/" + sequence.getEnd() +\r
                         "  to  " + absStart + "/" + absEnd + "\n");\r
@@ -296,52 +378,78 @@ public class SequenceFeatureFetcher implements Runnable {
                 sequence.setEnd(absEnd);\r
             }\r
 \r
-            if (result[r].indexOf("</entry>") > -1) {\r
-                if (features != null) {\r
+            if (result[r].indexOf("</entry>") > -1)\r
+            {\r
+                if (features != null)\r
+                {\r
                     sequence.setSequenceFeatures(features);\r
                 }\r
 \r
                 features = null;\r
                 sequence = null;\r
 \r
-                if (out != null) {\r
-                    try {\r
+                if (out != null)\r
+                {\r
+                    try\r
+                    {\r
                         out.writeBytes("</entry>\n");\r
-                    } catch (Exception ex) {\r
+                    }\r
+                    catch (Exception ex)\r
+                    {\r
                     }\r
                 }\r
             }\r
         }\r
     }\r
 \r
-    void findMissingIds(AlignmentI align) {\r
+    /**\r
+     * DOCUMENT ME!\r
+     *\r
+     * @param align DOCUMENT ME!\r
+     */\r
+    void findMissingIds(AlignmentI align)\r
+    {\r
         String data;\r
         ArrayList cachedIds = new ArrayList();\r
 \r
-        try {\r
+        try\r
+        {\r
             BufferedReader in = new BufferedReader(new FileReader(\r
                         jalview.bin.Cache.getProperty("UNIPROT_CACHE")));\r
 \r
-            while ((data = in.readLine()) != null) {\r
-                if (data.indexOf("name") > -1) {\r
+            while ((data = in.readLine()) != null)\r
+            {\r
+                if (data.indexOf("name") > -1)\r
+                {\r
                     String name = parseElement(data, "<name>", null);\r
                     cachedIds.add(name);\r
                 }\r
             }\r
-        } catch (Exception ex) {\r
+        }\r
+        catch (Exception ex)\r
+        {\r
             ex.printStackTrace();\r
         }\r
 \r
         for (int i = 0; i < align.getHeight(); i++)\r
-            if (!cachedIds.contains(align.getSequenceAt(i).getName())) {\r
+            if (!cachedIds.contains(align.getSequenceAt(i).getName()))\r
+            {\r
                 unknownSequences.add(align.getSequenceAt(i).getName());\r
             }\r
     }\r
 \r
-    void tryLocalCacheFirst(ArrayList ids, AlignmentI align) {\r
+    /**\r
+     * DOCUMENT ME!\r
+     *\r
+     * @param ids DOCUMENT ME!\r
+     * @param align DOCUMENT ME!\r
+     */\r
+    void tryLocalCacheFirst(ArrayList ids, AlignmentI align)\r
+    {\r
         ArrayList cacheData = new ArrayList();\r
 \r
-        try {\r
+        try\r
+        {\r
             BufferedReader in = new BufferedReader(new FileReader(\r
                         jalview.bin.Cache.getProperty("UNIPROT_CACHE")));\r
 \r
@@ -350,15 +458,19 @@ public class SequenceFeatureFetcher implements Runnable {
             // make sure we remove the ids from the list to retrieve from EBI\r
             String data;\r
 \r
-            while ((data = in.readLine()) != null) {\r
-                if (data.indexOf("name") > -1) {\r
+            while ((data = in.readLine()) != null)\r
+            {\r
+                if (data.indexOf("name") > -1)\r
+                {\r
                     String name = parseElement(data, "<name>", null);\r
 \r
-                    if (ids.contains(name)) {\r
+                    if (ids.contains(name))\r
+                    {\r
                         cacheData.add("<entry>");\r
                         cacheData.add(data);\r
 \r
-                        while (data.indexOf("</entry>") == -1) {\r
+                        while (data.indexOf("</entry>") == -1)\r
+                        {\r
                             data = in.readLine();\r
                             cacheData.add(data);\r
                         }\r
@@ -369,40 +481,72 @@ public class SequenceFeatureFetcher implements Runnable {
                     }\r
                 }\r
             }\r
-        } catch (Exception ex) {\r
+        }\r
+        catch (Exception ex)\r
+        {\r
             ex.printStackTrace();\r
         }\r
 \r
         String[] localData = new String[cacheData.size()];\r
         cacheData.toArray(localData);\r
 \r
-        if ((localData != null) && (localData.length > 0)) {\r
+        if ((localData != null) && (localData.length > 0))\r
+        {\r
             ReadUniprotFile(localData, null, align);\r
         }\r
     }\r
 \r
-    String parseValue(String line, String tag, RandomAccessFile out) {\r
-        if (out != null) {\r
-            try {\r
+    /**\r
+     * DOCUMENT ME!\r
+     *\r
+     * @param line DOCUMENT ME!\r
+     * @param tag DOCUMENT ME!\r
+     * @param out DOCUMENT ME!\r
+     *\r
+     * @return DOCUMENT ME!\r
+     */\r
+    String parseValue(String line, String tag, RandomAccessFile out)\r
+    {\r
+        if (out != null)\r
+        {\r
+            try\r
+            {\r
                 out.writeBytes(line + "\n");\r
-            } catch (Exception ex) {\r
+            }\r
+            catch (Exception ex)\r
+            {\r
             }\r
         }\r
 \r
         int index = line.indexOf(tag) + tag.length() + 1;\r
 \r
-        if (index == tag.length()) {\r
+        if (index == tag.length())\r
+        {\r
             return "";\r
         }\r
 \r
         return line.substring(index, line.indexOf("\"", index + 1));\r
     }\r
 \r
-    String parseElement(String line, String tag, RandomAccessFile out) {\r
-        if (out != null) {\r
-            try {\r
+    /**\r
+     * DOCUMENT ME!\r
+     *\r
+     * @param line DOCUMENT ME!\r
+     * @param tag DOCUMENT ME!\r
+     * @param out DOCUMENT ME!\r
+     *\r
+     * @return DOCUMENT ME!\r
+     */\r
+    String parseElement(String line, String tag, RandomAccessFile out)\r
+    {\r
+        if (out != null)\r
+        {\r
+            try\r
+            {\r
                 out.writeBytes(line + "\n");\r
-            } catch (Exception ex) {\r
+            }\r
+            catch (Exception ex)\r
+            {\r
             }\r
         }\r
 \r