sonar fixes 02/104702/2
authorDavid Brilla <xbrilla@fi.muni.cz>
Mon, 30 Mar 2020 16:50:36 +0000 (18:50 +0200)
committerDavid Brilla <david.brilla@tieto.com>
Thu, 16 Apr 2020 12:51:55 +0000 (14:51 +0200)
Issue-ID: AAI-2848
Change-Id: I45a408c00a450144dec723694eddd60eba883c47
Signed-off-by: David Brilla <david.brilla@tieto.com>
16 files changed:
src/main/java/org/onap/aai/GraphAdminApp.java
src/main/java/org/onap/aai/config/PropertyPasswordConfiguration.java
src/main/java/org/onap/aai/datacleanup/DataCleanupTasks.java
src/main/java/org/onap/aai/dataexport/DataExportTasks.java
src/main/java/org/onap/aai/datagrooming/DataGrooming.java
src/main/java/org/onap/aai/db/schema/ManageJanusGraphSchema.java
src/main/java/org/onap/aai/dbgen/DupeTool.java
src/main/java/org/onap/aai/util/ExceptionTranslator.java
src/main/java/org/onap/aai/util/GraphAdminDBUtils.java
src/main/java/org/onap/aai/util/PositiveNumValidator.java
src/main/java/org/onap/aai/util/SendDeleteMigrationNotifications.java
src/main/java/org/onap/aai/util/SendDeleteMigrationNotificationsMain.java
src/main/java/org/onap/aai/util/SendMigrationNotifications.java
src/main/java/org/onap/aai/util/UniquePropertyCheck.java
src/test/java/org/onap/aai/db/schema/AuditOXMTest.java
src/test/java/org/onap/aai/util/SendDeleteMigrationNotificationsTest.java

index 1030f3a..3f7abf3 100644 (file)
  */
 package org.onap.aai;
 
-import com.att.eelf.configuration.Configuration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.onap.aai.aailog.logs.AaiDebugLog;
 import org.onap.aai.config.PropertyPasswordConfiguration;
 import org.onap.aai.dbmap.AAIGraph;
-import java.util.Properties;
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.logging.ErrorLogHelper;
-import org.onap.aai.logging.LogFormatTools;
 import org.onap.aai.nodes.NodeIngestor;
 import org.onap.aai.util.AAIConfig;
