]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.document.server/src/org/simantics/document/server/Functions.java
Work in progress
[simantics/platform.git] / bundles / org.simantics.document.server / src / org / simantics / document / server / Functions.java
index 979be3f26b8e6e63e64f3cba73a81b55f12fa4b2..0e56a7dd2569f5e9ef8efa1cbef0e2eac1ebf52d 100644 (file)
@@ -25,7 +25,7 @@ import org.simantics.db.Statement;
 import org.simantics.db.WriteGraph;
 import org.simantics.db.common.primitiverequest.Adapter;
 import org.simantics.db.common.procedure.adapter.TransientCacheListener;
-import org.simantics.db.common.request.UnaryRead;
+import org.simantics.db.common.request.BinaryRead;
 import org.simantics.db.common.request.UniqueRead;
 import org.simantics.db.common.request.WriteResultRequest;
 import org.simantics.db.common.utils.Logger;
@@ -68,6 +68,9 @@ import org.simantics.document.server.request.ServerSCLHandlerValueRequest;
 import org.simantics.document.server.request.ServerSCLValueRequest;
 import org.simantics.document.server.serverResponse.ServerResponse;
 import org.simantics.document.server.serverResponse.SuccessResponse;
+import org.simantics.document.server.state.StateNodeManager;
+import org.simantics.document.server.state.StateRealm;
+import org.simantics.document.server.state.StateSessionManager;
 import org.simantics.modeling.ModelingResources;
 import org.simantics.modeling.scl.SCLRealm;
 import org.simantics.modeling.scl.SCLSessionManager;
@@ -1147,11 +1150,6 @@ public class Functions {
 
        } else {
 
-               String id = sclStateKey(graph, base, self, ref);
-
-               SCLRealm realm = SCLSessionManager.getOrCreateSCLRealm(base.getURI(graph) + "/__scl__");
-               realm.getConnection().setVariable(id, getSCLType(defaultValue), defaultValue);
-
                return defaultValue;
 
        }
@@ -1161,9 +1159,9 @@ public class Functions {
 
        String id = sclStateKey(graph, base, self, ref);
 
-       SCLRealm realm = SCLSessionManager.getOrCreateSCLRealm(base.getURI(graph)+"/__scl__");
-       realm.getConnection().setVariable(id, getSCLType(value), value);
-       realm.refreshVariablesSync();
+               StateRealm realm = (StateRealm) StateSessionManager.getInstance().getOrCreateRealm(graph, base.getURI(graph)+"/__scl__");
+               StateNodeManager nodeManager = (StateNodeManager) realm.getNodeManager();
+               nodeManager.setState(id, value);
 
     }
 
@@ -1256,11 +1254,11 @@ public class Functions {
                                                return true;
                                        }
                                } else {
-                                       Variable parentCp = graph.sync(new UnaryRead<Connection, Variable>(conn) {
+                                       Variable parentCp = graph.sync(new BinaryRead<Variable, Connection, Variable>(widget, conn) {
                                    @Override
                                    public Variable perform(ReadGraph graph) throws DatabaseException {
                                        DocumentationResource DOC = DocumentationResource.getInstance(graph);
-                                       Collection<VariableConnectionPointDescriptor> descs = parameter.getConnectionPointDescriptors(graph, null);
+                                       Collection<VariableConnectionPointDescriptor> descs = parameter2.getConnectionPointDescriptors(graph, parameter, null);
 
                                                for(VariableConnectionPointDescriptor desc : descs) {
                                                        if (DOC.Relations_partN.equals(desc.getConnectionPointResource(graph))) {
@@ -1312,5 +1310,33 @@ public class Functions {
             LOGGER.debug("", e);
         return e.getMessage();
     }
+    
+    static class StandardDocumentProperties implements DocumentProperties {
+
+               @Override
+               public Collection<String> getKeys(ReadGraph graph, Variable context) throws DatabaseException {
+                       
+               DocumentationResource DOC = DocumentationResource.getInstance(graph);
+                       StandardGraphPropertyVariable asd = new StandardGraphPropertyVariable(graph, context, DOC.Properties_primitiveProperties);
+                       Map<String, Variable> ps = primitiveProperties.getVariables(graph, asd, null);
+                       return ps.keySet();
+                       
+               }
+
+               @Override
+               public Object getValue(ReadGraph graph, Variable context, String key) throws DatabaseException {
+                       
+               DocumentationResource DOC = DocumentationResource.getInstance(graph);
+                       StandardGraphPropertyVariable asd = new StandardGraphPropertyVariable(graph, context, DOC.Properties_primitiveProperties);
+                       Map<String, Variable> ps = primitiveProperties.getVariables(graph, asd, null);
+                       return ps.get(key).getValue(graph);
+                       
+               }
+       
+    }
+    
+    public static DocumentProperties primitiveProperties() throws DatabaseException {
+       return new StandardDocumentProperties();
+    }
 
 }
\ No newline at end of file