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 }
133 this.status = job.getStatus();
134 this.parentJobId = job.getParentJobId();
135 this.rootJobId = job.getRootJobId();
136 this.dispatchable = job.isDispatchable();
137 this.uri = job.getUri();
138 this.creator = job.getCreator();
139 this.organization = job.getOrganization();
140 this.jobLoad = job.getJobLoad();
141 }
142
143 public Job toJob() {
144 return new JobImpl(id, creator, organization, version, jobType, operation, arguments, status, createdHost,
145 processingHost, dateCreated, dateStarted, dateCompleted, queueTime, runTime, payload, parentJobId,
146 rootJobId, dispatchable, uri, jobLoad);
147 }
148
149 @Override
150 public boolean equals(Object o) {
151 if (this == o) {
152 return true;
153 }
154
155 if (o == null || getClass() != o.getClass()) {
156 return false;
157 }
158
159 JaxbJob jaxbJob = (JaxbJob) o;
160
161 return new EqualsBuilder().append(id, jaxbJob.id).append(version, jaxbJob.version)
162 .append(dispatchable, jaxbJob.dispatchable).append(creator, jaxbJob.creator)
163 .append(organization, jaxbJob.organization).append(jobType, jaxbJob.jobType).append(uri, jaxbJob.uri)
164 .append(operation, jaxbJob.operation).append(arguments, jaxbJob.arguments)
165 .append(createdHost, jaxbJob.createdHost).append(processingHost, jaxbJob.processingHost)
166 .append(status, jaxbJob.status).append(dateCreated, jaxbJob.dateCreated)
167 .append(dateStarted, jaxbJob.dateStarted).append(dateCompleted, jaxbJob.dateCompleted)
168 .append(parentJobId, jaxbJob.parentJobId).append(rootJobId, jaxbJob.rootJobId)
169 .append(queueTime, jaxbJob.queueTime).append(runTime, jaxbJob.runTime)
170 .append(payload, jaxbJob.payload).append(jobLoad, jaxbJob.jobLoad)
171 .isEquals();
172 }
173
174 @Override
175 public int hashCode() {
176 return new HashCodeBuilder(17, 37).append(id).append(creator).append(organization).append(version).append(jobType)
177 .append(uri).append(operation).append(arguments).append(createdHost).append(processingHost).append(status)
178 .append(dateCreated).append(dateStarted).append(dateCompleted).append(parentJobId).append(rootJobId)
179 .append(queueTime).append(runTime).append(payload).append(dispatchable).append(jobLoad)
180 .toHashCode();
181 }
182 }