X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2FDistrictNetworkUtil.java;h=64aab473a8a726ba6f4244ea1ce91c3367af9168;hb=37304f4caf1d4252797cbaf7b40a56e212e203b4;hp=40e8fc1d7825e3f47c877030b64ac3dcd632c9fe;hpb=6dec5182c23ab01df1adbdcc1276b99b8968b786;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network/src/org/simantics/district/network/DistrictNetworkUtil.java b/org.simantics.district.network/src/org/simantics/district/network/DistrictNetworkUtil.java index 40e8fc1d..64aab473 100644 --- a/org.simantics.district.network/src/org/simantics/district/network/DistrictNetworkUtil.java +++ b/org.simantics.district.network/src/org/simantics/district/network/DistrictNetworkUtil.java @@ -9,12 +9,15 @@ 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.db.layer0.request.PossibleVariable; +import org.simantics.db.layer0.variable.Variable; import org.simantics.diagram.stubs.DiagramResource; import org.simantics.diagram.synchronization.graph.DiagramGraphUtil; import org.simantics.diagram.synchronization.graph.layer.GraphLayer; import org.simantics.diagram.synchronization.graph.layer.IGraphLayerUtil; import org.simantics.district.network.ontology.DistrictNetworkResource; import org.simantics.layer0.Layer0; +import org.simantics.modeling.ModelingResources; import org.simantics.operation.Layer0X; public class DistrictNetworkUtil { @@ -145,4 +148,60 @@ public class DistrictNetworkUtil { graph.claimLiteral(diagram, DIA.HasModCount, ++l, Bindings.LONG); return name; } + + public static Resource getDiagramElement(ReadGraph graph, Resource component) throws DatabaseException { + if (component == null) + return null; + DiagramResource DIA = DiagramResource.getInstance(graph); + if (graph.isInstanceOf(component, DIA.Element)) + return component; + ModelingResources MOD = ModelingResources.getInstance(graph); + Resource element = graph.getPossibleObject(component, MOD.ComponentToElement); + return element != null && graph.isInstanceOf(element, DIA.Element) ? element : null; + } + + public static Resource getMappedElement(ReadGraph graph, Resource element) throws DatabaseException { + if (element == null) + return null; + DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph); + return graph.getPossibleObject(element, DN.MappedComponent); + } + + public static Resource getMappedComponent(ReadGraph graph, Resource element) throws DatabaseException { + if (element == null) + return null; + Resource mappedElement = getMappedElement(graph, element); + if (mappedElement == null) + return null; + ModelingResources MOD = ModelingResources.getInstance(graph); + return graph.getPossibleObject(mappedElement, MOD.ElementToComponent); + } + + public static Resource getMappedDNElement(ReadGraph graph, Resource element) throws DatabaseException { + if (element == null) + return null; + DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph); + return graph.getPossibleObject(element, DN.MappedFromElement); + } + + public static Variable toMappedConfigurationModule(ReadGraph graph, Resource input) throws DatabaseException { + if (input == null) + return null; + + DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph); + if (graph.isInstanceOf(input, DN.Element)) { + Resource mappedElement = getMappedElement(graph, input); + if (mappedElement == null) + return null; + + ModelingResources MOD = ModelingResources.getInstance(graph); + Resource mappedComponent = graph.getPossibleObject(mappedElement, MOD.ElementToComponent); + if (mappedComponent == null) + return null; + + return graph.syncRequest(new PossibleVariable(mappedComponent)); + } + return null; + } + }