package org.simantics.modeling.utils; import java.io.IOException; import java.util.LinkedList; import java.util.List; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.common.utils.NameUtils; import org.simantics.db.exception.DatabaseException; import org.simantics.layer0.Layer0; import org.simantics.simulation.ontology.SimulationResource; public class SCLDiagramUtils { public static List path(ReadGraph graph, List additionalPrefix, Resource r) throws DatabaseException, IOException { LinkedList result = new LinkedList(); Layer0 L0 = Layer0.getInstance(graph); SimulationResource SIMU = SimulationResource.getInstance(graph); while(!graph.hasStatement(r, SIMU.IsConfigurationOf)) { result.addFirst(NameUtils.getSafeName(graph, r)); r = graph.getSingleObject(r, L0.PartOf); } for (int i = additionalPrefix.size() - 1; i >= 0; --i) result.addFirst(additionalPrefix.get(i)); return result; } }