-package org.simantics.charts.internal;\r
-\r
-import java.io.IOException;\r
-import java.util.Optional;\r
-\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.RequestProcessor;\r
-import org.simantics.db.common.request.UniqueRead;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.layer0.variable.Variable;\r
-import org.simantics.db.layer0.variable.Variables;\r
-\r
-import com.fasterxml.jackson.core.JsonFactory;\r
-import com.fasterxml.jackson.core.JsonParser;\r
-import com.fasterxml.jackson.core.JsonToken;\r
-\r
-/**\r
- * @author Tuukka Lehtonen\r
- *\r
- */\r
-public class JsonUtils {\r
-\r
- public static Optional<Variable> tryParseJsonPropertyVariable(RequestProcessor processor, String json) throws DatabaseException {\r
- return processor.syncRequest(new UniqueRead<Optional<Variable>>() {\r
- @Override\r
- public Optional<Variable> perform(ReadGraph graph) throws DatabaseException {\r
- return tryParseJsonPropertyVariable(graph, json);\r
- }\r
- });\r
- }\r
-\r
- public static Optional<Variable> tryParseJsonPropertyVariable(ReadGraph graph, String json) throws DatabaseException {\r
- try (JsonParser jp = new JsonFactory().createParser(json)) {\r
- return JsonUtils.readPossibleVariable(graph, jp);\r
- } catch (IOException e) {\r
- throw new DatabaseException(e);\r
- }\r
- }\r
-\r
- public static Optional<Variable> readPossibleVariable(ReadGraph graph, JsonParser jp) throws IOException, DatabaseException {\r
- Optional<String> uri = readPossibleVariableUri(jp);\r
- return uri.isPresent() ? Optional.ofNullable(Variables.getPossibleVariable(graph, uri.get())) : Optional.empty();\r
- }\r
-\r
- public static Optional<String> readPossibleVariableUri(JsonParser jp) throws IOException {\r
- // Sanity check: verify that we got "Json Object":\r
- if (jp.nextToken() != JsonToken.START_OBJECT)\r
- throw new IOException("Expected data to start with an Object");\r
-\r
- String uri = null;\r
- String type = null;\r
- String defaultPropertyUri = null;\r
-\r
- while (jp.nextToken() != JsonToken.END_OBJECT) {\r
- String fieldName = jp.getCurrentName();\r
- jp.nextToken();\r
- if (fieldName.equals("uri")) {\r
- uri = jp.getValueAsString();\r
- } else if (fieldName.equals("type")) {\r
- type = jp.getValueAsString();\r
- } else if (fieldName.equals("defaultPropertyUri")) {\r
- defaultPropertyUri = jp.getValueAsString();\r
- }\r
- }\r
-\r
- return Optional.ofNullable("Variable".equals(type) ?\r
- defaultPropertyUri != null ? defaultPropertyUri : uri\r
- : null);\r
- }\r
-\r
-}\r
+package org.simantics.charts.internal;
+
+import java.io.IOException;
+import java.util.Optional;
+
+import org.simantics.db.ReadGraph;
+import org.simantics.db.RequestProcessor;
+import org.simantics.db.common.request.UniqueRead;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.variable.Variable;
+import org.simantics.db.layer0.variable.Variables;
+
+import com.fasterxml.jackson.core.JsonFactory;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonToken;
+
+/**
+ * @author Tuukka Lehtonen
+ *
+ */
+public class JsonUtils {
+
+ public static Optional<Variable> tryParseJsonPropertyVariable(RequestProcessor processor, String json) throws DatabaseException {
+ return processor.syncRequest(new UniqueRead<Optional<Variable>>() {
+ @Override
+ public Optional<Variable> perform(ReadGraph graph) throws DatabaseException {
+ return tryParseJsonPropertyVariable(graph, json);
+ }
+ });
+ }
+
+ public static Optional<Variable> tryParseJsonPropertyVariable(ReadGraph graph, String json) throws DatabaseException {
+ try (JsonParser jp = new JsonFactory().createParser(json)) {
+ return JsonUtils.readPossibleVariable(graph, jp);
+ } catch (IOException e) {
+ throw new DatabaseException(e);
+ }
+ }
+
+ public static Optional<Variable> readPossibleVariable(ReadGraph graph, JsonParser jp) throws IOException, DatabaseException {
+ Optional<String> uri = readPossibleVariableUri(jp);
+ return uri.isPresent() ? Optional.ofNullable(Variables.getPossibleVariable(graph, uri.get())) : Optional.empty();
+ }
+
+ public static Optional<String> readPossibleVariableUri(JsonParser jp) throws IOException {
+ // Sanity check: verify that we got "Json Object":
+ if (jp.nextToken() != JsonToken.START_OBJECT)
+ throw new IOException("Expected data to start with an Object");
+
+ String uri = null;
+ String type = null;
+ String defaultPropertyUri = null;
+
+ while (jp.nextToken() != JsonToken.END_OBJECT) {
+ String fieldName = jp.getCurrentName();
+ jp.nextToken();
+ if (fieldName.equals("uri")) {
+ uri = jp.getValueAsString();
+ } else if (fieldName.equals("type")) {
+ type = jp.getValueAsString();
+ } else if (fieldName.equals("defaultPropertyUri")) {
+ defaultPropertyUri = jp.getValueAsString();
+ }
+ }
+
+ return Optional.ofNullable("Variable".equals(type) ?
+ defaultPropertyUri != null ? defaultPropertyUri : uri
+ : null);
+ }
+
+}