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