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
26 import org.apache.commons.lang3.builder.EqualsBuilder;
27 import org.apache.commons.lang3.builder.HashCodeBuilder;
28
29 import java.net.URI;
30 import java.util.Date;
31 import java.util.List;
32
33 import javax.xml.bind.annotation.XmlAccessType;
34 import javax.xml.bind.annotation.XmlAccessorType;
35 import javax.xml.bind.annotation.XmlAttribute;
36 import javax.xml.bind.annotation.XmlElement;
37 import javax.xml.bind.annotation.XmlElementWrapper;
38 import javax.xml.bind.annotation.XmlRootElement;
39 import javax.xml.bind.annotation.XmlType;
40
41
42 @XmlAccessorType(XmlAccessType.FIELD)
43 @XmlType(name = "job", namespace = "http://job.opencastproject.org")
44 @XmlRootElement(name = "job", namespace = "http://job.opencastproject.org")
45 public class JaxbJob {
46
47 @XmlAttribute
48 private long id;
49
50 @XmlElement(name = "creator")
51 private String creator;
52
53 @XmlElement(name = "organization")
54 private String organization;
55
56 @XmlAttribute
57 private long version;
58
59 @XmlAttribute(name = "type")
60 private String jobType;
61
62 @XmlElement(name = "url")
63 private URI uri;
64
65 @XmlElement
66 private String operation;
67
68 @XmlElement(name = "arg")
69 @XmlElementWrapper(name = "args")
70 private List<String> arguments;
71
72 @XmlElement
73 private String createdHost;
74
75 @XmlElement
76 private String processingHost;
77
78 @XmlAttribute
79 private Job.Status status;
80
81 @XmlElement
82 private Date dateCreated;
83
84 @XmlElement
85 private Date dateStarted;
86
87 @XmlElement
88 private Date dateCompleted;
89
90 @XmlElement
91 private Long parentJobId;
92
93 @XmlElement
94 private Long rootJobId;
95
96 @XmlElement
97 private Long queueTime;
98
99 @XmlElement
100 private Long runTime;
101
102 @XmlElement
103 private String payload;
104
105 @XmlElement
106 private boolean dispatchable;
107
108 @XmlElement(name = "jobLoad")
109 private Float jobLoad;
110
111
112 public JaxbJob() {
113 }
114
115 public JaxbJob(Job job) {
116 this();
117 this.id = job.getId();
118 this.dateCompleted = job.getDateCompleted();
119 this.dateCreated = job.getDateCreated();
120 this.dateStarted = job.getDateStarted();
121 this.queueTime = job.getQueueTime();
122 this.runTime = job.getRunTime();
123 this.version = job.getVersion();
124 this.payload = job.getPayload();
125 this.processingHost = job.getProcessingHost();
126 this.createdHost = job.getCreatedHost();
127 this.id = job.getId();
128 this.jobType = job.getJobType();
129 this.operation = job.getOperation();
130 if (job.getArguments() != null)
131 this.arguments = unmodifiableList(job.getArguments());
132 this.status = job.getStatus();
133 this.parentJobId = job.getParentJobId();
134 this.rootJobId = job.getRootJobId();
135 this.dispatchable = job.isDispatchable();
136 this.uri = job.getUri();
137 this.creator = job.getCreator();
138 this.organization = job.getOrganization();
139 this.jobLoad = job.getJobLoad();
140 }
141
142 public Job toJob() {
143 return new JobImpl(id, creator, organization, version, jobType, operation, arguments, status, createdHost,
144 processingHost, dateCreated, dateStarted, dateCompleted, queueTime, runTime, payload, parentJobId,
145 rootJobId, dispatchable, uri, jobLoad);
146 }
147
148 @Override
149 public boolean equals(Object o) {
150 if (this == o)
151 return true;
152
153 if (o == null || getClass() != o.getClass())
154 return false;
155
156 JaxbJob jaxbJob = (JaxbJob) o;
157
158 return new EqualsBuilder().append(id, jaxbJob.id).append(version, jaxbJob.version)
159 .append(dispatchable, jaxbJob.dispatchable).append(creator, jaxbJob.creator)
160 .append(organization, jaxbJob.organization).append(jobType, jaxbJob.jobType).append(uri, jaxbJob.uri)
161 .append(operation, jaxbJob.operation).append(arguments, jaxbJob.arguments)
162 .append(createdHost, jaxbJob.createdHost).append(processingHost, jaxbJob.processingHost)
163 .append(status, jaxbJob.status).append(dateCreated, jaxbJob.dateCreated)
164 .append(dateStarted, jaxbJob.dateStarted).append(dateCompleted, jaxbJob.dateCompleted)
165 .append(parentJobId, jaxbJob.parentJobId).append(rootJobId, jaxbJob.rootJobId)
166 .append(queueTime, jaxbJob.queueTime).append(runTime, jaxbJob.runTime)
167 .append(payload, jaxbJob.payload).append(jobLoad, jaxbJob.jobLoad)
168 .isEquals();
169 }
170
171 @Override
172 public int hashCode() {
173 return new HashCodeBuilder(17, 37).append(id).append(creator).append(organization).append(version).append(jobType)
174 .append(uri).append(operation).append(arguments).append(createdHost).append(processingHost).append(status)
175 .append(dateCreated).append(dateStarted).append(dateCompleted).append(parentJobId).append(rootJobId)
176 .append(queueTime).append(runTime).append(payload).append(dispatchable).append(jobLoad)
177 .toHashCode();
178 }
179 }