JAL-1925 update source version in license
[jalview.git] / src / jalview / ws / JobStateSummary.java
index 0983dc0..3166068 100644 (file)
@@ -1,3 +1,23 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b2)
+ * Copyright (C) 2015 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.
+ *  
+ * 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/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.ws;
 
 import jalview.gui.WebserviceInfo;
@@ -54,9 +74,16 @@ public class JobStateSummary
    * @param OutputHeader
    * @param j
    */
-  public void updateJobPanelState(WebserviceInfo wsInfo, String OutputHeader,
-          AWsJob j)
+  public void updateJobPanelState(WebserviceInfo wsInfo,
+          String OutputHeader, AWsJob j)
   {
+    if (j.cancelled)
+    {
+      cancelled++;
+      j.subjobComplete = true;
+      wsInfo.setStatus(j.jobnum, WebserviceInfo.STATE_CANCELLED_OK);
+      return;
+    }
     if (j.submitted)
     {
       String progheader = "";
@@ -92,9 +119,7 @@ public class JobStateSummary
       {
         serror++;
         j.subjobComplete = true;
-        wsInfo
-                .setStatus(j.jobnum,
-                        WebserviceInfo.STATE_STOPPED_SERVERERROR);
+        wsInfo.setStatus(j.jobnum, WebserviceInfo.STATE_STOPPED_SERVERERROR);
       }
       else if (j.isBroken())
       {
@@ -104,12 +129,35 @@ public class JobStateSummary
         wsInfo.setStatus(j.jobnum, WebserviceInfo.STATE_STOPPED_ERROR);
       }
       // and pass on any sub-job messages to the user
-      wsInfo.setProgressText(j.jobnum, OutputHeader);
-      wsInfo.appendProgressText(j.jobnum, progheader);
+      StringBuffer output = new StringBuffer();
+      if (OutputHeader != null)
+      {
+
+        output.append(OutputHeader);
+      }
+      if (progheader != null)
+      {
+        output.append(progheader);
+      }
       if (j.hasStatus())
       {
-        wsInfo.appendProgressText(j.jobnum, j.getStatus());
+        // Could try to squash OOMs here, but it usually doesn't help - there
+        // probably won't be
+        // enough memory to handle the results later on anyway.
+        // try {
+        String stat = j.getStatus();
+        if (stat != null)
+        {
+          output.append(stat);
+        }
+        // } catch (OutOfMemoryError e)
+        // {
+        // System.err.println("Out of memory when displaying status. Squashing error.");
+        // wsInfo.appendProgressText(j.jobnum,
+        // "..\n(Out of memory when displaying status)\n");
+        // }
       }
+      wsInfo.setProgressText(j.jobnum, output.toString());
     }
     else
     {