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 org.apache.oozie.client.WorkflowAction;
021 import org.json.simple.JSONArray;
022 import org.json.simple.JSONObject;
023
024 import java.text.MessageFormat;
025 import java.util.Date;
026 import java.util.List;
027
028 import javax.persistence.*;
029
030 /**
031 * Json Bean that represents an Oozie workflow node.
032 */
033 @Entity
034 @Table(name = "WF_ACTIONS")
035 @DiscriminatorColumn(name = "bean_type", discriminatorType = DiscriminatorType.STRING)
036
037 public class JsonWorkflowAction implements WorkflowAction, JsonBean {
038 @Id
039 private String id;
040
041 @Basic
042 @Column(name = "name")
043 private String name = null;
044
045 @Basic
046 @Column(name = "cred")
047 private String cred = null;
048
049 @Basic
050 @Column(name = "type")
051 private String type = null;
052
053 @Basic
054 @Column(name = "conf")
055 @Lob
056 private String conf = null;
057
058 @Transient
059 private Status status = WorkflowAction.Status.PREP;
060
061 @Basic
062 @Column(name = "retries")
063 private int retries;
064
065 @Basic
066 @Column(name = "user_retry_count")
067 private int userRetryCount;
068
069 @Basic
070 @Column(name = "user_retry_max")
071 private int userRetryMax;
072
073 @Basic
074 @Column(name = "user_retry_interval")
075 private int userRetryInterval;
076
077 @Transient
078 private Date startTime;
079
080 @Transient
081 private Date endTime;
082
083 @Basic
084 @Column(name = "transition")
085 private String transition = null;
086
087 @Column(name = "data")
088 @Lob
089 private String data = null;
090
091 @Column(name = "stats")
092 @Lob
093 private String stats = null;
094
095 @Column(name = "external_child_ids")
096 @Lob
097 private String externalChildIDs = null;
098
099 @Basic
100 @Column(name = "external_id")
101 private String externalId = null;
102
103 @Basic
104 @Column(name = "external_status")
105 private String externalStatus = null;
106
107 @Basic
108 @Column(name = "tracker_uri")
109 private String trackerUri = null;
110
111 @Basic
112 @Column(name = "console_url")
113 private String consoleUrl = null;
114
115 @Basic
116 @Column(name = "error_code")
117 private String errorCode = null;
118
119 @Column(name = "error_message")
120 @Lob
121 private String errorMessage = null;
122
123 public JsonWorkflowAction() {
124 }
125
126 @SuppressWarnings("unchecked")
127 public JSONObject toJSONObject() {
128 return toJSONObject("GMT");
129 }
130
131 @SuppressWarnings("unchecked")
132 public JSONObject toJSONObject(String timeZoneId) {
133 JSONObject json = new JSONObject();
134 json.put(JsonTags.WORKFLOW_ACTION_ID, id);
135 json.put(JsonTags.WORKFLOW_ACTION_NAME, name);
136 json.put(JsonTags.WORKFLOW_ACTION_AUTH, cred);
137 json.put(JsonTags.WORKFLOW_ACTION_TYPE, type);
138 json.put(JsonTags.WORKFLOW_ACTION_CONF, conf);
139 json.put(JsonTags.WORKFLOW_ACTION_STATUS, status.toString());
140 json.put(JsonTags.WORKFLOW_ACTION_RETRIES, (long) retries);
141 json.put(JsonTags.WORKFLOW_ACTION_START_TIME, JsonUtils.formatDateRfc822(startTime, timeZoneId));
142 json.put(JsonTags.WORKFLOW_ACTION_END_TIME, JsonUtils.formatDateRfc822(endTime, timeZoneId));
143 json.put(JsonTags.WORKFLOW_ACTION_TRANSITION, transition);
144 json.put(JsonTags.WORKFLOW_ACTION_DATA, data);
145 json.put(JsonTags.WORKFLOW_ACTION_STATS, stats);
146 json.put(JsonTags.WORKFLOW_ACTION_EXTERNAL_CHILD_IDS, externalChildIDs);
147 json.put(JsonTags.WORKFLOW_ACTION_EXTERNAL_ID, externalId);
148 json.put(JsonTags.WORKFLOW_ACTION_EXTERNAL_STATUS, externalStatus);
149 json.put(JsonTags.WORKFLOW_ACTION_TRACKER_URI, trackerUri);
150 json.put(JsonTags.WORKFLOW_ACTION_CONSOLE_URL, consoleUrl);
151 json.put(JsonTags.WORKFLOW_ACTION_ERROR_CODE, errorCode);
152 json.put(JsonTags.WORKFLOW_ACTION_ERROR_MESSAGE, errorMessage);
153 json.put(JsonTags.TO_STRING, toString());
154 return json;
155 }
156
157 public String getId() {
158 return id;
159 }
160
161 public void setId(String id) {
162 this.id = id;
163 }
164
165 public String getName() {
166 return name;
167 }
168
169 public void setName(String name) {
170 this.name = name;
171 }
172
173 public String getCred() {
174 return cred;
175 }
176
177 public void setCred(String cred) {
178 this.cred = cred;
179 }
180
181 public String getType() {
182 return type;
183 }
184
185 public void setType(String type) {
186 this.type = type;
187 }
188
189 public String getConf() {
190 return conf;
191 }
192
193 public void setConf(String conf) {
194 this.conf = conf;
195 }
196
197 public Status getStatus() {
198 return status;
199 }
200
201 public void setStatus(Status status) {
202 this.status = status;
203 }
204
205 public int getRetries() {
206 return retries;
207 }
208
209 public void setRetries(int retries) {
210 this.retries = retries;
211 }
212
213 public int getUserRetryCount() {
214 return userRetryCount;
215 }
216
217 public void setUserRetryCount(int retryCount) {
218 this.userRetryCount = retryCount;
219 }
220
221 public void incrmentUserRetryCount() {
222 this.userRetryCount++;
223 }
224
225 public int getUserRetryMax() {
226 return userRetryMax;
227 }
228
229 public void setUserRetryMax(int retryMax) {
230 this.userRetryMax = retryMax;
231 }
232
233 public int getUserRetryInterval() {
234 return userRetryInterval;
235 }
236
237 public void setUserRetryInterval(int retryInterval) {
238 this.userRetryInterval = retryInterval;
239 }
240
241 public Date getStartTime() {
242 return startTime;
243 }
244
245 public void setStartTime(Date startTime) {
246 this.startTime = startTime;
247 }
248
249 public Date getEndTime() {
250 return endTime;
251 }
252
253 public void setEndTime(Date endTime) {
254 this.endTime = endTime;
255 }
256
257 public String getTransition() {
258 return transition;
259 }
260
261 public void setTransition(String transition) {
262 this.transition = transition;
263 }
264
265 public String getData() {
266 return data;
267 }
268
269 public void setData(String data) {
270 this.data = data;
271 }
272
273 public String getStats() {
274 return stats;
275 }
276
277 public void setStats(String stats) {
278 this.stats = stats;
279 }
280
281 public String getExternalChildIDs() {
282 return externalChildIDs;
283 }
284
285 public void setExternalChildIDs(String externalChildIDs) {
286 this.externalChildIDs = externalChildIDs;
287 }
288
289 public String getExternalId() {
290 return externalId;
291 }
292
293 public void setExternalId(String externalId) {
294 this.externalId = externalId;
295 }
296
297 public String getExternalStatus() {
298 return externalStatus;
299 }
300
301 public void setExternalStatus(String externalStatus) {
302 this.externalStatus = externalStatus;
303 }
304
305 public String getTrackerUri() {
306 return trackerUri;
307 }
308
309 public void setTrackerUri(String trackerUri) {
310 this.trackerUri = trackerUri;
311 }
312
313 public String getConsoleUrl() {
314 return consoleUrl;
315 }
316
317 public void setConsoleUrl(String consoleUrl) {
318 this.consoleUrl = consoleUrl;
319 }
320
321 public String getErrorCode() {
322 return errorCode;
323 }
324
325 public String getErrorMessage() {
326 return errorMessage;
327 }
328
329 public void setErrorInfo(String errorCode, String errorMessage) {
330 this.errorCode = errorCode;
331 this.errorMessage = errorMessage;
332 }
333
334 @Override
335 public String toString() {
336 return MessageFormat.format("Action name[{0}] status[{1}]", getName(), getStatus());
337 }
338
339 /**
340 * Convert a nodes list into a JSONArray.
341 *
342 * @param nodes nodes list.
343 * @param timeZoneId time zone to use for dates in the JSON array.
344 * @return the corresponding JSON array.
345 */
346 @SuppressWarnings("unchecked")
347 public static JSONArray toJSONArray(List<? extends JsonWorkflowAction> nodes, String timeZoneId) {
348 JSONArray array = new JSONArray();
349 for (JsonWorkflowAction node : nodes) {
350 array.add(node.toJSONObject(timeZoneId));
351 }
352 return array;
353 }
354
355 }