AAI-1523 Batch reformat aai-core
[aai/aai-common.git] / aai-core / src / main / java / org / onap / aai / serialization / queryformats / RawFormat.java
index e90ee6b..8636ebf 100644 (file)
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
+
 package org.onap.aai.serialization.queryformats;
 
 import com.google.gson.Gson;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Optional;
+
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
@@ -35,178 +41,176 @@ import org.onap.aai.serialization.queryformats.params.Depth;
 import org.onap.aai.serialization.queryformats.params.NodesOnly;
 import org.onap.aai.serialization.queryformats.utils.UrlBuilder;
 
-import java.util.Iterator;
-import java.util.List;
-import java.util.Optional;
+public class RawFormat extends MultiFormatMapper {
+    protected JsonParser parser = new JsonParser();
+    protected final DBSerializer serializer;
+    protected final Loader loader;
+    protected final UrlBuilder urlBuilder;
+    protected final int depth;
+    protected final boolean nodesOnly;
 
+    protected RawFormat(Builder builder) {
+        this.urlBuilder = builder.getUrlBuilder();
+        this.loader = builder.getLoader();
+        this.serializer = builder.getSerializer();
+        this.depth = builder.getDepth();
+        this.nodesOnly = builder.isNodesOnly();
+    }
 
-public class RawFormat extends MultiFormatMapper {
-       protected JsonParser parser = new JsonParser();
-       protected final DBSerializer serializer;
-       protected final Loader loader;
-       protected final UrlBuilder urlBuilder;
-       protected final int depth;
-       protected final boolean nodesOnly;
-       protected RawFormat(Builder builder) {
-               this.urlBuilder = builder.getUrlBuilder();
-               this.loader = builder.getLoader();
-               this.serializer = builder.getSerializer();
-               this.depth = builder.getDepth();
-               this.nodesOnly = builder.isNodesOnly();
-       }
-       
-       @Override
-       public int parallelThreshold() {
-               return 100;
-       }
-       
-       
-       public Optional<JsonObject> createPropertiesObject(Vertex v) throws AAIFormatVertexException {
-               JsonObject json = new JsonObject();
-               Iterator<VertexProperty<Object>> iter = v.properties();
-
-               while (iter.hasNext()) {
-                       VertexProperty<Object> prop = iter.next();
-                       if (prop.value() instanceof String) {
-                               json.addProperty(prop.key(), (String)prop.value());
-                       } else if (prop.value() instanceof Boolean) {
-                               json.addProperty(prop.key(), (Boolean)prop.value());
-                       } else if (prop.value() instanceof Number) {
-                               json.addProperty(prop.key(), (Number)prop.value());
-                       } else if (prop.value() instanceof List) {
-                               Gson gson = new Gson();
-                               String list = gson.toJson(prop.value());
-
-                               json.addProperty(prop.key(), list);
-                       } else {
-                               //throw exception?
-                               return null;
-                       }
-               }
-
-               return Optional.of(json);
-       }
-       
-       protected JsonArray createRelationshipObject(Vertex v) throws AAIFormatVertexException {
-               JsonArray jarray = new JsonArray();
-               Iterator<Edge> inIter = v.edges(Direction.IN);
-               Iterator<Edge> outIter = v.edges(Direction.OUT);
-
-               while (inIter.hasNext()) {
-                       Edge e = inIter.next();
-                       Vertex outVertex = e.outVertex();
-                       this.addEdge(e, outVertex, jarray);
-               }
-               
-               while (outIter.hasNext()) {
-                       Edge e = outIter.next();
-                       Vertex inVertex = e.inVertex();
-                       this.addEdge(e, inVertex, jarray);
-               }
-
-               return jarray;
-       }
-
-       protected void addEdge(Edge e, Vertex vertex, JsonArray array) throws AAIFormatVertexException {
-               array.add(this.getRelatedObject(e.label(), vertex));
-       }
-       
-       protected JsonObject getRelatedObject(String label, Vertex related) throws AAIFormatVertexException {
-               JsonObject json = new JsonObject();
-               json.addProperty("id", related.id().toString());
-               json.addProperty("relationship-label", label);
-               json.addProperty("node-type", related.<String>value(AAIProperties.NODE_TYPE));
-               json.addProperty("url", this.urlBuilder.pathed(related));
-               
-               return json;
-       }
-       
-       public static class Builder implements NodesOnly<Builder>, Depth<Builder> {
-               
-               protected final Loader loader;
-               protected final DBSerializer serializer;
-               protected final UrlBuilder urlBuilder;
-               protected boolean includeUrl = false;
-               protected boolean nodesOnly = false;
-               protected int depth = 1;
-               protected boolean modelDriven = false;
-               public Builder(Loader loader, DBSerializer serializer, UrlBuilder urlBuilder) {
-                       this.loader = loader;
-                       this.serializer = serializer;
-                       this.urlBuilder = urlBuilder;
-               }
-               
-               protected Loader getLoader() {
-                       return this.loader;
-               }
-
-               protected DBSerializer getSerializer() {
-                       return this.serializer;
-               }
-
-               protected UrlBuilder getUrlBuilder() {
-                       return this.urlBuilder;
-               }
-               
-               public Builder includeUrl() {
-                       this.includeUrl = true;
-                       return this;
-               }
-               
-               public Builder nodesOnly(Boolean nodesOnly) {
-                       this.nodesOnly = nodesOnly;
-                       return this;
-               }
-               public boolean isNodesOnly() {
-                       return this.nodesOnly;
-               }
-               
-               public Builder depth(Integer depth) {
-                       this.depth = depth;
-                       return this;
-               }
-               
-               public int getDepth() {
-                       return this.depth;
-               }
-
-               public boolean isIncludeUrl() {
-                       return this.includeUrl;
-               }
-               
-               public Builder modelDriven() {
-                       this.modelDriven = true;
-                       return this;
-               }
-               
-               public boolean getModelDriven() {
-                       return this.modelDriven;
-               }
-               public RawFormat build() {
-                       if (modelDriven) {
-                               return new SimpleFormat(this);
-                       } else {
-                               return new RawFormat(this);
-                       }
-               }
-       }
-
-       @Override
-       protected Optional<JsonObject> getJsonFromVertex(Vertex v) throws AAIFormatVertexException {
-
-               JsonObject json = new JsonObject();
-               json.addProperty("id", v.id().toString());
-               json.addProperty("node-type", v.<String>value(AAIProperties.NODE_TYPE));
-               json.addProperty("url", this.urlBuilder.pathed(v));
-               Optional<JsonObject> properties = this.createPropertiesObject(v);
-               if (properties.isPresent()) {
-                       json.add("properties", properties.get());
-               } else {
-                       return Optional.empty();
-               }
-               if (!nodesOnly) {
-                       json.add("related-to", this.createRelationshipObject(v));
-               }
-               return Optional.of(json);
-       }
+    @Override
+    public int parallelThreshold() {
+        return 100;
+    }
+
+    public Optional<JsonObject> createPropertiesObject(Vertex v) throws AAIFormatVertexException {
+        JsonObject json = new JsonObject();
+        Iterator<VertexProperty<Object>> iter = v.properties();
+
+        while (iter.hasNext()) {
+            VertexProperty<Object> prop = iter.next();
+            if (prop.value() instanceof String) {
+                json.addProperty(prop.key(), (String) prop.value());
+            } else if (prop.value() instanceof Boolean) {
+                json.addProperty(prop.key(), (Boolean) prop.value());
+            } else if (prop.value() instanceof Number) {
+                json.addProperty(prop.key(), (Number) prop.value());
+            } else if (prop.value() instanceof List) {
+                Gson gson = new Gson();
+                String list = gson.toJson(prop.value());
+
+                json.addProperty(prop.key(), list);
+            } else {
+                // throw exception?
+                return null;
+            }
+        }
+
+        return Optional.of(json);
+    }
+
+    protected JsonArray createRelationshipObject(Vertex v) throws AAIFormatVertexException {
+        JsonArray jarray = new JsonArray();
+        Iterator<Edge> inIter = v.edges(Direction.IN);
+        Iterator<Edge> outIter = v.edges(Direction.OUT);
+
+        while (inIter.hasNext()) {
+            Edge e = inIter.next();
+            Vertex outVertex = e.outVertex();
+            this.addEdge(e, outVertex, jarray);
+        }
+
+        while (outIter.hasNext()) {
+            Edge e = outIter.next();
+            Vertex inVertex = e.inVertex();
+            this.addEdge(e, inVertex, jarray);
+        }
+
+        return jarray;
+    }
+
+    protected void addEdge(Edge e, Vertex vertex, JsonArray array) throws AAIFormatVertexException {
+        array.add(this.getRelatedObject(e.label(), vertex));
+    }
+
+    protected JsonObject getRelatedObject(String label, Vertex related) throws AAIFormatVertexException {
+        JsonObject json = new JsonObject();
+        json.addProperty("id", related.id().toString());
+        json.addProperty("relationship-label", label);
+        json.addProperty("node-type", related.<String>value(AAIProperties.NODE_TYPE));
+        json.addProperty("url", this.urlBuilder.pathed(related));
+
+        return json;
+    }
+
+    public static class Builder implements NodesOnly<Builder>, Depth<Builder> {
+
+        protected final Loader loader;
+        protected final DBSerializer serializer;
+        protected final UrlBuilder urlBuilder;
+        protected boolean includeUrl = false;
+        protected boolean nodesOnly = false;
+        protected int depth = 1;
+        protected boolean modelDriven = false;
+
+        public Builder(Loader loader, DBSerializer serializer, UrlBuilder urlBuilder) {
+            this.loader = loader;
+            this.serializer = serializer;
+            this.urlBuilder = urlBuilder;
+        }
+
+        protected Loader getLoader() {
+            return this.loader;
+        }
+
+        protected DBSerializer getSerializer() {
+            return this.serializer;
+        }
+
+        protected UrlBuilder getUrlBuilder() {
+            return this.urlBuilder;
+        }
+
+        public Builder includeUrl() {
+            this.includeUrl = true;
+            return this;
+        }
+
+        public Builder nodesOnly(Boolean nodesOnly) {
+            this.nodesOnly = nodesOnly;
+            return this;
+        }
+
+        public boolean isNodesOnly() {
+            return this.nodesOnly;
+        }
+
+        public Builder depth(Integer depth) {
+            this.depth = depth;
+            return this;
+        }
+
+        public int getDepth() {
+            return this.depth;
+        }
+
+        public boolean isIncludeUrl() {
+            return this.includeUrl;
+        }
+
+        public Builder modelDriven() {
+            this.modelDriven = true;
+            return this;
+        }
+
+        public boolean getModelDriven() {
+            return this.modelDriven;
+        }
+
+        public RawFormat build() {
+            if (modelDriven) {
+                return new SimpleFormat(this);
+            } else {
+                return new RawFormat(this);
+            }
+        }
+    }
+
+    @Override
+    protected Optional<JsonObject> getJsonFromVertex(Vertex v) throws AAIFormatVertexException {
+
+        JsonObject json = new JsonObject();
+        json.addProperty("id", v.id().toString());
+        json.addProperty("node-type", v.<String>value(AAIProperties.NODE_TYPE));
+        json.addProperty("url", this.urlBuilder.pathed(v));
+        Optional<JsonObject> properties = this.createPropertiesObject(v);
+        if (properties.isPresent()) {
+            json.add("properties", properties.get());
+        } else {
+            return Optional.empty();
+        }
+        if (!nodesOnly) {
+            json.add("related-to", this.createRelationshipObject(v));
+        }
+        return Optional.of(json);
+    }
 }