package com.mossle.bpm.graph; import java.util.ArrayList; import java.util.List; public class Graph { private Node initial; public Node getInitial() { return initial; } public void setInitial(Node initial) { this.initial = initial; } public List<Node> getNodes() { List<Node> nodes = new ArrayList<Node>(); visitNode(initial, nodes); return nodes; } public void visitNode(Node node, List<Node> nodes) { nodes.add(node); for (Edge edge : node.getOutgoingEdges()) { Node nextNode = edge.getDest(); visitNode(nextNode, nodes); } } public List<Edge> getEdges() { List<Edge> edges = new ArrayList<Edge>(); visitEdge(initial, edges); return edges; } public void visitEdge(Node node, List<Edge> edges) { for (Edge edge : node.getOutgoingEdges()) { edges.add(edge); Node nextNode = edge.getDest(); visitEdge(nextNode, edges); } } public Node findById(String id) { for (Node node : this.getNodes()) { if (id.equals(node.getId())) { return node; } } return null; } }