Update the license for 2017-2018 license
[aai/aai-common.git] / aai-core / src / main / java / org / onap / aai / serialization / queryformats / RawFormat.java
index 7aaf303..fc68def 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * org.onap.aai
  * ================================================================================
- * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +16,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============LICENSE_END=========================================================
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  */
 package org.onap.aai.serialization.queryformats;
 
@@ -25,6 +23,7 @@ import java.util.Iterator;
 import java.util.List;
 
 import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.onap.aai.db.props.AAIProperties;
@@ -41,7 +40,7 @@ import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 
 
-public class RawFormat implements FormatMapper {
+public class RawFormat extends MultiFormatMapper {
        protected JsonParser parser = new JsonParser();
        protected final DBSerializer serializer;
        protected final Loader loader;
@@ -56,20 +55,6 @@ public class RawFormat implements FormatMapper {
                this.nodesOnly = builder.isNodesOnly();
        }
        
-       @Override
-       public JsonObject formatObject(Object input) throws AAIFormatVertexException {
-               Vertex v = (Vertex)input;
-               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));
-               json.add("properties", this.createPropertiesObject(v));
-               if (!nodesOnly) {
-                       json.add("related-to", this.createRelationshipObject(v));
-               }
-               return json;
-       }
-
        @Override
        public int parallelThreshold() {
                return 100;
@@ -101,23 +86,35 @@ public class RawFormat implements FormatMapper {
 
                return json;
        }
+       
        protected JsonArray createRelationshipObject(Vertex v) throws AAIFormatVertexException {
                JsonArray jarray = new JsonArray();
-               Iterator<Vertex> iter = v.vertices(Direction.BOTH);
+               Iterator<Edge> inIter = v.edges(Direction.IN);
+               Iterator<Edge> outIter = v.edges(Direction.OUT);
 
-               while (iter.hasNext()) {
-                       Vertex related = iter.next();
-
-                       JsonObject json = new JsonObject();
-                       json.addProperty("id", related.id().toString());
-                       json.addProperty("node-type", related.<String>value(AAIProperties.NODE_TYPE));
-                       json.addProperty("url", this.urlBuilder.pathed(related));
-                       jarray.add(json);
+               while (inIter.hasNext()) {
+                       Edge e = inIter.next();
+                       jarray.add(this.getRelatedObject(e.label(), e.outVertex()));
+               }
+               
+               while (outIter.hasNext()) {
+                       Edge e = outIter.next();
+                       jarray.add(this.getRelatedObject(e.label(), e.inVertex()));
                }
 
                return jarray;
        }
        
+       private 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;
@@ -187,4 +184,18 @@ public class RawFormat implements FormatMapper {
                        }
                }
        }
+
+       @Override
+       protected 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));
+               json.add("properties", this.createPropertiesObject(v));
+               if (!nodesOnly) {
+                       json.add("related-to", this.createRelationshipObject(v));
+               }
+               return json;
+       }
 }