X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.tests%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Ftests%2Fcommands%2FConnect.java;fp=bundles%2Forg.simantics.modeling.tests%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Ftests%2Fcommands%2FConnect.java;h=4a5f6144c9c4fe06541df428f82fb7af2fab846b;hp=0000000000000000000000000000000000000000;hb=ca6fcd858a0b82eb1b5a8f12c4d5df30e84393e0;hpb=67fd62f9c742337ec80eef658192db198a0efaac diff --git a/bundles/org.simantics.modeling.tests/src/org/simantics/modeling/tests/commands/Connect.java b/bundles/org.simantics.modeling.tests/src/org/simantics/modeling/tests/commands/Connect.java new file mode 100644 index 000000000..4a5f6144c --- /dev/null +++ b/bundles/org.simantics.modeling.tests/src/org/simantics/modeling/tests/commands/Connect.java @@ -0,0 +1,95 @@ +package org.simantics.modeling.tests.commands; + +import java.awt.geom.Point2D; +import java.util.Arrays; +import java.util.Collections; + +import junit.framework.Assert; + +import org.simantics.db.Resource; +import org.simantics.db.WriteGraph; +import org.simantics.db.common.utils.OrderedSetUtils; +import org.simantics.db.exception.DatabaseException; +import org.simantics.diagram.content.ConnectionUtil; +import org.simantics.diagram.query.DiagramRequests; +import org.simantics.diagram.synchronization.graph.AddElement; +import org.simantics.layer0.Layer0; +import org.simantics.modeling.tests.cases.ModelingCommandSequenceTest; +import org.simantics.modeling.tests.traits.SingleResourceTrait; +import org.simantics.modeling.tests.traits.SingleResourceTraitImpl; +import org.simantics.structural.stubs.StructuralResource2; +import org.simantics.structural2.modelingRules.CPTerminal; +import org.simantics.structural2.modelingRules.ConnectionJudgement; +import org.simantics.structural2.modelingRules.IConnectionPoint; +import org.simantics.structural2.modelingRules.IModelingRules; + + +public class Connect extends ResourceWriteCommand implements SingleResourceTrait { + + private SingleResourceTrait diagram; + private SingleResourceTrait m1; + private SingleResourceTrait m2; + private SingleResourceTrait c1; + private SingleResourceTrait c2; + + public Connect(SingleResourceTrait diagram, SingleResourceTrait m1, SingleResourceTrait c1, SingleResourceTrait m2, SingleResourceTrait c2) { + this.diagram = diagram; + this.m1 = m1; + this.c1 = c1; + this.m2 = m2; + this.c2 = c2; + } + + public Connect(SingleResourceTrait diagram, SingleResourceTrait m1, SingleResourceTrait c1, SingleResourceTrait m2, Resource c2) { + this.diagram = diagram; + this.m1 = m1; + this.c1 = c1; + this.m2 = m2; + this.c2 = new SingleResourceTraitImpl(c2); + } + + public Connect(SingleResourceTrait diagram, SingleResourceTrait m1, Resource c1, SingleResourceTrait m2, SingleResourceTrait c2) { + this.diagram = diagram; + this.m1 = m1; + this.c1 = new SingleResourceTraitImpl(c1); + this.m2 = m2; + this.c2 = c2; + } + + public Connect(SingleResourceTrait diagram, SingleResourceTrait m1, Resource c1, SingleResourceTrait m2, Resource c2) { + this.diagram = diagram; + this.m1 = m1; + this.c1 = new SingleResourceTraitImpl(c1); + this.m2 = m2; + this.c2 = new SingleResourceTraitImpl(c2); + } + + @Override + protected Resource run(WriteGraph graph, ModelingCommandSequenceTest environment) throws DatabaseException { + + ConnectionUtil cu = new ConnectionUtil(graph); + Resource conn = cu.createConnectionWithCorners(graph, m1.getResource(graph), c1.getResource(graph), m2.getResource(graph), c2.getResource(graph), Collections.emptyList()); + + Layer0 L0 = Layer0.getInstance(graph); + StructuralResource2 STR = StructuralResource2.getInstance(graph); + graph.claim(conn, L0.PartOf, diagram.getResource()); + + AddElement.claimFreshElementName(graph, diagram.getResource(), conn); + OrderedSetUtils.addFirst(graph, diagram.getResource(), conn); + + IModelingRules modelingRules = graph.syncRequest(DiagramRequests.getModelingRules(diagram.getResource(), null)); + + IConnectionPoint cp1 = new CPTerminal(m1.getResource(graph), c1.getResource(graph)); + IConnectionPoint cp2 = new CPTerminal(m2.getResource(graph), c2.getResource(graph)); + + ConnectionJudgement judgement = modelingRules.judgeConnection(graph, Arrays.asList(cp1, cp2)); + + Assert.assertNotNull(judgement.connectionType); + + graph.claim(conn, STR.HasConnectionType, null, judgement.connectionType); + + return conn; + + } + +} \ No newline at end of file