JAL-4090 JAL-1551 spotlessApply
[jalview.git] / src / jalview / io / WSWUBlastClient.java
index cae1f1b..8170801 100755 (executable)
@@ -1,30 +1,49 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
- * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  * Jalview is free software: you can redistribute it and/or
  * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- * 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
  * Jalview is distributed in the hope that it will be useful, but 
  * WITHOUT ANY WARRANTY; without even the implied warranty 
  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
  * PURPOSE.  See the GNU General Public License for more details.
  * 
- * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.io;
 
-import java.util.*;
-
-import javax.swing.*;
-
-import jalview.analysis.*;
-import jalview.datamodel.*;
-import jalview.gui.*;
-import uk.ac.ebi.www.*;
+import jalview.analysis.AlignSeq;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.Sequence;
+import jalview.gui.AlignmentPanel;
+import jalview.gui.CutAndPasteTransfer;
+import jalview.gui.Desktop;
+import jalview.gui.JvOptionPane;
+import jalview.util.MessageManager;
+
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import javax.swing.ImageIcon;
+
+import uk.ac.ebi.www.Data;
+import uk.ac.ebi.www.InputParams;
+import uk.ac.ebi.www.WSFile;
+import uk.ac.ebi.www.WSWUBlast;
+import uk.ac.ebi.www.WSWUBlastService;
+import uk.ac.ebi.www.WSWUBlastServiceLocator;
 
 /**
  * DOCUMENT ME!
@@ -56,20 +75,16 @@ public class WSWUBlastClient
   {
     this.ap = ap;
     this.al = al;
-    output.setText("To display sequence features an exact Uniprot id with 100% sequence identity match must be entered."
-            + "\nIn order to display these features, try changing the names of your sequences to the ids suggested below."
-            + "\n\nRunning WSWUBlast at EBI."
-            + "\nPlease quote Pillai S., Silventoinen V., Kallio K., Senger M., Sobhany S., Tate J., Velankar S., Golovin A., Henrick K., Rice P., Stoehr P., Lopez R."
-            + "\nSOAP-based services provided by the European Bioinformatics Institute."
-            + "\nNucleic Acids Res. 33(1):W25-W28 (2005));");
+    output.setText(
+            MessageManager.getString("label.wswublast_client_credits"));
 
-    Desktop.addInternalFrame(output,
-            "BLASTing for unidentified sequences ", 800, 300);
+    Desktop.addInternalFrame(output, MessageManager.getString(
+            "label.blasting_for_unidentified_sequence"), 800, 300);
 
     for (int i = 0; i < ids.size(); i++)
     {
       Sequence sequence = (Sequence) ids.get(i);
-      System.out.println(sequence.getName());
+      jalview.bin.Console.outPrintln(sequence.getName());
 
       BlastThread thread = new BlastThread(sequence);
       thread.start();
@@ -114,15 +129,14 @@ public class WSWUBlastClient
           {
             identitiesFound = true;
 
-            int value = Integer.parseInt(data.substring(
-                    data.indexOf("(") + 1, data.indexOf("%")));
+            int value = Integer.parseInt(data
+                    .substring(data.indexOf("(") + 1, data.indexOf("%")));
 
             if (value >= maxFound)
             {
               maxFound = value;
               buffer.append(" " + id2 + " " + value + "%; ");
-              suggestedIds.addElement(new Object[]
-              { seq, id2 });
+              suggestedIds.addElement(new Object[] { seq, id2 });
             }
           }
         }
@@ -136,11 +150,11 @@ public class WSWUBlastClient
   {
     // This must be outside the run() body as java 1.5
     // will not return any value from the OptionPane to the expired thread.
-    int reply = JOptionPane.showConfirmDialog(Desktop.desktop,
+    int reply = JvOptionPane.showConfirmDialog(Desktop.desktop,
             "Automatically update suggested ids?",
-            "Auto replace sequence ids", JOptionPane.YES_NO_OPTION);
+            "Auto replace sequence ids", JvOptionPane.YES_NO_OPTION);
 
-    if (reply == JOptionPane.YES_OPTION)
+    if (reply == JvOptionPane.YES_OPTION)
     {
       Enumeration keys = suggestedIds.elements();
       while (keys.hasMoreElements())
@@ -162,16 +176,17 @@ public class WSWUBlastClient
           }
         }
 
-        DBRefEntry[] entries = oldseq.getDBRef();
-        if (entries != null)
+        List<DBRefEntry> entries = oldseq.getDBRefs();
+        // BH 2019.01.25 check for 0-length was missing here
+        if (entries != null && entries.size() > 0)
         {
           oldseq.addDBRef(new jalview.datamodel.DBRefEntry(
-                  jalview.datamodel.DBRefSource.UNIPROT, "0", entries[0]
-                          .getAccessionId()));
+                  jalview.datamodel.DBRefSource.UNIPROT, "0",
+                  entries.get(0).getAccessionId()));
         }
       }
     }
-    ap.paintAlignment(true);
+    ap.paintAlignment(true, false);
 
   }
 
@@ -187,8 +202,8 @@ public class WSWUBlastClient
 
       for (int i = 0; i < 9; i++)
       {
-        java.net.URL url = getClass().getResource(
-                "/images/dna" + (i + 1) + ".gif");
+        java.net.URL url = getClass()
+                .getResource("/images/dna" + (i + 1) + ".gif");
 
         if (url != null)
         {
@@ -197,6 +212,7 @@ public class WSWUBlastClient
       }
     }
 
+    @Override
     public void run()
     {
       while (jobsRunning > 0)
@@ -207,8 +223,10 @@ public class WSWUBlastClient
           imageIndex++;
           imageIndex %= 9;
           output.setFrameIcon(imageIcon[imageIndex]);
-          output.setTitle("BLASTing for unidentified sequences - "
-                  + jobsRunning + " jobs running.");
+          output.setTitle(MessageManager.formatMessage(
+                  "label.blasting_for_unidentified_sequence_jobs_running",
+                  new String[]
+                  { Integer.valueOf(jobsRunning).toString() }));
         } catch (Exception ex)
         {
         }
@@ -231,10 +249,11 @@ public class WSWUBlastClient
 
     BlastThread(Sequence sequence)
     {
-      System.out.println("blasting for: " + sequence.getName());
+      jalview.bin.Console.outPrintln("blasting for: " + sequence.getName());
       this.sequence = sequence;
     }
 
+    @Override
     public void run()
     {
       StartJob();
@@ -257,7 +276,7 @@ public class WSWUBlastClient
           else
           {
             Thread.sleep(10000);
-            System.out.println("WSWuBlastClient: I'm alive "
+            jalview.bin.Console.outPrintln("WSWuBlastClient: I'm alive "
                     + sequence.getName() + " " + jobid); // log.debug
           }
         } catch (Exception ex)
@@ -296,7 +315,8 @@ public class WSWUBlastClient
       {
         jobComplete = true;
         jobsRunning--;
-        System.err.println("WSWUBlastClient error:\n" + exp.toString());
+        jalview.bin.Console
+                .errPrintln("WSWUBlastClient error:\n" + exp.toString());
         exp.printStackTrace();
       }
     }