
org.rundeck.api.parser.WorkflowStateParser Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rundeck-api-java-client Show documentation
Show all versions of rundeck-api-java-client Show documentation
Java client for the Rundeck REST API
package org.rundeck.api.parser;
import org.apache.commons.lang.StringUtils;
import org.dom4j.Node;
import org.rundeck.api.domain.*;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* $INTERFACE is ... User: greg Date: 1/16/14 Time: 5:44 PM
*/
public class WorkflowStateParser extends BaseXpathParser {
private static final ThreadLocal w3cDateFormat = new ThreadLocal() {
protected DateFormat initialValue() {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
fmt.setTimeZone(TimeZone.getTimeZone("GMT"));
return fmt;
}
};
public WorkflowStateParser(final String xpath) {
super(xpath);
}
public static Date parseDate(String s) {
if (null == s) {
return null;
}
try {
Date parse = w3cDateFormat.get().parse(s);
return parse;
} catch (ParseException e) {
return null;
}
}
private static int integerValue(final String value, final int defValue) {
int parseMax = defValue;
try {
parseMax = null != value ? Integer.parseInt(value) : defValue;
} catch (NumberFormatException e) {
}
return parseMax;
}
@Override
public WorkflowState parse(Node targetNode) {
WorkflowState state = new WorkflowState();
parseWorkflowState(targetNode, state);
return state;
}
/**
* Parse the workflow state components from the given dom node
* @param targetNode
* @param state
*/
public static void parseWorkflowState(Node targetNode, WorkflowState state) {
BaseStateParser.parseBaseState(targetNode, state);
state.setStepCount(integerValue(StringUtils.trimToNull(targetNode.valueOf("stepCount")), 0));
final List rundeckNodes =
new ListParser(new NodeParser(), "targetNodes/nodes/node").parseXmlNode(targetNode);
state.setTargetNodes(new HashSet(rundeckNodes));
//steps
state.setSteps(new ListParser(new WorkflowStepStateParser(),
"steps/step").parseXmlNode(targetNode));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy