1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.opencastproject.job.api;
23
24 import static java.util.Collections.unmodifiableList;
25 import static org.opencastproject.job.api.Job.FailureReason.NONE;
26
27 import org.apache.commons.lang3.builder.EqualsBuilder;
28 import org.apache.commons.lang3.builder.HashCodeBuilder;
29
30 import java.net.URI;
31 import java.util.ArrayList;
32 import java.util.Date;
33 import java.util.List;
34
35 public class JobImpl implements Job {
36
37 private long id;
38 private String creator;
39 private String organization;
40 private long version;
41 private String jobType;
42 private String operation;
43 private List<String> arguments = new ArrayList<>();
44 private Status status;
45 private FailureReason failureReason = NONE;
46 private String createdHost;
47 private String processingHost;
48 private Date dateCreated;
49 private Date dateStarted;
50 private Date dateCompleted;
51 private Long queueTime = 0L;
52 private Long runTime = 0L;
53 private String payload;
54 private Long parentJobId = null;
55 private Long rootJobId = null;
56 private boolean dispatchable = true;
57 private URI uri;
58 private Float load = 1.0F;
59
60 public JobImpl() { }
61
62 public JobImpl(long id) {
63 this.id = id;
64 }
65
66 public JobImpl(
67 long id,
68 String creator,
69 String organization,
70 long version,
71 String jobType,
72 String operation,
73 List<String> arguments,
74 Status status,
75 String createdHost,
76 String processingHost,
77 Date dateCreated,
78 Date dateStarted,
79 Date dateCompleted,
80 Long queueTime,
81 Long runTime,
82 String payload,
83 Long parentJobId,
84 Long rootJobId,
85 boolean dispatchable,
86 URI uri,
87 Float load) {
88 this.id = id;
89 this.creator = creator;
90 this.organization = organization;
91 this.version = version;
92 this.jobType = jobType;
93 this.operation = operation;
94 if (arguments != null)
95 this.arguments.addAll(arguments);
96 this.status = status;
97 this.createdHost = createdHost;
98 this.processingHost = processingHost;
99 this.dateCreated = dateCreated;
100 this.dateStarted = dateStarted;
101 this.dateCompleted = dateCompleted;
102 this.queueTime = queueTime;
103 this.runTime = runTime;
104 this.payload = payload;
105 this.parentJobId = parentJobId;
106 this.rootJobId = rootJobId;
107 this.dispatchable = dispatchable;
108 this.uri = uri;
109 this.load = load;
110 }
111
112 @Override
113 public long getId() {
114 return id;
115 }
116
117 @Override
118 public String getCreator() {
119 return creator;
120 }
121
122 @Override
123 public void setCreator(String creator) {
124 this.creator = creator;
125 }
126
127 @Override
128 public String getOrganization() {
129 return organization;
130 }
131
132 @Override
133 public void setOrganization(String organization) {
134 this.organization = organization;
135 }
136
137 @Override
138 public long getVersion() {
139 return version;
140 }
141
142 @Override
143 public String getJobType() {
144 return jobType;
145 }
146
147 @Override
148 public void setJobType(String jobType) {
149 this.jobType = jobType;
150 }
151
152 @Override
153 public String getOperation() {
154 return operation;
155 }
156
157 @Override
158 public void setOperation(String operation) {
159 this.operation = operation;
160 }
161
162 @Override
163 public List<String> getArguments() {
164 return unmodifiableList(arguments);
165 }
166
167 @Override
168 public void setArguments(List<String> arguments) {
169 if (arguments != null)
170 this.arguments = unmodifiableList(arguments);
171 }
172
173 @Override
174 public Status getStatus() {
175 return status;
176 }
177
178 @Override
179 public void setStatus(Status status) {
180 this.status = status;
181 }
182
183 @Override
184 public void setStatus(Status status, FailureReason reason) {
185 setStatus(status);
186 this.failureReason = reason;
187 }
188
189 @Override
190 public FailureReason getFailureReason() {
191 return failureReason;
192 }
193
194 @Override
195 public String getCreatedHost() {
196 return createdHost;
197 }
198
199 @Override
200 public String getProcessingHost() {
201 return processingHost;
202 }
203
204 @Override
205 public void setProcessingHost(String processingHost) {
206 this.processingHost = processingHost;
207 }
208
209 @Override
210 public Date getDateCreated() {
211 return dateCreated;
212 }
213
214 @Override
215 public void setDateCreated(Date dateCreated) {
216 this.dateCreated = dateCreated;
217 }
218
219 @Override
220 public Date getDateStarted() {
221 return dateStarted;
222 }
223
224 @Override
225 public void setDateStarted(Date dateStarted) {
226 this.dateStarted = dateStarted;
227 }
228
229 @Override
230 public Date getDateCompleted() {
231 return dateCompleted;
232 }
233
234 @Override
235 public void setDateCompleted(Date dateCompleted) {
236 this.dateCompleted = dateCompleted;
237 }
238
239 @Override
240 public Long getQueueTime() {
241 return queueTime;
242 }
243
244 @Override
245 public void setQueueTime(Long queueTime) {
246 this.queueTime = queueTime;
247 }
248
249 @Override
250 public Long getRunTime() {
251 return runTime;
252 }
253
254 @Override
255 public void setRunTime(Long runTime) {
256 this.runTime = runTime;
257 }
258
259 @Override
260 public String getPayload() {
261 return payload;
262 }
263
264 @Override
265 public void setPayload(String payload) {
266 this.payload = payload;
267 }
268
269 @Override
270 public int getSignature() {
271 if (arguments == null)
272 return jobType.hashCode();
273
274 return jobType.hashCode() + arguments.hashCode();
275 }
276
277 @Override
278 public Long getParentJobId() {
279 return parentJobId;
280 }
281
282 @Override
283 public void setParentJobId(Long parentJobId) {
284 this.parentJobId = parentJobId;
285 }
286
287 @Override
288 public Long getRootJobId() {
289 return rootJobId;
290 }
291
292 @Override
293 public boolean isDispatchable() {
294 return dispatchable;
295 }
296
297 @Override
298 public void setDispatchable(boolean dispatchable) {
299 this.dispatchable = dispatchable;
300 }
301
302 @Override
303 public URI getUri() {
304 return uri;
305 }
306
307 @Override
308 public Float getJobLoad() {
309 return load;
310 }
311
312 @Override
313 public void setJobLoad(Float load) {
314 this.load = load;
315 }
316
317 @Override
318 public boolean equals(Object o) {
319 if (this == o)
320 return true;
321
322 if (o == null || getClass() != o.getClass())
323 return false;
324
325 JobImpl job = (JobImpl) o;
326
327 return new EqualsBuilder().append(id, job.id).append(dispatchable, job.dispatchable)
328 .append(creator, job.creator).append(organization, job.organization)
329 .append(jobType, job.jobType).append(operation, job.operation).append(arguments, job.arguments)
330 .append(status, job.status).append(failureReason, job.failureReason).append(createdHost, job.createdHost)
331 .append(processingHost, job.processingHost).append(dateCreated, job.dateCreated)
332 .append(dateStarted, job.dateStarted).append(dateCompleted, job.dateCompleted)
333 .append(queueTime, job.queueTime).append(runTime, job.runTime).append(payload, job.payload)
334 .append(parentJobId, job.parentJobId).append(rootJobId, job.rootJobId)
335 .append(uri, job.uri).append(load, job.load).isEquals();
336 }
337
338 @Override
339 public int hashCode() {
340 return new HashCodeBuilder(17, 37).append(id).append(creator).append(organization).append(jobType)
341 .append(operation).append(arguments).append(status).append(failureReason).append(createdHost)
342 .append(processingHost).append(dateCreated).append(dateStarted).append(dateCompleted).append(queueTime)
343 .append(runTime).append(payload).append(parentJobId).append(rootJobId).append(dispatchable).append(uri)
344 .append(load).toHashCode();
345 }
346
347 @Override
348 public String toString() {
349 return String.format("Job {id:%d, operation:%s, status:%s}", id, operation, status.toString());
350 }
351 }