private static Node getChildNode(Node node, String name) { List<Node> children = getValidChildNodes(node); Node found = null; for(int i = 0; i < children.size(); i++){ if(!children.get(i).getNodeName().equalsIgnoreCase(name)) continue; found = children.get(i); break; } return found; }
private static List<StateDef> readStates(Node statesNode) { List<Node> states = getValidChildNodes(statesNode); List<StateDef> nodes = new ArrayList<StateDef>(); for(int i = 0; i < states.size(); i++) { nodes.add(readState(states.get(i))); } return nodes; }
private static Map<String, StateMachineDef> readMachines(Node machinesNode) { List<Node> machines = getValidChildNodes(machinesNode); Map<String, StateMachineDef> machineMap = new HashMap<String, StateMachineDef>(); for(int i = 0;i < machines.size(); i++) { StateMachineDef def = readMachine(machines.get(i)); machineMap.put(def.getName(), def); } return machineMap; }
private static List<EventDef> readEvents(Node eventsNode) { List<Node> events = getValidChildNodes(eventsNode); List<EventDef> eventList = new ArrayList<EventDef>(); for(int i = 0; i < events.size(); i++) { Node eventNode = events.get(i); EventDef event = new EventDef(); event.setId(getAttribute(eventNode, ID)); event.setDescription(eventNode.getTextContent()); eventList.add(event); } return eventList; }
private static List<TransitionDef> linkState(StateMachineDef machineDef, Node transitionsNode) { List<Node> transitions = getValidChildNodes(transitionsNode); Map<String, EventDef> events = new HashMap<String, EventDef>(); for(EventDef event: machineDef.getEventDefs()) { events.put(event.getId(), event); } List<TransitionDef> transitionDefs = new ArrayList<TransitionDef>(); for(int i = 0; i < transitions.size(); i++) { Node node = transitions.get(i); String sourceId = getAttribute(node, SOURCE_ID); String targetId = getAttribute(node, TARGET_ID); EventDef event = events.get(getAttribute(node, EVENT_ID)); TransitionDef transition = new TransitionDef(sourceId, targetId); transition.setEventDef(event); transition.setTransitActionDef(new ActionDef(getAttribute(node, TRANSIT_ACTION))); transitionDefs.add(transition); } return transitionDefs; }