--- /dev/null
+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