Mercurial > repos > timpalpant > java_genomics_toolkit
diff gui/edu/unc/genomics/SubmittedJob.java @ 2:e16016635b2a
Uploaded
author | timpalpant |
---|---|
date | Mon, 13 Feb 2012 22:12:06 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gui/edu/unc/genomics/SubmittedJob.java Mon Feb 13 22:12:06 2012 -0500 @@ -0,0 +1,103 @@ +package edu.unc.genomics; + +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; + +/** + * Represents a job that was submitted for processing + * + * @author timpalpant + * + */ +public class SubmittedJob { + private static int numJobs = 0; + + private final Future<?> future; + private final int id; + private final Job job; + + public SubmittedJob(Job job, Future<?> future) { + this.id = ++numJobs; + this.job = job; + this.future = future; + } + + /** + * @return the id + */ + public int getId() { + return id; + } + + /** + * @return the job + */ + public Job getJob() { + return job; + } + + /** + * If the job is currently running + * @return + */ + public boolean isRunning() { + return job.isRunning() && !isDone(); + } + + /** + * If the job is done running + * (it may have failed or succeeded) + * @return + */ + public boolean isDone() { + return future.isDone(); + } + + /** + * If this job completed without any Exceptions + * @return + */ + public boolean succeeded() { + return (future.isDone() && !failed()); + } + + /** + * If this job completed with Exceptions + * @return + */ + public boolean failed() { + if (future.isDone()) { + try { + future.get(); + return false; + } catch (InterruptedException | ExecutionException e) { + return true; + } + } + + return false; + } + + /** + * Return an Exception that occured, or null if there were none + * or the job is not yet done + * @return + */ + public Exception getException() { + if (future.isDone()) { + try { + future.get(); + return null; + } catch (InterruptedException | ExecutionException e) { + return e; + } + } + + return null; + } + + @Override + public String toString() { + return "Job "+id+": "+job.getName(); + } +}