View Javadoc
1   /*
2    * Licensed to The Apereo Foundation under one or more contributor license
3    * agreements. See the NOTICE file distributed with this work for additional
4    * information regarding copyright ownership.
5    *
6    *
7    * The Apereo Foundation licenses this file to you under the Educational
8    * Community License, Version 2.0 (the "License"); you may not use this file
9    * except in compliance with the License. You may obtain a copy of the License
10   * at:
11   *
12   *   http://opensource.org/licenses/ecl2.txt
13   *
14   * Unless required by applicable law or agreed to in writing, software
15   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
17   * License for the specific language governing permissions and limitations under
18   * the License.
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 }