]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/request/ActiveRuns.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / request / ActiveRuns.java
1 package org.simantics.db.layer0.request;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.Collection;\r
5 import java.util.Collections;\r
6 \r
7 import org.simantics.db.ReadGraph;\r
8 import org.simantics.db.Resource;\r
9 import org.simantics.db.common.request.ResourceRead;\r
10 import org.simantics.db.exception.DatabaseException;\r
11 import org.simantics.db.layer0.variable.Variable;\r
12 import org.simantics.db.layer0.variable.Variables;\r
13 import org.simantics.simulation.ontology.SimulationResource;\r
14 \r
15 public class ActiveRuns extends ResourceRead<Collection<Variable>> {\r
16 \r
17     public ActiveRuns(ReadGraph graph, Variable model) throws DatabaseException {\r
18         super(model.getRepresents(graph));\r
19     }\r
20 \r
21     public ActiveRuns(Resource model) {\r
22         super(model);\r
23     }\r
24 \r
25     @Override\r
26     public Collection<Variable> perform(ReadGraph graph) throws DatabaseException {\r
27 \r
28         Variable variable = Variables.getPossibleVariable(graph, resource);\r
29         if (variable == null)\r
30             return Collections.emptyList();\r
31 \r
32         Collection<Variable> result = new ArrayList<Variable>();\r
33         SimulationResource SIMU = SimulationResource.getInstance(graph);\r
34 \r
35         for(Variable experiment : variable.getChildren(graph)) {\r
36                 Resource experimentType = experiment.getPossibleType(graph, SIMU.Experiment);\r
37                 if(experimentType == null) continue;\r
38                 for(Variable run : experiment.getChildren(graph)) {\r
39                         Resource runType = run.getPossibleType(graph);\r
40                         if(runType == null) continue;\r
41                         if(graph.isInheritedFrom(runType, SIMU.Run)) {\r
42                                 Resource represents = run.getRepresents(graph);\r
43                                 if(graph.hasStatement(represents, SIMU.IsActive)) result.add(run);\r
44                         }\r
45                 }\r
46         }\r
47         return result;\r
48 \r
49     }\r
50 \r
51 }\r