This project has retired. For details please refer to its
Attic page.
001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018 package org.apache.oozie;
019
020 import org.apache.oozie.workflow.WorkflowInstance;
021 import org.apache.oozie.workflow.lite.LiteWorkflowInstance;
022 import org.apache.oozie.client.rest.JsonWorkflowJob;
023 import org.apache.oozie.client.WorkflowJob;
024 import org.apache.oozie.util.DateUtils;
025 import org.apache.oozie.util.WritableUtils;
026 import org.apache.hadoop.io.Writable;
027
028 import java.io.DataInput;
029 import java.io.IOException;
030 import java.io.DataOutput;
031 import java.util.Date;
032
033 import javax.persistence.Entity;
034 import javax.persistence.Column;
035 import javax.persistence.NamedQueries;
036 import javax.persistence.NamedQuery;
037 import javax.persistence.Basic;
038 import javax.persistence.Lob;
039
040 import java.sql.Timestamp;
041
042 import org.apache.openjpa.persistence.jdbc.Index;
043
044 @Entity
045 @NamedQueries({
046
047 @NamedQuery(name = "UPDATE_WORKFLOW", query = "update WorkflowJobBean w set w.appName = :appName, w.appPath = :appPath, w.conf = :conf, w.group = :groupName, w.run = :run, w.user = :user, w.authToken = :authToken, w.createdTimestamp = :createdTime, w.endTimestamp = :endTime, w.externalId = :externalId, w.lastModifiedTimestamp = :lastModTime, w.logToken = :logToken, w.protoActionConf = :protoActionConf, w.slaXml =:slaXml, w.startTimestamp = :startTime, w.status = :status, w.wfInstance = :wfInstance where w.id = :id"),
048
049 @NamedQuery(name = "DELETE_WORKFLOW", query = "delete from WorkflowJobBean w where w.id = :id"),
050
051 @NamedQuery(name = "GET_WORKFLOWS", query = "select OBJECT(w) from WorkflowJobBean w order by w.startTimestamp desc"),
052
053 @NamedQuery(name = "GET_WORKFLOWS_COLUMNS", query = "select w.id, w.appName, w.status, w.run, w.user, w.group, w.createdTimestamp, "
054 + "w.startTimestamp, w.lastModifiedTimestamp, w.endTimestamp, w.externalId from WorkflowJobBean w order by w.createdTimestamp desc"),
055
056 @NamedQuery(name = "GET_WORKFLOWS_COUNT", query = "select count(w) from WorkflowJobBean w"),
057
058 @NamedQuery(name = "GET_COMPLETED_WORKFLOWS_OLDER_THAN", query = "select w from WorkflowJobBean w where w.endTimestamp < :endTime"),
059
060 @NamedQuery(name = "GET_WORKFLOW", query = "select OBJECT(w) from WorkflowJobBean w where w.id = :id"),
061
062 @NamedQuery(name = "GET_WORKFLOW_FOR_UPDATE", query = "select OBJECT(w) from WorkflowJobBean w where w.id = :id"),
063
064 @NamedQuery(name = "GET_WORKFLOW_ID_FOR_EXTERNAL_ID", query = "select w.id from WorkflowJobBean w where w.externalId = :externalId"),
065
066 @NamedQuery(name = "GET_WORKFLOWS_COUNT_WITH_STATUS", query = "select count(w) from WorkflowJobBean w where w.status = :status"),
067
068 @NamedQuery(name = "GET_WORKFLOWS_COUNT_WITH_STATUS_IN_LAST_N_SECS", query = "select count(w) from WorkflowJobBean w where w.status = :status and w.lastModifiedTimestamp > :lastModTime")
069
070 })
071 public class WorkflowJobBean extends JsonWorkflowJob implements Writable {
072
073 @Column(name = "proto_action_conf")
074 @Lob
075 private String protoActionConf = null;
076
077 @Basic
078 @Column(name = "log_token")
079 private String logToken = null;
080
081 @Basic
082 @Index
083 @Column(name = "external_id")
084 private String externalId = null;
085
086 @Basic
087 @Index
088 @Column(name = "status")
089 private String status = WorkflowJob.Status.PREP.toString();
090
091 @Basic
092 @Column(name = "created_time")
093 private java.sql.Timestamp createdTimestamp = null;
094
095 @Basic
096 @Column(name = "start_time")
097 private java.sql.Timestamp startTimestamp = null;
098
099 @Basic
100 @Index
101 @Column(name = "end_time")
102 private java.sql.Timestamp endTimestamp = null;
103
104 @Column(name = "auth_token")
105 @Lob
106 private String authToken = null;
107
108 @Basic
109 @Index
110 @Column(name = "last_modified_time")
111 private java.sql.Timestamp lastModifiedTimestamp = null;
112
113 // @Basic(fetch = FetchType.LAZY)
114 // @Column(name="wfinstance",columnDefinition="blob")
115 @Column(name = "wf_instance")
116 @Lob
117 private byte[] wfInstance = null;
118
119 @Column(name = "sla_xml")
120 @Lob
121 private String slaXml = null;
122
123 /**
124 * Default constructor.
125 */
126 public WorkflowJobBean() {
127 }
128
129 /**
130 * Serialize the workflow bean to a data output.
131 *
132 * @param dataOutput data output.
133 * @throws IOException thrown if the workflow bean could not be serialized.
134 */
135 public void write(DataOutput dataOutput) throws IOException {
136 WritableUtils.writeStr(dataOutput, getAppPath());
137 WritableUtils.writeStr(dataOutput, getAppName());
138 WritableUtils.writeStr(dataOutput, getId());
139 WritableUtils.writeStr(dataOutput, getParentId());
140 WritableUtils.writeStr(dataOutput, getConf());
141 WritableUtils.writeStr(dataOutput, getStatusStr());
142 dataOutput.writeLong((getCreatedTime() != null) ? getCreatedTime().getTime() : -1);
143 dataOutput.writeLong((getStartTime() != null) ? getStartTime().getTime() : -1);
144 dataOutput.writeLong((getLastModifiedTime() != null) ? getLastModifiedTime().getTime() : -1);
145 dataOutput.writeLong((getEndTime() != null) ? getEndTime().getTime() : -1);
146 WritableUtils.writeStr(dataOutput, getUser());
147 WritableUtils.writeStr(dataOutput, getGroup());
148 dataOutput.writeInt(getRun());
149 WritableUtils.writeStr(dataOutput, authToken);
150 WritableUtils.writeStr(dataOutput, logToken);
151 WritableUtils.writeStr(dataOutput, protoActionConf);
152 }
153
154 /**
155 * Deserialize a workflow bean from a data input.
156 *
157 * @param dataInput data input.
158 * @throws IOException thrown if the workflow bean could not be deserialized.
159 */
160 public void readFields(DataInput dataInput) throws IOException {
161 setAppPath(WritableUtils.readStr(dataInput));
162 setAppName(WritableUtils.readStr(dataInput));
163 setId(WritableUtils.readStr(dataInput));
164 setParentId(WritableUtils.readStr(dataInput));
165 setConf(WritableUtils.readStr(dataInput));
166 setStatus(WorkflowJob.Status.valueOf(WritableUtils.readStr(dataInput)));
167 // setStatus(WritableUtils.readStr(dataInput));
168 long d = dataInput.readLong();
169 if (d != -1) {
170 setCreatedTime(new Date(d));
171 }
172 d = dataInput.readLong();
173 if (d != -1) {
174 }
175 setStartTime(new Date(d));
176 d = dataInput.readLong();
177 if (d != -1) {
178 setLastModifiedTime(new Date(d));
179 }
180 d = dataInput.readLong();
181 if (d != -1) {
182 setEndTime(new Date(d));
183 }
184 setUser(WritableUtils.readStr(dataInput));
185 setGroup(WritableUtils.readStr(dataInput));
186 setRun(dataInput.readInt());
187 authToken = WritableUtils.readStr(dataInput);
188 logToken = WritableUtils.readStr(dataInput);
189 protoActionConf = WritableUtils.readStr(dataInput);
190 setExternalId(getExternalId());
191 setProtoActionConf(protoActionConf);
192 }
193
194 public String getAuthToken() {
195 return authToken;
196 }
197
198 public void setAuthToken(String authToken) {
199 this.authToken = authToken;
200 }
201
202 public String getLogToken() {
203 return logToken;
204 }
205
206 public void setLogToken(String logToken) {
207 this.logToken = logToken;
208 }
209
210 public String getSlaXml() {
211 return slaXml;
212 }
213
214 public void setSlaXml(String slaXml) {
215 this.slaXml = slaXml;
216 }
217
218 public WorkflowInstance getWorkflowInstance() {
219 return get(this.wfInstance);
220 }
221
222 public byte[] getWfInstance() {
223 return wfInstance;
224 }
225
226 public void setWorkflowInstance(WorkflowInstance workflowInstance) {
227 setWfInstance(workflowInstance);
228 }
229
230 public void setWfInstance(byte[] wfInstance) {
231 this.wfInstance = wfInstance;
232 }
233
234 public void setWfInstance(WorkflowInstance wfInstance) {
235 this.wfInstance = WritableUtils.toByteArray((LiteWorkflowInstance) wfInstance);
236 }
237
238 public String getProtoActionConf() {
239 return protoActionConf;
240 }
241
242 public void setProtoActionConf(String protoActionConf) {
243 this.protoActionConf = protoActionConf;
244 }
245
246 public String getprotoActionConf() {
247 return protoActionConf;
248 }
249
250 public String getlogToken() {
251 return logToken;
252 }
253
254 public String getStatusStr() {
255 return status;
256 }
257
258 public Timestamp getLastModifiedTimestamp() {
259 return lastModifiedTimestamp;
260 }
261
262 public Timestamp getStartTimestamp() {
263 return startTimestamp;
264 }
265
266 public Timestamp getCreatedTimestamp() {
267 return createdTimestamp;
268 }
269
270 public Timestamp getEndTimestamp() {
271 return endTimestamp;
272 }
273
274 @Override
275 public void setAppName(String val) {
276 super.setAppName(val);
277 }
278
279 @Override
280 public void setAppPath(String val) {
281 super.setAppPath(val);
282 }
283
284 @Override
285 public void setConf(String val) {
286 super.setConf(val);
287 }
288
289 @Override
290 public void setStatus(Status val) {
291 super.setStatus(val);
292 this.status = val.toString();
293 }
294
295 @Override
296 public Status getStatus() {
297 return Status.valueOf(this.status);
298 }
299
300 @Override
301 public void setExternalId(String externalId) {
302 super.setExternalId(externalId);
303 this.externalId = externalId;
304 }
305
306 @Override
307 public String getExternalId() {
308 return externalId;
309 }
310
311 @Override
312 public void setLastModifiedTime(Date lastModifiedTime) {
313 super.setLastModifiedTime(lastModifiedTime);
314 this.lastModifiedTimestamp = DateUtils.convertDateToTimestamp(lastModifiedTime);
315 }
316
317 @Override
318 public Date getLastModifiedTime() {
319 return DateUtils.toDate(lastModifiedTimestamp);
320 }
321
322 @Override
323 public Date getCreatedTime() {
324 return DateUtils.toDate(createdTimestamp);
325 }
326
327 @Override
328 public void setCreatedTime(Date createdTime) {
329 super.setCreatedTime(createdTime);
330 this.createdTimestamp = DateUtils.convertDateToTimestamp(createdTime);
331 }
332
333 @Override
334 public Date getStartTime() {
335 return DateUtils.toDate(startTimestamp);
336 }
337
338 @Override
339 public void setStartTime(Date startTime) {
340 super.setStartTime(startTime);
341 this.startTimestamp = DateUtils.convertDateToTimestamp(startTime);
342 }
343
344 @Override
345 public Date getEndTime() {
346 return DateUtils.toDate(endTimestamp);
347 }
348
349 @Override
350 public void setEndTime(Date endTime) {
351 super.setEndTime(endTime);
352 this.endTimestamp = DateUtils.convertDateToTimestamp(endTime);
353 }
354
355 private WorkflowInstance get(byte[] array) {
356 LiteWorkflowInstance pInstance = WritableUtils.fromByteArray(array, LiteWorkflowInstance.class);
357 return pInstance;
358 }
359
360 }