Fix sonar issues in SchemaGenerator 43/58443/7
authorjczestochowska <justyna.czestochowska@nokia.com>
Wed, 1 Aug 2018 14:13:10 +0000 (16:13 +0200)
committerjczestochowska <justyna.czestochowska@nokia.com>
Thu, 2 Aug 2018 07:39:58 +0000 (09:39 +0200)
fixed formatting
removed unused JanusGraph graph parameter
deleted usage of print that were accompanied by a logger
reduced loadSchemaIntoJanusGraph complexity by cutting it into smaller methods
added private constructor to prevent instantiation
optimized imports

Change-Id: I4645a7fed266afbe6c2b21df20b40574aa9f31fd
Issue-ID: AAI-1437
Signed-off-by: jczestochowska <justyna.czestochowska@nokia.com>
aai-core/src/main/java/org/onap/aai/dbgen/GenTester.java
aai-core/src/main/java/org/onap/aai/dbgen/SchemaGenerator.java
aai-core/src/main/java/org/onap/aai/dbmap/AAIGraph.java
aai-core/src/main/java/org/onap/aai/dbmap/InMemoryGraph.java

index 9a726ec..1abd470 100644 (file)
@@ -128,7 +128,7 @@ public class GenTester {
                imsg = "-- Loading new schema elements into JanusGraph --";
                        System.out.println(imsg);
                        LOGGER.info(imsg);
-                       SchemaGenerator.loadSchemaIntoJanusGraph( graph, graphMgt, addDefaultCR );
+                       SchemaGenerator.loadSchemaIntoJanusGraph(graphMgt, addDefaultCR );
 
            } catch(Exception ex) {
                ErrorLogHelper.logError("AAI_4000", ex.getMessage());
index 6336edd..c981338 100644 (file)
@@ -8,7 +8,7 @@
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *    http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
 package org.onap.aai.dbgen;
 
 
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.google.common.collect.Multimap;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
-
 import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.janusgraph.core.Cardinality;
+import org.janusgraph.core.Multiplicity;
+import org.janusgraph.core.PropertyKey;
+import org.janusgraph.core.schema.JanusGraphManagement;
 import org.onap.aai.db.props.AAIProperties;
 import org.onap.aai.introspection.Introspector;
 import org.onap.aai.introspection.Loader;
@@ -38,156 +44,162 @@ import org.onap.aai.serialization.db.EdgeRule;
 import org.onap.aai.serialization.db.EdgeRules;
 import org.onap.aai.util.AAIConfig;
 
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import com.google.common.collect.Multimap;
-import org.janusgraph.core.Cardinality;
-import org.janusgraph.core.Multiplicity;
-import org.janusgraph.core.PropertyKey;
-import org.janusgraph.core.JanusGraph;
-import org.janusgraph.core.schema.JanusGraphManagement;
 
+public class SchemaGenerator {
+
+    private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(SchemaGenerator.class);
+    private static boolean addDefaultCR = true;
+
+    private SchemaGenerator() {
+
+    }
 
+    /**
+     * Load schema into JanusGraph.
+     *  @param graphMgmt the graph mgmt
+     * @param addDefaultCloudRegion the add default cloud region
+     */
+    public static void loadSchemaIntoJanusGraph(final JanusGraphManagement graphMgmt,
+        boolean addDefaultCloudRegion) {
+        addDefaultCR = addDefaultCloudRegion;
+        loadSchemaIntoJanusGraph(graphMgmt);
+    }
 
-public class SchemaGenerator{
-
-       private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(SchemaGenerator.class);
-       private static boolean addDefaultCR = true;
-       
-       
-        /**
-        * Load schema into JanusGraph.
-        *
-        * @param graph the graph
-        * @param graphMgmt the graph mgmt
-        * @param addDefaultCloudRegion the add default cloud region
-        */
-       public static void loadSchemaIntoJanusGraph(final JanusGraph graph, final JanusGraphManagement graphMgmt, boolean addDefaultCloudRegion) {
-                addDefaultCR = addDefaultCloudRegion;
-                loadSchemaIntoJanusGraph(graph, graphMgmt);
-        }
-       
     /**
      * Load schema into JanusGraph.
      *
-     * @param graph the graph
      * @param graphMgmt the graph mgmt
      */
-    public static void loadSchemaIntoJanusGraph(final JanusGraph graph, final JanusGraphManagement graphMgmt) {
-
-       try {
-               AAIConfig.init();
-       }
-       catch (Exception ex){
-                       LOGGER.error(" ERROR - Could not run AAIConfig.init(). " + LogFormatTools.getStackTop(ex));
-                       System.out.println(" ERROR - Could not run AAIConfig.init(). ");
-                       System.exit(1);
-               }
-       
-        // NOTE - JanusGraph 0.5.3 doesn't keep a list of legal node Labels.  
-       //   They are only used when a vertex is actually being created.  JanusGraph 1.1 will keep track (we think).
-               
-
-               // Use EdgeRules to make sure edgeLabels are defined in the db.  NOTE: the multiplicty used here is 
-       // always "MULTI".  This is not the same as our internal "Many2Many", "One2One", "One2Many" or "Many2One"
-       // We use the same edge-label for edges between many different types of nodes and our internal
-       // multiplicty definitions depends on which two types of nodes are being connected.
-
-               Multimap<String, EdgeRule> edges = null;
-               Set<String> labels = new HashSet<>();
-               
-               edges = EdgeRules.getInstance().getAllRules();
-               for (EdgeRule rule : edges.values()) {
-                       labels.add(rule.getLabel());
-               }
-               
-               for( String label: labels){
-                       if( graphMgmt.containsRelationType(label) ) {
-                               String dmsg = " EdgeLabel  [" + label + "] already existed. ";
-               System.out.println(dmsg);
-               LOGGER.debug(dmsg);
-            } else {
-               String dmsg = "Making EdgeLabel: [" + label + "]";
-               System.out.println(dmsg);
-               LOGGER.debug(dmsg);
-               graphMgmt.makeEdgeLabel(label).multiplicity(Multiplicity.valueOf("MULTI")).make();
+    public static void loadSchemaIntoJanusGraph(final JanusGraphManagement graphMgmt) {
+
+        try {
+            AAIConfig.init();
+        } catch (Exception ex) {
+            LOGGER.error(" ERROR - Could not run AAIConfig.init(). " + LogFormatTools.getStackTop(ex));
+            System.exit(1);
+        }
+
+        // NOTE - JanusGraph 0.5.3 doesn't keep a list of legal node Labels.
+        //   They are only used when a vertex is actually being created.  JanusGraph 1.1 will keep track (we think).
+
+        // Use EdgeRules to make sure edgeLabels are defined in the db.  NOTE: the multiplicty used here is
+        // always "MULTI".  This is not the same as our internal "Many2Many", "One2One", "One2Many" or "Many2One"
+        // We use the same edge-label for edges between many different types of nodes and our internal
+        // multiplicty definitions depends on which two types of nodes are being connected.
+
+        Multimap<String, EdgeRule> edges = null;
+        Set<String> labels = new HashSet<>();
+
+        edges = EdgeRules.getInstance().getAllRules();
+        for (EdgeRule rule : edges.values()) {
+            labels.add(rule.getLabel());
+        }
+
+        for (String label : labels) {
+            addEdgeLabel(graphMgmt, label);
+        }
+
+        Loader loader = LoaderFactory.createLoaderForVersion(ModelType.MOXY, AAIProperties.LATEST);
+        Map<String, Introspector> objs = loader.getAllObjects();
+        Map<String, PropertyKey> seenProps = new HashMap<>();
+
+        for (Introspector obj : objs.values()) {
+            for (String propertyName : obj.getProperties()) {
+                String dbPropertyName = propertyName;
+                Optional<String> alias = obj.getPropertyMetadata(propertyName, PropertyMetadata.DB_ALIAS);
+                if (alias.isPresent()) {
+                    dbPropertyName = alias.get();
+                }
+                if (graphMgmt.containsRelationType(propertyName)) {
+                    handleExistingProperty(propertyName);
+                } else {
+                    handleUnknownProperty(graphMgmt, seenProps, obj, propertyName, dbPropertyName);
+                }
             }
-        }     
-
-               Loader loader = LoaderFactory.createLoaderForVersion(ModelType.MOXY, AAIProperties.LATEST);
-               Map<String, Introspector> objs = loader.getAllObjects();
-               Map<String, PropertyKey> seenProps = new HashMap<>();
-               
-               for (Introspector obj : objs.values()) {
-                       for (String propName : obj.getProperties()) {
-                               String dbPropName = propName;
-                               Optional<String> alias = obj.getPropertyMetadata(propName, PropertyMetadata.DB_ALIAS);
-                               if (alias.isPresent()) {
-                                       dbPropName = alias.get();
-                               }
-                               if( graphMgmt.containsRelationType(propName) ){
-                       String dmsg = " PropertyKey  [" + propName + "] already existed in the DB. ";
-                       System.out.println(dmsg);
-                       LOGGER.debug(dmsg);
-                   } else {
-                       Class<?> type = obj.getClass(propName);
-                       Cardinality cardinality = Cardinality.SINGLE;
-                       boolean process = false;
-                       if (obj.isListType(propName) && obj.isSimpleGenericType(propName)) {
-                               cardinality = Cardinality.SET;
-                               type = obj.getGenericTypeClass(propName);
-                               process = true;
-                       } else if (obj.isSimpleType(propName)) {
-                               process = true;
-                       }
-
-                       if (process) {
-
-                               String imsg = "Creating PropertyKey: [" + dbPropName + "], ["+ type.getSimpleName() + "], [" + cardinality + "]";
-                               System.out.println(imsg);
-                               LOGGER.info(imsg);
-                               PropertyKey propK;
-                               if (!seenProps.containsKey(dbPropName)) {
-                                       propK = graphMgmt.makePropertyKey(dbPropName).dataType(type).cardinality(cardinality).make();
-                                       seenProps.put(dbPropName, propK);
-                               } else {
-                                       propK = seenProps.get(dbPropName);
-                               }
-                               if (graphMgmt.containsGraphIndex(dbPropName)) {
-                                       String dmsg = " Index  [" + dbPropName + "] already existed in the DB. ";
-                                       System.out.println(dmsg);
-                                       LOGGER.debug(dmsg);
-                               } else {
-                                       if( obj.getIndexedProperties().contains(propName) ){
-                                               if( obj.getUniqueProperties().contains(propName) ){
-                                                                       imsg = "Add Unique index for PropertyKey: [" + dbPropName + "]";
-                                                       System.out.println(imsg);
-                                                       LOGGER.info(imsg);
-                                               graphMgmt.buildIndex(dbPropName,Vertex.class).addKey(propK).unique().buildCompositeIndex();
-                                            } else {
-                                               imsg = "Add index for PropertyKey: [" + dbPropName + "]";
-                                                       System.out.println(imsg);
-                                                       LOGGER.info(imsg);
-                                               graphMgmt.buildIndex(dbPropName,Vertex.class).addKey(propK).buildCompositeIndex();
-                                            }
-                                        } else {
-                                               imsg = "No index added for PropertyKey: [" + dbPropName + "]";
-                                               System.out.println(imsg);
-                                               LOGGER.info(imsg);
-                                        }
-                               }
-                       }
-                   }
-                       }
-               }
-        
+        }
+
         String imsg = "-- About to call graphMgmt commit";
-       System.out.println(imsg);
-       LOGGER.info(imsg);
-       
+        LOGGER.info(imsg);
+
         graphMgmt.commit();
     }// End of loadSchemaIntoJanusGraph()
 
+    private static void handleUnknownProperty(JanusGraphManagement graphMgmt, Map<String, PropertyKey> seenProps,
+        Introspector obj, String propertyName, String dbPropertyName) {
+
+        Class<?> type = obj.getClass(propertyName);
+        Cardinality cardinality = Cardinality.SINGLE;
+        boolean process = false;
+        if (obj.isListType(propertyName) && obj.isSimpleGenericType(propertyName)) {
+            cardinality = Cardinality.SET;
+            type = obj.getGenericTypeClass(propertyName);
+            process = true;
+        } else if (obj.isSimpleType(propertyName)) {
+            process = true;
+        }
+
+        if (process) {
+            String imsg =
+                "Creating PropertyKey: [" + dbPropertyName + "], [" + type.getSimpleName() + "], [" + cardinality + "]";
+            LOGGER.info(imsg);
+            PropertyKey propK;
+            propK = getPropertyKey(graphMgmt, seenProps, dbPropertyName, type, cardinality);
+            buildIndex(graphMgmt, obj, propertyName, dbPropertyName, propK);
+        }
+    }
+
+    private static void buildIndex(JanusGraphManagement graphMgmt, Introspector obj, String propertyName,
+        String dbPropertyName, PropertyKey propK) {
+        String imsg;
+        if (graphMgmt.containsGraphIndex(dbPropertyName)) {
+            String dmsg = " Index  [" + dbPropertyName + "] already existed in the DB. ";
+            LOGGER.debug(dmsg);
+        } else {
+            if (obj.getIndexedProperties().contains(propertyName)) {
+                if (obj.getUniqueProperties().contains(propertyName)) {
+                    imsg = "Add Unique index for PropertyKey: [" + dbPropertyName + "]";
+                    LOGGER.info(imsg);
+                    graphMgmt.buildIndex(dbPropertyName, Vertex.class).addKey(propK).unique().buildCompositeIndex();
+                } else {
+                    imsg = "Add index for PropertyKey: [" + dbPropertyName + "]";
+                    LOGGER.info(imsg);
+                    graphMgmt.buildIndex(dbPropertyName, Vertex.class).addKey(propK).buildCompositeIndex();
+                }
+            } else {
+                imsg = "No index added for PropertyKey: [" + dbPropertyName + "]";
+                LOGGER.info(imsg);
+            }
+        }
+    }
+
+    private static PropertyKey getPropertyKey(JanusGraphManagement graphMgmt, Map<String, PropertyKey> seenProps,
+        String dbPropertyName, Class<?> type, Cardinality cardinality) {
+        PropertyKey propK;
+        if (!seenProps.containsKey(dbPropertyName)) {
+            propK = graphMgmt.makePropertyKey(dbPropertyName).dataType(type).cardinality(cardinality).make();
+            seenProps.put(dbPropertyName, propK);
+        } else {
+            propK = seenProps.get(dbPropertyName);
+        }
+        return propK;
+    }
+
+    private static void handleExistingProperty(String propertyName) {
+        String dmsg = " PropertyKey  [" + propertyName + "] already existed in the DB. ";
+        LOGGER.debug(dmsg);
+    }
+
+    private static void addEdgeLabel(JanusGraphManagement graphMgmt, String label) {
+        if (graphMgmt.containsRelationType(label)) {
+            String dmsg = " EdgeLabel  [" + label + "] already existed. ";
+            LOGGER.debug(dmsg);
+        } else {
+            String dmsg = "Making EdgeLabel: [" + label + "]";
+            LOGGER.debug(dmsg);
+            graphMgmt.makeEdgeLabel(label).multiplicity(Multiplicity.valueOf("MULTI")).make();
+        }
+    }
+
 }
 
 
index 0a28751..b8596eb 100644 (file)
  */
 package org.onap.aai.dbmap;
 
-import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
-import java.io.InputStream;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
@@ -158,7 +156,7 @@ public class AAIGraph {
                JanusGraphManagement graphMgt = graph.openManagement();
                
                System.out.println("-- loading schema into JanusGraph");
-               SchemaGenerator.loadSchemaIntoJanusGraph( graph, graphMgt );
+               SchemaGenerator.loadSchemaIntoJanusGraph(graphMgt );
        }
 
        /**
index 45d0bbe..3f002ff 100644 (file)
@@ -25,7 +25,6 @@ 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.SchemaGenerator;
 import org.onap.aai.logging.LogFormatTools;
@@ -57,7 +56,7 @@ public class InMemoryGraph {
                        JanusGraphManagement graphMgt = graph.openManagement();
             if(builder.isSchemaEnabled){
                LOGGER.info("Schema Enabled");
-               SchemaGenerator.loadSchemaIntoJanusGraph(graph, graphMgt);
+               SchemaGenerator.loadSchemaIntoJanusGraph(graphMgt);
             }
                        JanusGraphTransaction transaction = graph.newTransaction();
                        LOGGER.info("Loading snapshot");