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;
*/
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;
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.
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()
{