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

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