]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling/src/org/simantics/modeling/utils/SCLDiagramUtils.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / utils / SCLDiagramUtils.java
diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/utils/SCLDiagramUtils.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/utils/SCLDiagramUtils.java
new file mode 100644 (file)
index 0000000..810b7a2
--- /dev/null
@@ -0,0 +1,29 @@
+package org.simantics.modeling.utils;\r
+\r
+import java.io.IOException;\r
+import java.util.LinkedList;\r
+import java.util.List;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.utils.NameUtils;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.layer0.Layer0;\r
+import org.simantics.simulation.ontology.SimulationResource;\r
+\r
+public class SCLDiagramUtils {\r
+\r
+    public static List<String> path(ReadGraph graph, List<String> additionalPrefix, Resource r) throws DatabaseException, IOException {\r
+        LinkedList<String> result = new LinkedList<String>();\r
+        Layer0 L0 = Layer0.getInstance(graph);\r
+        SimulationResource SIMU = SimulationResource.getInstance(graph);\r
+        while(!graph.hasStatement(r, SIMU.IsConfigurationOf)) {\r
+            result.addFirst(NameUtils.getSafeName(graph, r));\r
+            r = graph.getSingleObject(r, L0.PartOf);\r
+        }\r
+        for (int i = additionalPrefix.size() - 1; i >= 0; --i)\r
+            result.addFirst(additionalPrefix.get(i));\r
+        return result;\r
+    }\r
+    \r
+}\r