JAL-3878 Move status precedence list to JobStatus class
[jalview.git] / src / jalview / ws2 / actions / AbstractPollableTask.java
index 999411f..bf58b13 100644 (file)
@@ -11,6 +11,7 @@ import java.util.concurrent.TimeUnit;
 
 import jalview.bin.Cache;
 import jalview.util.ArrayUtils;
+import jalview.util.MathUtils;
 import jalview.ws.params.ArgumentI;
 import jalview.ws2.actions.api.TaskEventListener;
 import jalview.ws2.actions.api.TaskI;
@@ -37,6 +38,8 @@ import static java.lang.String.format;
  */
 public abstract class AbstractPollableTask<T extends BaseJob, R> implements TaskI<R>
 {
+  private final long uid = MathUtils.getUID();
+
   protected final WebServiceClientI client;
 
   protected final List<ArgumentI> args;
@@ -62,6 +65,11 @@ public abstract class AbstractPollableTask<T extends BaseJob, R> implements Task
     this.eventHandler = new TaskEventSupport<R>(this, eventListener);
   }
 
+  public long getUid()
+  {
+    return uid;
+  }
+
   /**
    * Start the task using provided scheduled executor service. It creates a
    * polling loop running at set intervals.
@@ -211,35 +219,16 @@ public abstract class AbstractPollableTask<T extends BaseJob, R> implements Task
     for (BaseJob job : jobs)
     {
       JobStatus status = job.getStatus();
-      int jobPrecedence = ArrayUtils.indexOf(statusPrecedence, status);
+      int jobPrecedence = ArrayUtils.indexOf(JobStatus.statusPrecedence, status);
       if (precedence < jobPrecedence)
         precedence = jobPrecedence;
     }
     if (precedence >= 0)
     {
-      setStatus(statusPrecedence[precedence]);
+      setStatus(JobStatus.statusPrecedence[precedence]);
     }
   }
 
-  /**
-   * A precedence order of job statuses used to compute the overall task status.
-   */
-  private static JobStatus[] statusPrecedence = {
-      JobStatus.INVALID, // all must be invalid for task to be invalid
-      JobStatus.COMPLETED, // all but invalid must be completed for task to be
-                           // completed
-      JobStatus.UNKNOWN, // unknown prevents successful completion but not
-                         // running or failure
-      JobStatus.READY,
-      JobStatus.SUBMITTED,
-      JobStatus.QUEUED,
-      JobStatus.RUNNING,
-      JobStatus.CANCELLED, // if any is terminated unsuccessfully, the task is
-                           // failed
-      JobStatus.FAILED,
-      JobStatus.SERVER_ERROR
-  };
-
   @Override
   public void cancel()
   {