public Diagram addEdge(String transitionId, String fromId, String toId, Point...dockers) { return addEdge(new Edge() .transitionId(transitionId) .fromId(fromId) .toId(toId) .dockers(Arrays.asList(dockers))); }
/** * Returns a list of edges read from sequenceFlow element transitions, and BPMNEdge coordinates. */ private List<Edge> readEdges(List<Node> shapes, List<Transition> transitions, XmlElement planeElement) { Map<String, Edge> edgesBySequenceFlowId = readEdgesBySequenceFlowId(planeElement); // Map shape activity IDs to shape IDs, which are needed for edge from/to IDs. Map<String,String> nodeIdByActivityId = new HashMap<>(); for (Node shape : shapes) { nodeIdByActivityId.put(shape.elementId, shape.id); } // Add node IDs from the previously-parsed workflow transitions and diagram nodes. List<Edge> edges = new ArrayList<>(); for (Transition transition : transitions) { String sequenceFlowId = transition.getId(); Edge edge = edgesBySequenceFlowId.get(sequenceFlowId); if (edge==null) { BadRequestException.checkNotNull(edge, "No edge for sequenceFlow " + sequenceFlowId); } edge.fromId(nodeIdByActivityId.get(transition.getFromId())); edge.toId(nodeIdByActivityId.get(transition.getToId())); edges.add(edge); } return edges; }
private Map<String, Edge> readEdgesBySequenceFlowId(XmlElement planeElement) { Map<String, Edge> edges = new HashMap<>(); for (XmlElement edgeElement: planeElement.removeElements(BPMN_DI_URI, "BPMNEdge")) { startElement(edgeElement); List<Point> edgeWaypoints = new ArrayList<>(); for (XmlElement pointElement: edgeElement.removeElements(OMG_DI_URI, "waypoint")) { startElement(pointElement); double x = Double.valueOf(currentXml.removeAttribute(OMG_DI_URI, "x")); double y = Double.valueOf(currentXml.removeAttribute(OMG_DI_URI, "y")); edgeWaypoints.add(new Point(x, y)); endElement(); } String id = currentXml.removeAttribute(BPMN_DI_URI, "id"); String sequenceFlowId = currentXml.removeAttribute(BPMN_DI_URI, "bpmnElement"); Edge edge = new Edge().id(id).transitionId(sequenceFlowId).dockers(edgeWaypoints); edges.put(sequenceFlowId, edge); endElement(); } return edges; } }
@Test public void testSetTransitionId() { Edge edge = new Edge(); String transId1 = "t1"; edge.transitionId(transId1); assertEquals(transId1, edge.transitionId); // assertEquals(transId1, edge.id); String transId2 = "t2"; edge.id(transId2); // assertEquals(transId2, edge.transitionId); assertEquals(transId2, edge.id); }
@Test public void testSetEdges() { List<Edge> edges = new ArrayList<>(); edges.add(new Edge().transitionId("e1")); edges.add(new Edge().transitionId("e2")); Diagram diagram = Diagram.newInstance(); diagram.edges(edges); assertEquals(edges, diagram.edges); assertTrue(diagram.hasEdges()); edges.add(new Edge().transitionId("e3")); assertNotEquals(edges, diagram.edges); diagram.edges(null); assertNull(diagram.edges); assertFalse(diagram.hasEdges()); }
@Test public void testSetDockers() { Edge edge = new Edge(); List<Point> dockers = new ArrayList<>(); dockers.add(Point.of(1.0, 2.0)); dockers.add(Point.of(4.0, 5.0)); dockers.add(Point.of(6.0, 7.0)); edge.dockers(dockers); assertEquals(dockers, edge.dockers); dockers.add(Point.of(8.0, 9.0)); assertNotEquals(dockers, edge.dockers); edge.dockers(null); assertNull(edge.dockers); }
@Test public void testAddEdge() { Edge edge = new Edge().id(""); Diagram diagram = new Diagram(); assertFalse(diagram.hasEdges()); diagram.addEdge(edge); assertTrue(diagram.hasEdges()); assertEquals(1, diagram.edges.size()); assertEquals(edge.id, diagram.edges.get(0).id); diagram.edges(null); assertFalse(diagram.hasEdges()); diagram.addEdge(edge); assertTrue(diagram.hasEdges()); assertEquals(1, diagram.edges.size()); assertEquals(edge.id, diagram.edges.get(0).id); diagram.addEdge(null); assertTrue(diagram.hasEdges()); assertEquals(1, diagram.edges.size()); assertEquals(edge.id, diagram.edges.get(0).id); }
@Test public void testCreateEmptyEdge() { Edge edge = new Edge(); assertNotNull(edge.dockers); assertTrue(edge.dockers.isEmpty()); assertNull(edge.id); assertNull(edge.transitionId); assertNull(edge.fromId); assertNull(edge.toId); }
@Test public void testEquals() { Diagram diagram1 = Diagram.newInstance(); Diagram diagram2 = Diagram.newInstance(); assertEquals(diagram1, diagram2); diagram2.canvas(new Node().bounds(Bounds.of(1.0, 2.0, 3.0, 4.0))); assertNotEquals(diagram1, diagram2); diagram1.canvas.bounds(Bounds.of(1.0, 2.0, 3.0, 4.0)); assertEquals(diagram1, diagram2); assertEquals(diagram1.hashCode(), diagram2.hashCode()); diagram2.incVersion(); assertNotEquals(diagram1, diagram2); diagram1.incVersion(); assertEquals(diagram1, diagram2); String edgeId = "e1"; diagram1.addEdge(new Edge().transitionId(edgeId)); assertNotEquals(diagram1, diagram2); diagram2.addEdge(new Edge().transitionId(edgeId)); assertEquals(diagram1, diagram2); }
public Diagram addEdge(String transitionId, String fromId, String toId, Point...dockers) { return addEdge(new Edge() .transitionId(transitionId) .fromId(fromId) .toId(toId) .dockers(Arrays.asList(dockers))); }
@Test public void testEquals() { List<Point> dockers = new ArrayList<>(); dockers.add(Point.of(1.0, 2.0)); dockers.add(Point.of(4.0, 5.0)); dockers.add(Point.of(6.0, 7.0)); String from = "n1"; String to = "n2"; String transId = "t1"; Edge edge1 = new Edge() .transitionId(transId) .fromId(from) .toId(to) .dockers(dockers); Edge edge2 = new Edge() .transitionId(transId) .fromId(from) .toId(to) .dockers(dockers); assertEquals(edge1, edge2); assertEquals(edge1.hashCode(), edge2.hashCode()); } }