]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.structural2/src/org/simantics/structural2/scl/procedural/ProceduralComponentTypeCompilationContextRequest.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.structural2 / src / org / simantics / structural2 / scl / procedural / ProceduralComponentTypeCompilationContextRequest.java
1 package org.simantics.structural2.scl.procedural;\r
2 \r
3 import java.util.Map;\r
4 \r
5 import org.simantics.db.ReadGraph;\r
6 import org.simantics.db.Resource;\r
7 import org.simantics.db.common.procedure.adapter.TransientCacheListener;\r
8 import org.simantics.db.common.request.IndexRoot;\r
9 import org.simantics.db.common.request.UnaryRead;\r
10 import org.simantics.db.exception.DatabaseException;\r
11 import org.simantics.db.layer0.util.RuntimeEnvironmentRequest;\r
12 import org.simantics.scl.compiler.environment.specification.EnvironmentSpecification;\r
13 import org.simantics.scl.compiler.runtime.RuntimeEnvironment;\r
14 import org.simantics.structural2.scl.ComponentTypeProperty;\r
15 import org.simantics.structural2.scl.ReadComponentTypeConnectionsRequest;\r
16 import org.simantics.structural2.scl.ReadComponentTypeInterfaceRequest;\r
17 \r
18 public class ProceduralComponentTypeCompilationContextRequest extends UnaryRead<Resource,ProceduralComponentTypeCompilationContext> {\r
19 \r
20     public ProceduralComponentTypeCompilationContextRequest(Resource parameter) {\r
21         super(parameter);\r
22     }\r
23 \r
24     @Override\r
25     public ProceduralComponentTypeCompilationContext perform(ReadGraph graph)\r
26             throws DatabaseException {\r
27         Resource indexRoot = graph.syncRequest(new IndexRoot(parameter));\r
28         RuntimeEnvironment runtimeEnvironment = graph.syncRequest(new RuntimeEnvironmentRequest(indexRoot) {\r
29             @Override\r
30             protected void fillEnvironmentSpecification(\r
31                     EnvironmentSpecification environmentSpecification) {\r
32                 environmentSpecification.importModule("Structural/Procedural", "");\r
33             }\r
34         });\r
35         Map<String, ComponentTypeProperty> propertyMap =\r
36                 graph.syncRequest(new ReadComponentTypeInterfaceRequest(parameter, runtimeEnvironment.getEnvironment()),\r
37                         TransientCacheListener.<Map<String, ComponentTypeProperty>>instance());\r
38         Map<String, Resource> connectionPointMap =\r
39                 graph.syncRequest(new ReadComponentTypeConnectionsRequest(parameter),\r
40                         TransientCacheListener.<Map<String, Resource>>instance());\r
41         return new ProceduralComponentTypeCompilationContext(runtimeEnvironment, propertyMap, connectionPointMap);\r
42     }\r
43     \r
44 }\r