JAL-3949 Complete new abstracted logging framework in jalview.log. Updated log calls...
[jalview.git] / src / jalview / ws / jws1 / JPredClient.java
index 846cd29..d159b68 100644 (file)
@@ -1,33 +1,49 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
- * Copyright (C) 2010 J Procter, AM Waterhouse, 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.ws.jws1;
 
+import java.util.Locale;
+
+import jalview.analysis.AlignSeq;
+import jalview.bin.Cache;
+import jalview.datamodel.AlignmentView;
+import jalview.datamodel.SeqCigar;
+import jalview.datamodel.SequenceI;
+import jalview.gui.AlignFrame;
+import jalview.gui.Desktop;
+import jalview.gui.JvOptionPane;
+import jalview.gui.WebserviceInfo;
+import jalview.util.MessageManager;
+
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
-import java.util.*;
+import java.util.Hashtable;
 
-import javax.swing.*;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
 
-import ext.vamsas.*;
-import jalview.analysis.*;
-import jalview.bin.*;
-import jalview.datamodel.*;
-import jalview.gui.*;
+import ext.vamsas.Jpred;
+import ext.vamsas.JpredServiceLocator;
+import ext.vamsas.JpredSoapBindingStub;
+import ext.vamsas.ServiceHandle;
 
 public class JPredClient extends WS1Client
 {
@@ -45,9 +61,8 @@ public class JPredClient extends WS1Client
    * @param viewonly
    *          TODO
    */
-  public JPredClient(ext.vamsas.ServiceHandle sh, String title,
-          boolean msa, AlignmentView alview, AlignFrame parentFrame,
-          boolean viewonly)
+  public JPredClient(ext.vamsas.ServiceHandle sh, String title, boolean msa,
+          AlignmentView alview, AlignFrame parentFrame, boolean viewonly)
   {
     super();
     wsInfo = setWebService(sh);
@@ -86,7 +101,7 @@ public class JPredClient extends WS1Client
     Jpred server = locateWebService();
     if (server == null)
     {
-      Cache.log.warn("Couldn't find a Jpred webservice to invoke!");
+      Cache.warn("Couldn't find a Jpred webservice to invoke!");
       return;
     }
     SeqCigar[] msf = null;
@@ -99,33 +114,7 @@ public class JPredClient extends WS1Client
 
     if (viewonly)
     {
-      int[] viscontigs = alview.getVisibleContigs();
-      int spos = 0;
-      int i = 0;
-      if (viscontigs != null)
-      {
-        // Construct the delMap - mapping from the positions within the input to
-        // Jnet to the contigs in the original sequence
-
-        delMap = new int[seq.getEnd() - seq.getStart() + 1];
-        int gapMap[] = seq.gapMap();
-        for (int contig = 0; contig < viscontigs.length; contig += 2)
-        {
-
-          while (spos < gapMap.length && gapMap[spos] < viscontigs[contig])
-          {
-            spos++;
-          }
-          while (spos < gapMap.length
-                  && gapMap[spos] <= viscontigs[contig + 1])
-          {
-            delMap[i++] = spos++;
-          }
-        }
-        int tmap[] = new int[i];
-        System.arraycopy(delMap, 0, tmap, 0, i);
-        delMap = tmap;
-      }
+      delMap = alview.getVisibleContigMapFor(seq.gapMap());
     }
     if (msa && msf.length > 1)
     {
@@ -166,8 +155,8 @@ public class JPredClient extends WS1Client
     {
       if (!msa && msf.length > 1)
       {
-        throw new Error(
-                "Implementation Error! Multiple single sequence prediction jobs are not yet supported.");
+        throw new Error(MessageManager.getString(
+                "error.implementation_error_multiple_single_sequence_prediction_jobs_not_supported"));
       }
 
       String altitle = getPredictionName(WebServiceName) + " for "
@@ -196,8 +185,8 @@ public class JPredClient extends WS1Client
 
   private String getPredictionName(String webServiceName)
   {
-    if (webServiceName.toLowerCase().indexOf(
-            "secondary structure prediction") > -1)
+    if (webServiceName.toLowerCase(Locale.ROOT)
+            .indexOf("secondary structure prediction") > -1)
     {
       return webServiceName;
     }
@@ -249,18 +238,13 @@ public class JPredClient extends WS1Client
 
     SequenceI seq = msf[0];
 
-    String altitle = "JNet prediction on " + seq.getName()
+    String altitle = "JPred prediction on " + seq.getName()
             + " using alignment from " + title;
 
-    wsInfo
-            .setProgressText("Job details for MSA based prediction ("
-                    + title
-                    + ") on sequence :\n>"
-                    + seq.getName()
-                    + "\n"
-                    + AlignSeq
-                            .extractGaps("-. ", seq.getSequenceAsString())
-                    + "\n");
+    wsInfo.setProgressText("Job details for MSA based prediction (" + title
+            + ") on sequence :\n>" + seq.getName() + "\n"
+            + AlignSeq.extractGaps("-. ", seq.getSequenceAsString())
+            + "\n");
     SequenceI aln[] = new SequenceI[msf.length];
     for (int i = 0, j = msf.length; i < j; i++)
     {
@@ -289,14 +273,11 @@ public class JPredClient extends WS1Client
     {
       wsInfo = setWebService();
     }
-    wsInfo
-            .setProgressText("Job details for prediction on sequence :\n>"
-                    + seq.getName()
-                    + "\n"
-                    + AlignSeq
-                            .extractGaps("-. ", seq.getSequenceAsString())
-                    + "\n");
-    String altitle = "JNet prediction for sequence " + seq.getName()
+    wsInfo.setProgressText("Job details for prediction on sequence :\n>"
+            + seq.getName() + "\n"
+            + AlignSeq.extractGaps("-. ", seq.getSequenceAsString())
+            + "\n");
+    String altitle = "JPred prediction for sequence " + seq.getName()
             + " from " + title;
 
     Hashtable SequenceInfo = jalview.analysis.SeqsetUtils
@@ -317,14 +298,15 @@ public class JPredClient extends WS1Client
   private WebserviceInfo setWebService()
   {
     WebServiceName = "JNetWS";
-    WebServiceJobTitle = "JNet secondary structure prediction";
+    WebServiceJobTitle = MessageManager
+            .getString("label.jnet_secondary_structure_prediction");
     WebServiceReference = "\"Cuff J. A and Barton G.J (2000) Application of "
             + "multiple sequence alignment profiles to improve protein secondary structure prediction, "
             + "Proteins 40:502-511\".";
     WsURL = "http://www.compbio.dundee.ac.uk/JalviewWS/services/jpred";
 
     WebserviceInfo wsInfo = new WebserviceInfo(WebServiceJobTitle,
-            WebServiceReference);
+            WebServiceReference, true);
 
     return wsInfo;
   }
@@ -343,14 +325,17 @@ public class JPredClient extends WS1Client
 
     } catch (Exception ex)
     {
-      JOptionPane.showMessageDialog(Desktop.desktop,
-              "The Secondary Structure Prediction Service named "
-                      + WebServiceName + " at " + WsURL
-                      + " couldn't be located.", "Internal Jalview Error",
-              JOptionPane.WARNING_MESSAGE);
-      wsInfo.setProgressText("Serious! " + WebServiceName
-              + " Service location failed\nfor URL :" + WsURL + "\n"
-              + ex.getMessage());
+      JvOptionPane.showMessageDialog(Desktop.desktop,
+              MessageManager.formatMessage(
+                      "label.secondary_structure_prediction_service_couldnt_be_located",
+                      new String[]
+                      { WebServiceName, WsURL }),
+              MessageManager.getString("label.internal_jalview_error"),
+              JvOptionPane.WARNING_MESSAGE);
+      wsInfo.setProgressText(MessageManager.formatMessage(
+              "label.secondary_structure_prediction_service_couldnt_be_located",
+              new String[]
+              { WebServiceName, WsURL }) + "\n" + ex.getMessage());
       wsInfo.setStatus(WebserviceInfo.STATE_STOPPED_SERVERERROR);
 
     }
@@ -358,6 +343,7 @@ public class JPredClient extends WS1Client
     return server;
   }
 
+  @Override
   public void attachWSMenuEntry(JMenu wsmenu, final ServiceHandle sh,
           final AlignFrame af)
   {
@@ -365,6 +351,7 @@ public class JPredClient extends WS1Client
     method.setToolTipText(sh.getEndpointURL());
     method.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         AlignmentView msa = af.gatherSeqOrMsaForSecStrPrediction();
@@ -379,8 +366,8 @@ public class JPredClient extends WS1Client
           if (msa.getSequences().length > 1)
           {
             // Sequence profile based prediction
-            new jalview.ws.jws1.JPredClient(sh, af.getTitle(), true, msa, af,
-                    true);
+            new jalview.ws.jws1.JPredClient(sh, af.getTitle(), true, msa,
+                    af, true);
           }
         }
       }