import org.simantics.databoard.Datatypes;
import org.simantics.databoard.binding.Binding;
import org.simantics.databoard.type.Datatype;
-import org.simantics.db.AsyncReadGraph;
import org.simantics.db.DirectStatements;
import org.simantics.db.ReadGraph;
import org.simantics.db.RequestProcessor;
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;
import org.simantics.db.layer0.variable.ConstantPropertyVariable;
import org.simantics.db.layer0.variable.ProxyChildVariable;
import org.simantics.db.layer0.variable.ProxySessionRequest;
+import org.simantics.db.layer0.variable.ProxyVariableSupport;
import org.simantics.db.layer0.variable.ProxyVariables;
import org.simantics.db.layer0.variable.StandardAssertedGraphPropertyVariable;
-import org.simantics.db.layer0.variable.StandardGraphChildVariable;
import org.simantics.db.layer0.variable.StandardGraphPropertyVariable;
import org.simantics.db.layer0.variable.Variable;
import org.simantics.db.layer0.variable.VariableMap;
import org.simantics.db.layer0.variable.VariableMapImpl;
import org.simantics.db.layer0.variable.Variables;
-import org.simantics.db.procedure.AsyncProcedure;
import org.simantics.db.service.DirectQuerySupport;
import org.simantics.document.base.ontology.DocumentationResource;
import org.simantics.document.server.bean.Command;
private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(Functions.class);
- private static class PrimitivePropertyStatementsProcedure implements AsyncProcedure<DirectStatements> {
-
- public DirectStatements result;
-
- @Override
- public void execute(AsyncReadGraph graph, DirectStatements result) {
- this.result = result;
- }
-
- @Override
- public void exception(AsyncReadGraph graph, Throwable throwable) {
- }
-
- }
-
@SCLValue(type = "VariableMap")
public static VariableMap primitiveProperties = new VariableMapImpl() {
private void storePropertyValueAndExceptions(ReadGraph graph, Variable parent, String name, Variable property, Map<String, Variable> map) {
};
+ 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();
+ }
+
@SCLValue(type = "VariableMap")
public static VariableMap inputSpaceChildren = new VariableMapImpl() {
private Variable getProxy(ReadGraph graph, Variable context) throws DatabaseException {
- Variable root = Variables.getRootVariable(graph);
+ Variable root = Variables.getVariable(graph, graph.getRootLibrary());
return new DocumentProxyChildVariable(context, context, root, ProxyChildVariable.CONTEXT_BEGIN);
}
};
- static class DocumentProxyChildVariable extends ProxyChildVariable {
+ static class DocumentProxyChildVariable extends ProxyChildVariable implements ProxyVariableSupport {
public DocumentProxyChildVariable(Variable base, Variable parent, Variable other, String name) {
super(base, parent, other, name);
// The context is also a proxy - let it do the job
return super.getPossibleChild(graph, name);
} else {
- return new RootVariable(this, base.getRepresents(graph));
+ return ProxyVariables.tryToOwnRenamed(graph, this, base, CONTEXT_END);
}
}
}
- public Collection<Variable> getChildren(ReadGraph graph) throws DatabaseException {
-
- Collection<Variable> result = super.getChildren(graph);
- if(!(base instanceof ProxyChildVariable)) {
- result.add(new RootVariable(this, base.getRepresents(graph)));
- }
- return result;
-
- }
-
- }
-
- static class RootVariable extends StandardGraphChildVariable {
-
- public RootVariable(DocumentProxyChildVariable parent, Resource resource) {
- super(parent, null, resource);
- }
-
@Override
- public String getName(ReadGraph graph) throws DatabaseException {
- return ProxyChildVariable.CONTEXT_END;
+ public Variable attachTo(ReadGraph graph, Variable parent) {
+ return attachToRenamed(graph, parent, name);
}
-
- @SuppressWarnings("deprecation")
+
@Override
- public Variable getNameVariable(ReadGraph graph) throws DatabaseException {
- return new ConstantPropertyVariable(this, Variables.NAME, ProxyChildVariable.CONTEXT_END, Bindings.STRING);
+ public Variable attachToRenamed(ReadGraph graph, Variable parent, String name) {
+ if(this.parent.equals(base))
+ return new DocumentProxyChildVariable(parent, parent, other, name);
+ else
+ return new DocumentProxyChildVariable(base, parent, other, name);
}
}
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.getConnection2().getConnectionPointDescriptors(graph, parameter, null);
for(VariableConnectionPointDescriptor desc : descs) {
if (DOC.Relations_partN.equals(desc.getConnectionPointResource(graph))) {