Port champ-microservice project restructure
[aai/champ.git] / champ-lib / champ-core / src / main / java / org / onap / aai / champcore / graph / impl / InMemoryChampGraphImpl.java
  * ============LICENSE_END============================================
  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  */
-package org.onap.aai.champ.graph.impl;
+package org.onap.aai.champcore.graph.impl;
 
-import java.io.IOException;
-import java.util.Collection;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Stream;
 
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
-import org.onap.aai.champ.ChampCapabilities;
-import org.onap.aai.champ.exceptions.ChampIndexNotExistsException;
-import org.onap.aai.champ.model.ChampObjectIndex;
-import org.onap.aai.champ.model.ChampRelationshipIndex;
-import org.onap.aai.champ.schema.ChampSchemaEnforcer;
-import org.onap.aai.champ.schema.DefaultChampSchemaEnforcer;
-import org.slf4j.Logger;
-
-import com.att.nsa.cambria.client.CambriaPublisher;
+import org.onap.aai.champcore.ChampCapabilities;
+import org.onap.aai.champcore.ChampTransaction;
+import org.onap.aai.champcore.NoOpTinkerPopTransaction;
+import org.onap.aai.champcore.exceptions.ChampIndexNotExistsException;
+import org.onap.aai.champcore.model.ChampObject;
+import org.onap.aai.champcore.model.ChampObjectIndex;
+import org.onap.aai.champcore.model.ChampRelationshipIndex;
+import org.onap.aai.champcore.schema.ChampSchemaEnforcer;
+import org.onap.aai.champcore.schema.DefaultChampSchemaEnforcer;
 
 public final class InMemoryChampGraphImpl extends AbstractTinkerpopChampGraph {
 
@@ -73,6 +73,13 @@ public final class InMemoryChampGraphImpl extends AbstractTinkerpopChampGraph {
                this.schemaEnforcer = builder.schemaEnforcer;
        }
 
+       @Override
+    public ChampTransaction getOrCreateTransactionInstance(Optional<ChampTransaction> transaction) {
+
+         return new NoOpTinkerPopTransaction(getGraph());
+
+       }
+          
        public static class Builder {
            private final Map<String, Object> graphConfiguration = new HashMap<String, Object> ();
                private ChampSchemaEnforcer schemaEnforcer = new DefaultChampSchemaEnforcer();
@@ -84,6 +91,18 @@ public final class InMemoryChampGraphImpl extends AbstractTinkerpopChampGraph {
                        return this;
                }
 
+             public Builder properties(Map<String, Object> properties) {
+            
+            this.graphConfiguration.putAll(properties);
+            return this;
+        }
+
+        public Builder property(String path, Object value) {
+           
+            graphConfiguration.put(path, value);
+            return this;
+        }
+        
                public InMemoryChampGraphImpl build() {
                        return new InMemoryChampGraphImpl(this);
                }
@@ -98,6 +117,7 @@ public final class InMemoryChampGraphImpl extends AbstractTinkerpopChampGraph {
                return graph;
        }
 
+       
        private ConcurrentHashMap<String, ChampObjectIndex> getObjectIndices() {
                return objectIndices;
        }
@@ -106,7 +126,9 @@ public final class InMemoryChampGraphImpl extends AbstractTinkerpopChampGraph {
                return relationshipIndices;
        }
 
+       @Override
        public void executeStoreObjectIndex(ChampObjectIndex index) {
+         
                if (isShutdown()) throw new IllegalStateException("Cannot call storeObjectIndex() after shutdown has been initiated");
 
                getGraph().createIndex(index.getField().getName(), Vertex.class);
@@ -179,4 +201,9 @@ public final class InMemoryChampGraphImpl extends AbstractTinkerpopChampGraph {
        public ChampCapabilities capabilities() {
                return CAPABILITIES;
        }
+
+       @Override
+       public GraphTraversal<?, ?> hasLabel(GraphTraversal<?, ?> query, Object type) {
+               return query.hasLabel((String)type, (String)type);
+       }
 }