X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.interop.diagram%2Fsrc%2Forg%2Fsimantics%2Finterop%2Fdiagram%2FDiagramUtils.java;fp=org.simantics.interop.diagram%2Fsrc%2Forg%2Fsimantics%2Finterop%2Fdiagram%2FDiagramUtils.java;h=29f3e21186761cc846daecffa2b22e1f2a0beed0;hb=3dddcb9694df9a9da950b625345ba218344b9a37;hp=0000000000000000000000000000000000000000;hpb=ffd0151a26057732dc81543a12ae2c1bc00af4b4;p=simantics%2Finterop.git diff --git a/org.simantics.interop.diagram/src/org/simantics/interop/diagram/DiagramUtils.java b/org.simantics.interop.diagram/src/org/simantics/interop/diagram/DiagramUtils.java new file mode 100644 index 0000000..29f3e21 --- /dev/null +++ b/org.simantics.interop.diagram/src/org/simantics/interop/diagram/DiagramUtils.java @@ -0,0 +1,90 @@ +package org.simantics.interop.diagram; + +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.common.utils.OrderedSetUtils; +import org.simantics.db.exception.DatabaseException; +import org.simantics.layer0.Layer0; +import org.simantics.simulation.ontology.SimulationResource; + +/** + * + * @author Marko Luukkainen + * + */ +public class DiagramUtils { + + + public static void addElement(WriteGraph g, Diagram diagram, Resource element) throws DatabaseException { + Layer0 l0 = Layer0.getInstance(g); + OrderedSetUtils.add(g, diagram.getDiagram(), element); + generateName(g, diagram, element); + g.claim(diagram.getDiagram(), l0.ConsistsOf, element); + } + + public static void addElementFirst(WriteGraph g, Diagram diagram, Resource element) throws DatabaseException { + Layer0 l0 = Layer0.getInstance(g); + OrderedSetUtils.addFirst(g, diagram.getDiagram(), element); + generateName(g, diagram, element); + g.claim(diagram.getDiagram(), l0.ConsistsOf, element); + } + + public static void generateName(WriteGraph g, Diagram diagram, Resource element) throws DatabaseException { + Layer0 l0 = Layer0.getInstance(g); + if (g.getPossibleRelatedValue(element, l0.HasName) != null) + return; + Resource type = g.getSingleType(element); + + String name = NameUtils.findFreshEscapedName(g, (String)g.getRelatedValue(type, l0.HasName), diagram.getDiagram(),l0.ConsistsOf); + g.claimLiteral(element, l0.HasName, name); + } + + + public static Resource createRelation(WriteGraph w, Layer0 b, Resource superrelation) throws DatabaseException { + Resource relation = w.newResource(); + Resource invRelation = w.newResource(); + w.claim(relation, b.InverseOf, invRelation); + w.claim(relation, b.ConsistsOf, invRelation); + w.claimLiteral(invRelation, b.HasName, "Inverse"); + + w.claim(relation, b.SubrelationOf, b.SuperrelationOf, superrelation); + w.claim(invRelation, b.SubrelationOf, b.SuperrelationOf, w.getInverse(superrelation)); + + //w.claim(relation, b.InstanceOf, ab.ReferenceProvider); + return relation; + } + + public static Resource createRelation(WriteGraph w, Layer0 b, Resource... superrelation) throws DatabaseException { + Resource relation = w.newResource(); + Resource invRelation = w.newResource(); + w.claim(relation, b.InverseOf, invRelation); + w.claim(relation, b.ConsistsOf, invRelation); + w.claimLiteral(invRelation, b.HasName, "Inverse"); + for (Resource rel : superrelation) { + w.claim(relation, b.SubrelationOf, null, rel); + Resource inv = w.getPossibleInverse(rel); + if (inv != null) + w.claim(invRelation, b.SubrelationOf, null, inv); + } + return relation; + } + + public static Resource getModel(ReadGraph graph, Resource res) throws DatabaseException{ + Layer0 l0 = Layer0.getInstance(graph); + SimulationResource sim = SimulationResource.getInstance(graph); + Resource r = res; + while (r != null) { + if (graph.isInstanceOf(r, sim.Model)) + return r; + r = graph.getPossibleObject(r, l0.PartOf); + } + return r; + } + + public static Resource getConfiguration(ReadGraph graph, Resource model) throws DatabaseException { + SimulationResource sim = SimulationResource.getInstance(graph); + return graph.getSingleObject(model, sim.HasConfiguration); + } +}