-package org.simantics.document.server.request;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import org.simantics.databoard.Bindings;\r
-import org.simantics.databoard.Databoard;\r
-import org.simantics.databoard.binding.Binding;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.layer0.request.VariableRead;\r
-import org.simantics.db.layer0.variable.Variable;\r
-import org.simantics.document.base.ontology.DocumentationResource;\r
-import org.simantics.document.server.DocumentServerUtils;\r
-import org.simantics.document.server.JSONObject;\r
-import org.simantics.layer0.Layer0;\r
-import org.simantics.structural.stubs.StructuralResource2;\r
-\r
-class NodeRequestStatic extends VariableRead<JSONObject> {\r
-\r
- public NodeRequestStatic(Variable node) {\r
- super(node);\r
- }\r
-\r
- public static class Headers extends VariableRead<JSONObject> {\r
-\r
- public Headers(Variable variable) {\r
- super(variable);\r
- }\r
-\r
- @Override\r
- public JSONObject perform(ReadGraph graph) throws DatabaseException {\r
-\r
- Layer0 L0 = Layer0.getInstance(graph);\r
- StructuralResource2.getInstance(graph);\r
- DocumentationResource DOC = DocumentationResource.getInstance(graph);\r
-\r
- String id = DocumentServerUtils.getId(graph, variable);\r
- \r
- Binding jsonBinding = graph.getService(Databoard.class).getBindingUnchecked(JSONObject.class);\r
- JSONObject object = new JSONObject(jsonBinding, id);\r
-\r
- Resource type = variable.getType(graph);\r
-\r
- Variable parentConnectionPoint = DocumentServerUtils.getParentConnectionPoint(graph, variable);\r
- while (parentConnectionPoint != null) {\r
- Variable par = parentConnectionPoint.getParent(graph);\r
- if(!DOC.Components_DummyContainer.equals(par.getType(graph))) break;\r
- parentConnectionPoint = DocumentServerUtils.getParentConnectionPoint(graph, par);\r
- }\r
- \r
- if(parentConnectionPoint != null) {\r
- String parent = DocumentServerUtils.getId(graph, parentConnectionPoint.getParent(graph));\r
- Resource cpPredicate = parentConnectionPoint.getPossiblePredicateResource(graph);\r
- String i = null;\r
- if (DOC.Relations_partN.equals(cpPredicate)) {\r
- i = DocumentServerUtils.findManualOrdinal(graph, variable);\r
- } else {\r
- i = graph.getPossibleRelatedValue(cpPredicate, DOC.Document_ChildRelation_ordinal, Bindings.STRING);\r
- }\r
- if (i == null) {\r
- i = "0";\r
- }\r
- \r
- object.addJSONField("parent", parent);\r
- object.addJSONField("parentOrd", i);\r
- } else {\r
- if(DOC.Components_Root.equals(type) || graph.isInheritedFrom(type, DOC.Components_Root)) {\r
- object.addJSONField("parent", "root");\r
- object.addJSONField("parentOrd", "0");\r
- } if(!graph.isInheritedFrom(type, DOC.Components_ParentlessComponent)) {\r
- object.addJSONField("parent", "");\r
- object.addJSONField("parentOrd", "0");\r
- }\r
- }\r
-\r
- object.addJSONField("id", id);\r
- object.addJSONField("type", graph.<String>getRelatedValue(type, L0.HasName, Bindings.STRING));\r
- return object;\r
- \r
- }\r
- \r
- }\r
- \r
- @Override\r
- public JSONObject perform(ReadGraph graph) throws DatabaseException {\r
-\r
- long s = System.nanoTime();\r
-\r
- JSONObject base = graph.syncRequest(new Headers(variable));\r
- JSONObject object = base.clone();\r
- \r
- DocumentationResource DOC = DocumentationResource.getInstance(graph);\r
- \r
- for(Variable attrib : DocumentServerUtils.getStaticAttributes(graph, DOC, variable)) {\r
- String name = attrib.getName(graph);\r
- try {\r
- Object value = DocumentServerUtils.getValue(graph, attrib);\r
- object.addJSONField(name, value);\r
- } catch (Throwable t) {\r
- List<String> errorList = object.getJSONField(NodeRequest.ERRORS);\r
- if(errorList == null)\r
- errorList = new ArrayList<String>();\r
- \r
- String errorMessage = NodeRequestUtils.formatErrorMessage(name, t);\r
- \r
- errorList.add(errorMessage);\r
- object.addJSONField(NodeRequest.ERRORS, errorList);\r
- }\r
-\r
- }\r
-\r
- if(DocumentRequest.PROFILE) {\r
- long dura = System.nanoTime()-s;\r
- System.err.println("NodeRequestStatic " + System.identityHashCode(this) + " " + variable.getURI(graph) + " in " + 1e-6*dura + "ms." + object);\r
- }\r
- \r
- return object;\r
-\r
- } \r
-\r
+package org.simantics.document.server.request;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.simantics.databoard.Bindings;
+import org.simantics.databoard.Databoard;
+import org.simantics.databoard.binding.Binding;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.request.VariableRead;
+import org.simantics.db.layer0.variable.Variable;
+import org.simantics.document.base.ontology.DocumentationResource;
+import org.simantics.document.server.DocumentServerUtils;
+import org.simantics.document.server.JSONObject;
+import org.simantics.layer0.Layer0;
+import org.simantics.structural.stubs.StructuralResource2;
+
+class NodeRequestStatic extends VariableRead<JSONObject> {
+
+ public NodeRequestStatic(Variable node) {
+ super(node);
+ }
+
+ public static class Headers extends VariableRead<JSONObject> {
+
+ public Headers(Variable variable) {
+ super(variable);
+ }
+
+ @Override
+ public JSONObject perform(ReadGraph graph) throws DatabaseException {
+
+ Layer0 L0 = Layer0.getInstance(graph);
+ StructuralResource2.getInstance(graph);
+ DocumentationResource DOC = DocumentationResource.getInstance(graph);
+
+ String id = DocumentServerUtils.getId(graph, variable);
+
+ Binding jsonBinding = graph.getService(Databoard.class).getBindingUnchecked(JSONObject.class);
+ JSONObject object = new JSONObject(jsonBinding, id);
+
+ Resource type = variable.getType(graph);
+
+ Variable parentConnectionPoint = DocumentServerUtils.getParentConnectionPoint(graph, variable);
+ while (parentConnectionPoint != null) {
+ Variable par = parentConnectionPoint.getParent(graph);
+ if(!DOC.Components_DummyContainer.equals(par.getType(graph))) break;
+ parentConnectionPoint = DocumentServerUtils.getParentConnectionPoint(graph, par);
+ }
+
+ if(parentConnectionPoint != null) {
+ String parent = DocumentServerUtils.getId(graph, parentConnectionPoint.getParent(graph));
+ Resource cpPredicate = parentConnectionPoint.getPossiblePredicateResource(graph);
+ String i = null;
+ if (DOC.Relations_partN.equals(cpPredicate)) {
+ i = DocumentServerUtils.findManualOrdinal(graph, variable);
+ } else {
+ i = graph.getPossibleRelatedValue(cpPredicate, DOC.Document_ChildRelation_ordinal, Bindings.STRING);
+ }
+ if (i == null) {
+ i = "0";
+ }
+
+ object.addJSONField("parent", parent);
+ object.addJSONField("parentOrd", i);
+ } else {
+ if(DOC.Components_Root.equals(type) || graph.isInheritedFrom(type, DOC.Components_Root)) {
+ object.addJSONField("parent", "root");
+ object.addJSONField("parentOrd", "0");
+ } if(!graph.isInheritedFrom(type, DOC.Components_ParentlessComponent)) {
+ object.addJSONField("parent", "");
+ object.addJSONField("parentOrd", "0");
+ }
+ }
+
+ object.addJSONField("id", id);
+ object.addJSONField("type", graph.<String>getRelatedValue(type, L0.HasName, Bindings.STRING));
+ return object;
+
+ }
+
+ }
+
+ @Override
+ public JSONObject perform(ReadGraph graph) throws DatabaseException {
+
+ long s = System.nanoTime();
+
+ JSONObject base = graph.syncRequest(new Headers(variable));
+ JSONObject object = base.clone();
+
+ DocumentationResource DOC = DocumentationResource.getInstance(graph);
+
+ for(Variable attrib : DocumentServerUtils.getStaticAttributes(graph, DOC, variable)) {
+ String name = attrib.getName(graph);
+ try {
+ Object value = DocumentServerUtils.getValue(graph, attrib);
+ object.addJSONField(name, value);
+ } catch (Throwable t) {
+ List<String> errorList = object.getJSONField(NodeRequest.ERRORS);
+ if(errorList == null)
+ errorList = new ArrayList<String>();
+
+ String errorMessage = NodeRequestUtils.formatErrorMessage(name, t);
+
+ errorList.add(errorMessage);
+ object.addJSONField(NodeRequest.ERRORS, errorList);
+ }
+
+ }
+
+ if(DocumentRequest.PROFILE) {
+ long dura = System.nanoTime()-s;
+ System.err.println("NodeRequestStatic " + System.identityHashCode(this) + " " + variable.getURI(graph) + " in " + 1e-6*dura + "ms." + object);
+ }
+
+ return object;
+
+ }
+