Enhance SchemaGenerator to also generate indices for relationships
[aai/aai-common.git] / aai-core / src / main / java / org / onap / aai / dbmap / InMemoryGraph.java
index 84e1547..cca11c6 100644 (file)
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
+
 package org.onap.aai.dbmap;
 
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-
 import java.util.Properties;
 
-import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.tinkerpop.gremlin.structure.io.IoCore;
-import org.onap.aai.dbgen.GraphSONPartialIO;
-import org.onap.aai.dbgen.SchemaGenerator;
-import org.onap.aai.logging.LogFormatTools;
-
-import org.janusgraph.core.JanusGraphFactory;
 import org.janusgraph.core.JanusGraph;
+import org.janusgraph.core.JanusGraphFactory;
 import org.janusgraph.core.JanusGraphTransaction;
 import org.janusgraph.core.schema.JanusGraphManagement;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
+import org.onap.aai.dbgen.GraphSONPartialIO;
+import org.onap.aai.dbgen.SchemaGenerator;
+import org.onap.aai.logging.LogFormatTools;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class InMemoryGraph {
 
-       private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(InMemoryGraph.class);
-       private JanusGraph graph = null;
-
-
-       public InMemoryGraph(Builder builder) throws IOException  {
-               /*
-                * Create a In-memory graph
-                */
-               InputStream is = new FileInputStream(builder.propertyFile);
-               try {
-                       graph = JanusGraphFactory.open(builder.propertyFile);
-                       
-                       Properties graphProps = new Properties();
-                       graphProps.load(is);
-                       JanusGraphManagement graphMgt = graph.openManagement();
-            if(builder.isSchemaEnabled){
-               LOGGER.info("Schema Enabled");
-               SchemaGenerator.loadSchemaIntoJanusGraph(graph, graphMgt, graphProps.getProperty("storage.backend"));
+    private static final Logger LOGGER = LoggerFactory.getLogger(InMemoryGraph.class);
+    private JanusGraph graph = null;
+
+    public InMemoryGraph(Builder builder) throws IOException {
+        /*
+         * Create a In-memory graph
+         */
+        try (InputStream is = new FileInputStream(builder.propertyFile)) {
+            graph = JanusGraphFactory.open(builder.propertyFile);
+
+            Properties graphProps = new Properties();
+            graphProps.load(is);
+            if (builder.isSchemaEnabled) {
+                LOGGER.info("Schema Enabled");
+                SchemaGenerator.loadSchemaIntoJanusGraph(graph, graphProps.getProperty("storage.backend"), false);
+            }
+            try (JanusGraphTransaction transaction = graph.newTransaction()) {
+                LOGGER.info("Loading snapshot");
+                if (builder.isPartialGraph) {
+                    if ((builder.graphsonLocation != null) && (builder.graphsonLocation.length() > 0)) {
+                        transaction.io(GraphSONPartialIO.build()).readGraph(builder.graphsonLocation);
+                    } else {
+                        transaction.io(GraphSONPartialIO.build()).reader().create().readGraph(builder.seqInputStream,
+                                graph);
+                    }
+                } else {
+                    if ((builder.graphsonLocation != null) && (builder.graphsonLocation.length() > 0)) {
+                        transaction.io(IoCore.graphson()).readGraph(builder.graphsonLocation);
+                    } else {
+                        transaction.io(IoCore.graphson()).reader().create().readGraph(builder.seqInputStream, graph);
+                    }
+                }
+                transaction.commit();
             }
-                       JanusGraphTransaction transaction = graph.newTransaction();
-                       LOGGER.info("Loading snapshot");
-                       if(builder.isPartialGraph){
-                               if ( (builder.graphsonLocation != null) && (builder.graphsonLocation.length() > 0) ) {
-                                       transaction.io(GraphSONPartialIO.build()).readGraph(builder.graphsonLocation);
-                           }
-                               else {
-                                       transaction.io(GraphSONPartialIO.build()).reader().create().readGraph(builder.seqInputStream, graph);
-                               }
-                       }
-                       else{
-                               if ( (builder.graphsonLocation != null) && (builder.graphsonLocation.length() > 0) ) {
-                                       transaction.io(IoCore.graphson()).readGraph(builder.graphsonLocation);
-                               }
-                               else {
-                                       transaction.io(IoCore.graphson()).reader().create().readGraph(builder.seqInputStream, graph);
-                               }
-                       }
-                       transaction.commit();
-                       
-               } catch (Exception e) {
-                       // TODO : Changesysout to logger
-                       e.printStackTrace();
-                       LOGGER.error(
-                                       "ERROR: Could not load datasnapshot to in memory graph. \n" + LogFormatTools.getStackTop(e));
-                       throw new IllegalStateException("Could not load datasnapshot to in memory graph");
-
-               }
-               finally{
-                       is.close();
-               }
-
-       }
-
-       public static class Builder {
-               private String graphsonLocation = "";
-               private String propertyFile = "";
-               private boolean isSchemaEnabled = false;
-               private InputStream seqInputStream = null;
-               private boolean isPartialGraph = false;
-
-
-               /*
-                * Builder constructor doesnt do anything
-                */
-               public Builder() {
-                       //Do nothing
-               }
-
-               public InMemoryGraph build(String graphsonFile, String propertyFile, boolean isSchemaEnabled) throws IOException {
-                       this.graphsonLocation = graphsonFile;
-                       this.propertyFile = propertyFile;
-                       this.isSchemaEnabled = isSchemaEnabled;
-                       return new InMemoryGraph(this);
-               }
-               
-               public InMemoryGraph build(InputStream sis, String propertyFile, boolean isSchemaEnabled) throws IOException {
-                       this.graphsonLocation = null;
-                       this.propertyFile = propertyFile;
-                       this.isSchemaEnabled = isSchemaEnabled;
-                       this.seqInputStream = sis;
-                       return new InMemoryGraph(this);
-               }
-               
-               public InMemoryGraph build(String graphsonFile, String propertyFile, boolean isSchemaEnabled, boolean isPartialGraph) throws IOException {
-                       this.graphsonLocation = graphsonFile;
-                       this.propertyFile = propertyFile;
-                       this.isSchemaEnabled = isSchemaEnabled;
-                       this.isPartialGraph = isPartialGraph;
-                       return new InMemoryGraph(this);
-               }
-               
-               public InMemoryGraph build(InputStream sis, String propertyFile, boolean isSchemaEnabled, boolean isPartialGraph) throws IOException {
-                       this.graphsonLocation = null;
-                       this.propertyFile = propertyFile;
-                       this.isSchemaEnabled = isSchemaEnabled;
-                       this.seqInputStream = sis;
-                       this.isPartialGraph = isPartialGraph;
-                       return new InMemoryGraph(this);
-               }
-       }
-
-       public JanusGraph getGraph() {
-               return graph;
-       }
+
+        } catch (Exception e) {
+            LOGGER.error(String.format("ERROR: Could not load datasnapshot to in memory graph. %n%s",
+                    LogFormatTools.getStackTop(e)));
+            throw new IllegalStateException("Could not load datasnapshot to in memory graph");
+
+        }
+
+    }
+
+    public static class Builder {
+        private String graphsonLocation = "";
+        private String propertyFile = "";
+        private boolean isSchemaEnabled = false;
+        private InputStream seqInputStream = null;
+        private boolean isPartialGraph = false;
+
+        /*
+         * Builder constructor doesnt do anything
+         */
+        public Builder() {
+            // Do nothing
+        }
+
+        public InMemoryGraph build(String graphsonFile, String propertyFile, boolean isSchemaEnabled)
+                throws IOException {
+            this.graphsonLocation = graphsonFile;
+            this.propertyFile = propertyFile;
+            this.isSchemaEnabled = isSchemaEnabled;
+            return new InMemoryGraph(this);
+        }
+
+        public InMemoryGraph build(InputStream sis, String propertyFile, boolean isSchemaEnabled) throws IOException {
+            this.graphsonLocation = null;
+            this.propertyFile = propertyFile;
+            this.isSchemaEnabled = isSchemaEnabled;
+            this.seqInputStream = sis;
+            return new InMemoryGraph(this);
+        }
+
+        public InMemoryGraph build(String graphsonFile, String propertyFile, boolean isSchemaEnabled,
+                boolean isPartialGraph) throws IOException {
+            this.graphsonLocation = graphsonFile;
+            this.propertyFile = propertyFile;
+            this.isSchemaEnabled = isSchemaEnabled;
+            this.isPartialGraph = isPartialGraph;
+            return new InMemoryGraph(this);
+        }
+
+        public InMemoryGraph build(InputStream sis, String propertyFile, boolean isSchemaEnabled,
+                boolean isPartialGraph) throws IOException {
+            this.graphsonLocation = null;
+            this.propertyFile = propertyFile;
+            this.isSchemaEnabled = isSchemaEnabled;
+            this.seqInputStream = sis;
+            this.isPartialGraph = isPartialGraph;
+            return new InMemoryGraph(this);
+        }
+    }
+
+    public JanusGraph getGraph() {
+        return graph;
+    }
 
 }