JAL-3949 - refactor logging from jalview.bin.Cache to jalview.bin.Console
[jalview.git] / src / jalview / ws / AWSThread.java
index 42faa11..b64a526 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -20,7 +20,7 @@
  */
 package jalview.ws;
 
-import jalview.bin.Cache;
+import jalview.bin.Console;
 import jalview.datamodel.AlignedCodonFrame;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
@@ -28,8 +28,11 @@ import jalview.datamodel.AlignmentView;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignFrame;
 import jalview.gui.WebserviceInfo;
-import jalview.gui.FeatureRenderer.FeatureRendererSettings;
 import jalview.util.MessageManager;
+import jalview.viewmodel.seqfeatures.FeatureRendererSettings;
+
+import java.util.ArrayList;
+import java.util.List;
 
 public abstract class AWSThread extends Thread
 {
@@ -57,7 +60,7 @@ public abstract class AWSThread extends Thread
   /**
    * dataset sequence relationships to be propagated onto new results
    */
-  protected AlignedCodonFrame[] codonframe = null;
+  protected List<AlignedCodonFrame> codonframe = null;
 
   /**
    * are there jobs still running in this thread.
@@ -87,9 +90,15 @@ public abstract class AWSThread extends Thread
    */
   protected String WsUrl = null;
 
+  /*
+   * The AlignFrame from which the service was requested.
+   */
+  private AlignFrame alignFrame;
+
   /**
    * generic web service job/subjob poll loop
    */
+  @Override
   public void run()
   {
     JobStateSummary jstate = null;
@@ -118,16 +127,17 @@ public abstract class AWSThread extends Thread
               throw (new Exception(
                       "Timed out when communicating with server\nTry again later.\n"));
             }
-            jalview.bin.Cache.log.debug("Job " + j + " Result state "
+            Console.debug("Job " + j + " Result state "
                     + jobs[j].getState() + "(ServerError="
                     + jobs[j].isServerError() + ")");
           } catch (Exception ex)
           {
             // Deal with Transaction exceptions
-            wsInfo.appendProgressText(jobs[j].jobnum, 
-                       MessageManager.formatMessage("info.server_exception", new String[]{WebServiceName,ex.getMessage()}));
+            wsInfo.appendProgressText(jobs[j].jobnum, MessageManager
+                    .formatMessage("info.server_exception", new Object[]
+                    { WebServiceName, ex.getMessage() }));
             // always output the exception's stack trace to the log
-            Cache.log.warn(WebServiceName + " job(" + jobs[j].jobnum
+            Console.warn(WebServiceName + " job(" + jobs[j].jobnum
                     + ") Server exception.");
             // todo: could limit trace to cause if this is a SOAPFaultException.
             ex.printStackTrace();
@@ -135,7 +145,7 @@ public abstract class AWSThread extends Thread
             if (jobs[j].allowedServerExceptions > 0)
             {
               jobs[j].allowedServerExceptions--;
-              Cache.log.debug("Sleeping after a server exception.");
+              Console.debug("Sleeping after a server exception.");
               try
               {
                 Thread.sleep(5000);
@@ -145,7 +155,7 @@ public abstract class AWSThread extends Thread
             }
             else
             {
-              Cache.log.warn("Dropping job " + j + " " + jobs[j].jobId);
+              Console.warn("Dropping job " + j + " " + jobs[j].jobId);
               jobs[j].subjobComplete = true;
               wsInfo.setStatus(jobs[j].jobnum,
                       WebserviceInfo.STATE_STOPPED_SERVERERROR);
@@ -157,10 +167,10 @@ public abstract class AWSThread extends Thread
             jobs[j].clearResponse(); // may contain out of date result data
             wsInfo.setStatus(jobs[j].jobnum,
                     WebserviceInfo.STATE_STOPPED_ERROR);
-            Cache.log.error("Out of memory when retrieving Job " + j
+            Console.error("Out of memory when retrieving Job " + j
                     + " id:" + WsUrl + "/" + jobs[j].jobId, er);
-            new jalview.gui.OOMWarning("retrieving result for "
-                    + WebServiceName, er);
+            new jalview.gui.OOMWarning(
+                    "retrieving result for " + WebServiceName, er);
             System.gc();
           }
         }
@@ -175,8 +185,8 @@ public abstract class AWSThread extends Thread
           Thread.sleep(5000);
         } catch (InterruptedException e)
         {
-          Cache.log
-                  .debug("Interrupted sleep waiting for next job poll.", e);
+          Console.debug("Interrupted sleep waiting for next job poll.",
+                  e);
         }
         // System.out.println("I'm alive "+alTitle);
       }
@@ -187,10 +197,11 @@ public abstract class AWSThread extends Thread
     }
     else
     {
-      Cache.log
-              .debug("WebServiceJob poll loop finished with no jobs created.");
-      wsInfo.setStatus(wsInfo.STATE_STOPPED_ERROR);
-      wsInfo.appendProgressText(MessageManager.getString("info.no_jobs_ran"));
+      Console.debug(
+              "WebServiceJob poll loop finished with no jobs created.");
+      wsInfo.setStatus(WebserviceInfo.STATE_STOPPED_ERROR);
+      wsInfo.appendProgressText(
+              MessageManager.getString("info.no_jobs_ran"));
       wsInfo.setFinishedNoResults();
     }
   }
@@ -295,13 +306,12 @@ public abstract class AWSThread extends Thread
       SequenceI[] alignment = al.getSequencesArray();
       for (int sq = 0; sq < alignment.length; sq++)
       {
-        for (int i = 0; i < codonframe.length; i++)
+        for (AlignedCodonFrame acf : codonframe)
         {
-          if (codonframe[i] != null
-                  && codonframe[i].involvesSequence(alignment[sq]))
+          final SequenceI seq = alignment[sq];
+          if (acf != null && acf.involvesSequence(seq))
           {
-            al.addCodonFrame(codonframe[i]);
-            codonframe[i] = null;
+            al.addCodonFrame(acf);
             break;
           }
         }
@@ -360,7 +370,7 @@ public abstract class AWSThread extends Thread
           AlignmentView alview, String wsurl2)
   {
     super();
-    // this.alignFrame = alframe;
+    this.alignFrame = alframe;
     currentView = alframe.getCurrentView().getAlignment();
     featureSettings = alframe.getFeatureRenderer().getSettings();
     defGapChar = alframe.getViewport().getGapCharacter();
@@ -369,13 +379,18 @@ public abstract class AWSThread extends Thread
     WsUrl = wsurl2;
     if (alframe != null)
     {
-      AlignedCodonFrame[] cf = alframe.getViewport().getAlignment()
+      List<AlignedCodonFrame> cf = alframe.getViewport().getAlignment()
               .getCodonFrames();
       if (cf != null)
       {
-        codonframe = new AlignedCodonFrame[cf.length];
-        System.arraycopy(cf, 0, codonframe, 0, cf.length);
+        codonframe = new ArrayList<AlignedCodonFrame>();
+        codonframe.addAll(cf);
       }
     }
   }
+
+  protected AlignFrame getRequestingAlignFrame()
+  {
+    return this.alignFrame;
+  }
 }