+package org.simantics.modeling.subscription;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.request.ResourceRead;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.layer0.request.PossibleActiveExperiment;\r
+import org.simantics.db.layer0.variable.Variable;\r
+import org.simantics.db.layer0.variable.Variables;\r
+import org.simantics.simulation.ontology.SimulationResource;\r
+\r
+/**\r
+ * @author Tuukka Lehtonen\r
+ * @since 1.18.1\r
+ */\r
+public class ModelContextsRequest extends ResourceRead<ModelContexts> {\r
+\r
+ public ModelContextsRequest(Resource model) {\r
+ super(model);\r
+ }\r
+\r
+ @Override\r
+ public ModelContexts perform(ReadGraph graph) throws DatabaseException {\r
+ SimulationResource SIMU = SimulationResource.getInstance(graph);\r
+ Resource configurationResource = graph.getPossibleObject(resource, SIMU.HasConfiguration);\r
+ Variable configurationContext = configurationResource != null ? Variables.getPossibleVariable(graph, configurationResource) : null;\r
+ Resource run = graph.sync(new PossibleActiveExperiment(resource));\r
+ Variable experimentContext = run != null ? Variables.getPossibleVariable(graph, run) : null;\r
+ String configurationContextURI = configurationContext != null ? configurationContext.getURI(graph) : null; \r
+ String experimentContextURI = experimentContext != null ? experimentContext.getURI(graph) : null; \r
+ return new ModelContexts(resource, configurationContext, experimentContext, configurationContextURI, experimentContextURI);\r
+ }\r
+\r
+}
\ No newline at end of file