summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/gui/lifecycle/desc/WfEdgeDefFactory.java
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2012-06-26 20:57:49 +0200
committerAndrew Branson <andrew.branson@cern.ch>2012-06-26 20:57:49 +0200
commit3069ddf81b3cce2303cc1528e5de4708a798841f (patch)
tree5fd1ca9057f142b862e394a6347727e0b372522f /src/main/java/com/c2kernel/gui/lifecycle/desc/WfEdgeDefFactory.java
parent99eed1e3c7e7292aea91131baeb36f81e23e3e82 (diff)
More GUI refactoring
Diffstat (limited to 'src/main/java/com/c2kernel/gui/lifecycle/desc/WfEdgeDefFactory.java')
-rw-r--r--src/main/java/com/c2kernel/gui/lifecycle/desc/WfEdgeDefFactory.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/main/java/com/c2kernel/gui/lifecycle/desc/WfEdgeDefFactory.java b/src/main/java/com/c2kernel/gui/lifecycle/desc/WfEdgeDefFactory.java
new file mode 100644
index 0000000..082a4a2
--- /dev/null
+++ b/src/main/java/com/c2kernel/gui/lifecycle/desc/WfEdgeDefFactory.java
@@ -0,0 +1,30 @@
+package com.c2kernel.gui.lifecycle.desc;
+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
+{
+ @Override
+ 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 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);
+ }
+}