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 @Basic
092 @Column(name = "external_id")
093 private String externalId = null;
094
095 @Basic
096 @Column(name = "external_status")
097 private String externalStatus = null;
098
099 @Basic
100 @Column(name = "tracker_uri")
101 private String trackerUri = null;
102
103 @Basic
104 @Column(name = "console_url")
105 private String consoleUrl = null;
106
107 @Basic
108 @Column(name = "error_code")
109 private String errorCode = null;
110
111 @Column(name = "error_message")
112 @Lob
113 private String errorMessage = null;
114
115 public JsonWorkflowAction() {
116 }
117
118 @SuppressWarnings("unchecked")
119 public JSONObject toJSONObject() {
120 JSONObject json = new JSONObject();
121 json.put(JsonTags.WORKFLOW_ACTION_ID, id);
122 json.put(JsonTags.WORKFLOW_ACTION_NAME, name);
123 json.put(JsonTags.WORKFLOW_ACTION_AUTH, cred);
124 json.put(JsonTags.WORKFLOW_ACTION_TYPE, type);
125 json.put(JsonTags.WORKFLOW_ACTION_CONF, conf);
126 json.put(JsonTags.WORKFLOW_ACTION_STATUS, status.toString());
127 json.put(JsonTags.WORKFLOW_ACTION_RETRIES, (long) retries);
128 json.put(JsonTags.WORKFLOW_ACTION_START_TIME, JsonUtils.formatDateRfc822(startTime));
129 json.put(JsonTags.WORKFLOW_ACTION_END_TIME, JsonUtils.formatDateRfc822(endTime));
130 json.put(JsonTags.WORKFLOW_ACTION_TRANSITION, transition);
131 json.put(JsonTags.WORKFLOW_ACTION_DATA, data);
132 json.put(JsonTags.WORKFLOW_ACTION_EXTERNAL_ID, externalId);
133 json.put(JsonTags.WORKFLOW_ACTION_EXTERNAL_STATUS, externalStatus);
134 json.put(JsonTags.WORKFLOW_ACTION_TRACKER_URI, trackerUri);
135 json.put(JsonTags.WORKFLOW_ACTION_CONSOLE_URL, consoleUrl);
136 json.put(JsonTags.WORKFLOW_ACTION_ERROR_CODE, errorCode);
137 json.put(JsonTags.WORKFLOW_ACTION_ERROR_MESSAGE, errorMessage);
138 json.put(JsonTags.TO_STRING, toString());
139 return json;
140 }
141
142 public String getId() {
143 return id;
144 }
145
146 public void setId(String id) {
147 this.id = id;
148 }
149
150 public String getName() {
151 return name;
152 }
153
154 public void setName(String name) {
155 this.name = name;
156 }
157
158 public String getCred() {
159 return cred;
160 }
161
162 public void setCred(String cred) {
163 this.cred = cred;
164 }
165
166 public String getType() {
167 return type;
168 }
169
170 public void setType(String type) {
171 this.type = type;
172 }
173
174 public String getConf() {
175 return conf;
176 }
177
178 public void setConf(String conf) {
179 this.conf = conf;
180 }
181
182 public Status getStatus() {
183 return status;
184 }
185
186 public void setStatus(Status status) {
187 this.status = status;
188 }
189
190 public int getRetries() {
191 return retries;
192 }
193
194 public void setRetries(int retries) {
195 this.retries = retries;
196 }
197
198 public int getUserRetryCount() {
199 return userRetryCount;
200 }
201
202 public void setUserRetryCount(int retryCount) {
203 this.userRetryCount = retryCount;
204 }
205
206 public void incrmentUserRetryCount() {
207 this.userRetryCount++;
208 }
209
210 public int getUserRetryMax() {
211 return userRetryMax;
212 }
213
214 public void setUserRetryMax(int retryMax) {
215 this.userRetryMax = retryMax;
216 }
217
218 public int getUserRetryInterval() {
219 return userRetryInterval;
220 }
221
222 public void setUserRetryInterval(int retryInterval) {
223 this.userRetryInterval = retryInterval;
224 }
225
226 public Date getStartTime() {
227 return startTime;
228 }
229
230 public void setStartTime(Date startTime) {
231 this.startTime = startTime;
232 }
233
234 public Date getEndTime() {
235 return endTime;
236 }
237
238 public void setEndTime(Date endTime) {
239 this.endTime = endTime;
240 }
241
242 public String getTransition() {
243 return transition;
244 }
245
246 public void setTransition(String transition) {
247 this.transition = transition;
248 }
249
250 public String getData() {
251 return data;
252 }
253
254 public void setData(String data) {
255 this.data = data;
256 }
257
258 public String getExternalId() {
259 return externalId;
260 }
261
262 public void setExternalId(String externalId) {
263 this.externalId = externalId;
264 }
265
266 public String getExternalStatus() {
267 return externalStatus;
268 }
269
270 public void setExternalStatus(String externalStatus) {
271 this.externalStatus = externalStatus;
272 }
273
274 public String getTrackerUri() {
275 return trackerUri;
276 }
277
278 public void setTrackerUri(String trackerUri) {
279 this.trackerUri = trackerUri;
280 }
281
282 public String getConsoleUrl() {
283 return consoleUrl;
284 }
285
286 public void setConsoleUrl(String consoleUrl) {
287 this.consoleUrl = consoleUrl;
288 }
289
290 public String getErrorCode() {
291 return errorCode;
292 }
293
294 public String getErrorMessage() {
295 return errorMessage;
296 }
297
298 public void setErrorInfo(String errorCode, String errorMessage) {
299 this.errorCode = errorCode;
300 this.errorMessage = errorMessage;
301 }
302
303 @Override
304 public String toString() {
305 return MessageFormat.format("Action name[{0}] status[{1}]", getName(), getStatus());
306 }
307
308 /**
309 * Convert a nodes list into a JSONArray.
310 *
311 * @param nodes nodes list.
312 * @return the corresponding JSON array.
313 */
314 @SuppressWarnings("unchecked")
315 public static JSONArray toJSONArray(List<? extends JsonWorkflowAction> nodes) {
316 JSONArray array = new JSONArray();
317 for (JsonWorkflowAction node : nodes) {
318 array.add(node.toJSONObject());
319 }
320 return array;
321 }
322
323 }