1 package org.simantics.interop.diagram;
3 import org.simantics.db.ReadGraph;
4 import org.simantics.db.Resource;
5 import org.simantics.db.WriteGraph;
6 import org.simantics.db.common.utils.NameUtils;
7 import org.simantics.db.common.utils.OrderedSetUtils;
8 import org.simantics.db.exception.DatabaseException;
9 import org.simantics.layer0.Layer0;
10 import org.simantics.simulation.ontology.SimulationResource;
14 * @author Marko Luukkainen <marko.luukkainen@vtt.fi>
17 public class DiagramUtils {
20 public static void addElement(WriteGraph g, Diagram diagram, Resource element) throws DatabaseException {
21 Layer0 l0 = Layer0.getInstance(g);
22 OrderedSetUtils.add(g, diagram.getDiagram(), element);
23 generateName(g, diagram, element);
24 g.claim(diagram.getDiagram(), l0.ConsistsOf, element);
27 public static void addElementFirst(WriteGraph g, Diagram diagram, Resource element) throws DatabaseException {
28 Layer0 l0 = Layer0.getInstance(g);
29 OrderedSetUtils.addFirst(g, diagram.getDiagram(), element);
30 generateName(g, diagram, element);
31 g.claim(diagram.getDiagram(), l0.ConsistsOf, element);
34 public static void generateName(WriteGraph g, Diagram diagram, Resource element) throws DatabaseException {
35 Layer0 l0 = Layer0.getInstance(g);
36 if (g.getPossibleRelatedValue(element, l0.HasName) != null)
38 Resource type = g.getSingleType(element);
40 String name = NameUtils.findFreshEscapedName(g, (String)g.getRelatedValue(type, l0.HasName), diagram.getDiagram(),l0.ConsistsOf);
41 g.claimLiteral(element, l0.HasName, name);
45 public static Resource createRelation(WriteGraph w, Layer0 b, Resource superrelation) throws DatabaseException {
46 Resource relation = w.newResource();
47 Resource invRelation = w.newResource();
48 w.claim(relation, b.InverseOf, invRelation);
49 w.claim(relation, b.ConsistsOf, invRelation);
50 w.claimLiteral(invRelation, b.HasName, "Inverse");
52 w.claim(relation, b.SubrelationOf, b.SuperrelationOf, superrelation);
53 w.claim(invRelation, b.SubrelationOf, b.SuperrelationOf, w.getInverse(superrelation));
55 //w.claim(relation, b.InstanceOf, ab.ReferenceProvider);
59 public static Resource createRelation(WriteGraph w, Layer0 b, Resource... superrelation) throws DatabaseException {
60 Resource relation = w.newResource();
61 Resource invRelation = w.newResource();
62 w.claim(relation, b.InverseOf, invRelation);
63 w.claim(relation, b.ConsistsOf, invRelation);
64 w.claimLiteral(invRelation, b.HasName, "Inverse");
65 for (Resource rel : superrelation) {
66 w.claim(relation, b.SubrelationOf, null, rel);
67 Resource inv = w.getPossibleInverse(rel);
69 w.claim(invRelation, b.SubrelationOf, null, inv);
74 public static Resource getModel(ReadGraph graph, Resource res) throws DatabaseException{
75 Layer0 l0 = Layer0.getInstance(graph);
76 SimulationResource sim = SimulationResource.getInstance(graph);
79 if (graph.isInstanceOf(r, sim.Model))
81 if (graph.isInstanceOf(r, l0.SharedOntology))
83 r = graph.getPossibleObject(r, l0.PartOf);
88 public static Resource getConfiguration(ReadGraph graph, Resource model) throws DatabaseException {
89 SimulationResource sim = SimulationResource.getInstance(graph);
90 return graph.getPossibleObject(model, sim.HasConfiguration);