diff options
-rw-r--r-- | aai-core/src/main/java/org/onap/aai/db/schema/ManageJanusGraphSchema.java | 79 | ||||
-rw-r--r-- | aai-core/src/main/java/org/onap/aai/dbgen/DataGrooming.java | 212 |
2 files changed, 119 insertions, 172 deletions
diff --git a/aai-core/src/main/java/org/onap/aai/db/schema/ManageJanusGraphSchema.java b/aai-core/src/main/java/org/onap/aai/db/schema/ManageJanusGraphSchema.java index bf2d4107..c4061b3f 100644 --- a/aai-core/src/main/java/org/onap/aai/db/schema/ManageJanusGraphSchema.java +++ b/aai-core/src/main/java/org/onap/aai/db/schema/ManageJanusGraphSchema.java @@ -46,7 +46,7 @@ public class ManageJanusGraphSchema { private List<EdgeProperty> aaiEdgeProperties; private Auditor oxmInfo = null; private Auditor graphInfo = null; - + /** * Instantiates a new manage JanusGraph schema. * @@ -86,28 +86,9 @@ public class ManageJanusGraphSchema { * 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(); - } + this.createProperty(graphMgmt, prop); } } @@ -126,8 +107,8 @@ public class ManageJanusGraphSchema { keyList.add(graphMgmt.getPropertyKey(prop.getName())); } if (graphMgmt.containsGraphIndex(index.getName())) { - JanusGraphIndex JanusGraphIndex = graphMgmt.getGraphIndex(index.getName()); - PropertyKey[] dbKeys = JanusGraphIndex.getFieldKeys(); + JanusGraphIndex janusGraphIndex = graphMgmt.getGraphIndex(index.getName()); + PropertyKey[] dbKeys = janusGraphIndex.getFieldKeys(); if (dbKeys.length != keyList.size()) { isChanged = true; } else { @@ -143,7 +124,7 @@ public class ManageJanusGraphSchema { } else { isNew = true; } - if (keyList.size() > 0) { + if (!keyList.isEmpty()) { this.createIndex(graphMgmt, index.getName(), keyList, index.isUnique(), isNew, isChanged); } } @@ -194,7 +175,7 @@ public class ManageJanusGraphSchema { } } else { //create a new property key - System.out.println("Key: " + prop.getName() + " not found - adding"); + logger.info("Key: " + prop.getName() + " not found - adding"); mgmt.makePropertyKey(prop.getName()).dataType(prop.getTypeClass()).cardinality(prop.getCardinality()).make(); } } @@ -210,15 +191,7 @@ public class ManageJanusGraphSchema { * @param isChanged the is changed */ 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) { @@ -230,31 +203,8 @@ public class ManageJanusGraphSchema { builder.unique(); } builder.buildCompositeIndex(); - System.out.println("Built index for " + indexName + " with keys: " + keys); - - //mgmt.commit(); - } - - //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) { - graph.tx().rollback(); - graph.close(); - logger.error(e.getMessage(),e); + logger.info("Built index for " + indexName + " with keys: " + keys); } - - //mgmt = graph.asAdmin().getManagementSystem(); - //mgmt.updateIndex(mgmt.getGraphIndex(indexName), SchemaAction.REINDEX); - - //mgmt.updateIndex(mgmt.getGraphIndex(indexName), SchemaAction.ENABLE_INDEX); - - //mgmt.commit(); - } } @@ -279,19 +229,16 @@ public class ManageJanusGraphSchema { } mgmt.rollback(); } - System.out.println("Index REGISTERED in " + (System.currentTimeMillis() - before) + " ms"); + logger.info("Index REGISTERED in " + (System.currentTimeMillis() - before) + " ms"); } - + /** * Replace property. * * @param key the key */ private void replaceProperty(DBProperty key) { - - - - + } /** @@ -310,7 +257,7 @@ public class ManageJanusGraphSchema { keys.add(mgmt.getPropertyKey(prop.getName())); } if (mgmt.containsGraphIndex(index.getName())) { - System.out.println("index already exists"); + logger.info("index already exists"); isNew = false; isChanged = true; } else { diff --git a/aai-core/src/main/java/org/onap/aai/dbgen/DataGrooming.java b/aai-core/src/main/java/org/onap/aai/dbgen/DataGrooming.java index 61ef8544..d46aa7ae 100644 --- a/aai-core/src/main/java/org/onap/aai/dbgen/DataGrooming.java +++ b/aai-core/src/main/java/org/onap/aai/dbgen/DataGrooming.java @@ -26,6 +26,7 @@ import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; @@ -72,6 +73,7 @@ import org.janusgraph.core.JanusGraph; public class DataGrooming { + public static final String AAI_EXCEPTION_NUMBER = "AAI_6101"; private static EELFLogger logger; private static final String FROMAPPID = "AAI-DB"; private static final String TRANSID = UUID.randomUUID().toString(); @@ -143,101 +145,67 @@ public class DataGrooming { if (args.length > 0) { // They passed some arguments in that will affect processing - for (int i = 0; i < args.length; i++) { - String thisArg = args[i]; - if ("-edgesOnly".equals(thisArg)) { - edgesOnlyFlag = true; - } else if (thisArg.equals("-autoFix")) { - doAutoFix = true; - } else if ("-skipHostCheck".equals(thisArg)) { - skipHostCheck = true; - } else if ("-dontFixOrphans".equals(thisArg)) { - dontFixOrphansFlag = true; - } else if ("-singleCommits".equals(thisArg)) { - singleCommits = true; - } else if ("-dupeCheckOff".equals(thisArg)) { - dupeCheckOff = true; - } else if ("-dupeFixOn".equals(thisArg)) { - dupeFixOn = true; - } else if ("-ghost2CheckOff".equals(thisArg)) { - ghost2CheckOff = true; - } else if ("-neverUseCache".equals(thisArg)) { - neverUseCache = true; - } else if ("-ghost2FixOn".equals(thisArg)) { - ghost2FixOn = true; - } else if ("-skipEdgeChecks".equals(thisArg)) { - skipEdgeCheckFlag = true; - } else if ("-maxFix".equals(thisArg)) { - i++; - if (i >= args.length) { - LoggingContext.statusCode(StatusCode.ERROR); - LoggingContext.responseCode(LoggingContext.BUSINESS_PROCESS_ERROR); - logger.error(" No value passed with -maxFix option. "); - AAISystemExitUtil.systemExitCloseAAIGraph(0); - } - String nextArg = args[i]; - try { - maxRecordsToFix = Integer.parseInt(nextArg); - } catch (Exception e) { - LoggingContext.statusCode(StatusCode.ERROR); - LoggingContext.responseCode(LoggingContext.BUSINESS_PROCESS_ERROR); - logger.error("Bad value passed with -maxFix option: [" - + nextArg + "]"); - AAISystemExitUtil.systemExitCloseAAIGraph(0); - } - } else if (thisArg.equals("-sleepMinutes")) { - i++; - if (i >= args.length) { - LoggingContext.statusCode(StatusCode.ERROR); - LoggingContext.responseCode(LoggingContext.BUSINESS_PROCESS_ERROR); - logger.error("No value passed with -sleepMinutes option."); - AAISystemExitUtil.systemExitCloseAAIGraph(0); - } - String nextArg = args[i]; - try { - sleepMinutes = Integer.parseInt(nextArg); - } catch (Exception e) { - LoggingContext.statusCode(StatusCode.ERROR); - LoggingContext.responseCode(LoggingContext.BUSINESS_PROCESS_ERROR); - logger.error("Bad value passed with -sleepMinutes option: [" - + nextArg + "]"); - AAISystemExitUtil.systemExitCloseAAIGraph(0); - } - } else if ("-timeWindowMinutes".equals(thisArg)) { - i++; - if (i >= args.length) { - LoggingContext.statusCode(StatusCode.ERROR); - LoggingContext.responseCode(LoggingContext.BUSINESS_PROCESS_ERROR); - logger.error("No value passed with -timeWindowMinutes option."); - AAISystemExitUtil.systemExitCloseAAIGraph(0); - } - String nextArg = args[i]; - try { - timeWindowMinutes = Integer.parseInt(nextArg); - } catch (Exception e) { - LoggingContext.statusCode(StatusCode.ERROR); - LoggingContext.responseCode(LoggingContext.BUSINESS_PROCESS_ERROR); - logger.error("Bad value passed with -timeWindowMinutes option: [" - + nextArg + "]"); - AAISystemExitUtil.systemExitCloseAAIGraph(0); - } - - } else if ("-f".equals(thisArg)) { - i++; - if (i >= args.length) { - LoggingContext.statusCode(StatusCode.ERROR); - LoggingContext.responseCode(LoggingContext.BUSINESS_PROCESS_ERROR); - logger.error(" No value passed with -f option. "); - AAISystemExitUtil.systemExitCloseAAIGraph(0); - } - prevFileName = args[i]; - } else { - LoggingContext.statusCode(StatusCode.ERROR); - LoggingContext.responseCode(LoggingContext.BUSINESS_PROCESS_ERROR); - logger.error(" Unrecognized argument passed to DataGrooming: [" - + thisArg + "]. "); - logger.error(" Valid values are: -f -autoFix -maxFix -edgesOnly -skipEdgeChecks -dupeFixOn -donFixOrphans -timeWindowMinutes -sleepMinutes -neverUseCache"); - AAISystemExitUtil.systemExitCloseAAIGraph(0); + + List<String> arguments = Arrays.asList(args); + Iterator<String> argsIterator = arguments.iterator(); + while (argsIterator.hasNext()){ + String argument = argsIterator.next(); + String nextArg; + switch(argument){ + case "-edgesOnly": + edgesOnlyFlag = true; + break; + case "-autoFix": + doAutoFix = true; + break; + case "-skipHostCheck": + skipHostCheck = true; + break; + case "-dontFixOrphans": + dontFixOrphansFlag = true; + break; + case "-singleCommits": + singleCommits = true; + break; + case "-dupeCheckOff": + dupeCheckOff = true; + break; + case "-dupeFixOn": + dupeFixOn = true; + break; + case "-ghost2CheckOff": + ghost2CheckOff = true; + break; + case "-neverUseCache": + neverUseCache = true; + break; + case "-ghost2FixOn": + ghost2FixOn = true; + break; + case "-skipEdgeChecks": + skipEdgeCheckFlag = true; + break; + case "-maxFix": + handleNoPassedArgument(argsIterator, argument); + nextArg = argsIterator.next(); + maxRecordsToFix = handleNumericArgument(maxRecordsToFix, nextArg, argument); + break; + case "-sleepMinutes": + handleNoPassedArgument(argsIterator, argument); + nextArg = argsIterator.next(); + sleepMinutes = handleNumericArgument(sleepMinutes, nextArg, argument); + break; + case "-timeWindowMinutes": + handleNoPassedArgument(argsIterator, argument); + nextArg = argsIterator.next(); + timeWindowMinutes = handleNumericArgument(timeWindowMinutes, nextArg, argument); + break; + case "-f": + handleNoPassedArgument(argsIterator, argument); + prevFileName = argsIterator.next(); + break; + default: + handleUnrecognizedArguments(argument); } } } @@ -349,6 +317,38 @@ public class DataGrooming { }// End of main() + private static void handleUnrecognizedArguments(String argument) { + LoggingContext.statusCode(StatusCode.ERROR); + LoggingContext.responseCode(LoggingContext.BUSINESS_PROCESS_ERROR); + logger.error(" Unrecognized argument passed to DataGrooming: [" + + argument + "]. "); + logger.error( + " Valid values are: -f -autoFix -maxFix -edgesOnly -skipEdgeChecks -dupeFixOn -donFixOrphans -timeWindowMinutes -sleepMinutes -neverUseCache"); + AAISystemExitUtil.systemExitCloseAAIGraph(0); + } + + private static int handleNumericArgument(int numericArgumentValue, String nextArg, String argument) { + try { + numericArgumentValue = Integer.parseInt(nextArg); + } catch (Exception e) { + LoggingContext.statusCode(StatusCode.ERROR); + LoggingContext.responseCode(LoggingContext.BUSINESS_PROCESS_ERROR); + logger.error("Bad value passed with" + argument + "option: [" + + nextArg + "]"); + AAISystemExitUtil.systemExitCloseAAIGraph(0); + } + return numericArgumentValue; + } + + private static void handleNoPassedArgument(Iterator argsIterator, String argument) { + if (!argsIterator.hasNext()) { + LoggingContext.statusCode(StatusCode.ERROR); + LoggingContext.responseCode(LoggingContext.BUSINESS_PROCESS_ERROR); + logger.error("No value passed with" + argument + "option."); + AAISystemExitUtil.systemExitCloseAAIGraph(0); + } + } + /** * Do the grooming. * @@ -449,7 +449,7 @@ public class DataGrooming { } if (graph == null) { String emsg = "null graph object in DataGrooming\n"; - throw new AAIException("AAI_6101", emsg); + throw new AAIException(AAI_EXCEPTION_NUMBER, emsg); } logger.debug(" Got the graph object. "); @@ -457,18 +457,18 @@ public class DataGrooming { g = graph.newTransaction(); if (g == null) { String emsg = "null graphTransaction object in DataGrooming\n"; - throw new AAIException("AAI_6101", emsg); + throw new AAIException(AAI_EXCEPTION_NUMBER, emsg); } GraphTraversalSource source1 = g.traversal(); ArrayList<String> errArr = new ArrayList<>(); int totalNodeCount = 0; - HashMap<String, String> misMatchedHash = new HashMap<String, String>(); - HashMap<String, Vertex> orphanNodeHash = new HashMap<String, Vertex>(); - HashMap<String, Vertex> missingDepNodeHash = new HashMap<String, Vertex>(); - HashMap<String, Edge> oneArmedEdgeHash = new HashMap<String, Edge>(); - HashMap<String, String> emptyVertexHash = new HashMap<String, String>(); - HashMap<String, Vertex> ghostNodeHash = new HashMap<String, Vertex>(); + HashMap<String, String> misMatchedHash = new HashMap<>(); + HashMap<String, Vertex> orphanNodeHash = new HashMap<>(); + HashMap<String, Vertex> missingDepNodeHash = new HashMap<>(); + HashMap<String, Edge> oneArmedEdgeHash = new HashMap<>(); + HashMap<String, String> emptyVertexHash = new HashMap<>(); + HashMap<String, Vertex> ghostNodeHash = new HashMap<>(); ArrayList<String> dupeGroups = new ArrayList<>(); Loader loader = LoaderFactory.createLoaderForVersion(ModelType.MOXY, AAIProperties.LATEST); @@ -494,7 +494,7 @@ 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> (); + ArrayList <String> keyProps = new ArrayList<>(); keyProps.addAll(keyPropsSet); // Get the types of nodes that this nodetype depends on for uniqueness (if any) @@ -772,14 +772,14 @@ public class DataGrooming { graph2 = JanusGraphFactory.open(new AAIGraphConfig.Builder(AAIConstants.REALTIME_DB_CONFIG).forService(DataGrooming.class.getSimpleName()).withGraphType("realtime2").buildConfiguration()); if (graph2 == null) { String emsg = "null graph2 object in DataGrooming\n"; - throw new AAIException("AAI_6101", emsg); + throw new AAIException(AAI_EXCEPTION_NUMBER, emsg); } else { logger.debug("Got the graph2 object... \n"); } g2 = graph2.newTransaction(); if (g2 == null) { String emsg = "null graphTransaction2 object in DataGrooming\n"; - throw new AAIException("AAI_6101", emsg); + throw new AAIException(AAI_EXCEPTION_NUMBER, emsg); } ArrayList<Vertex> vertList = new ArrayList<>(); |