From bc24b049b5ec56feb66793df675a6db78860e28f Mon Sep 17 00:00:00 2001 From: Antti Villberg Date: Tue, 28 Aug 2018 10:36:05 +0300 Subject: [PATCH] More SCL functions for experiment and run handling gitlab #91 Change-Id: I8ee4adbc8f375a7dc61df45e21f5ffe5582d84b8 --- .../scl/Simantics/Simulation.scl | 5 ++ .../simulation/experiment/ExperimentUtil.java | 57 ++++++++++++------- 2 files changed, 42 insertions(+), 20 deletions(-) diff --git a/bundles/org.simantics.modeling/scl/Simantics/Simulation.scl b/bundles/org.simantics.modeling/scl/Simantics/Simulation.scl index 72166303e..2a721ee21 100644 --- a/bundles/org.simantics.modeling/scl/Simantics/Simulation.scl +++ b/bundles/org.simantics.modeling/scl/Simantics/Simulation.scl @@ -6,8 +6,13 @@ importJava "org.simantics.simulation.experiment.ExperimentUtil" where stepExperiment :: IExperiment -> Double -> () simulateExperiment :: IExperiment -> Boolean -> () disposeExperiment :: IExperiment -> () + refreshExperiment :: IExperiment -> () getExperimentState :: IExperiment -> ExperimentState possibleActiveRunVariable ::Resource -> Maybe Variable + activateExperiment :: Resource -> Resource + createExperimentRun :: Resource -> Resource + createExperimentRunWithType :: Resource -> Resource -> Resource + activateRun :: Resource -> () importJava "org.simantics.simulation.experiment.IExperiment" where data IExperiment diff --git a/bundles/org.simantics.simulation/src/org/simantics/simulation/experiment/ExperimentUtil.java b/bundles/org.simantics.simulation/src/org/simantics/simulation/experiment/ExperimentUtil.java index 449afe59f..fb9f67805 100644 --- a/bundles/org.simantics.simulation/src/org/simantics/simulation/experiment/ExperimentUtil.java +++ b/bundles/org.simantics.simulation/src/org/simantics/simulation/experiment/ExperimentUtil.java @@ -37,6 +37,10 @@ import org.simantics.simulation.project.IExperimentManager; */ public final class ExperimentUtil { + public static void refreshExperiment(ReadGraph graph, IExperiment experiment) { + experiment.refresh(graph); + } + public static void stepExperiment(IExperiment experiment, double duration) { if(experiment instanceof IDynamicExperiment) ((IDynamicExperiment)experiment).simulateDuration(duration); @@ -202,7 +206,20 @@ public final class ExperimentUtil { } } - private static Resource activateExperiment(WriteGraph graph, Resource experiment) throws DatabaseException { + public static Resource activateExperiment(WriteGraph graph, Resource experiment) throws DatabaseException { + + VirtualGraphSupport vgs = graph.getService(VirtualGraphSupport.class); + return graph.syncRequest(new WriteResultRequest(vgs.getMemoryPersistent("experiments")) { + @Override + public Resource perform(WriteGraph graph) throws DatabaseException { + return createExperimentRun(graph, experiment); + } + }); + + } + + public static Resource createExperimentRun(WriteGraph graph, Resource experiment) throws DatabaseException { + Layer0 L0 = Layer0.getInstance(graph); SimulationResource SIMU = SimulationResource.getInstance(graph); @@ -213,35 +230,35 @@ public final class ExperimentUtil { if (runTypes.size() != 1) throw new DatabaseException("No unique run type was found for experiment " + graph.getPossibleURI(experiment)); final Resource runType = runTypes.iterator().next(); + + return createExperimentRunWithType(graph, experiment, runType); + + } - VirtualGraphSupport vgs = graph.getService(VirtualGraphSupport.class); - return graph.syncRequest(new WriteResultRequest(vgs.getMemoryPersistent("experiments")) { - @Override - public Resource perform(WriteGraph graph) throws DatabaseException { - Layer0 L0 = Layer0.getInstance(graph); - Resource run = graph.newResource(); - graph.claim(run, L0.InstanceOf, runType); - graph.addLiteral(run, L0.HasName, L0.NameOf, L0.String, UUID.randomUUID().toString(), Bindings.STRING); - graph.claim(experiment, L0.ConsistsOf, run); - - Resource activeRun = graph.syncRequest(new PossibleActiveExperiment(experiment)); - if (activeRun != null) { - graph.deny(activeRun, SIMU.IsActive, activeRun); - } - graph.claim(run, SIMU.IsActive, run); + public static Resource createExperimentRunWithType(WriteGraph graph, Resource experiment, Resource runType) throws DatabaseException { + + Layer0 L0 = Layer0.getInstance(graph); - return run; - } - }); + Resource run = graph.newResource(); + graph.claim(run, L0.InstanceOf, runType); + graph.addLiteral(run, L0.HasName, L0.NameOf, L0.String, UUID.randomUUID().toString(), Bindings.STRING); + graph.claim(experiment, L0.ConsistsOf, run); + + activateRun(graph, run); + + return run; + } - private static void activateRun(WriteGraph graph, Resource run) throws DatabaseException { + public static void activateRun(WriteGraph graph, Resource run) throws DatabaseException { + SimulationResource SIMU = SimulationResource.getInstance(graph); Resource activeRun = graph.syncRequest(new PossibleActiveExperiment(run)); if (activeRun != null) { graph.deny(activeRun, SIMU.IsActive, activeRun); } graph.claim(run, SIMU.IsActive, run); + } } -- 2.43.2