1 package org.simantics.structural2.scl.procedural;
\r
3 import java.util.Map;
\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
18 public class ProceduralComponentTypeCompilationContextRequest extends UnaryRead<Resource,ProceduralComponentTypeCompilationContext> {
\r
20 public ProceduralComponentTypeCompilationContextRequest(Resource parameter) {
\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
30 protected void fillEnvironmentSpecification(
\r
31 EnvironmentSpecification environmentSpecification) {
\r
32 environmentSpecification.importModule("Structural/Procedural", "");
\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