Merge "Fix logic in Schema Generator to properly"
authorJames Forsyth <jf2512@att.com>
Tue, 9 Apr 2019 15:19:26 +0000 (15:19 +0000)
committerGerrit Code Review <gerrit@onap.org>
Tue, 9 Apr 2019 15:19:26 +0000 (15:19 +0000)
aai-core/src/main/java/org/onap/aai/dbgen/SchemaGenerator.java
aai-core/src/test/java/org/onap/aai/dbmap/AAIGraphTest.java

index b9277cd..11b96ae 100644 (file)
@@ -152,8 +152,8 @@ public class SchemaGenerator {
                                                        String dmsg = " Index  [" + dbPropName + "] already existed in the DB. ";
                                                        LOGGER.debug(dmsg);
                                                } else {
-                                                       if (obj.getIndexedProperties().contains(dbPropName)) {
-                                                               if (obj.getUniqueProperties().contains(dbPropName)) {
+                                                       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()
index 5915ce6..41a5f20 100644 (file)
  */
 package org.onap.aai.dbmap;
 
-import org.janusgraph.core.JanusGraphFactory;
 import org.janusgraph.core.JanusGraph;
+import org.janusgraph.core.JanusGraphFactory;
+import org.janusgraph.core.schema.JanusGraphIndex;
 import org.janusgraph.core.schema.JanusGraphManagement;
-import org.junit.*;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
 import org.onap.aai.AAISetup;
+import org.onap.aai.config.SpringContextAware;
+import org.onap.aai.introspection.Introspector;
+import org.onap.aai.introspection.Loader;
+import org.onap.aai.introspection.LoaderFactory;
+import org.onap.aai.introspection.ModelType;
+import org.onap.aai.schema.enums.PropertyMetadata;
+import org.onap.aai.setup.SchemaVersions;
 import org.onap.aai.util.AAIConstants;
 
+import java.io.FileNotFoundException;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
 
 import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.Matchers.matchesPattern;
 import static org.junit.Assert.*;
 
-import java.io.FileNotFoundException;
-
 public class AAIGraphTest extends AAISetup{
        @Before
        public void setup() {
@@ -70,7 +84,7 @@ public class AAIGraphTest extends AAISetup{
                graphMgt.rollback();
                graph.close();
        }
-       
+
        @Test (expected=FileNotFoundException.class)
        public void JanusGraphOpenNameWithInvalidFilePathTest() throws Exception{
                JanusGraph graph = JanusGraphFactory.open(new AAIGraphConfig.Builder("invalid").forService(SERVICE_NAME).withGraphType("graphType").buildConfiguration());
@@ -81,4 +95,38 @@ public class AAIGraphTest extends AAISetup{
                graph.close();
        }
 
+       @Ignore("Need to create schema specific to the test")
+    @Test
+    public void checkIndexOfAliasedIndexedProps() throws Exception {
+        Set<String> aliasedIndexedProps = getAliasedIndexedProps();
+        JanusGraphManagement graphMgt = AAIGraph.getInstance().getGraph().openManagement();
+        for (String aliasedIndexedProp : aliasedIndexedProps) {
+            JanusGraphIndex index = graphMgt.getGraphIndex(aliasedIndexedProp);
+            assertNotNull(aliasedIndexedProp + " index exists", index);
+            assertEquals(aliasedIndexedProp + " index has 1 property keys", index.getFieldKeys().length, 1);
+            assertThat(aliasedIndexedProp + " index indexes " + aliasedIndexedProp + " property key", index.getFieldKeys()[0].name(), is(aliasedIndexedProp));
+        }
+        graphMgt.rollback();
+    }
+
+    private Set<String> getAliasedIndexedProps() {
+        Set<String> aliasedIndexedProps = new HashSet<>();
+        LoaderFactory loaderFactory   = SpringContextAware.getBean(LoaderFactory.class);
+        SchemaVersions schemaVersions = SpringContextAware.getBean(SchemaVersions.class);
+        Loader loader = loaderFactory.createLoaderForVersion(ModelType.MOXY, schemaVersions.getDefaultVersion());
+        Map<String, Introspector> objs = loader.getAllObjects();
+        for (Introspector obj : objs.values()) {
+            for (String propName : obj.getProperties()) {
+                Optional<String> alias = obj.getPropertyMetadata(propName, PropertyMetadata.DB_ALIAS);
+                if (alias.isPresent()) {
+                    String dbPropName = alias.get();
+                    if (obj.getIndexedProperties().contains(propName)) {
+                        aliasedIndexedProps.add(dbPropName);
+                    }
+                }
+            }
+        }
+        return aliasedIndexedProps;
+    }
+
 }