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.client.rest;
019
020 import java.text.MessageFormat;
021 import java.util.Date;
022 import java.util.List;
023
024 import javax.persistence.Basic;
025 import javax.persistence.Column;
026 import javax.persistence.DiscriminatorColumn;
027 import javax.persistence.DiscriminatorType;
028 import javax.persistence.Entity;
029 import javax.persistence.Id;
030 import javax.persistence.Lob;
031 import javax.persistence.Table;
032 import javax.persistence.Transient;
033
034 import org.apache.oozie.client.CoordinatorAction;
035 import org.json.simple.JSONArray;
036 import org.json.simple.JSONObject;
037
038 @Entity
039 @Table(name = "COORD_ACTIONS")
040 @DiscriminatorColumn(name = "bean_type", discriminatorType = DiscriminatorType.STRING)
041 public class JsonCoordinatorAction implements CoordinatorAction, JsonBean {
042
043 @Id
044 private String id;
045
046 @Transient
047 private String jobId;
048
049 @Basic
050 @Column(name = "job_type")
051 private String type;
052
053 @Transient
054 private Status status = CoordinatorAction.Status.WAITING;
055
056 @Basic
057 @Column(name = "action_number")
058 private int actionNumber;
059
060 @Transient
061 private Date createdTime;
062
063 @Column(name = "created_conf")
064 @Lob
065 private String createdConf;
066
067 @Transient
068 private String externalId;
069
070 @Basic
071 @Column(name = "time_out")
072 private int timeOut = 0;
073
074 @Transient
075 private Date lastModifiedTime;
076
077 @Transient
078 private Date nominalTime;
079
080 @Column(name = "run_conf")
081 @Lob
082 private String runConf;
083
084 @Column(name = "action_xml")
085 @Lob
086 private String actionXml;
087
088 @Column(name = "missing_dependencies")
089 @Lob
090 private String missingDependencies;
091
092 @Basic
093 @Column(name = "external_status")
094 private String externalStatus;
095
096 @Basic
097 @Column(name = "tracker_uri")
098 private String trackerUri;
099
100 @Basic
101 @Column(name = "console_url")
102 private String consoleUrl;
103
104 @Basic
105 @Column(name = "error_code")
106 private String errorCode;
107
108 @Basic
109 @Column(name = "error_message")
110 private String errorMessage;
111
112 public JsonCoordinatorAction() {
113
114 }
115
116 @SuppressWarnings("unchecked")
117 public JSONObject toJSONObject() {
118 JSONObject json = new JSONObject();
119 json.put(JsonTags.COORDINATOR_ACTION_ID, id);
120 json.put(JsonTags.COORDINATOR_JOB_ID, jobId);
121 json.put(JsonTags.COORDINATOR_ACTION_TYPE, type);
122 json.put(JsonTags.COORDINATOR_ACTION_NUMBER, actionNumber);
123 json.put(JsonTags.COORDINATOR_ACTION_CREATED_CONF, createdConf);
124 json.put(JsonTags.COORDINATOR_ACTION_CREATED_TIME, JsonUtils
125 .formatDateRfc822(createdTime));
126 json.put(JsonTags.COORDINATOR_ACTION_NOMINAL_TIME, JsonUtils
127 .formatDateRfc822(nominalTime));
128 json.put(JsonTags.COORDINATOR_ACTION_EXTERNALID, externalId);
129 // json.put(JsonTags.COORDINATOR_ACTION_START_TIME, JsonUtils
130 // .formatDateRfc822(startTime));
131 json.put(JsonTags.COORDINATOR_ACTION_STATUS, status.toString());
132 json.put(JsonTags.COORDINATOR_ACTION_RUNTIME_CONF, runConf);
133 json.put(JsonTags.COORDINATOR_ACTION_LAST_MODIFIED_TIME, JsonUtils
134 .formatDateRfc822(lastModifiedTime));
135 // json.put(JsonTags.COORDINATOR_ACTION_START_TIME, JsonUtils
136 // .formatDateRfc822(startTime));
137 // json.put(JsonTags.COORDINATOR_ACTION_END_TIME, JsonUtils
138 // .formatDateRfc822(endTime));
139 json.put(JsonTags.COORDINATOR_ACTION_MISSING_DEPS, missingDependencies);
140 json.put(JsonTags.COORDINATOR_ACTION_EXTERNAL_STATUS, externalStatus);
141 json.put(JsonTags.COORDINATOR_ACTION_TRACKER_URI, trackerUri);
142 json.put(JsonTags.COORDINATOR_ACTION_CONSOLE_URL, consoleUrl);
143 json.put(JsonTags.COORDINATOR_ACTION_ERROR_CODE, errorCode);
144 json.put(JsonTags.COORDINATOR_ACTION_ERROR_MESSAGE, errorMessage);
145 json.put(JsonTags.TO_STRING, toString());
146 return json;
147 }
148
149 public String getId() {
150 return id;
151 }
152
153 public void setId(String id) {
154 this.id = id;
155 }
156
157 public String getJobId() {
158 return jobId;
159 }
160
161 public void setJobId(String id) {
162 this.jobId = id;
163 }
164
165 public String getType() {
166 return type;
167 }
168
169 public void setType(String type) {
170 this.type = type;
171 }
172
173 public String getExternalId() {
174 return externalId;
175 }
176
177 public void setExternalId(String extId) {
178 this.externalId = extId;
179 }
180
181
182 public void setActionNumber(int actionNumber) {
183 this.actionNumber = actionNumber;
184 }
185
186 public int getActionNumber() {
187 return actionNumber;
188 }
189
190 public String getCreatedConf() {
191 return createdConf;
192 }
193
194 public void setCreatedConf(String createdConf) {
195 this.createdConf = createdConf;
196 }
197
198 public void setCreatedTime(Date createdTime) {
199 this.createdTime = createdTime;
200 }
201
202 public Date getCreatedTime() {
203 return createdTime;
204 }
205
206 public Status getStatus() {
207 return status;
208 }
209
210 public void setStatus(Status status) {
211 this.status = status;
212 }
213
214 public void setLastModifiedTime(Date lastModifiedTime) {
215 this.lastModifiedTime = lastModifiedTime;
216 }
217
218 public Date getLastModifiedTime() {
219 return lastModifiedTime;
220 }
221
222 public void setRunConf(String runConf) {
223 this.runConf = runConf;
224 }
225
226 public String getRunConf() {
227 return runConf;
228 }
229
230 public void setMissingDependencies(String missingDependencies) {
231 this.missingDependencies = missingDependencies;
232 }
233
234 public String getMissingDependencies() {
235 return missingDependencies;
236 }
237
238 public String getExternalStatus() {
239 return externalStatus;
240 }
241
242 public void setExternalStatus(String externalStatus) {
243 this.externalStatus = externalStatus;
244 }
245
246 public String getTrackerUri() {
247 return trackerUri;
248 }
249
250 public void setTrackerUri(String trackerUri) {
251 this.trackerUri = trackerUri;
252 }
253
254 public String getConsoleUrl() {
255 return consoleUrl;
256 }
257
258 public void setConsoleUrl(String consoleUrl) {
259 this.consoleUrl = consoleUrl;
260 }
261
262 public String getErrorCode() {
263 return errorCode;
264 }
265
266 public String getErrorMessage() {
267 return errorMessage;
268 }
269
270 public void setErrorInfo(String errorCode, String errorMessage) {
271 this.errorCode = errorCode;
272 this.errorMessage = errorMessage;
273 }
274
275 public String getActionXml() {
276 return actionXml;
277 }
278
279 public void setActionXml(String actionXml) {
280 this.actionXml = actionXml;
281 }
282
283 @Override
284 public String toString() {
285 return MessageFormat.format("WorkflowAction name[{0}] status[{1}]",
286 getId(), getStatus());
287 }
288
289 public Date getNominalTime() {
290 return nominalTime;
291 }
292
293 public void setNominalTime(Date nominalTime) {
294 this.nominalTime = nominalTime;
295 }
296
297 public int getTimeOut() {
298 return timeOut;
299 }
300
301 public void setTimeOut(int timeOut) {
302 this.timeOut = timeOut;
303 }
304
305
306 public void setErrorCode(String errorCode) {
307 this.errorCode = errorCode;
308 }
309
310 public void setErrorMessage(String errorMessage) {
311 this.errorMessage = errorMessage;
312 }
313
314 /**
315 * Convert a nodes list into a JSONArray.
316 *
317 * @param actions nodes list.
318 * @return the corresponding JSON array.
319 */
320 @SuppressWarnings("unchecked")
321 public static JSONArray toJSONArray(List<? extends JsonCoordinatorAction> actions) {
322 JSONArray array = new JSONArray();
323 for (JsonCoordinatorAction action : actions) {
324 array.add(action.toJSONObject());
325 }
326 return array;
327 }
328
329 /*
330 * (non-Javadoc)
331 *
332 * @see java.lang.Object#hashCode()
333 */
334 @Override
335 public int hashCode() {
336 final int prime = 31;
337 int result = 1;
338 result = prime * result + ((id == null) ? 0 : id.hashCode());
339 return result;
340 }
341
342 /*
343 * (non-Javadoc)
344 *
345 * @see java.lang.Object#equals(java.lang.Object)
346 */
347 @Override
348 public boolean equals(Object obj) {
349 if (this == obj) {
350 return true;
351 }
352 if (obj == null) {
353 return false;
354 }
355 if (getClass() != obj.getClass()) {
356 return false;
357 }
358 JsonCoordinatorAction other = (JsonCoordinatorAction) obj;
359 if (id == null) {
360 if (other.id != null) {
361 return false;
362 }
363 }
364 else if (!id.equals(other.id)) {
365 return false;
366 }
367 return true;
368 }
369 }