-import org.onap.aai.util.AAIConstants;
 import org.onap.aai.util.ExceptionTranslator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -75,9 +70,6 @@ public class GraphAdminApp {
 
     public static final String APP_NAME = "GraphAdmin";
     private static final Logger LOGGER = LoggerFactory.getLogger(GraphAdminApp.class);
-
-    private static final String FROMAPPID = "AAI-GA";
-    private static final String TRANSID = UUID.randomUUID().toString();
     
     private static AaiDebugLog debugLog = new AaiDebugLog();
        static {
index 352e96f..306ffa0 100644 (file)
@@ -49,64 +49,38 @@ public class PropertyPasswordConfiguration implements ApplicationContextInitiali
         String certPath = environment.getProperty("server.certs.location");
         File passwordFile = null;
         File passphrasesFile = null;
-        InputStream passwordStream = null;
-        InputStream passphrasesStream = null;
         Map<String, Object> sslProps = new LinkedHashMap<>();
 
         // Override the passwords from application.properties if we find AAF certman files
         if (certPath != null) {
-            try {
-                passwordFile = new File(certPath + ".password");
-                passwordStream = new FileInputStream(passwordFile);
+            passwordFile = new File(certPath + ".password");
+            try (InputStream passwordStream = new FileInputStream(passwordFile)) {
 
-                if (passwordStream != null) {
-                    String keystorePassword = null;
+                String keystorePassword = null;
 
-                    keystorePassword = IOUtils.toString(passwordStream);
-                    if (keystorePassword != null) {
-                        keystorePassword = keystorePassword.trim();
-                    }
-                    sslProps.put("server.ssl.key-store-password", keystorePassword);
-                    sslProps.put("schema.service.ssl.key-store-password", keystorePassword);
-                } else {
-                    logger.info("Not using AAF Certman password file");
+                keystorePassword = IOUtils.toString(passwordStream);
+                if (keystorePassword != null) {
+                    keystorePassword = keystorePassword.trim();
                 }
+                sslProps.put("server.ssl.key-store-password", keystorePassword);
+                sslProps.put("schema.service.ssl.key-store-password", keystorePassword);
             } catch (IOException e) {
                 logger.warn("Not using AAF Certman password file, e=" + e.getMessage());
-            } finally {
-                if (passwordStream != null) {
-                    try {
-                        passwordStream.close();
-                    } catch (Exception e) {
-                    }
-                }
             }
-            try {
-                passphrasesFile = new File(certPath + ".passphrases");
-                passphrasesStream = new FileInputStream(passphrasesFile);
+            passphrasesFile = new File(certPath + ".passphrases");
+            try (InputStream passphrasesStream = new FileInputStream(passphrasesFile)) {
 
-                if (passphrasesStream != null) {
-                    String truststorePassword = null;
-                    Properties passphrasesProps = new Properties();
-                    passphrasesProps.load(passphrasesStream);
-                    truststorePassword = passphrasesProps.getProperty("cadi_truststore_password");
-                    if (truststorePassword != null) {
-                        truststorePassword = truststorePassword.trim();
-                    }
-                    sslProps.put("server.ssl.trust-store-password", truststorePassword);
-                    sslProps.put("schema.service.ssl.trust-store-password", truststorePassword);
-                } else {
-                    logger.info("Not using AAF Certman passphrases file");
+                String truststorePassword = null;
+                Properties passphrasesProps = new Properties();
+                passphrasesProps.load(passphrasesStream);
+                truststorePassword = passphrasesProps.getProperty("cadi_truststore_password");
+                if (truststorePassword != null) {
+                    truststorePassword = truststorePassword.trim();
                 }
+                sslProps.put("server.ssl.trust-store-password", truststorePassword);
+                sslProps.put("schema.service.ssl.trust-store-password", truststorePassword);
             } catch (IOException e) {
                 logger.warn("Not using AAF Certman passphrases file, e=" + e.getMessage());
-            } finally {
-                if (passphrasesStream != null) {
-                    try {
-                        passphrasesStream.close();
-                    } catch (Exception e) {
-                    }
-                }
             }
         }
         for (PropertySource<?> propertySource : environment.getPropertySources()) {
index dff22a4..8fc6295 100644 (file)
  * ============LICENSE_END=========================================================
  */
 package org.onap.aai.datacleanup;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.attribute.BasicFileAttributes;
-import java.nio.file.attribute.FileTime;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.Map;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
 
 import org.onap.aai.aailog.logs.AaiScheduledTaskAuditLog;
-import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.logging.ErrorLogHelper;
 import org.onap.aai.logging.LogFormatTools;
 import org.onap.aai.util.AAIConfig;
 import org.onap.aai.util.AAIConstants;
 import org.onap.logging.filter.base.ONAPComponents;
 import org.onap.logging.ref.slf4j.ONAPLogConstants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.PropertySource;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.slf4j.MDC;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.nio.file.Files;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.nio.file.attribute.FileTime;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
 
 @Component
 @PropertySource("file:${server.local.startpath}/etc/appprops/datatoolscrons.properties")
@@ -66,7 +62,7 @@ public class DataCleanupTasks {
                ageDelete is the number of days after which the data files will be deleted i.e after 30 days.
        */
        @Scheduled(cron = "${datagroomingcleanup.cron}" )
-       public void dataGroomingCleanup() throws AAIException, Exception {
+       public void dataGroomingCleanup() {
                auditLog.logBefore("dataGroomingCleanup", ONAPComponents.AAI.toString() );
                
                logger.debug("Started cron job dataGroomingCleanup @ " + simpleDateFormat.format(new Date()));
@@ -77,7 +73,6 @@ public class DataCleanupTasks {
                        String archiveDir = dataGroomingDir + AAIConstants.AAI_FILESEP + "ARCHIVE";
                        String dataGroomingArcDir = archiveDir + AAIConstants.AAI_FILESEP + "dataGrooming";             
                        File path = new File(dataGroomingDir);
-                       File archivepath = new File(archiveDir);
                        File dataGroomingPath = new File(dataGroomingArcDir);
                
                        logger.debug("The logDir is " + logDir);
@@ -139,20 +134,18 @@ public class DataCleanupTasks {
        
     /**
      * This method checks if the directory exists
-     * @param DIR
+     * @param dir the Directory
      * 
      */
     public boolean directoryExists(String dir) {
-       File path = new File(dir);
-               boolean exists = path.exists();
-               return exists;  
+               return new File(dir).exists();
     }
     
-    public Date getZipDate(Integer days) throws Exception {
+    public Date getZipDate(Integer days) {
        return getZipDate(days, new Date());
     }
     
-    public Date getZipDate(Integer days, Date date) throws Exception{
+    public Date getZipDate(Integer days, Date date) {
        
        Calendar cal = Calendar.getInstance();
        logger.debug("The current date is " + date );
@@ -170,24 +163,21 @@ public class DataCleanupTasks {
                                                         BasicFileAttributes.class);
         FileTime time = attr.creationTime();
            String formatted = simpleDateFormat.format( new Date( time.toMillis() ) );
-           Date d = simpleDateFormat.parse(formatted);
-           return d;
+           return simpleDateFormat.parse(formatted);
     }
     
     /**
      * This method will zip the files and add it to the archive folder
      * Checks if the archive folder exists, if not then creates one
      * After adding the file to archive folder it deletes the file from the filepath
-     * @throws AAIException
      * @throws Exception
      */
-    public void archive(File file, String archiveDir, String afterArchiveDir) throws AAIException, Exception {
+    public void archive(File file, String archiveDir, String afterArchiveDir) throws Exception {
                
        logger.debug("Inside the archive folder");  
        String filename = file.getName();
        logger.debug("file name is " +filename);
-               File archivepath = new File(archiveDir);
-               
+
                String zipFile = afterArchiveDir + AAIConstants.AAI_FILESEP + filename;
                
                File dataGroomingPath = new File(afterArchiveDir);
@@ -239,7 +229,7 @@ public class DataCleanupTasks {
        ageDelete is the number of days after which the data files will be deleted i.e after 30 days.
 */
     @Scheduled(cron = "${datasnapshotcleanup.cron}" )
-    public void dataSnapshotCleanup() throws AAIException, Exception {
+    public void dataSnapshotCleanup() {
        
        logger.info(ONAPLogConstants.Markers.ENTRY, "Started cron job dataSnapshotCleanup @ " + simpleDateFormat.format(new Date()));
        
@@ -249,7 +239,6 @@ public class DataCleanupTasks {
                String archiveDir = dataSnapshotDir + AAIConstants.AAI_FILESEP + "ARCHIVE";
                String dataSnapshotArcDir = archiveDir + AAIConstants.AAI_FILESEP + "dataSnapshots";            
                File path = new File(dataSnapshotDir);
-               File archivepath = new File(archiveDir);
                File dataSnapshotPath = new File(dataSnapshotArcDir);
        
                logger.debug("The logDir is " + logDir);
index 0131650..2d0625c 100644 (file)
  */
 package org.onap.aai.dataexport;
 
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileFilter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.NavigableMap;
-import java.util.Properties;
-import java.util.TreeMap;
-import java.util.UUID;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
+import com.att.eelf.configuration.Configuration;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.comparator.LastModifiedFileComparator;
+import org.apache.commons.io.filefilter.DirectoryFileFilter;
+import org.apache.commons.io.filefilter.FileFileFilter;
+import org.apache.commons.io.filefilter.RegexFileFilter;
 import org.onap.aai.aailog.logs.AaiScheduledTaskAuditLog;
 import org.onap.aai.dbgen.DynamicPayloadGenerator;
 import org.onap.aai.edges.EdgeIngestor;
-import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.introspection.LoaderFactory;
 import org.onap.aai.logging.ErrorLogHelper;
 import org.onap.aai.logging.LogFormatTools;
@@ -49,21 +35,18 @@ import org.onap.aai.setup.SchemaVersions;
 import org.onap.aai.util.AAIConfig;
 import org.onap.aai.util.AAIConstants;
 import org.onap.logging.filter.base.ONAPComponents;
-import org.onap.logging.ref.slf4j.ONAPLogConstants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.PropertySource;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
-import com.att.eelf.configuration.Configuration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.slf4j.MDC;
-import org.apache.commons.io.comparator.LastModifiedFileComparator;
-import org.apache.commons.io.filefilter.DirectoryFileFilter;
-import org.apache.commons.io.filefilter.FileFileFilter;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.filefilter.RegexFileFilter;
+import java.io.*;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * DataExportTasks obtains a graph snapshot and invokes DynamicPayloadGenerator
@@ -73,12 +56,9 @@ import org.apache.commons.io.filefilter.RegexFileFilter;
 @PropertySource("file:${server.local.startpath}/etc/appprops/datatoolscrons.properties")
 public class DataExportTasks {
 
-       private AaiScheduledTaskAuditLog auditLog;
-       
        private static final Logger LOGGER;
        private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
-       private static final String GA_MS = "aai-graphadmin";
-       
+
        static {
                System.setProperty("aai.service.name", DataExportTasks.class.getSimpleName());
                Properties props = System.getProperties();
@@ -114,10 +94,9 @@ public class DataExportTasks {
        /**
         * The exportTask method.
         *
-        * @throws AAIException, Exception
         */
-       public void exportTask() throws AAIException, Exception   {
-               auditLog = new AaiScheduledTaskAuditLog();
+       public void exportTask() throws Exception   {
+               AaiScheduledTaskAuditLog auditLog = new AaiScheduledTaskAuditLog();
                auditLog.logBefore("dataExportTask", ONAPComponents.AAI.toString());
                LOGGER.info("Started exportTask: " + dateFormat.format(new Date()));
                if (AAIConfig.get("aai.dataexport.enable").equalsIgnoreCase("false")) {
@@ -166,7 +145,7 @@ public class DataExportTasks {
                        snapshotFilePath = findMultipleSnapshots();
                }
                
-               List<String> paramsList = new ArrayList<String>();
+               List<String> paramsList = new ArrayList<>();
                paramsList.add("-s");
                paramsList.add(enableSchemaValidation);
                paramsList.add("-o");
@@ -229,11 +208,7 @@ public class DataExportTasks {
                        LOGGER.debug("Exception while running the check to see if dataExport is running "+ LogFormatTools.getStackTop(e));
                }
 
-               if(count > 0){
-                   return true;
-               } else {
-                       return false;
-               }
+               return count > 0;
        }
 
        /**
@@ -272,7 +247,7 @@ public class DataExportTasks {
                                AAIConstants.AAI_FILESEP + "dataSnapshots";
                String snapshotName = null;
                File targetDirFile = new File(targetDir);
-               TreeMap<String,List<File>> fileMap = new TreeMap<String,List<File>>(String.CASE_INSENSITIVE_ORDER);
+               TreeMap<String,List<File>> fileMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
                
                /*dataSnapshot.graphSON.201804022009.P0
                dataSnapshot.graphSON.201804022009.P1
@@ -300,7 +275,7 @@ public class DataExportTasks {
                                        String g1 = m.group(1);
                                        LOGGER.debug ("Found group " + g1);
                                        if ( !fileMap.containsKey(g1) ) {
-                                               ArrayList<File> l = new ArrayList<File>();
+                                               ArrayList<File> l = new ArrayList<>();
                                                l.add(f);
                                                fileMap.put(g1, l);
                                        }
@@ -342,9 +317,8 @@ public class DataExportTasks {
        /**
         * The deletePayload method deletes all the payload files that it finds at targetDirectory
         * @param targetDirFile the directory that contains payload files
-        * @throws AAIException
         */
-       private static void deletePayload(File targetDirFile) throws AAIException {
+       private static void deletePayload(File targetDirFile) {
                
                File[] allFilesArr = targetDirFile.listFiles((FileFilter)DirectoryFileFilter.DIRECTORY);
                if ( allFilesArr == null || allFilesArr.length == 0 ) {
index 29a588b..88bfebb 100644 (file)
@@ -88,14 +88,14 @@ public class DataGrooming {
        
        private CommandLineArgs cArgs;
        
-       HashMap<String, Vertex> orphanNodeHash ;
-       HashMap<String, Vertex> missingAaiNtNodeHash ;
-       HashMap<String, Vertex> badUriNodeHash ;
-       HashMap<String, Vertex> badIndexNodeHash ;
-       HashMap<String, Edge> oneArmedEdgeHash ;
-       HashMap<String, Vertex> ghostNodeHash ;
-       ArrayList<String> dupeGroups;
-       Set<String> deleteCandidateList;
+       private Map<String, Vertex> orphanNodeHash ;
+       private Map<String, Vertex> missingAaiNtNodeHash ;
+       private Map<String, Vertex> badUriNodeHash ;
+       private Map<String, Vertex> badIndexNodeHash ;
+       private Map<String, Edge> oneArmedEdgeHash ;
+       private Map<String, Vertex> ghostNodeHash ;
+       private List<String> dupeGroups;
+       private Set<String> deleteCandidateList;
        private int deleteCount = 0;
 
        public DataGrooming(LoaderFactory loaderFactory, SchemaVersions schemaVersions){
@@ -438,14 +438,14 @@ public class DataGrooming {
                        
                        ArrayList<String> errArr = new ArrayList<>();
                        int totalNodeCount = 0;
-                       HashMap<String, String> misMatchedHash = new HashMap<String, String>();
-                       orphanNodeHash = new HashMap<String, Vertex>();
-                       missingAaiNtNodeHash = new HashMap<String, Vertex>();
-                       badUriNodeHash = new HashMap<String, Vertex>();
-                       badIndexNodeHash = new HashMap<String, Vertex>();
-                       oneArmedEdgeHash = new HashMap<String, Edge>();
-                       HashMap<String, String> emptyVertexHash = new HashMap<String, String>();
-                       ghostNodeHash = new HashMap<String, Vertex>();
+                       HashMap<String, String> misMatchedHash = new HashMap<>();
+                       orphanNodeHash = new HashMap<>();
+                       missingAaiNtNodeHash = new HashMap<>();
+                       badUriNodeHash = new HashMap<>();
+                       badIndexNodeHash = new HashMap<>();
+                       oneArmedEdgeHash = new HashMap<>();
+                       HashMap<String, String> emptyVertexHash = new HashMap<>();
+                       ghostNodeHash = new HashMap<>();
                        dupeGroups = new ArrayList<>();
 
                        LOGGER.debug(" Using default schemaVersion = [" + schemaVersions.getDefaultVersion().toString() + "]" );
@@ -494,15 +494,13 @@ public class DataGrooming {
                                        // Determine what the key fields are for this nodeType - use an arrayList so they
                                        // can be gotten out in a consistent order.
                                        Set <String> keyPropsSet = entry.getValue().getKeys();
-                                       ArrayList <String> keyProps = new ArrayList <String> ();
-                                       keyProps.addAll(keyPropsSet);
+                                       ArrayList<String> keyProps = new ArrayList<>(keyPropsSet);
                                        
                                        Set <String> indexedPropsSet = entry.getValue().getIndexedProperties();
-                                       ArrayList <String> indexedProps = new ArrayList <String> ();
-                                       indexedProps.addAll(indexedPropsSet);
+                                       ArrayList<String> indexedProps = new ArrayList<>(indexedPropsSet);
 
                                        Iterator<String> indPropItr = indexedProps.iterator();
-                                       HashMap <String,String> propTypeHash = new HashMap <String, String> ();
+                                       HashMap <String,String> propTypeHash = new HashMap<>();
                                        while( indPropItr.hasNext() ){
                                                String propName = indPropItr.next();
                                                String propType = entry.getValue().getType(propName);
@@ -569,7 +567,7 @@ public class DataGrooming {
                                                        while (keyPropI.hasNext()) {
                                                                String propName = keyPropI.next();
                                                                String propVal = "";
-                                                               Object obj = thisVtx.<Object>property(propName).orElse(null);
+                                                               Object obj = thisVtx.property(propName).orElse(null);
                                                                if (obj != null) {
                                                                        propVal = obj.toString();
                                                                }
@@ -608,7 +606,7 @@ public class DataGrooming {
                                                                                        boolean updateOnlyFlag = false;
                                                                                        try {
                                                                                                processedVertices.add(thisVtx.id().toString());
-                                                                                               Object ob = thisVtx.<Object>property("aai-node-type").orElse(null);
+                                                                                               Object ob = thisVtx.property("aai-node-type").orElse(null);
                                                                                                if( ob == null && !skipIndexUpdateFix ){
                                                                                                        updateIndexedPropsForMissingNT(thisVtx, thisVid, nType, propTypeHash, indexedProps);
                                                                                                        updateOnlyFlag = true;
@@ -640,7 +638,7 @@ public class DataGrooming {
                                                                                        // That is, you could have a node with no edges... which sounds like an orphan, but not all
                                                                                        // nodes require edges.  For example, you could have a newly created "image" node which does not have
                                                                                        // any edges connected to it (using it) yet.
-                                                                                       Object ob = thisVtx.<Object>property("aai-node-type").orElse(null);
+                                                                                       Object ob = thisVtx.property("aai-node-type").orElse(null);
                                                                                        if( ob == null ){
                                                                                                // Group this with missing-node-type guys - which
                                                                                                // we will delete more readily than orphans.
@@ -648,7 +646,7 @@ public class DataGrooming {
                                                                                                missingAaiNtNodeHash.put(thisVid, thisVtx);
                                                                                        }
                                                                                        else {
-                                                                                               Object ob2 = thisVtx.<Object>property("aai-uuid").orElse(null);
+                                                                                               Object ob2 = thisVtx.property("aai-uuid").orElse(null);
                                                                                                String auid = "";
                                                                                                if( ob2 != null ){
                                                                                                        auid = ob2.toString();
@@ -716,7 +714,7 @@ public class DataGrooming {
                                                                                boolean okFlag = true;
                                                                                boolean updateOnlyFlag = false;
                                                                                try {
-                                                                                       Object ob = thisVtx.<Object>property("aai-node-type").orElse(null);
+                                                                                       Object ob = thisVtx.property("aai-node-type").orElse(null);
                                                                                        if( ob == null && !skipIndexUpdateFix ){
                                                                                                updateIndexedPropsForMissingNT(thisVtx, thisVid, nType, propTypeHash, indexedProps);
                                                                                                dummyUpdCount++;
@@ -782,7 +780,7 @@ public class DataGrooming {
                                        if( depNodeTypes.isEmpty() && !dupeCheckOff ){
                                                // For this nodeType, we haven't looked at the possibility of a 
                                                // non-dependent node where two verts have same key info
-                                               ArrayList<ArrayList<Vertex>> nonDependentDupeSets = new ArrayList<ArrayList<Vertex>>();
+                                               ArrayList<ArrayList<Vertex>> nonDependentDupeSets = new ArrayList<>();
                                                        nonDependentDupeSets = getDupeSets4NonDepNodes( 
                                                                                TRANSID, FROMAPPID, g,
                                                                                version, nType, tmpList, 
@@ -927,7 +925,7 @@ public class DataGrooming {
                                                Boolean cantGetUsingVid = false;
                                                if (vIn != null) {
                                                        try {
-                                                               Object ob = vIn.<Object>property("aai-node-type").orElse(null);
+                                                               Object ob = vIn.property("aai-node-type").orElse(null);
                                                                if (ob != null) {
                                                                        vNtI = ob.toString();
                                                                        keysMissing = anyKeyFieldsMissing(vNtI, vIn, loader);
@@ -1033,7 +1031,7 @@ public class DataGrooming {
                                                cantGetUsingVid = false;
                                                if (vOut != null) {
                                                        try {
-                                                               Object ob = vOut.<Object>property("aai-node-type").orElse(null);
+                                                               Object ob = vOut.property("aai-node-type").orElse(null);
                                                                if (ob != null) {
                                                                        vNtO = ob.toString();
                                                                        keysMissing = anyKeyFieldsMissing(vNtO,
@@ -1342,7 +1340,7 @@ public class DataGrooming {
                        int dupeSetCounter = 0;
                        while (dupeIter.hasNext()) {
                                dupeSetCounter++;
-                               String dset = (String) dupeIter.next();
+                               String dset = dupeIter.next();
 
                                bw.write("\n --- Duplicate Group # " + dupeSetCounter
                                                + " Detail -----------\n");
@@ -1426,7 +1424,7 @@ public class DataGrooming {
                        bw.write("\n ------------- Got these errors while processing: \n");
                        Iterator<String> errIter = errArr.iterator();
                        while (errIter.hasNext()) {
-                               String line = (String) errIter.next();
+                               String line = errIter.next();
                                bw.write(line + "\n");
                        }
 
@@ -1540,7 +1538,7 @@ public class DataGrooming {
        }// end of doTheGrooming()
        
        
-       public void tryToReSetIndexedProps(Vertex thisVtx, String thisVidStr, ArrayList <String> indexedProps) {
+       public void tryToReSetIndexedProps(Vertex thisVtx, String thisVidStr, List <String> indexedProps) {
                // Note - This is for when a node looks to be a phantom (ie. an index/pointer problem)
            // We will only deal with properties that are indexed and have a value - and for those,
            // we will re-set them to the same value they already have, so that hopefully if their 
@@ -1551,7 +1549,7 @@ public class DataGrooming {
                LOGGER.debug(" We will try to re-set the indexed properties for this node without changing any property values.  VID = " + thisVidStr );
                // These reserved-prop-names are all indexed for all nodes
                
-               ArrayList <String> propList = new ArrayList <String> ();
+               ArrayList <String> propList = new ArrayList <> ();
                propList.addAll(indexedProps);
                // Add in the global props that we'd also like to reset
                propList.add("aai-node-type");
@@ -1561,7 +1559,7 @@ public class DataGrooming {
                while( propNameItr.hasNext() ){
                        String propName = propNameItr.next();
                        try {
-                               Object valObj = thisVtx.<Object>property(propName).orElse(null);
+                               Object valObj = thisVtx.property(propName).orElse(null);
                                if( valObj != null ){
                                        LOGGER.debug(" We will try resetting prop [" + propName 
                                                        + "], to val = [" + valObj.toString() + "] for VID = " + thisVidStr);
@@ -1577,7 +1575,7 @@ public class DataGrooming {
                  
                  
         public void updateIndexedPropsForMissingNT(Vertex thisVtx, String thisVidStr, String nType,
-                       HashMap <String,String>propTypeHash, ArrayList <String> indexedProps) {
+                       Map <String,String>propTypeHash, List <String> indexedProps) {
                // This is for the very specific "missing-aai-node-type" scenario.
                // That is: a node that does not have the "aai-node-type" property, but still has
                //     an aai-node-type Index pointing to it and is an orphan node.   Nodes like this
@@ -1641,7 +1639,7 @@ public class DataGrooming {
                        if( propValObj != null ){
                                propVal = propValObj.toString();
                        }
-                       Object checkValObj = tmpV.<Object>property(propName).orElse(null);
+                       Object checkValObj = tmpV.property(propName).orElse(null);
                        if( checkValObj == null ) {
                                return false;
                        }
@@ -1682,7 +1680,7 @@ public class DataGrooming {
                        Iterator<String> keyPropI = keyPropNamesColl.iterator();
                        while (keyPropI.hasNext()) {
                                String propName = keyPropI.next();
-                               Object ob = v.<Object>property(propName).orElse(null);
+                               Object ob = v.property(propName).orElse(null);
                                if (ob == null || ob.toString().equals("")) {
                                        // It is missing a key property
                                        String thisVertId = v.id().toString();
@@ -1691,7 +1689,7 @@ public class DataGrooming {
                                        return true;
                                }
                        }
-                       Object ob = v.<Object>property("aai-uri").orElse(null);
+                       Object ob = v.property("aai-uri").orElse(null);
                        if (ob == null || ob.toString().equals("")) {
                                // It is missing a key property
                                String thisVertId = v.id().toString();
@@ -1770,7 +1768,7 @@ public class DataGrooming {
         */
        public Vertex getPreferredDupe(String transId,
                        String fromAppId, GraphTraversalSource g,
-                       ArrayList<Vertex> dupeVertexList, String ver, Loader loader)
+                       List<Vertex> dupeVertexList, String ver, Loader loader)
                        throws AAIException {
 
                // This method assumes that it is being passed a List of 
@@ -1793,14 +1791,14 @@ public class DataGrooming {
                // If they don't all have the same aai-uri, then we will not 
                // choose between them - we'll need someone to manually 
                // check to pick which one makes sense to keep.
-               Object uriOb = dupeVertexList.get(0).<Object>property("aai-uri").orElse(null);
+               Object uriOb = dupeVertexList.get(0).property("aai-uri").orElse(null);
                if( uriOb == null || uriOb.toString().equals("") ){
                        // this is a bad node - hopefully will be picked up by phantom checker
                        return nullVtx;
                }
                String thisUri = uriOb.toString();
                for (int i = 1; i < listSize; i++) {
-                       uriOb = dupeVertexList.get(i).<Object>property("aai-uri").orElse(null);
+                       uriOb = dupeVertexList.get(i).property("aai-uri").orElse(null);
                        if( uriOb == null || uriOb.toString().equals("") ){
                                // this is a bad node - hopefully will be picked up by phantom checker
                                return nullVtx;
@@ -1864,11 +1862,11 @@ public class DataGrooming {
 
                String vtxANodeType = "";
                String vtxBNodeType = "";
-               Object objType = vtxA.<Object>property("aai-node-type").orElse(null);
+               Object objType = vtxA.property("aai-node-type").orElse(null);
                if (objType != null) {
                        vtxANodeType = objType.toString();
                }
-               objType = vtxB.<Object>property("aai-node-type").orElse(null);
+               objType = vtxB.property("aai-node-type").orElse(null);
                if (objType != null) {
                        vtxBNodeType = objType.toString();
                }
@@ -1884,7 +1882,7 @@ public class DataGrooming {
                // (We'll check dep-node later)
                // Determine what the key fields are for this nodeType
                Collection <String> keyProps = new ArrayList <>();
-               HashMap <String,Object> keyPropValsHash = new HashMap <String,Object>();
+               HashMap <String,Object> keyPropValsHash = new HashMap <>();
                try {
                        keyProps = loader.introspectorFromName(vtxANodeType).getKeys();
                } catch (AAIUnknownObjectException e) {
@@ -1896,12 +1894,12 @@ public class DataGrooming {
                while (keyPropI.hasNext()) {
                        String propName = keyPropI.next();
                        String vtxAKeyPropVal = "";
-                       objType = vtxA.<Object>property(propName).orElse(null);
+                       objType = vtxA.property(propName).orElse(null);
                        if (objType != null) {
                                vtxAKeyPropVal = objType.toString();
                        }
                        String vtxBKeyPropVal = "";
-                       objType = vtxB.<Object>property(propName).orElse(null);
+                       objType = vtxB.property(propName).orElse(null);
                        if (objType != null) {
                                vtxBKeyPropVal = objType.toString();
                        }
@@ -1933,7 +1931,7 @@ public class DataGrooming {
                                Vertex tvCon = iter.next();
                                String conVid = tvCon.id().toString();
                                String nt = "";
-                               objType = tvCon.<Object>property("aai-node-type").orElse(null);
+                               objType = tvCon.property("aai-node-type").orElse(null);
                                if (objType != null) {
                                        nt = objType.toString();
                                }
@@ -1949,7 +1947,7 @@ public class DataGrooming {
                                Vertex tvCon = iter.next();
                                String conVid = tvCon.id().toString();
                                String nt = "";
-                               objType = tvCon.<Object>property("aai-node-type").orElse(null);
+                               objType = tvCon.property("aai-node-type").orElse(null);
                                if (objType != null) {
                                        nt = objType.toString();
                                }
@@ -2097,7 +2095,7 @@ public class DataGrooming {
                        String fromAppId, Graph g, GraphTraversalSource source, String version, String nType,
                        List<Vertex> passedVertList, Boolean dupeFixOn,
                        Set<String> deleteCandidateList, 
-                       ArrayList<String> alreadyFoundDupeGroups, Loader loader ) {
+                       List<String> alreadyFoundDupeGroups, Loader loader ) {
                
                ArrayList<String> returnList = new ArrayList<>();
                ArrayList<Vertex> checkVertList = new ArrayList<>();
@@ -2277,7 +2275,7 @@ public class DataGrooming {
                // we're trying to find duplicates - so we
                // allow for the case where more than one is under the same parent node.
 
-               HashMap<String, ArrayList<Vertex>> retHash = new HashMap<String, ArrayList<Vertex>>();
+               HashMap<String, ArrayList<Vertex>> retHash = new HashMap<>();
                if (loader.introspectorFromName(nType).isTopLevel()) {
                        // This method really should not have been called if this is not the
                        // kind of node
@@ -2302,7 +2300,7 @@ public class DataGrooming {
                                Vertex tmpParentVtx = getConnectedParent( g, thisVert );
                                if( tmpParentVtx != null ) {
                                        String parentNt = null;
-                                       Object obj = tmpParentVtx.<Object>property("aai-node-type").orElse(null);
+                                       Object obj = tmpParentVtx.property("aai-node-type").orElse(null);
                                        if (obj != null) {
                                                parentNt = obj.toString();
                                        }
@@ -2427,13 +2425,11 @@ public class DataGrooming {
         * @param graph the graph
         * @param vtx
         * @return true if aai-uri is populated and the aai-uri-index points to this vtx
-        * @throws AAIException the AAI exception
         */
-       public Boolean checkAaiUriOk( GraphTraversalSource graph, Vertex origVtx )
-                       throws AAIException{
+       public Boolean checkAaiUriOk( GraphTraversalSource graph, Vertex origVtx ) {
                String aaiUriStr = "";
                try { 
-                       Object ob = origVtx.<Object>property("aai-uri").orElse(null);
+                       Object ob = origVtx.property("aai-uri").orElse(null);
                        String origVid = origVtx.id().toString();
                        LOGGER.debug("DEBUG --- do checkAaiUriOk() for origVid = " + origVid);
                        if (ob == null || ob.toString().equals("")) {
@@ -2641,7 +2637,7 @@ public class DataGrooming {
                }
                else {
                        String nodeType = "";
-                       Object ob = tVert.<Object>property("aai-node-type").orElse(null);
+                       Object ob = tVert.property("aai-node-type").orElse(null);
                        if( ob == null ){
                                nodeType = "null";
                        }
@@ -2662,8 +2658,7 @@ public class DataGrooming {
        }
 
        
-       private ArrayList <Vertex> getConnectedNodes(GraphTraversalSource g, Vertex startVtx )
-                       throws AAIException {
+       private ArrayList <Vertex> getConnectedNodes(GraphTraversalSource g, Vertex startVtx ) {
        
                ArrayList <Vertex> retArr = new ArrayList <> ();
                if( startVtx == null ){
@@ -2685,7 +2680,7 @@ public class DataGrooming {
        
 
        private ArrayList <Vertex> getConnectedChildrenOfOneType( GraphTraversalSource g,
-                       Vertex startVtx, String childNType ) throws AAIException{
+                       Vertex startVtx, String childNType ) {
                
                ArrayList <Vertex> childList = new ArrayList <> ();
                Iterator <Vertex> vertI =  g.V(startVtx).union(__.outE().has(EdgeProperty.CONTAINS.toString(), AAIDirection.OUT.toString()).inV(), __.inE().has(EdgeProperty.CONTAINS.toString(), AAIDirection.IN.toString()).outV());
@@ -2693,7 +2688,7 @@ public class DataGrooming {
                Vertex tmpVtx = null;
                while( vertI != null && vertI.hasNext() ){
                        tmpVtx = vertI.next();
-                       Object ob = tmpVtx.<Object>property("aai-node-type").orElse(null);
+                       Object ob = tmpVtx.property("aai-node-type").orElse(null);
                        if (ob != null) {
                                String tmpNt = ob.toString();
                                if( tmpNt.equals(childNType)){
@@ -2708,7 +2703,7 @@ public class DataGrooming {
 
 
        private Vertex getConnectedParent( GraphTraversalSource g,
-                       Vertex startVtx ) throws AAIException{
+                       Vertex startVtx ) {
                
                Vertex parentVtx = null;
                Iterator <Vertex> vertI = g.V(startVtx).union(__.inE().has(EdgeProperty.CONTAINS.toString(), AAIDirection.OUT.toString()).outV(), __.outE().has(EdgeProperty.CONTAINS.toString(), AAIDirection.IN.toString()).inV());
@@ -2789,7 +2784,7 @@ public class DataGrooming {
                                }
                                if( keyVals2VidHash.containsKey(hKey) ){
                                        // We've already seen this key 
-                                       ArrayList <String> tmpVL = (ArrayList <String>)keyVals2VidHash.get(hKey);
+                                       ArrayList <String> tmpVL = keyVals2VidHash.get(hKey);
                                        tmpVL.add(thisVid);
                                        keyVals2VidHash.put(hKey, tmpVL);
                                }
@@ -2951,102 +2946,111 @@ class CommandLineArgs {
                
        }
 
-       public HashMap<String, Vertex> getGhostNodeHash() {
-               return ghostNodeHash;
-       }
-
-       public void setGhostNodeHash(HashMap<String, Vertex> ghostNodeHash) {
-               this.ghostNodeHash = ghostNodeHash;
-       }
-       
-       public int getGhostNodeCount(){
-               return getGhostNodeHash().size();
-       }
-       
-       public HashMap<String, Vertex> getOrphanNodeHash() {
+       public Map<String, Vertex> getOrphanNodeHash() {
                return orphanNodeHash;
        }
 
-       public void setOrphanNodeHash(HashMap<String, Vertex> orphanNodeHash) {
+       public DataGrooming setOrphanNodeHash(Map<String, Vertex> orphanNodeHash) {
                this.orphanNodeHash = orphanNodeHash;
+               return this;
        }
-       
+
        public int getOrphanNodeCount(){
                return getOrphanNodeHash().size();
        }
-         
-       public HashMap<String, Vertex> getMissingAaiNtNodeHash() {
+
+       public Map<String, Vertex> getMissingAaiNtNodeHash() {
                return missingAaiNtNodeHash;
        }
 
-       public void setMissingAaiNtNodeHash(HashMap<String, Vertex> missingAaiNtNodeHash) {
+       public DataGrooming setMissingAaiNtNodeHash(Map<String, Vertex> missingAaiNtNodeHash) {
                this.missingAaiNtNodeHash = missingAaiNtNodeHash;
+               return this;
        }
-       
+
        public int getMissingAaiNtNodeCount(){
                return getMissingAaiNtNodeHash().size();
        }
-               
-       public HashMap<String, Vertex> getBadUriNodeHash() {
+
+       public Map<String, Vertex> getBadUriNodeHash() {
                return badUriNodeHash;
        }
 
-       public void setBadUriNodeHash(HashMap<String, Vertex> badUriNodeHash) {
+       public DataGrooming setBadUriNodeHash(Map<String, Vertex> badUriNodeHash) {
                this.badUriNodeHash = badUriNodeHash;
+               return this;
        }
-       
+
        public int getBadUriNodeCount(){
                return getBadUriNodeHash().size();
        }
 
-       public HashMap<String, Vertex> getBadIndexNodeHash() {
+       public Map<String, Vertex> getBadIndexNodeHash() {
                return badIndexNodeHash;
        }
 
-       public void setBadIndexNodeHash(HashMap<String, Vertex> badIndexNodeHash) {
+       public DataGrooming setBadIndexNodeHash(Map<String, Vertex> badIndexNodeHash) {
                this.badIndexNodeHash = badIndexNodeHash;
+               return this;
        }
-       
+
        public int getBadIndexNodeCount(){
                return getBadIndexNodeHash().size();
        }
-       
-       public HashMap<String, Edge> getOneArmedEdgeHash() {
+
+       public Map<String, Edge> getOneArmedEdgeHash() {
                return oneArmedEdgeHash;
        }
 
-       public void setOneArmedEdgeHash(HashMap<String, Edge> oneArmedEdgeHash) {
+       public int getOneArmedEdgeHashCount() {
+               return getOneArmedEdgeHash().size();
+       }
+
+
+
+       public DataGrooming setOneArmedEdgeHash(Map<String, Edge> oneArmedEdgeHash) {
                this.oneArmedEdgeHash = oneArmedEdgeHash;
+               return this;
        }
-       
-       public int getOneArmedEdgeHashCount(){
-               return getOneArmedEdgeHash().size();
+
+       public Map<String, Vertex> getGhostNodeHash() {
+               return ghostNodeHash;
        }
-       
+
+       public DataGrooming setGhostNodeHash(Map<String, Vertex> ghostNodeHash) {
+               this.ghostNodeHash = ghostNodeHash;
+               return this;
+       }
+
+       public int getGhostNodeCount(){
+               return getGhostNodeHash().size();
+       }
+
+       public List<String> getDupeGroups() {
+               return dupeGroups;
+       }
+
+       public DataGrooming setDupeGroups(List<String> dupeGroups) {
+               this.dupeGroups = dupeGroups;
+               return this;
+       }
+
        public Set<String> getDeleteCandidateList() {
                return deleteCandidateList;
        }
 
-       public void setDeleteCandidateList(Set<String> deleteCandidateList) {
+       public DataGrooming setDeleteCandidateList(Set<String> deleteCandidateList) {
                this.deleteCandidateList = deleteCandidateList;
+               return this;
        }
 
        public int getDeleteCount() {
                return deleteCount;
        }
 
-       public void setDeleteCount(int deleteCount) {
+       public DataGrooming setDeleteCount(int deleteCount) {
                this.deleteCount = deleteCount;
+               return this;
        }
-       
-       public ArrayList<String> getDupeGroups() {
-               return dupeGroups;
-       }
-
-       public void setDupeGroups(ArrayList<String> dupeGroups) {
-               this.dupeGroups = dupeGroups;
-       }
-
-       
 
 }
\ No newline at end of file
index 24aac9f..f469ef4 100644 (file)
@@ -22,21 +22,19 @@ package org.onap.aai.db.schema;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.janusgraph.core.JanusGraph;
 import org.janusgraph.core.PropertyKey;
-import org.janusgraph.core.schema.JanusGraphIndex;
 import org.janusgraph.core.schema.JanusGraphManagement;
 import org.janusgraph.core.schema.JanusGraphManagement.IndexBuilder;
-import org.janusgraph.core.schema.SchemaStatus;
 import org.onap.aai.edges.EdgeIngestor;
 import org.onap.aai.setup.SchemaVersions;
-import org.onap.aai.setup.SchemaVersion;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 public class ManageJanusGraphSchema {
 
-       
+       protected Logger logger = LoggerFactory.getLogger(ManageJanusGraphSchema.class.getSimpleName());
+
        private JanusGraphManagement graphMgmt;
        private JanusGraph graph;
        private List<DBProperty> aaiProperties;
@@ -45,6 +43,7 @@ public class ManageJanusGraphSchema {
        private Auditor oxmInfo = null;
        private Auditor graphInfo = null;
 
+
        /**
         * Instantiates a new manage JanusGraph schema.
         *
@@ -70,81 +69,60 @@ public class ManageJanusGraphSchema {
                aaiIndexes.addAll(oxmInfo.getAuditDoc().getIndexes());
                aaiEdgeProperties.addAll(oxmInfo.getAuditDoc().getEdgeLabels());
                try {
-                       createPropertyKeys();
+                       for (DBProperty prop : aaiProperties) {
+                               createProperty(graphMgmt, prop);
+                       }
                        createIndexes();
                        createEdgeLabels();
                } catch (Exception e) {
-                       e.printStackTrace();
+                       logger.info("exception during schema build, executing rollback", e);
                        graphMgmt.rollback();
                }
                graphMgmt.commit();
        }
 
-       /**
-        * Creates the property keys.
-        */
-       private void createPropertyKeys() {
-
-
-               for (DBProperty prop : aaiProperties) {
-
-                       if (graphMgmt.containsPropertyKey(prop.getName())) {
-                               PropertyKey key = graphMgmt.getPropertyKey(prop.getName());
-                               boolean isChanged = false;
-                               if (!prop.getCardinality().equals(key.cardinality())) {
-                                       isChanged = true;
-                               }
-                               if (!prop.getTypeClass().equals(key.dataType())) {
-                                       isChanged = true;
-                               }
-                               if (isChanged) {
-                                       //must modify!
-                                       this.replaceProperty(prop);
-                               }
-                       } else {
-                               //create a new property key
-                               System.out.println("Key: " + prop.getName() + " not found - adding");
-                               graphMgmt.makePropertyKey(prop.getName()).dataType(prop.getTypeClass()).cardinality(prop.getCardinality()).make();
-                       }
-               }
-
-       }
-
        /**
         * Creates the indexes.
         */
        private void createIndexes() {
+               final String IS_NEW = "isNew";
+               final String IS_CHANGED = "isChanged";
 
                for (DBIndex index : aaiIndexes) {
                        Set<DBProperty> props = index.getProperties();
-                       boolean isChanged = false;
-                       boolean isNew = false;
                        List<PropertyKey> keyList = new ArrayList<>();
                        for (DBProperty prop : props) {
                                keyList.add(graphMgmt.getPropertyKey(prop.getName()));
                        }
-                       if (graphMgmt.containsGraphIndex(index.getName())) {
-                               JanusGraphIndex JanusGraphIndex = graphMgmt.getGraphIndex(index.getName());
-                               PropertyKey[] dbKeys = JanusGraphIndex.getFieldKeys();
-                               if (dbKeys.length != keyList.size()) {
-                                       isChanged = true;
-                               } else {
-                                       int i = 0;
-                                       for (PropertyKey key : keyList) {
-                                               if (!dbKeys[i].equals(key)) {
-                                                       isChanged = true;
-                                                       break;
-                                               }
-                                               i++;
+                       Map<String, Boolean> isNewIsChanged = isIndexNewOrChanged(index, keyList, IS_NEW, IS_CHANGED);
+                       if (!keyList.isEmpty()) {
+                               this.createIndex(graphMgmt, index.getName(), keyList, index.isUnique(), isNewIsChanged.get("isNew"), isNewIsChanged.get("isChanged"));
+                       }
+               }
+       }
+
+       private Map<String, Boolean> isIndexNewOrChanged(DBIndex index, List<PropertyKey> keyList, final String IS_NEW, final String IS_CHANGED) {
+               Map<String, Boolean> result = new HashMap<>();
+               result.put(IS_NEW, false);
+               result.put(IS_CHANGED, false);
+               if (graphMgmt.containsGraphIndex(index.getName())) {
+                       PropertyKey[] dbKeys = graphMgmt.getGraphIndex(index.getName()).getFieldKeys();
+                       if (dbKeys.length != keyList.size()) {
+                               result.put(IS_CHANGED, true);
+                       } else {
+                               int i = 0;
+                               for (PropertyKey key : keyList) {
+                                       if (!dbKeys[i].equals(key)) {
+                                               result.put(IS_CHANGED, true);
+                                               break;
                                        }
+                                       i++;
                                }
-                       } else {
-                               isNew = true;
-                       }
-                       if (keyList.size() > 0) {
-                               this.createIndex(graphMgmt, index.getName(), keyList, index.isUnique(), isNew, isChanged);
                        }
+               } else {
+                       result.put(IS_NEW, true);
                }
+               return result;
        }
 
        // Use EdgeRules to make sure edgeLabels are defined in the db.  NOTE: the multiplicty used here is
@@ -188,7 +166,7 @@ public class ManageJanusGraphSchema {
                        }
                        if (isChanged) {
                                //must modify!
-                               this.replaceProperty(prop);
+                               this.replaceProperty();
                        }
                } else {
                        //create a new property key
@@ -197,6 +175,13 @@ public class ManageJanusGraphSchema {
                }
        }
 
+       /**
+        * Replace property.
+        */
+       private void replaceProperty() {
+               //must modify!
+       }
+
        /**
         * Creates the index.
         *
@@ -209,88 +194,27 @@ public class ManageJanusGraphSchema {
         */
        private void createIndex(JanusGraphManagement mgmt, String indexName, List<PropertyKey> keys, boolean isUnique, boolean isNew, boolean isChanged) {
 
-               /*if (isChanged) {
-                       System.out.println("Changing index: " + indexName);
-                       JanusGraphIndex oldIndex = mgmt.getGraphIndex(indexName);
-                       mgmt.updateIndex(oldIndex, SchemaAction.DISABLE_INDEX);
-                       mgmt.commit();
-                       //cannot remove indexes
-                       //graphMgmt.updateIndex(oldIndex, SchemaAction.REMOVE_INDEX);
-               }*/
-               if (isNew || isChanged) {
-
-                       if (isNew) {
-                               IndexBuilder builder = mgmt.buildIndex(indexName,Vertex.class);
-                               for (PropertyKey k : keys) {
-                                       builder.addKey(k);
-                               }
-                               if (isUnique) {
-                                       builder.unique();
-                               }
-                               builder.buildCompositeIndex();
-                               System.out.println("Built index for " + indexName + " with keys: " + keys);
-
-                               //mgmt.commit();
+               if (isNew) {
+                       IndexBuilder builder = mgmt.buildIndex(indexName,Vertex.class);
+                       for (PropertyKey k : keys) {
+                               builder.addKey(k);
                        }
-
-                       //mgmt = graph.asAdmin().getManagementSystem();
-                       //mgmt.updateIndex(mgmt.getGraphIndex(indexName), SchemaAction.REGISTER_INDEX);
-                       //mgmt.commit();
-
-                       try {
-                               //waitForCompletion(indexName);
-                               //JanusGraphIndexRepair.hbaseRepair(AAIConstants.AAI_CONFIG_FILENAME, indexName, "");
-                       } catch (Exception e) {
-                               // TODO Auto-generated catch block
-                               graph.tx().rollback();
-                               graph.close();
-                               e.printStackTrace();
+                       if (isUnique) {
+                               builder.unique();
                        }
-
-                       //mgmt = graph.asAdmin().getManagementSystem();
-                       //mgmt.updateIndex(mgmt.getGraphIndex(indexName), SchemaAction.REINDEX);
-
-                       //mgmt.updateIndex(mgmt.getGraphIndex(indexName), SchemaAction.ENABLE_INDEX);
-
-                       //mgmt.commit();
-
+                       builder.buildCompositeIndex();
+                       System.out.println("Built index for " + indexName + " with keys: " + keys);
                }
-       }
+               if (isChanged) {
+                       //System.out.println("Changing index: " + indexName);
+                       //JanusGraphIndex oldIndex = mgmt.getGraphIndex(indexName);
+                       //mgmt.updateIndex(oldIndex, SchemaAction.DISABLE_INDEX);
+                       //mgmt.commit();
+                       //cannot remove indexes
+                       //graphMgmt.updateIndex(oldIndex, SchemaAction.REMOVE_INDEX);
 
-       /**
-        * Wait for completion.
-        *
-        * @param name the name
-        * @throws InterruptedException the interrupted exception
-        */
-       private void waitForCompletion(String name) throws InterruptedException {
+        }
 
-               boolean registered = false;
-               long before = System.currentTimeMillis();
-               while (!registered) {
-                   Thread.sleep(500L);
-                   JanusGraphManagement mgmt = graph.openManagement();
-                   JanusGraphIndex idx  = mgmt.getGraphIndex(name);
-                   registered = true;
-                   for (PropertyKey k : idx.getFieldKeys()) {
-                       SchemaStatus s = idx.getIndexStatus(k);
-                       registered &= s.equals(SchemaStatus.REGISTERED);
-                   }
-                   mgmt.rollback();
-               }
-               System.out.println("Index REGISTERED in " + (System.currentTimeMillis() - before) + " ms");
-       }
-
-       /**
-        * Replace property.
-        *
-        * @param key the key
-        */
-       private void replaceProperty(DBProperty key) {
-               
-               
-               
-               
        }
 
        /**
@@ -310,11 +234,9 @@ public class ManageJanusGraphSchema {
                }
                if (mgmt.containsGraphIndex(index.getName())) {
                        System.out.println("index already exists");
-                       isNew = false;
                        isChanged = true;
                } else {
                        isNew = true;
-                       isChanged = false;
                }
                this.createIndex(mgmt, index.getName(), keys, index.isUnique(), isNew, isChanged);
 
index 4164ee8..d8d3ce0 100644 (file)
@@ -260,10 +260,10 @@ public class DupeTool {
             logger.debug(msg);
 
             // Determine what the key fields are for this nodeType (and we want them ordered)
-            ArrayList<String> keyPropNamesArr = new ArrayList<String>(obj.getKeys());
+            ArrayList<String> keyPropNamesArr = new ArrayList<>(obj.getKeys());
 
             // Determine what kinds of nodes (if any) this nodeType is dependent on for uniqueness
-            ArrayList<String> depNodeTypeList = new ArrayList<String>();
+            ArrayList<String> depNodeTypeList = new ArrayList<>();
             Collection<String> depNTColl = obj.getDependentOn();
             Iterator<String> ntItr = depNTColl.iterator();
             while (ntItr.hasNext()) {
@@ -274,7 +274,7 @@ public class DupeTool {
             System.out.println("    ---- NOTE --- about to open graph (takes a little while)--------\n");
             graph1 = setupGraph(logger);
             gt1 = getGraphTransaction(graph1, logger);
-            ArrayList<Vertex> verts2Check = new ArrayList<Vertex>();
+            ArrayList<Vertex> verts2Check = new ArrayList<>();
             try {
                 verts2Check = figureOutNodes2Check(TRANSID, FROMAPPID, gt1,
                         nodeTypeVal, windowStartTime, filterParams, logger);
@@ -299,8 +299,8 @@ public class DupeTool {
                 System.out.println(msg);
             }
 
-            ArrayList<String> firstPassDupeSets = new ArrayList<String>();
-            ArrayList<String> secondPassDupeSets = new ArrayList<String>();
+            ArrayList<String> firstPassDupeSets = new ArrayList<>();
+            ArrayList<String> secondPassDupeSets = new ArrayList<>();
             Boolean isDependentOnParent = false;
             if (!obj.getDependentOn().isEmpty()) {
                 isDependentOnParent = true;
@@ -332,7 +332,7 @@ public class DupeTool {
             }
             dupeGroupCount = firstPassDupeSets.size();
             boolean didSomeDeletesFlag = false;
-            ArrayList<String> dupeSetsToFix = new ArrayList<String>();
+            ArrayList<String> dupeSetsToFix = new ArrayList<>();
             if (autoFix && firstPassDupeSets.size() == 0) {
                 msg = "AutoFix option is on, but no dupes were found on the first pass.  Nothing to fix.";
                 logger.debug(msg);
@@ -500,7 +500,8 @@ public class DupeTool {
      * @param version        the version
      * @param nType          the n type
      * @param passedVertList the passed vert list
-     * @param dbMaps         the db maps
+     * @param loader         the loader
+     * @param logger         the logger
      * @return the array list
      */
     private ArrayList<String> getDupeSets4NonDepNodes(String transId,
@@ -509,7 +510,7 @@ public class DupeTool {
                                                              ArrayList<String> keyPropNamesArr,
                                                              Boolean specialTenantRule, Loader loader, Logger logger) {
 
-        ArrayList<String> returnList = new ArrayList<String>();
+        ArrayList<String> returnList = new ArrayList<>();
 
         // We've been passed a set of nodes that we want to check.
         // They are all NON-DEPENDENT nodes meaning that they should be
@@ -525,8 +526,8 @@ public class DupeTool {
         // or, "100017|200027|30037|keepVid=30037" (if there were 3 dupes and we
         // thought the third one was the one that should survive)
 
-        HashMap<String, ArrayList<String>> keyVals2VidHash = new HashMap<String, ArrayList<String>>();
-        HashMap<String, Vertex> vtxHash = new HashMap<String, Vertex>();
+        HashMap<String, ArrayList<String>> keyVals2VidHash = new HashMap<>();
+        HashMap<String, Vertex> vtxHash = new HashMap<>();
         Iterator<Vertex> pItr = passedVertList.iterator();
         while (pItr.hasNext()) {
             try {
@@ -538,12 +539,12 @@ public class DupeTool {
                 String hKey = getNodeKeyValString(tvx, keyPropNamesArr, logger);
                 if (keyVals2VidHash.containsKey(hKey)) {
                     // We've already seen this key
-                    ArrayList<String> tmpVL = (ArrayList<String>) keyVals2VidHash.get(hKey);
+                    ArrayList<String> tmpVL = keyVals2VidHash.get(hKey);
                     tmpVL.add(thisVid);
                     keyVals2VidHash.put(hKey, tmpVL);
                 } else {
                     // First time for this key
-                    ArrayList<String> tmpVL = new ArrayList<String>();
+                    ArrayList<String> tmpVL = new ArrayList<>();
                     tmpVL.add(thisVid);
                     keyVals2VidHash.put(hKey, tmpVL);
                 }
@@ -558,7 +559,7 @@ public class DupeTool {
                 if (!vidList.isEmpty() && vidList.size() > 1) {
                     // There are more than one vertex id's using the same key info
                     String dupesStr = "";
-                    ArrayList<Vertex> vertList = new ArrayList<Vertex>();
+                    ArrayList<Vertex> vertList = new ArrayList<>();
                     for (int i = 0; i < vidList.size(); i++) {
                         String tmpVid = vidList.get(i);
                         dupesStr = dupesStr + tmpVid + "|";
@@ -597,10 +598,9 @@ public class DupeTool {
      * @param version           the version
      * @param nType             the n type
      * @param passedVertList    the passed vert list
-     * @param dbMaps            the db maps
      * @param keyPropNamesArr   Array (ordered) of keyProperty names
      * @param specialTenantRule flag
-     * @param Logger        the logger
+     * @param logger        the logger
      * @return the array list
      */
     private ArrayList<String> getDupeSets4DependentNodes(String transId,
@@ -611,8 +611,8 @@ public class DupeTool {
 
         // This is for nodeTypes that DEPEND ON A PARENT NODE FOR UNIQUNESS
 
-        ArrayList<String> returnList = new ArrayList<String>();
-        ArrayList<String> alreadyFoundDupeVidArr = new ArrayList<String>();
+        ArrayList<String> returnList = new ArrayList<>();
+        ArrayList<String> alreadyFoundDupeVidArr = new ArrayList<>();
 
         // We've been passed a set of nodes that we want to check.  These are
         // all nodes that ARE DEPENDENT on a PARENT Node for uniqueness.
@@ -628,7 +628,7 @@ public class DupeTool {
         // couldn't figure out which one to keep)
         // or, "100017|200027|30037|keepVid=30037" (if there were 3 dupes and we
         // thought the third one was the one that should survive)
-        HashMap<String, Object> checkVertHash = new HashMap<String, Object>();
+        HashMap<String, Object> checkVertHash = new HashMap<>();
         try {
             Iterator<Vertex> pItr = passedVertList.iterator();
             while (pItr.hasNext()) {
@@ -785,7 +785,7 @@ public class DupeTool {
 
 
     public ArrayList<String> collectEdgeInfoForNode(Logger logger, Vertex tVert, boolean displayAllVidsFlag) {
-        ArrayList<String> retArr = new ArrayList<String>();
+        ArrayList<String> retArr = new ArrayList<>();
         Direction dir = Direction.OUT;
         for (int i = 0; i <= 1; i++) {
             if (i == 1) {
@@ -808,7 +808,7 @@ public class DupeTool {
                     vtx = ed.outVertex();
                 }
                 if (vtx == null) {
-                    retArr.add(" >>> COULD NOT FIND VERTEX on the other side of this edge edgeId = " + ed.id() + " <<< ");
+                    retArr.add(String.format(" >>> COULD NOT FIND VERTEX on the other side of this edge edgeId = %s <<< ", ed.id()));
                 } else {
                     String nType = vtx.<String>property("aai-node-type").orElse(null);
                     if (displayAllVidsFlag) {
@@ -858,13 +858,13 @@ public class DupeTool {
     public ArrayList<Vertex> getNodeJustUsingKeyParams(String transId, String fromAppId, Graph graph, String nodeType,
                                                               HashMap<String, Object> keyPropsHash, String apiVersion, Logger logger) throws AAIException {
 
-        ArrayList<Vertex> retVertList = new ArrayList<Vertex>();
+        ArrayList<Vertex> retVertList = new ArrayList<>();
 
         // We assume that all NodeTypes have at least one key-property defined.
         // Note - instead of key-properties (the primary key properties), a user could pass
         //        alternate-key values if they are defined for the nodeType.
-        ArrayList<String> kName = new ArrayList<String>();
-        ArrayList<Object> kVal = new ArrayList<Object>();
+        ArrayList<String> kName = new ArrayList<>();
+        ArrayList<Object> kVal = new ArrayList<>();
         if (keyPropsHash == null || keyPropsHash.isEmpty()) {
             throw new AAIException("AAI_6120", " NO key properties passed for this getNodeJustUsingKeyParams() request.  NodeType = [" + nodeType + "]. ");
         }
@@ -914,8 +914,7 @@ public class DupeTool {
         }
 
         if (retVertList.size() == 0) {
-            logger.debug("DEBUG No node found for nodeType = [" + nodeType +
-                    "], propsAndVal = " + propsAndValuesForMsg);
+            logger.debug(String.format("DEBUG No node found for nodeType = [%s], propsAndVal = %s", nodeType, propsAndValuesForMsg));
         }
 
         return retVertList;
@@ -931,8 +930,8 @@ public class DupeTool {
      * @param graph           the graph
      * @param nodeType        the node type
      * @param windowStartTime the window start time
-     * @param propsHash       the props hash
-     * @param apiVersion      the api version
+     * @param propsString     the props hash
+     * @param logger          the logger
      * @return the nodes
      * @throws AAIException the AAI exception
      */
@@ -940,7 +939,7 @@ public class DupeTool {
                                                          Graph graph, String nodeType, long windowStartTime,
                                                          String propsString, Logger logger) throws AAIException {
 
-        ArrayList<Vertex> retVertList = new ArrayList<Vertex>();
+        ArrayList<Vertex> retVertList = new ArrayList<>();
         String msg = "";
         GraphTraversal<Vertex, Vertex> tgQ = graph.traversal().V().has("aai-node-type", nodeType);
         String qStringForMsg = "graph.traversal().V().has(\"aai-node-type\"," + nodeType + ")";
@@ -1002,7 +1001,7 @@ public class DupeTool {
         }
 
         if (retVertList.size() == 0) {
-            logger.debug("DEBUG No node found for: [" + qStringForMsg + ", with aai-created-ts > " + windowStartTime);
+            logger.debug(String.format("DEBUG No node found for: [%s, with aai-created-ts > %d", qStringForMsg, windowStartTime));
         }
 
         return retVertList;
@@ -1018,7 +1017,8 @@ public class DupeTool {
      * @param g              the g
      * @param dupeVertexList the dupe vertex list
      * @param ver            the ver
-     * @param Logger     the logger
+     * @param loader         the loader
+     * @param logger         the logger
      * @return Vertex
      * @throws AAIException the AAI exception
      */
@@ -1098,14 +1098,15 @@ public class DupeTool {
     /**
      * Pick one of two dupes.
      *
-     * @param transId    the trans id
-     * @param fromAppId  the from app id
-     * @param g          the graphTraversalSource
-     * @param vtxA       the vtx A
-     * @param vtxB       the vtx B
-     * @param ver        the ver
-     * @param boolean    specialTenantRuleFlag flag
-     * @param Logger the logger
+     * @param transId               the trans id
+     * @param fromAppId             the from app id
+     * @param gts                   the graphTraversalSource
+     * @param vtxA                  the vtx A
+     * @param vtxB                  the vtx B
+     * @param ver                   the ver
+     * @param specialTenantRule     specialTenantRuleFlag flag
+     * @param loader                the loader
+     * @param logger                the logger
      * @return Vertex
      * @throws AAIException the AAI exception
      */
@@ -1164,12 +1165,12 @@ public class DupeTool {
 
         // Collect the vid's and aai-node-types of the vertices that each vertex
         // (A and B) is connected to.
-        ArrayList<String> vtxIdsConn2A = new ArrayList<String>();
-        ArrayList<String> vtxIdsConn2B = new ArrayList<String>();
-        HashMap<String, String> nodeTypesConn2A = new HashMap<String, String>();
-        HashMap<String, String> nodeTypesConn2B = new HashMap<String, String>();
+        ArrayList<String> vtxIdsConn2A = new ArrayList<>();
+        ArrayList<String> vtxIdsConn2B = new ArrayList<>();
+        HashMap<String, String> nodeTypesConn2A = new HashMap<>();
+        HashMap<String, String> nodeTypesConn2B = new HashMap<>();
 
-        ArrayList<String> retArr = new ArrayList<String>();
+        ArrayList<String> retArr = new ArrayList<>();
         Iterator<Edge> eAI = vtxA.edges(Direction.BOTH);
         while (eAI.hasNext()) {
             Edge ed = eAI.next();
@@ -1348,7 +1349,7 @@ public class DupeTool {
      * @param version        the version
      * @param nType          the n type
      * @param passedVertList the passed vert list
-     * @param dbMaps         the db maps
+     * @param loader the loader
      * @return the hash map
      * @throws AAIException the AAI exception
      */
@@ -1391,8 +1392,7 @@ public class DupeTool {
     }// end of groupVertsByDepNodes()
 
 
-    private Vertex getConnectedParent(GraphTraversalSource g,
-                                             Vertex startVtx) throws AAIException {
+    private Vertex getConnectedParent(GraphTraversalSource g, Vertex startVtx) {
 
         Vertex parentVtx = null;
         // This traversal does not assume a parent/child edge direction
@@ -1436,9 +1436,9 @@ public class DupeTool {
     /**
      * Delete non keepers if appropriate.
      *
-     * @param g          the g
-     * @param dupeSetStr the dupe string
-     * @param logger     the Logger
+     * @param g                 the g
+     * @param dupeInfoString    the dupe string
+     * @param logger            the Logger
      * @return the boolean
      */
     private Boolean deleteNonKeeperForOneSet(Graph g,
@@ -1451,7 +1451,7 @@ public class DupeTool {
 
 
         String[] dupeArr = dupeInfoString.split("\\|");
-        ArrayList<String> idArr = new ArrayList<String>();
+        ArrayList<String> idArr = new ArrayList<>();
         int lastIndex = dupeArr.length - 1;
         for (int i = 0; i <= lastIndex; i++) {
             if (i < lastIndex) {
@@ -1525,14 +1525,14 @@ public class DupeTool {
      * Get values of the key properties for a node.
      *
      * @param tvx              the vertex to pull the properties from
-     * @param keyPropertyNames ArrayList (ordered) of key prop names
+     * @param keyPropNamesArr  ArrayList (ordered) of key prop names
      * @param logger           the Logger
      * @return a hashMap of the propertyNames/values
      */
     private HashMap<String, Object> getNodeKeyVals(Vertex tvx,
                                                           ArrayList<String> keyPropNamesArr, Logger logger) {
 
-        HashMap<String, Object> retHash = new HashMap<String, Object>();
+        HashMap<String, Object> retHash = new HashMap<>();
         Iterator<String> propItr = keyPropNamesArr.iterator();
         while (propItr.hasNext()) {
             String propName = propItr.next();
@@ -1549,25 +1549,21 @@ public class DupeTool {
        
        /**
         * makes sure aai-uri exists and can be used to get this node back
-        *
-        * @param transId the trans id
-        * @param fromAppId the from app id
+     *
         * @param graph the graph
-        * @param vtx
-        * @param Logger         
+        * @param origVtx
+        * @param eLogger
         * @return true if aai-uri is populated and the aai-uri-index points to this vtx
         * @throws AAIException the AAI exception
         */
-       private Boolean checkAaiUriOk( GraphTraversalSource graph, Vertex origVtx, Logger eLogger )
-                       throws AAIException{
+       private Boolean checkAaiUriOk( GraphTraversalSource graph, Vertex origVtx, Logger eLogger ) {
                String aaiUriStr = "";
                try { 
                        Object ob = origVtx.<Object>property("aai-uri").orElse(null);
                        String origVid = origVtx.id().toString();
                        if (ob == null || ob.toString().equals("")) {
                                // It is missing its aai-uri
-                               eLogger.debug("DEBUG No [aai-uri] property found for vid = [" 
-                                               + origVid + "] " );
+                               eLogger.debug(String.format("DEBUG No [aai-uri] property found for vid = [%s] ", origVid));
                                return false;
                        }
                        else {
@@ -1579,24 +1575,16 @@ public class DupeTool {
                                        Vertex foundV = verts.next();
                                        String foundVid = foundV.id().toString();
                                        if( !origVid.equals(foundVid) ){
-                                               eLogger.debug("DEBUG aai-uri key property ["  
-                                                               + aaiUriStr + "] for vid = [" 
-                                                               + origVid + "] brought back different vertex with vid = [" 
-                                                               + foundVid + "]." );
+                                               eLogger.debug(String.format("DEBUG aai-uri key property [%s] for vid = [%s] brought back different vertex with vid = [%s].", aaiUriStr, origVid, foundVid));
                                                return false;
                                        }
                                }
                                if( count == 0 ){
-                                       eLogger.debug("DEBUG aai-uri key property ["  
-                                                       + aaiUriStr + "] for vid = [" 
-                                                       + origVid + "] could not be used to query for that vertex. ");
+                                       eLogger.debug(String.format("DEBUG aai-uri key property [%s] for vid = [%s] could not be used to query for that vertex. ", aaiUriStr, origVid));
                                        return false;   
                                }
                                else if( count > 1 ){
-                                       eLogger.debug("DEBUG aai-uri key property ["  
-                                                       + aaiUriStr + "] for vid = [" 
-                                                       + origVid + "] brought back multiple (" 
-                                                       + count + ") vertices instead of just one. ");
+                                       eLogger.debug(String.format("DEBUG aai-uri key property [%s] for vid = [%s] brought back multiple (%d) vertices instead of just one. ", aaiUriStr, origVid, count));
                                        return false;   
                                }
                        }
@@ -1613,7 +1601,7 @@ public class DupeTool {
      * Get values of the key properties for a node as a single string
      *
      * @param tvx              the vertex to pull the properties from
-     * @param keyPropertyNames collection of key prop names
+     * @param keyPropNamesArr  collection of key prop names
      * @param logger           the Logger
      * @return a String of concatenated values
      */
@@ -1642,13 +1630,13 @@ public class DupeTool {
      *
      * @param firstPassDupeSets  from the first pass
      * @param secondPassDupeSets from the second pass
-     * @param Logger         logger
+     * @param logger         logger
      * @return commonDupeSets that are common to both passes and have a determined keeper
      */
     private ArrayList<String> figureWhichDupesStillNeedFixing(ArrayList<String> firstPassDupeSets,
                                                                      ArrayList<String> secondPassDupeSets, Logger logger) {
 
-        ArrayList<String> common2BothSet = new ArrayList<String>();
+        ArrayList<String> common2BothSet = new ArrayList<>();
 
         // We just want to look for entries from the first set which have identical (almost)
         //    entries in the secondary set.  I say "almost" because the order of the
@@ -1740,7 +1728,7 @@ public class DupeTool {
     private HashMap<String, ArrayList<String>> makeKeeperHashOfDupeStrings(ArrayList<String> dupeSets,
                                                                                   ArrayList<String> excludeSets, Logger logger) {
 
-        HashMap<String, ArrayList<String>> keeperHash = new HashMap<String, ArrayList<String>>();
+        HashMap<String, ArrayList<String>> keeperHash = new HashMap<>();
 
         for (int x = 0; x < dupeSets.size(); x++) {
             String tmpSetStr = dupeSets.get(x);
@@ -1750,7 +1738,7 @@ public class DupeTool {
             }
 
             String[] dupeArr = tmpSetStr.split("\\|");
-            ArrayList<String> delIdArr = new ArrayList<String>();
+            ArrayList<String> delIdArr = new ArrayList<>();
             int lastIndex = dupeArr.length - 1;
             for (int i = 0; i <= lastIndex; i++) {
                 if (i < lastIndex) {
@@ -1842,7 +1830,7 @@ public class DupeTool {
 
     public JanusGraph setupGraph(Logger logger) {
 
-        JanusGraph JanusGraph = null;
+        JanusGraph janusGraph = null;
 
 
         try (InputStream inputStream = new FileInputStream(AAIConstants.REALTIME_DB_CONFIG);) {
@@ -1851,17 +1839,17 @@ public class DupeTool {
             properties.load(inputStream);
 
             if ("inmemory".equals(properties.get("storage.backend"))) {
-                JanusGraph = AAIGraph.getInstance().getGraph();
+                janusGraph = AAIGraph.getInstance().getGraph();
                 graphType = "inmemory";
             } else {
-                JanusGraph = JanusGraphFactory.open(new AAIGraphConfig.Builder(AAIConstants.REALTIME_DB_CONFIG).forService(DupeTool.class.getSimpleName()).withGraphType("realtime" + graphIndex).buildConfiguration());
+                janusGraph = JanusGraphFactory.open(new AAIGraphConfig.Builder(AAIConstants.REALTIME_DB_CONFIG).forService(DupeTool.class.getSimpleName()).withGraphType("realtime" + graphIndex).buildConfiguration());
                 graphIndex++;
             }
         } catch (Exception e) {
             logger.error("Unable to open the graph", e);
         }
 
-        return JanusGraph;
+        return janusGraph;
     }
 
     public void closeGraph(JanusGraph graph, Logger logger) {
@@ -1879,7 +1867,7 @@ public class DupeTool {
             logger.warn("WARNING from final graph.shutdown()", ex);
         }
     }
-    
+
        public int getDupeGroupCount() {
                return dupeGroupCount;
        }
index 17c5667..e8c9ede 100644 (file)
@@ -22,19 +22,23 @@ package org.onap.aai.util;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.commons.lang3.exception.ExceptionUtils;
-import org.onap.aai.GraphAdminApp;
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.logging.LogFormatTools;
 
 public class ExceptionTranslator {
     private static final Logger LOGGER = LoggerFactory.getLogger(ExceptionTranslator.class);
+
+    private ExceptionTranslator() {
+
+       }
+
     public static AAIException schemaServiceExceptionTranslator(Exception ex) {
-        AAIException aai = null;
+        AAIException aai;
         if ( ExceptionUtils.getRootCause(ex) == null || ExceptionUtils.getRootCause(ex).getMessage() == null ) {
                aai = new  AAIException("AAI_3025","Error parsing exception - Please Investigate" + 
                        LogFormatTools.getStackTop(ex));
         } else {
-               LOGGER.info("Exception is " + ExceptionUtils.getRootCause(ex).getMessage() + "Root cause is"+ ExceptionUtils.getRootCause(ex).toString());
+               LOGGER.info(String.format("Exception is %sRoot cause is%s", ExceptionUtils.getRootCause(ex).getMessage(), ExceptionUtils.getRootCause(ex).toString()));
                if(ExceptionUtils.getRootCause(ex).getMessage().contains("NodeIngestor")){
                    aai = new  AAIException("AAI_3026","Error reading OXM from SchemaService - Investigate");
                }
index 202bc0a..bc2810b 100644 (file)
@@ -26,14 +26,18 @@ import org.slf4j.LoggerFactory;
 
 public class GraphAdminDBUtils {
 
-       private static Logger LOGGER = LoggerFactory.getLogger(GraphAdminDBUtils.class);
+       private static Logger logger = LoggerFactory.getLogger(GraphAdminDBUtils.class);
+
+       private GraphAdminDBUtils() {
+
+       }
 
        public static void logConfigs(org.apache.commons.configuration.Configuration configuration) {
 
                if (configuration != null && configuration.getKeys() != null) {
                        Iterator<String> keys = configuration.getKeys();
                        keys.forEachRemaining(
-                                       key -> LOGGER.info("Key is " + key + "Value is  " + configuration.getProperty(key).toString()));
+                                       key -> logger.info("Key is " + key + "Value is  " + configuration.getProperty(key).toString()));
                }
 
        }
index ee58f55..3506dd9 100644 (file)
@@ -25,7 +25,7 @@ import com.beust.jcommander.ParameterException;
 public class PositiveNumValidator implements IParameterValidator {
 
        @Override
-       public void validate(String name, String value) throws ParameterException {
+       public void validate(String name, String value) {
                int num = Integer.parseInt(value);
 
                if(num < 0) {
index 36d01e1..865dc27 100644 (file)
@@ -51,7 +51,6 @@ public class SendDeleteMigrationNotifications {
 
        private String config;
        private String path;
-       private Set<String> notifyOn;
        long sleepInMilliSecs;
        int numToBatch;
        private String requestId;
@@ -68,7 +67,7 @@ public class SendDeleteMigrationNotifications {
        protected final SchemaVersions schemaVersions;
        protected final SchemaVersion version;
        
-       public SendDeleteMigrationNotifications(LoaderFactory loaderFactory, SchemaVersions schemaVersions, String config, String path, Set<String> notifyOn, int sleepInMilliSecs, int numToBatch, String requestId, EventAction eventAction, String eventSource) {
+       public SendDeleteMigrationNotifications(LoaderFactory loaderFactory, SchemaVersions schemaVersions, String config, String path, int sleepInMilliSecs, int numToBatch, String requestId, EventAction eventAction, String eventSource) {
                System.setProperty("aai.service.name", SendDeleteMigrationNotifications.class.getSimpleName());
                Properties props = System.getProperties();
                props.setProperty(Configuration.PROPERTY_LOGGING_FILE_NAME, "migration-logback.xml");
@@ -78,7 +77,6 @@ public class SendDeleteMigrationNotifications {
 
                this.config = config;
                this.path = path;
-               this.notifyOn = notifyOn;
                this.sleepInMilliSecs = sleepInMilliSecs;
                this.numToBatch = numToBatch;
                this.requestId = requestId;
@@ -90,11 +88,11 @@ public class SendDeleteMigrationNotifications {
                initGraph();
 
                initFields();
-               
+
 
        }
 
-       public void process(String basePath) throws Exception {
+       public void process(String basePath) {
 
                try {
                        Map<Integer, String> deleteDataMap = processFile();
@@ -124,8 +122,7 @@ public class SendDeleteMigrationNotifications {
                        }
                        cleanup();
                } catch (Exception e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
+                       logger.warn("Exception caught during SendDeleteMigrationNotifications.process()", e);
                }
        }
 
index 0fbe520..0bd254f 100644 (file)
@@ -65,7 +65,7 @@ public class SendDeleteMigrationNotificationsMain {
 
                EventAction action = EventAction.valueOf(cArgs.eventAction.toUpperCase());
 
-               SendDeleteMigrationNotifications internal = new SendDeleteMigrationNotifications(loaderFactory, schemaVersions, cArgs.config, cArgs.file, new HashSet<>(cArgs.notifyOn), cArgs.sleepInMilliSecs, cArgs.numToBatch, requestId, action, cArgs.eventSource);
+               SendDeleteMigrationNotifications internal = new SendDeleteMigrationNotifications(loaderFactory, schemaVersions, cArgs.config, cArgs.file, cArgs.sleepInMilliSecs, cArgs.numToBatch, requestId, action, cArgs.eventSource);
 
                try {
                        internal.process(basePath);
index c51de1e..dfe2649 100644 (file)
@@ -54,8 +54,8 @@ public class SendMigrationNotifications {
        private String config;
        private String path;
        private Set<String> notifyOn;
-       long sleepInMilliSecs;
-       int numToBatch;
+       private long sleepInMilliSecs;
+       private int numToBatch;
        private String requestId;
        private EventAction eventAction;
        private String eventSource;
@@ -108,25 +108,22 @@ public class SendMigrationNotifications {
                        vertexes = g.V(entry.getKey()).toList();
                        if (vertexes == null || vertexes.isEmpty()) {
                                logAndPrint("Vertex " + entry.getKey() + " no longer exists." );
-                               continue;
                        } else if (vertexes.size() > 1) {
                                logAndPrint("Vertex " + entry.getKey() + " query returned " + vertexes.size() + " vertexes." );
-                               continue;
                        } else {
                                logger.debug("Processing " + entry.getKey() + "resource-version " + entry.getValue());
                                v = vertexes.get(0);
-                               if (notifyOn.isEmpty() || notifyOn.contains(v.value(AAIProperties.NODE_TYPE).toString())) {
-                                       if (entry.getValue().equals(v.value(AAIProperties.RESOURCE_VERSION).toString())) {
-                                               Introspector introspector = serializer.getLatestVersionView(v);
-                                               uri = this.serializer.getURIForVertex(v, false);
-                                               this.notificationHelper.addEvent(v, introspector, eventAction, uri, basePath);
-                                               count++;
-                                               if (count >= this.numToBatch) {
-                                                       trigger();
-                                                       logger.debug("Triggered " + entry.getKey());
-                                                       count = 0;
-                                                       Thread.sleep(this.sleepInMilliSecs);
-                                               }
+                               if ((notifyOn.isEmpty() || notifyOn.contains(v.value(AAIProperties.NODE_TYPE).toString()))
+                                               && entry.getValue().equals(v.value(AAIProperties.RESOURCE_VERSION).toString())) {
+                                       Introspector introspector = serializer.getLatestVersionView(v);
+                                       uri = this.serializer.getURIForVertex(v, false);
+                                       this.notificationHelper.addEvent(v, introspector, eventAction, uri, basePath);
+                                       count++;
+                                       if (count >= this.numToBatch) {
+                                               trigger();
+                                               logger.debug("Triggered " + entry.getKey());
+                                               count = 0;
+                                               Thread.sleep(this.sleepInMilliSecs);
                                        }
                                }
                        }
index 2db3dd5..8ef5139 100644 (file)
@@ -62,13 +62,11 @@ public class UniquePropertyCheck {
                Logger logger = LoggerFactory.getLogger(UniquePropertyCheck.class);
                MDC.put("logFilenameAppender", UniquePropertyCheck.class.getSimpleName());
                AaiScheduledTaskAuditLog auditLog = new AaiScheduledTaskAuditLog();
-               auditLog.logBefore("UniquePropertyCheck", ONAPComponents.AAI.toString());
+               auditLog.logBefore(COMPONENT, ONAPComponents.AAI.toString());
 
                if( args == null || args.length != 1 ){
                                String msg = "usage:  UniquePropertyCheck propertyName \n";
                                System.out.println(msg);
-                               //LoggingContext.statusCode(StatusCode.ERROR);
-                       //LoggingContext.responseCode(LoggingContext.BUSINESS_PROCESS_ERROR);
                                logAndPrint(logger, msg );
                                System.exit(1);
                }
@@ -81,31 +79,23 @@ public class UniquePropertyCheck {
                JanusGraph tGraph = JanusGraphFactory.open(new AAIGraphConfig.Builder(AAIConstants.REALTIME_DB_CONFIG).forService(UniquePropertyCheck.class.getSimpleName()).withGraphType("realtime").buildConfiguration());
                
                if( tGraph == null ) {
-                       //LoggingContext.statusCode(StatusCode.ERROR);
-                       //LoggingContext.responseCode(LoggingContext.AVAILABILITY_TIMEOUT_ERROR);
                        logAndPrint(logger, " Error:  Could not get JanusGraph ");
                        System.exit(1);
                }
                
                graph = tGraph.newTransaction();
                if( graph == null ){
-                       //LoggingContext.statusCode(StatusCode.ERROR);
-                       //LoggingContext.responseCode(LoggingContext.AVAILABILITY_TIMEOUT_ERROR);
                        logAndPrint(logger, "could not get graph object in UniquePropertyCheck() \n");
                        System.exit(0);
                }
        }
            catch (AAIException e1) {
                        String msg =  "Threw Exception: [" + e1.toString() + "]";
-                       //LoggingContext.statusCode(StatusCode.ERROR);
-                       //LoggingContext.responseCode(LoggingContext.UNKNOWN_ERROR);
                        logAndPrint(logger, msg);
                        System.exit(0);
         }
         catch (Exception e2) {
                        String msg =  "Threw Exception: [" + e2.toString() + "]";
-                       //LoggingContext.statusCode(StatusCode.ERROR);
-                       //LoggingContext.responseCode(LoggingContext.UNKNOWN_ERROR);
                        logAndPrint(logger, msg);
                        System.exit(0);
         }
@@ -135,8 +125,8 @@ public class UniquePropertyCheck {
                //   tool looks across all nodeTypes that the property is found in.
                Boolean foundDupesFlag = false;
                
-               HashMap <String,String> valuesAndVidHash = new HashMap <String, String> ();
-               HashMap <String,String> dupeHash = new HashMap <String, String> ();
+               HashMap <String,String> valuesAndVidHash = new HashMap <> ();
+               HashMap <String,String> dupeHash = new HashMap <> ();
        
                int propCount = 0;
                int dupeCount = 0;
@@ -177,7 +167,7 @@ public class UniquePropertyCheck {
                        while( dupeItr.hasNext() ){
                                foundDupesFlag = true;
                                Map.Entry pair = (Map.Entry) dupeItr.next();
-                               String dupeValue = pair.getKey().toString();;
+                               String dupeValue = pair.getKey().toString();
                                                        String vidsStr = pair.getValue().toString();
                                String[] vidArr = vidsStr.split("\\|");
                                logAndPrint(logger, "\n\n -------------- Found " + vidArr.length 
@@ -193,8 +183,6 @@ public class UniquePropertyCheck {
                }
        }
        catch( Exception e2 ){
-               //LoggingContext.statusCode(StatusCode.ERROR);
-                       //LoggingContext.responseCode(LoggingContext.DATA_ERROR);
                        logAndPrint(logger, "Threw Exception: [" + e2.toString() + "]");
        } 
        
index cba202a..add77ff 100644 (file)
@@ -22,39 +22,23 @@ package org.onap.aai.db.schema;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.MockitoAnnotations;
 import org.onap.aai.AAISetup;
-import org.onap.aai.introspection.Loader;
-import org.onap.aai.introspection.LoaderFactory;
-import org.onap.aai.introspection.ModelType;
-import org.onap.aai.setup.SchemaVersion;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
-import static org.mockito.AdditionalMatchers.not;
 
 public class AuditOXMTest extends AAISetup {
 
-    private AuditOXM auditOXM;
-
     @Before
     public void setUp() {
     }
 
     @After
-    public void tearDown() throws Exception {
+    public void tearDown() {
     }
 
     @Test
     public void getAllIntrospectors() {
-        auditOXM = new AuditOXM(loaderFactory, schemaVersions.getDefaultVersion(), edgeIngestor);
+        AuditOXM auditOXM = new AuditOXM(loaderFactory, schemaVersions.getDefaultVersion(), edgeIngestor);
         assertTrue(auditOXM.getAllIntrospectors().size() > 0);
     }
-
-    @Test
-    public void setEdgeIngestor() {
-    }
 }
\ No newline at end of file
index 5df4a75..f89f87d 100644 (file)
@@ -22,7 +22,6 @@ package org.onap.aai.util;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.janusgraph.core.JanusGraph;
-import org.janusgraph.core.JanusGraphFactory;
 import org.janusgraph.core.JanusGraphTransaction;
 import org.junit.*;
 import org.junit.runners.MethodSorters;
@@ -31,14 +30,12 @@ import org.onap.aai.AAISetup;
 import org.onap.aai.db.props.AAIProperties;
 import org.onap.aai.dbmap.AAIGraph;
 import org.onap.aai.exceptions.AAIException;
-import org.onap.aai.introspection.Introspector;
 import org.onap.aai.migration.EventAction;
 
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.nio.file.StandardOpenOption;
-import java.util.*;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import static org.junit.Assert.assertEquals;
@@ -133,7 +130,7 @@ public class SendDeleteMigrationNotificationsTest extends AAISetup {
        @Test
        public void processEverything() throws Exception {
                SendDeleteMigrationNotifications s  = spy(new SendDeleteMigrationNotifications(
-                               loaderFactory, schemaVersions, REALTIME_CONFIG, FILE, Collections.EMPTY_SET, 0, 0, "test", EventAction.DELETE, "DMAAP-LOAD"));
+                               loaderFactory, schemaVersions, REALTIME_CONFIG, FILE, 0, 0, "test", EventAction.DELETE, "DMAAP-LOAD"));
                doNothing().when(s).trigger();
                doNothing().when(s).cleanup();
                s.process("/aai/");
@@ -144,7 +141,7 @@ public class SendDeleteMigrationNotificationsTest extends AAISetup {
        @Test
        public void processEverythingBatched2() throws Exception {
                SendDeleteMigrationNotifications s  = spy(new SendDeleteMigrationNotifications(
-                               loaderFactory, schemaVersions, REALTIME_CONFIG, FILE, Collections.EMPTY_SET, 0, 2, "test", EventAction.DELETE, "DMAAP-LOAD"));
+                               loaderFactory, schemaVersions, REALTIME_CONFIG, FILE, 0, 2, "test", EventAction.DELETE, "DMAAP-LOAD"));
                doNothing().when(s).trigger();
                doNothing().when(s).cleanup();
                s.process("/aai/");
@@ -155,7 +152,7 @@ public class SendDeleteMigrationNotificationsTest extends AAISetup {
        @Test
        public void processEverythingBatched3() throws Exception {
                SendDeleteMigrationNotifications s  = spy(new SendDeleteMigrationNotifications(
-                               loaderFactory, schemaVersions,  REALTIME_CONFIG, FILE, Collections.EMPTY_SET, 0, 3, "test", EventAction.DELETE, "DMAAP-LOAD"));
+                               loaderFactory, schemaVersions,  REALTIME_CONFIG, FILE, 0, 3, "test", EventAction.DELETE, "DMAAP-LOAD"));
                doNothing().when(s).trigger();
                doNothing().when(s).cleanup();
                s.process("/aai/");