X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.tests%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Ftests%2Ftraits%2FDiagramElementTrait.java;fp=bundles%2Forg.simantics.modeling.tests%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Ftests%2Ftraits%2FDiagramElementTrait.java;h=134572a3848b36d21b9b2c4860b2613602f4c58a;hb=ca6fcd858a0b82eb1b5a8f12c4d5df30e84393e0;hp=0000000000000000000000000000000000000000;hpb=67fd62f9c742337ec80eef658192db198a0efaac;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling.tests/src/org/simantics/modeling/tests/traits/DiagramElementTrait.java b/bundles/org.simantics.modeling.tests/src/org/simantics/modeling/tests/traits/DiagramElementTrait.java new file mode 100644 index 000000000..134572a38 --- /dev/null +++ b/bundles/org.simantics.modeling.tests/src/org/simantics/modeling/tests/traits/DiagramElementTrait.java @@ -0,0 +1,29 @@ +package org.simantics.modeling.tests.traits; + +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.common.uri.UnescapedChildMapOfResource; +import org.simantics.db.common.utils.NameUtils; +import org.simantics.db.exception.DatabaseException; +import org.simantics.modeling.ModelingResources; + +public class DiagramElementTrait extends AbstractSingleResourceTrait { + + public SingleResourceTrait diagram; + public String name; + + public DiagramElementTrait(SingleResourceTrait diagram, String name) { + this.diagram = diagram; + this.name = name; + } + + @Override + public Resource getResource(ReadGraph graph) throws DatabaseException { + ModelingResources MOD = ModelingResources.getInstance(graph); + Resource composite = graph.getSingleObject(diagram.getResource(), MOD.DiagramToComposite); + Resource child = graph.sync(new UnescapedChildMapOfResource(composite)).get(name); + if(child == null) throw new DatabaseException("No child " + child + " for " + NameUtils.getSafeName(graph, composite)); + return graph.getSingleObject(child, MOD.ComponentToElement); + } + +}