1 package org.simantics.modeling;
\r
3 import java.util.HashSet;
\r
4 import java.util.Set;
\r
6 import org.simantics.Simantics;
\r
7 import org.simantics.db.ReadGraph;
\r
8 import org.simantics.db.Resource;
\r
9 import org.simantics.db.common.request.ReadRequest;
\r
10 import org.simantics.db.exception.DatabaseException;
\r
11 import org.simantics.db.layer0.util.Layer0Utils;
\r
12 import org.simantics.db.layer0.variable.Variable;
\r
13 import org.simantics.db.layer0.variable.Variables;
\r
14 import org.simantics.project.exception.ProjectException;
\r
15 import org.simantics.project.features.AbstractProjectFeature;
\r
16 import org.simantics.scl.runtime.function.Function1;
\r
17 import org.simantics.scl.runtime.tuple.Tuple0;
\r
19 public class LifeCycleProcesses extends AbstractProjectFeature {
\r
21 Set<LifeCycleContext> contexts = new HashSet<LifeCycleContext>();
\r
24 public void configure() throws ProjectException {
\r
28 Simantics.getSession().syncRequest(new ReadRequest() {
\r
31 public void run(ReadGraph graph) throws DatabaseException {
\r
33 ModelingResources MOD = ModelingResources.getInstance(graph);
\r
34 for(Resource indexRoot : Layer0Utils.listIndexRoots(graph)) {
\r
35 for(Resource lcp : ModelingUtils.searchByTypeShallow(graph, indexRoot, MOD.LifeCycleProcess)) {
\r
37 // System.err.println("Loading life cycle process " + graph.getURI(lcp));
\r
38 Function1<LifeCycleContext,Tuple0> load = null;
\r
39 Function1<LifeCycleContext,Tuple0> unload = null;
\r
40 Variable loadProperty = Variables.tryGetProperty(graph, lcp, MOD.LifeCycleProcess_load);
\r
41 if (loadProperty != null) {
\r
42 load = loadProperty.getPossibleValue(graph);
\r
44 Variable unloadProperty = Variables.tryGetProperty(graph, lcp, MOD.LifeCycleProcess_unload);
\r
45 if (unloadProperty != null) {
\r
46 unload = unloadProperty.getPossibleValue(graph);
\r
49 LifeCycleContext lcc = new LifeCycleContext(lcp, load, unload);
\r
59 } catch (DatabaseException e) {
\r
61 throw new ProjectException(e);
\r
65 for(LifeCycleContext context : contexts) {
\r
72 public void deconfigure() throws ProjectException {
\r
74 for(LifeCycleContext context : contexts) {
\r