1 package org.simantics.document.server.request;
3 import java.util.ArrayList;
7 import org.simantics.db.ReadGraph;
8 import org.simantics.db.exception.DatabaseException;
9 import org.simantics.db.layer0.request.VariableRead;
10 import org.simantics.db.layer0.variable.Variable;
11 import org.simantics.document.server.JSONObject;
13 public class NodeRequest extends VariableRead<JSONObject> {
15 public static String ERRORS = "Errors";
17 public NodeRequest(Variable node) {
21 @SuppressWarnings("unchecked")
23 public JSONObject perform(ReadGraph graph) throws DatabaseException {
25 long s = System.nanoTime();
27 JSONObject staticContent = graph.syncRequest(new NodeRequestStatic(variable));
28 Map<String,Object> dynamicContent = graph.syncRequest(new NodeRequestDynamic(variable));
30 if(dynamicContent.isEmpty()) {
34 JSONObject result = staticContent.clone();
35 result.add(dynamicContent);
37 if(dynamicContent.containsKey(ERRORS) || staticContent.getJSONField(ERRORS) != null) {
38 ArrayList<String> errorList = new ArrayList<String>();
40 if(dynamicContent.containsKey(ERRORS))
41 errorList.addAll((List<String>)dynamicContent.get(ERRORS));
43 if(staticContent.getJSONField(ERRORS) != null)
44 errorList.addAll((List<String>)staticContent.getJSONField(ERRORS));
46 result.addJSONField(ERRORS, errorList);
49 if(DocumentRequest.PROFILE) {
50 long dura = System.nanoTime()-s;
51 System.err.println("NodeRequest " + System.identityHashCode(this) + " " + variable.getURI(graph) + " in " + 1e-6*dura + "ms." + result);