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 java.io.DataInput;
021 import java.io.DataOutput;
022 import java.io.IOException;
023 import java.sql.Timestamp;
024 import java.util.Date;
025
026 import javax.persistence.Basic;
027 import javax.persistence.Column;
028 import javax.persistence.Entity;
029 import javax.persistence.Lob;
030 import javax.persistence.NamedQueries;
031 import javax.persistence.NamedQuery;
032
033 import org.apache.hadoop.io.Writable;
034 import org.apache.oozie.client.BundleJob;
035 import org.apache.oozie.client.Job;
036 import org.apache.oozie.client.rest.JsonBundleJob;
037 import org.apache.oozie.util.DateUtils;
038 import org.apache.oozie.util.WritableUtils;
039 import org.apache.openjpa.persistence.jdbc.Index;
040
041 @Entity
042 @NamedQueries( {
043 @NamedQuery(name = "UPDATE_BUNDLE_JOB", query = "update BundleJobBean w set w.appName = :appName, w.appPath = :appPath, w.conf = :conf, w.externalId = :externalId, w.timeOut = :timeOut, w.authToken = :authToken, w.createdTimestamp = :createdTimestamp, w.endTimestamp = :endTimestamp, w.jobXml = :jobXml, w.lastModifiedTimestamp = :lastModifiedTimestamp, w.origJobXml = :origJobXml, w.startTimestamp = :startTimestamp, w.status = :status, w.timeUnitStr = :timeUnit, w.pending = :pending where w.id = :id"),
044
045 @NamedQuery(name = "UPDATE_BUNDLE_JOB_STATUS", query = "update BundleJobBean w set w.status = :status, w.lastModifiedTimestamp = :lastModifiedTimestamp, w.pending = :pending where w.id = :id"),
046
047 @NamedQuery(name = "DELETE_BUNDLE_JOB", query = "delete from BundleJobBean w where w.id = :id"),
048
049 @NamedQuery(name = "GET_BUNDLE_JOBS", query = "select OBJECT(w) from BundleJobBean w"),
050
051 @NamedQuery(name = "GET_BUNDLE_JOB", query = "select OBJECT(w) from BundleJobBean w where w.id = :id"),
052
053 @NamedQuery(name = "GET_BUNDLE_JOBS_COUNT", query = "select count(w) from BundleJobBean w"),
054
055 @NamedQuery(name = "GET_BUNDLE_JOBS_COLUMNS", query = "select w.id, w.appName, w.appPath, w.conf, w.status, w.kickoffTimestamp, w.startTimestamp, w.endTimestamp, w.pauseTimestamp, w.createdTimestamp, w.user, w.group, w.timeUnitStr, w.timeOut from BundleJobBean w order by w.createdTimestamp desc"),
056
057 @NamedQuery(name = "GET_BUNDLE_JOBS_PENDING", query = "select OBJECT(w) from BundleJobBean w where w.pending = 1 order by w.lastModifiedTimestamp"),
058
059 @NamedQuery(name = "GET_BUNDLE_JOBS_RUNNING", query = "select OBJECT(w) from BundleJobBean w where w.status = 'RUNNING' OR w.status = 'RUNNINGWITHERROR' order by w.lastModifiedTimestamp"),
060
061 @NamedQuery(name = "GET_BUNDLE_JOBS_NEED_START", query = "select OBJECT(w) from BundleJobBean w where w.status = 'PREP' AND (w.kickoffTimestamp IS NULL OR (w.kickoffTimestamp IS NOT NULL AND w.kickoffTimestamp <= :currentTime)) order by w.lastModifiedTimestamp"),
062
063 @NamedQuery(name = "GET_BUNDLE_JOBS_PAUSED", query = "select OBJECT(w) from BundleJobBean w where w.status = 'PAUSED' OR w.status = 'PAUSEDWITHERROR' OR w.status = 'PREPPAUSED' order by w.lastModifiedTimestamp"),
064
065 @NamedQuery(name = "GET_BUNDLE_JOBS_UNPAUSED", query = "select OBJECT(w) from BundleJobBean w where w.status = 'RUNNING' OR w.status = 'RUNNINGWITHERROR' OR w.status = 'PREP' order by w.lastModifiedTimestamp"),
066
067 @NamedQuery(name = "GET_BUNDLE_JOBS_OLDER_THAN", query = "select OBJECT(w) from BundleJobBean w where w.startTimestamp <= :matTime AND (w.status = 'PREP' OR w.status = 'RUNNING') order by w.lastModifiedTimestamp"),
068
069 @NamedQuery(name = "GET_BUNDLE_JOBS_OLDER_THAN_STATUS", query = "select OBJECT(w) from BundleJobBean w where w.status = :status AND w.lastModifiedTimestamp <= :lastModTime order by w.lastModifiedTimestamp"),
070
071 @NamedQuery(name = "GET_COMPLETED_BUNDLE_JOBS_OLDER_THAN", query = "select OBJECT(w) from BundleJobBean w where ( w.status = 'SUCCEEDED' OR w.status = 'FAILED' OR w.status = 'KILLED' OR w.status = 'DONEWITHERROR') AND w.lastModifiedTimestamp <= :lastModTime order by w.lastModifiedTimestamp")})
072 public class BundleJobBean extends JsonBundleJob implements Writable {
073
074 @Basic
075 @Index
076 @Column(name = "status")
077 private String status = Job.Status.PREP.toString();
078
079 @Basic
080 @Column(name = "auth_token")
081 @Lob
082 private String authToken = null;
083
084 @Basic
085 @Column(name = "kickoff_time")
086 private java.sql.Timestamp kickoffTimestamp = null;
087
088 @Basic
089 @Column(name = "start_time")
090 private java.sql.Timestamp startTimestamp = null;
091
092 @Basic
093 @Column(name = "end_time")
094 private java.sql.Timestamp endTimestamp = null;
095
096 @Basic
097 @Column(name = "pause_time")
098 private java.sql.Timestamp pauseTimestamp = null;
099
100 @Basic
101 @Index
102 @Column(name = "created_time")
103 private java.sql.Timestamp createdTimestamp = null;
104
105 @Basic
106 @Column(name = "time_unit")
107 private String timeUnitStr = BundleJob.Timeunit.NONE.toString();
108
109 @Basic
110 @Column(name = "pending")
111 private int pending = 0;
112
113 @Basic
114 @Index
115 @Column(name = "last_modified_time")
116 private java.sql.Timestamp lastModifiedTimestamp = null;
117
118 @Basic
119 @Index
120 @Column(name = "suspended_time")
121 private java.sql.Timestamp suspendedTimestamp = null;
122
123 @Column(name = "job_xml")
124 @Lob
125 private String jobXml = null;
126
127 @Column(name = "orig_job_xml")
128 @Lob
129 private String origJobXml = null;
130
131 /**
132 * @return the authToken
133 */
134 public String getAuthToken() {
135 return authToken;
136 }
137
138 /**
139 * @param authToken the authToken to set
140 */
141 public void setAuthToken(String authToken) {
142 this.authToken = authToken;
143 }
144
145 /**
146 * @return the kickoffTimestamp
147 */
148 public java.sql.Timestamp getKickoffTimestamp() {
149 return kickoffTimestamp;
150 }
151
152 /**
153 * @return the startTimestamp
154 */
155 public java.sql.Timestamp getstartTimestamp() {
156 return startTimestamp;
157 }
158
159 /**
160 * @param kickoffTimestamp the kickoffTimestamp to set
161 */
162 public void setKickoffTimestamp(java.sql.Timestamp kickoffTimestamp) {
163 super.setKickoffTime(DateUtils.toDate(kickoffTimestamp));
164 this.kickoffTimestamp = kickoffTimestamp;
165 }
166
167 /**
168 * @param startTimestamp the startTimestamp to set
169 */
170 public void setStartTimestamp(java.sql.Timestamp startTimestamp) {
171 super.setStartTime(DateUtils.toDate(startTimestamp));
172 this.startTimestamp = startTimestamp;
173 }
174
175 /**
176 * Set startTime
177 *
178 * @param startTime the startTime to set
179 */
180 @Override
181 public void setStartTime(Date startTime) {
182 super.setStartTime(startTime);
183 this.startTimestamp = DateUtils.convertDateToTimestamp(startTime);
184 }
185
186 /**
187 * @return the endTimestamp
188 */
189 public java.sql.Timestamp getEndTimestamp() {
190 return endTimestamp;
191 }
192
193 /**
194 * @param endTimestamp the endTimestamp to set
195 */
196 public void setEndTimestamp(java.sql.Timestamp endTimestamp) {
197 super.setEndTime(DateUtils.toDate(endTimestamp));
198 this.endTimestamp = endTimestamp;
199 }
200
201 /**
202 * @return the pauseTimestamp
203 */
204 public java.sql.Timestamp getPauseTimestamp() {
205 return pauseTimestamp;
206 }
207
208 /**
209 * @param pauseTimestamp the pauseTimestamp to set
210 */
211 public void setPauseTimestamp(java.sql.Timestamp pauseTimestamp) {
212 super.setPauseTime(DateUtils.toDate(pauseTimestamp));
213 this.pauseTimestamp = pauseTimestamp;
214 }
215
216 /**
217 * @return the createdTimestamp
218 */
219 public java.sql.Timestamp getCreatedTimestamp() {
220 return createdTimestamp;
221 }
222
223 /**
224 * @return the createdTime
225 */
226 @Override
227 public Date getCreatedTime() {
228 return DateUtils.toDate(createdTimestamp);
229 }
230
231 /**
232 * @return the timeUnitStr
233 */
234 public String getTimeUnitStr() {
235 return timeUnitStr;
236 }
237
238 /**
239 * @return the pending
240 */
241 public int getPending() {
242 return pending;
243 }
244
245 /**
246 * Set pending to true
247 *
248 * @param pending set pending to true
249 */
250 @Override
251 public void setPending() {
252 super.setPending();
253 this.pending = 1;
254 }
255
256 /**
257 * Set pending to false
258 *
259 * @param pending set pending to false
260 */
261 @Override
262 public void resetPending() {
263 super.resetPending();
264 this.pending = 0;
265 }
266
267 /**
268 * Return if the action is pending.
269 *
270 * @return if the action is pending.
271 */
272 public boolean isPending() {
273 return pending == 1 ? true : false;
274 }
275
276 /**
277 * @return the lastModifiedTimestamp
278 */
279 public java.sql.Timestamp getLastModifiedTimestamp() {
280 return lastModifiedTimestamp;
281 }
282
283 /**
284 * @param lastModifiedTimestamp the lastModifiedTimestamp to set
285 */
286 public void setLastModifiedTimestamp(java.sql.Timestamp lastModifiedTimestamp) {
287 this.lastModifiedTimestamp = lastModifiedTimestamp;
288 }
289
290 /**
291 * @return the suspendedTimestamp
292 */
293 public Timestamp getSuspendedTimestamp() {
294 return suspendedTimestamp;
295 }
296
297 /**
298 * @param suspendedTimestamp the suspendedTimestamp to set
299 */
300 public void setSuspendedTimestamp(Timestamp suspendedTimestamp) {
301 this.suspendedTimestamp = suspendedTimestamp;
302 }
303
304 /**
305 * @return the jobXml
306 */
307 public String getJobXml() {
308 return jobXml;
309 }
310
311 /**
312 * @param jobXml the jobXml to set
313 */
314 public void setJobXml(String jobXml) {
315 this.jobXml = jobXml;
316 }
317
318 /**
319 * @return the origJobXml
320 */
321 public String getOrigJobXml() {
322 return origJobXml;
323 }
324
325 /**
326 * @param origJobXml the origJobXml to set
327 */
328 public void setOrigJobXml(String origJobXml) {
329 this.origJobXml = origJobXml;
330 }
331
332 /**
333 * @param createTime the createdTime to set
334 */
335 @Override
336 public void setCreatedTime(Date createTime) {
337 super.setCreatedTime(createTime);
338 this.createdTimestamp = DateUtils.convertDateToTimestamp(createTime);
339 }
340
341 /**
342 * @param lastModifiedTime
343 */
344 public void setLastModifiedTime(Date lastModifiedTime) {
345 this.lastModifiedTimestamp = DateUtils.convertDateToTimestamp(lastModifiedTime);
346 }
347
348 /* (non-Javadoc)
349 * @see org.apache.hadoop.io.Writable#write(java.io.DataOutput)
350 */
351 @Override
352 public void write(DataOutput dataOutput) throws IOException {
353 WritableUtils.writeStr(dataOutput, getAppPath());
354 WritableUtils.writeStr(dataOutput, getAppName());
355 WritableUtils.writeStr(dataOutput, getId());
356 WritableUtils.writeStr(dataOutput, getConf());
357 WritableUtils.writeStr(dataOutput, getStatusStr());
358 WritableUtils.writeStr(dataOutput, getTimeUnit().toString());
359 dataOutput.writeLong((getKickoffTime() != null) ? getKickoffTime().getTime() : -1);
360 dataOutput.writeLong((getStartTime() != null) ? getStartTime().getTime() : -1);
361 dataOutput.writeLong((getEndTime() != null) ? getEndTime().getTime() : -1);
362 WritableUtils.writeStr(dataOutput, getUser());
363 WritableUtils.writeStr(dataOutput, getGroup());
364 WritableUtils.writeStr(dataOutput, getExternalId());
365 dataOutput.writeInt(getTimeout());
366 }
367
368 /* (non-Javadoc)
369 * @see org.apache.hadoop.io.Writable#readFields(java.io.DataInput)
370 */
371 @Override
372 public void readFields(DataInput dataInput) throws IOException {
373
374 setAppPath(WritableUtils.readStr(dataInput));
375 setAppName(WritableUtils.readStr(dataInput));
376 setId(WritableUtils.readStr(dataInput));
377 setConf(WritableUtils.readStr(dataInput));
378 setStatus(BundleJob.Status.valueOf(WritableUtils.readStr(dataInput)));
379 setTimeUnit(BundleJob.Timeunit.valueOf(WritableUtils.readStr(dataInput)));
380
381 long d = dataInput.readLong();
382 if (d != -1) {
383 setKickoffTime(new Date(d));
384 }
385 d = dataInput.readLong();
386 if (d != -1) {
387 setStartTime(new Date(d));
388 }
389 d = dataInput.readLong();
390 if (d != -1) {
391 setEndTime(new Date(d));
392 }
393 setUser(WritableUtils.readStr(dataInput));
394 setGroup(WritableUtils.readStr(dataInput));
395 setExternalId(WritableUtils.readStr(dataInput));
396 setTimeOut(dataInput.readInt());
397 }
398
399 /* (non-Javadoc)
400 * @see org.apache.oozie.client.rest.JsonBundleJob#getStatus()
401 */
402 @Override
403 public Status getStatus() {
404 return Status.valueOf(this.status);
405 }
406
407 /**
408 * @return status string
409 */
410 public String getStatusStr() {
411 return status;
412 }
413
414 /* (non-Javadoc)
415 * @see org.apache.oozie.client.rest.JsonBundleJob#getEndTime()
416 */
417 @Override
418 public Date getEndTime() {
419 return DateUtils.toDate(endTimestamp);
420 }
421
422 /* (non-Javadoc)
423 * @see org.apache.oozie.client.rest.JsonBundleJob#getKickoffTime()
424 */
425 @Override
426 public Date getKickoffTime() {
427 return DateUtils.toDate(kickoffTimestamp);
428 }
429
430 /* (non-Javadoc)
431 * @see org.apache.oozie.client.rest.JsonBundleJob#getTimeUnit()
432 */
433 @Override
434 public Timeunit getTimeUnit() {
435 return Timeunit.valueOf(this.timeUnitStr);
436 }
437
438 /* (non-Javadoc)
439 * @see org.apache.oozie.client.rest.JsonBundleJob#setEndTime(java.util.Date)
440 */
441 @Override
442 public void setEndTime(Date endTime) {
443 super.setEndTime(endTime);
444 this.endTimestamp = DateUtils.convertDateToTimestamp(endTime);
445 }
446
447 /* (non-Javadoc)
448 * @see org.apache.oozie.client.rest.JsonBundleJob#setKickoffTime(java.util.Date)
449 */
450 @Override
451 public void setKickoffTime(Date kickoffTime) {
452 super.setKickoffTime(kickoffTime);
453 this.kickoffTimestamp = DateUtils.convertDateToTimestamp(kickoffTime);
454 }
455
456 @Override
457 /* (non-Javadoc)
458 * @see org.apache.oozie.client.rest.JsonBundleJob#getPauseTime()
459 */
460 public Date getPauseTime() {
461 return DateUtils.toDate(pauseTimestamp);
462 }
463
464 /* (non-Javadoc)
465 * @see org.apache.oozie.client.rest.JsonBundleJob#setPauseTime(java.util.Date)
466 */
467 @Override
468 public void setPauseTime(Date pauseTime) {
469 super.setPauseTime(pauseTime);
470 this.pauseTimestamp = DateUtils.convertDateToTimestamp(pauseTime);
471 }
472
473 /* (non-Javadoc)
474 * @see org.apache.oozie.client.rest.JsonBundleJob#setStatus(org.apache.oozie.client.BundleJob.Status)
475 */
476 @Override
477 public void setStatus(org.apache.oozie.client.BundleJob.Status val) {
478 super.setStatus(val);
479 this.status = val.toString();
480 }
481
482 /* (non-Javadoc)
483 * @see org.apache.oozie.client.rest.JsonBundleJob#setTimeUnit(org.apache.oozie.client.BundleJob.Timeunit)
484 */
485 @Override
486 public void setTimeUnit(Timeunit timeUnit) {
487 super.setTimeUnit(timeUnit);
488 this.timeUnitStr = timeUnit.toString();
489 }
490
491 /**
492 * @param return the suspendTime
493 */
494 public void setSuspendedTime(Date suspendTime) {
495 this.suspendedTimestamp = DateUtils.convertDateToTimestamp(suspendTime);
496 }
497
498 }