-package org.simantics.spreadsheet.graph.function;\r
-\r
-import java.util.Map;\r
-\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.common.procedure.adapter.TransientCacheListener;\r
-import org.simantics.db.common.request.IndexRoot;\r
-import org.simantics.db.common.request.ResourceRead2;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.layer0.util.RuntimeEnvironmentRequest;\r
-import org.simantics.db.layer0.variable.Variable;\r
-import org.simantics.layer0.Layer0;\r
-import org.simantics.scl.compiler.runtime.RuntimeEnvironment;\r
-import org.simantics.scl.runtime.SCLContext;\r
-import org.simantics.scl.runtime.function.Function1;\r
-import org.simantics.structural2.scl.CompileStructuralValueRequest;\r
-import org.simantics.structural2.scl.ComponentTypeProperty;\r
-import org.simantics.structural2.scl.ReadComponentTypeInterfaceRequest;\r
-\r
-public class CompileSCLValueRequest extends CompileStructuralValueRequest {\r
-\r
- public CompileSCLValueRequest(ReadGraph graph, Variable context)\r
- throws DatabaseException {\r
- super(graph, context);\r
- }\r
-\r
- public static Object compileAndEvaluate(ReadGraph graph, Variable context) throws DatabaseException {\r
- SCLContext sclContext = SCLContext.getCurrent();\r
- Object oldGraph = sclContext.get("graph");\r
- try {\r
- Function1<Variable,Object> exp = graph.syncRequest(new CompileSCLValueRequest(graph, context),\r
- TransientCacheListener.<Function1<Variable,Object>>instance());\r
- sclContext.put("graph", graph);\r
- return exp.apply(context);\r
- } catch (DatabaseException e) {\r
- throw (DatabaseException)e;\r
- } catch (Throwable t) {\r
- throw new DatabaseException(t);\r
- } finally {\r
- sclContext.put("graph", oldGraph);\r
- }\r
- }\r
- \r
- @Override\r
- protected CompilationContext getCompilationContext(ReadGraph graph) throws DatabaseException {\r
- Resource indexRoot = graph.syncRequest(new IndexRoot(literal));\r
- return graph.syncRequest(new ResourceRead2<CompilationContext>(component, indexRoot) {\r
- @Override\r
- public CompilationContext perform(ReadGraph graph) throws DatabaseException {\r
- Layer0 L0 = Layer0.getInstance(graph);\r
- Resource parent = graph.getPossibleObject(resource, L0.PartOf);\r
- Resource type = graph.getPossibleType(parent, L0.Entity);\r
- RuntimeEnvironment runtimeEnvironment = graph.syncRequest(new RuntimeEnvironmentRequest(resource2));\r
- Map<String, ComponentTypeProperty> propertyMap =\r
- graph.syncRequest(new ReadComponentTypeInterfaceRequest(type, runtimeEnvironment.getEnvironment()),\r
- TransientCacheListener.<Map<String, ComponentTypeProperty>>instance());\r
- return new CompilationContext(runtimeEnvironment, propertyMap);\r
- }\r
- });\r
- }\r
- \r
-}\r
+package org.simantics.spreadsheet.graph.function;
+
+import java.util.Map;
+
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.common.procedure.adapter.TransientCacheListener;
+import org.simantics.db.common.request.IndexRoot;
+import org.simantics.db.common.request.ResourceRead2;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.util.RuntimeEnvironmentRequest;
+import org.simantics.db.layer0.variable.Variable;
+import org.simantics.layer0.Layer0;
+import org.simantics.scl.compiler.runtime.RuntimeEnvironment;
+import org.simantics.scl.runtime.SCLContext;
+import org.simantics.scl.runtime.function.Function1;
+import org.simantics.structural2.scl.CompileStructuralValueRequest;
+import org.simantics.structural2.scl.ComponentTypeProperty;
+import org.simantics.structural2.scl.ReadComponentTypeInterfaceRequest;
+
+public class CompileSCLValueRequest extends CompileStructuralValueRequest {
+
+ public CompileSCLValueRequest(ReadGraph graph, Variable context)
+ throws DatabaseException {
+ super(graph, context);
+ }
+
+ public static Object compileAndEvaluate(ReadGraph graph, Variable context) throws DatabaseException {
+ SCLContext sclContext = SCLContext.getCurrent();
+ Object oldGraph = sclContext.get("graph");
+ try {
+ Function1<Object,Object> exp = graph.syncRequest(new CompileSCLValueRequest(graph, context),
+ TransientCacheListener.instance());
+ sclContext.put("graph", graph);
+ return exp.apply(context);
+ } catch (DatabaseException e) {
+ throw (DatabaseException)e;
+ } catch (Throwable t) {
+ throw new DatabaseException(t);
+ } finally {
+ sclContext.put("graph", oldGraph);
+ }
+ }
+
+ @Override
+ protected CompilationContext getCompilationContext(ReadGraph graph) throws DatabaseException {
+ Resource indexRoot = graph.syncRequest(new IndexRoot(literal));
+ return graph.syncRequest(new ResourceRead2<CompilationContext>(component, indexRoot) {
+ @Override
+ public CompilationContext perform(ReadGraph graph) throws DatabaseException {
+ Layer0 L0 = Layer0.getInstance(graph);
+ Resource parent = graph.getPossibleObject(resource, L0.PartOf);
+ Resource type = graph.getPossibleType(parent, L0.Entity);
+ RuntimeEnvironment runtimeEnvironment = graph.syncRequest(new RuntimeEnvironmentRequest(resource2));
+ Map<String, ComponentTypeProperty> propertyMap =
+ graph.syncRequest(new ReadComponentTypeInterfaceRequest(type, runtimeEnvironment.getEnvironment()),
+ TransientCacheListener.<Map<String, ComponentTypeProperty>>instance());
+ return new CompilationContext(runtimeEnvironment, propertyMap);
+ }
+ });
+ }
+
+}