X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.tests%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Ftests%2Fcommands%2FMergeFlags.java;fp=bundles%2Forg.simantics.modeling.tests%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Ftests%2Fcommands%2FMergeFlags.java;h=92c98e3c20ce21ccf4fb693b6b8c1e622df01415;hb=ca6fcd858a0b82eb1b5a8f12c4d5df30e84393e0;hp=0000000000000000000000000000000000000000;hpb=67fd62f9c742337ec80eef658192db198a0efaac;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling.tests/src/org/simantics/modeling/tests/commands/MergeFlags.java b/bundles/org.simantics.modeling.tests/src/org/simantics/modeling/tests/commands/MergeFlags.java new file mode 100644 index 000000000..92c98e3c2 --- /dev/null +++ b/bundles/org.simantics.modeling.tests/src/org/simantics/modeling/tests/commands/MergeFlags.java @@ -0,0 +1,52 @@ +package org.simantics.modeling.tests.commands; + +import java.util.ArrayList; + +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.WriteGraph; +import org.simantics.db.common.utils.NameUtils; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.testing.common.CommandSequenceEnvironment; +import org.simantics.db.testing.common.WriteCommand; +import org.simantics.diagram.stubs.DiagramResource; +import org.simantics.modeling.ModelingResources; +import org.simantics.modeling.tests.traits.SingleResourceTrait; +import org.simantics.modeling.tests.traits.SingleResourceTraitImpl; +import org.simantics.structural.stubs.StructuralResource2; + +public class MergeFlags extends WriteCommand { + + private SingleResourceTrait diagram; + + public MergeFlags(SingleResourceTrait diagram) { + this.diagram = diagram; + } + + public MergeFlags(Resource diagram) { + this(new SingleResourceTraitImpl(diagram)); + } + + public Resource getComposite(ReadGraph graph) throws DatabaseException { + DiagramResource DIA = DiagramResource.getInstance(graph); + ModelingResources MOD = ModelingResources.getInstance(graph); + StructuralResource2 STR = StructuralResource2.getInstance(graph); + Resource resource = diagram.getResource(); + if(graph.isInstanceOf(resource, DIA.Diagram)) return graph.getSingleObject(resource, MOD.DiagramToComposite); + else if (graph.isInstanceOf(resource, STR.Composite)) return resource; + else throw new DatabaseException("Expected diagram or composite, got " + NameUtils.getSafeName(graph, resource)); + } + + @Override + protected void run(WriteGraph graph, CommandSequenceEnvironment environment) throws DatabaseException { + + System.err.println("Merging flags in: " + NameUtils.getSafeName(graph, getComposite(graph))); + ArrayList> groups = new ArrayList>(); + org.simantics.modeling.flags.MergeFlags.collectFlagGroupsInComposite(graph, getComposite(graph), groups); + for(ArrayList group : groups) { + org.simantics.modeling.flags.MergeFlags.merge(graph, group); + } + + } + +} \ No newline at end of file