annotate gui/edu/unc/genomics/SubmittedJob.java @ 2:e16016635b2a

Uploaded
author timpalpant
date Mon, 13 Feb 2012 22:12:06 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
1 package edu.unc.genomics;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
2
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
3 import java.util.concurrent.ExecutionException;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
4 import java.util.concurrent.Future;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
5
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
6 /**
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
7 * Represents a job that was submitted for processing
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
8 *
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
9 * @author timpalpant
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
10 *
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
11 */
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
12 public class SubmittedJob {
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
13 private static int numJobs = 0;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
14
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
15 private final Future<?> future;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
16 private final int id;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
17 private final Job job;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
18
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
19 public SubmittedJob(Job job, Future<?> future) {
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
20 this.id = ++numJobs;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
21 this.job = job;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
22 this.future = future;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
23 }
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
24
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
25 /**
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
26 * @return the id
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
27 */
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
28 public int getId() {
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
29 return id;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
30 }
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
31
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
32 /**
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
33 * @return the job
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
34 */
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
35 public Job getJob() {
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
36 return job;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
37 }
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
38
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
39 /**
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
40 * If the job is currently running
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
41 * @return
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
42 */
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
43 public boolean isRunning() {
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
44 return job.isRunning() && !isDone();
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
45 }
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
46
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
47 /**
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
48 * If the job is done running
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
49 * (it may have failed or succeeded)
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
50 * @return
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
51 */
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
52 public boolean isDone() {
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
53 return future.isDone();
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
54 }
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
55
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
56 /**
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
57 * If this job completed without any Exceptions
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
58 * @return
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
59 */
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
60 public boolean succeeded() {
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
61 return (future.isDone() && !failed());
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
62 }
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
63
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
64 /**
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
65 * If this job completed with Exceptions
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
66 * @return
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
67 */
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
68 public boolean failed() {
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
69 if (future.isDone()) {
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
70 try {
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
71 future.get();
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
72 return false;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
73 } catch (InterruptedException | ExecutionException e) {
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
74 return true;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
75 }
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
76 }
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
77
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
78 return false;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
79 }
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
80
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
81 /**
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
82 * Return an Exception that occured, or null if there were none
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
83 * or the job is not yet done
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
84 * @return
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
85 */
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
86 public Exception getException() {
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
87 if (future.isDone()) {
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
88 try {
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
89 future.get();
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
90 return null;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
91 } catch (InterruptedException | ExecutionException e) {
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
92 return e;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
93 }
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
94 }
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
95
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
96 return null;
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
97 }
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
98
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
99 @Override
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
100 public String toString() {
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
101 return "Job "+id+": "+job.getName();
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
102 }
e16016635b2a Uploaded
timpalpant
parents:
diff changeset
103 }