AAI-1523 Batch reformat aai-core
[aai/aai-common.git] / aai-core / src / main / java / org / onap / aai / dbgen / SchemaGenerator.java
index 11b96ae..bfd1f55 100644 (file)
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
+
 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;
@@ -26,160 +31,156 @@ import java.util.Optional;
 import java.util.Set;
 
 import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.janusgraph.core.Cardinality;
+import org.janusgraph.core.JanusGraph;
+import org.janusgraph.core.Multiplicity;
+import org.janusgraph.core.PropertyKey;
+import org.janusgraph.core.schema.JanusGraphManagement;
 import org.onap.aai.config.SpringContextAware;
 import org.onap.aai.db.props.AAIProperties;
 import org.onap.aai.edges.EdgeIngestor;
+import org.onap.aai.edges.EdgeRule;
 import org.onap.aai.edges.exceptions.EdgeRuleNotFoundException;
 import org.onap.aai.introspection.*;
 import org.onap.aai.logging.LogFormatTools;
 import org.onap.aai.schema.enums.PropertyMetadata;
-import org.onap.aai.edges.EdgeRule;
 import org.onap.aai.setup.SchemaVersions;
 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);
-
-       /**
-        * Load schema into JanusGraph.
-        *
-        * @param graph
-        *            the graph
-        * @param graphMgmt
-        *            the graph mgmt
-        */
-       public static void loadSchemaIntoJanusGraph(final JanusGraph graph, final JanusGraphManagement graphMgmt,
-                       String backend) {
-
-               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<>();
-
-               EdgeIngestor edgeIngestor = SpringContextAware.getBean(EdgeIngestor.class);
-
-               try {
-                       edges = edgeIngestor.getAllCurrentRules();
-               } catch (EdgeRuleNotFoundException e) {
-                       LOGGER.error("Unable to find all rules {}", LogFormatTools.getStackTop(e));
-               }
-
-               for (EdgeRule rule : edges.values()) {
-                       labels.add(rule.getLabel());
-               }
-
-               for (String label : labels) {
-                       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();
-                       }
-               }
-
-               Loader loader = LoaderUtil.getLatestVersion();
-
-               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(dbPropName)) {
-                                       String dmsg = " PropertyKey  [" + dbPropName + "] already existed in the DB. ";
-                                       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 + "]";
-                                               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. ";
-                                                       LOGGER.debug(dmsg);
-                                               } else {
-                                                       if (obj.getIndexedProperties().contains(propName)) {
-                                                               if (obj.getUniqueProperties().contains(propName)) {
-                                                                       imsg = "Add Unique index for PropertyKey: [" + dbPropName + "]";
-                                                                       LOGGER.info(imsg);
-                                                                       graphMgmt.buildIndex(dbPropName, Vertex.class).addKey(propK).unique()
-                                                                                       .buildCompositeIndex();
-                                                               } else {
-                                                                       imsg = "Add index for PropertyKey: [" + dbPropName + "]";
-                                                                       LOGGER.info(imsg);
-                                                                       graphMgmt.buildIndex(dbPropName, Vertex.class).addKey(propK).buildCompositeIndex();
-                                                               }
-                                                       } else {
-                                                               imsg = "No index added for PropertyKey: [" + dbPropName + "]";
-                                                               LOGGER.info(imsg);
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-               }
-
-               String imsg = "-- About to call graphMgmt commit";
-               LOGGER.info(imsg);
-               if(backend != null){
-                       LOGGER.info("Successfully loaded the schema to " + backend);
-               }
-
-               graphMgmt.commit();
-       }
+    private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(SchemaGenerator.class);
+
+    /**
+     * Load schema into JanusGraph.
+     *
+     * @param graph
+     *        the graph
+     * @param graphMgmt
+     *        the graph mgmt
+     */
+    public static void loadSchemaIntoJanusGraph(final JanusGraph graph, final JanusGraphManagement graphMgmt,
+            String backend) {
+
+        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<>();
+
+        EdgeIngestor edgeIngestor = SpringContextAware.getBean(EdgeIngestor.class);
+
+        try {
+            edges = edgeIngestor.getAllCurrentRules();
+        } catch (EdgeRuleNotFoundException e) {
+            LOGGER.error("Unable to find all rules {}", LogFormatTools.getStackTop(e));
+        }
+
+        for (EdgeRule rule : edges.values()) {
+            labels.add(rule.getLabel());
+        }
+
+        for (String label : labels) {
+            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();
+            }
+        }
+
+        Loader loader = LoaderUtil.getLatestVersion();
+
+        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(dbPropName)) {
+                    String dmsg = " PropertyKey  [" + dbPropName + "] already existed in the DB. ";
+                    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 + "]";
+                        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. ";
+                            LOGGER.debug(dmsg);
+                        } else {
+                            if (obj.getIndexedProperties().contains(propName)) {
+                                if (obj.getUniqueProperties().contains(propName)) {
+                                    imsg = "Add Unique index for PropertyKey: [" + dbPropName + "]";
+                                    LOGGER.info(imsg);
+                                    graphMgmt.buildIndex(dbPropName, Vertex.class).addKey(propK).unique()
+                                            .buildCompositeIndex();
+                                } else {
+                                    imsg = "Add index for PropertyKey: [" + dbPropName + "]";
+                                    LOGGER.info(imsg);
+                                    graphMgmt.buildIndex(dbPropName, Vertex.class).addKey(propK).buildCompositeIndex();
+                                }
+                            } else {
+                                imsg = "No index added for PropertyKey: [" + dbPropName + "]";
+                                LOGGER.info(imsg);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        String imsg = "-- About to call graphMgmt commit";
+        LOGGER.info(imsg);
+        if (backend != null) {
+            LOGGER.info("Successfully loaded the schema to " + backend);
+        }
+
+        graphMgmt.commit();
+    }
 
 }