*/
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);
}
}
- 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<Resource>(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);
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<Resource>(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);
+
}
}