package com.c2kernel.lifecycle.instance.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.instance.WfVertex; public class WfEdgeFactory implements EdgeFactory { @Override public void create ( GraphModelManager graphModelManager, Vertex origin, Vertex terminus, TypeNameAndConstructionInfo typeNameAndConstructionInfo ) { if ( validCreation( graphModelManager, origin, terminus ) ) ((WfVertex)origin).addNext((WfVertex)terminus); } private static 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 ); } }