package com.c2kernel.lifecycle.gui.model; import com.c2kernel.graph.model.DirectedEdge; import com.c2kernel.graph.model.EdgeFactory; import com.c2kernel.graph.model.GraphModelManager; import com.c2kernel.graph.model.TypeNameAndConstructionInfo; import com.c2kernel.graph.model.Vertex; import com.c2kernel.lifecycle.NextDef; import com.c2kernel.lifecycle.WfVertexDef; public class WfEdgeDefFactory implements EdgeFactory { public void create( GraphModelManager graphModelManager, Vertex origin, Vertex terminus, TypeNameAndConstructionInfo typeNameAndConstructionInfo) { if (validCreation(graphModelManager, origin, terminus)) { NextDef nextDef = new NextDef((WfVertexDef) origin, (WfVertexDef) terminus); graphModelManager.getModel().addEdgeAndCreateId(nextDef, origin, terminus); } } private boolean validCreation(GraphModelManager graphModelManager, Vertex origin, Vertex terminus) { DirectedEdge[] connectingEdgesAToB = graphModelManager.getModel().getConnectingEdges(origin.getID(), terminus.getID()); DirectedEdge[] connectingEdgesBToA = graphModelManager.getModel().getConnectingEdges(terminus.getID(), origin.getID()); return (origin != terminus) && (connectingEdgesAToB.length == 0) && (connectingEdgesBToA.length == 0); } }