package org.cristalise.gui.lifecycle.instance; import org.cristalise.kernel.graph.model.DirectedEdge; import org.cristalise.kernel.graph.model.EdgeFactory; import org.cristalise.kernel.graph.model.GraphModelManager; import org.cristalise.kernel.graph.model.TypeNameAndConstructionInfo; import org.cristalise.kernel.graph.model.Vertex; import org.cristalise.kernel.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 ); } }