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 }
97 this.status = status;
98 this.createdHost = createdHost;
99 this.processingHost = processingHost;
100 this.dateCreated = dateCreated;
101 this.dateStarted = dateStarted;
102 this.dateCompleted = dateCompleted;
103 this.queueTime = queueTime;
104 this.runTime = runTime;
105 this.payload = payload;
106 this.parentJobId = parentJobId;
107 this.rootJobId = rootJobId;
108 this.dispatchable = dispatchable;
109 this.uri = uri;
110 this.load = load;
111 }
112
113 @Override
114 public long getId() {
115 return id;
116 }
117
118 @Override
119 public String getCreator() {
120 return creator;
121 }
122
123 @Override
124 public void setCreator(String creator) {
125 this.creator = creator;
126 }
127
128 @Override
129 public String getOrganization() {
130 return organization;
131 }
132
133 @Override
134 public void setOrganization(String organization) {
135 this.organization = organization;
136 }
137
138 @Override
139 public long getVersion() {
140 return version;
141 }
142
143 @Override
144 public String getJobType() {
145 return jobType;
146 }
147
148 @Override
149 public void setJobType(String jobType) {
150 this.jobType = jobType;
151 }
152
153 @Override
154 public String getOperation() {
155 return operation;
156 }
157
158 @Override
159 public void setOperation(String operation) {
160 this.operation = operation;
161 }
162
163 @Override
164 public List<String> getArguments() {
165 return unmodifiableList(arguments);
166 }
167
168 @Override
169 public void setArguments(List<String> arguments) {
170 if (arguments != null) {
171 this.arguments = unmodifiableList(arguments);
172 }
173 }
174
175 @Override
176 public Status getStatus() {
177 return status;
178 }
179
180 @Override
181 public void setStatus(Status status) {
182 this.status = status;
183 }
184
185 @Override
186 public void setStatus(Status status, FailureReason reason) {
187 setStatus(status);
188 this.failureReason = reason;
189 }
190
191 @Override
192 public FailureReason getFailureReason() {
193 return failureReason;
194 }
195
196 @Override
197 public String getCreatedHost() {
198 return createdHost;
199 }
200
201 @Override
202 public String getProcessingHost() {
203 return processingHost;
204 }
205
206 @Override
207 public void setProcessingHost(String processingHost) {
208 this.processingHost = processingHost;
209 }
210
211 @Override
212 public Date getDateCreated() {
213 return dateCreated;
214 }
215
216 @Override
217 public void setDateCreated(Date dateCreated) {
218 this.dateCreated = dateCreated;
219 }
220
221 @Override
222 public Date getDateStarted() {
223 return dateStarted;
224 }
225
226 @Override
227 public void setDateStarted(Date dateStarted) {
228 this.dateStarted = dateStarted;
229 }
230
231 @Override
232 public Date getDateCompleted() {
233 return dateCompleted;
234 }
235
236 @Override
237 public void setDateCompleted(Date dateCompleted) {
238 this.dateCompleted = dateCompleted;
239 }
240
241 @Override
242 public Long getQueueTime() {
243 return queueTime;
244 }
245
246 @Override
247 public void setQueueTime(Long queueTime) {
248 this.queueTime = queueTime;
249 }
250
251 @Override
252 public Long getRunTime() {
253 return runTime;
254 }
255
256 @Override
257 public void setRunTime(Long runTime) {
258 this.runTime = runTime;
259 }
260
261 @Override
262 public String getPayload() {
263 return payload;
264 }
265
266 @Override
267 public void setPayload(String payload) {
268 this.payload = payload;
269 }
270
271 @Override
272 public int getSignature() {
273 if (arguments == null) {
274 return jobType.hashCode();
275 }
276
277 return jobType.hashCode() + arguments.hashCode();
278 }
279
280 @Override
281 public Long getParentJobId() {
282 return parentJobId;
283 }
284
285 @Override
286 public void setParentJobId(Long parentJobId) {
287 this.parentJobId = parentJobId;
288 }
289
290 @Override
291 public Long getRootJobId() {
292 return rootJobId;
293 }
294
295 @Override
296 public boolean isDispatchable() {
297 return dispatchable;
298 }
299
300 @Override
301 public void setDispatchable(boolean dispatchable) {
302 this.dispatchable = dispatchable;
303 }
304
305 @Override
306 public URI getUri() {
307 return uri;
308 }
309
310 @Override
311 public Float getJobLoad() {
312 return load;
313 }
314
315 @Override
316 public void setJobLoad(Float load) {
317 this.load = load;
318 }
319
320 @Override
321 public boolean equals(Object o) {
322 if (this == o) {
323 return true;
324 }
325
326 if (o == null || getClass() != o.getClass()) {
327 return false;
328 }
329
330 JobImpl job = (JobImpl) o;
331
332 return new EqualsBuilder().append(id, job.id).append(dispatchable, job.dispatchable)
333 .append(creator, job.creator).append(organization, job.organization)
334 .append(jobType, job.jobType).append(operation, job.operation).append(arguments, job.arguments)
335 .append(status, job.status).append(failureReason, job.failureReason).append(createdHost, job.createdHost)
336 .append(processingHost, job.processingHost).append(dateCreated, job.dateCreated)
337 .append(dateStarted, job.dateStarted).append(dateCompleted, job.dateCompleted)
338 .append(queueTime, job.queueTime).append(runTime, job.runTime).append(payload, job.payload)
339 .append(parentJobId, job.parentJobId).append(rootJobId, job.rootJobId)
340 .append(uri, job.uri).append(load, job.load).isEquals();
341 }
342
343 @Override
344 public int hashCode() {
345 return new HashCodeBuilder(17, 37).append(id).append(creator).append(organization).append(jobType)
346 .append(operation).append(arguments).append(status).append(failureReason).append(createdHost)
347 .append(processingHost).append(dateCreated).append(dateStarted).append(dateCompleted).append(queueTime)
348 .append(runTime).append(payload).append(parentJobId).append(rootJobId).append(dispatchable).append(uri)
349 .append(load).toHashCode();
350 }
351
352 @Override
353 public String toString() {
354 return String.format("Job {id:%d, operation:%s, status:%s}", id, operation, status.toString());
355 }
356 }