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      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 }