opends/src/messages/messages/tools.properties
@@ -2189,3 +2189,13 @@ SEVERE_ERR_TASKINFO_TASK_NOT_CANCELABLE_TASK_1477=Error: task %s is not in a \ cancelable state NOTICE_BACKUPDB_CANCELLED_1478=The backup process was cancelled INFO_INSTALLDS_DESCRIPTION_REJECTED_FILE_1479=Write rejected entries to the \ specified file MILD_ERR_INSTALLDS_CANNOT_WRITE_REJECTED_1480=Cannot write to rejected entries \ file %s. Verify that you have enough write rights on the file INFO_INSTALLDS_PROMPT_REJECTED_FILE_1481=Write rejected entries to file: INFO_INSTALLDS_DESCRIPTION_SKIPPED_FILE_1482=Write skipped entries to the \ specified file MILD_ERR_INSTALLDS_CANNOT_WRITE_SKIPPED_1483=Cannot write to skipped entries \ file %s. Verify that you have enough write rights on the file INFO_INSTALLDS_PROMPT_SKIPPED_FILE_1484=Write skipped entries to file: opends/src/quicksetup/org/opends/quicksetup/UserData.java
@@ -103,8 +103,8 @@ LinkedList<String> baseDn = new LinkedList<String>(); baseDn.add("dc=example,dc=com"); NewSuffixOptions defaultNewSuffixOptions = new NewSuffixOptions( NewSuffixOptions.Type.CREATE_BASE_ENTRY, baseDn); NewSuffixOptions defaultNewSuffixOptions = NewSuffixOptions.createBaseEntry( baseDn); setNewSuffixOptions(defaultNewSuffixOptions); // See what we can propose as port opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
@@ -1135,6 +1135,18 @@ argList.add(ldifPath); } argList.add("-F"); String rejectedFile = getUserData().getNewSuffixOptions().getRejectedFile(); if (rejectedFile != null) { argList.add("-R"); argList.add(rejectedFile); } String skippedFile = getUserData().getNewSuffixOptions().getSkippedFile(); if (skippedFile != null) { argList.add("--skipFile"); argList.add(skippedFile); } final String[] args = new String[argList.size()]; argList.toArray(args); @@ -3423,7 +3435,8 @@ LinkedList<String> ldifPaths = new LinkedList<String>(); ldifPaths.add(ldifPath); dataOptions = new NewSuffixOptions(type, baseDns, ldifPaths); dataOptions = NewSuffixOptions.createImportFromLDIF(baseDns, ldifPaths, null, null); qs.displayFieldInvalid(FieldName.LDIF_PATH, false); } break; @@ -3467,8 +3480,8 @@ // No validation errors LinkedList<String> baseDns = new LinkedList<String>(); baseDns.add(baseDn); dataOptions = new NewSuffixOptions(type, baseDns, new Integer(nEntries)); dataOptions = NewSuffixOptions.createAutomaticallyGenerated(baseDns, Integer.parseInt(nEntries)); } break; @@ -3479,7 +3492,14 @@ { LinkedList<String> baseDns = new LinkedList<String>(); baseDns.add(baseDn); dataOptions = new NewSuffixOptions(type, baseDns); if (type == NewSuffixOptions.Type.CREATE_BASE_ENTRY) { dataOptions = NewSuffixOptions.createBaseEntry(baseDns); } else { dataOptions = NewSuffixOptions.createEmpty(baseDns); } } } opends/src/quicksetup/org/opends/quicksetup/installer/NewSuffixOptions.java
@@ -46,10 +46,6 @@ public enum Type { /** * Do nothing. */ NOTHING, /** * Create base entry. */ CREATE_BASE_ENTRY, @@ -67,51 +63,85 @@ IMPORT_AUTOMATICALLY_GENERATED_DATA } private Type type = Type.NOTHING; private Type type; private LinkedList<String> baseDns = new LinkedList<String>(); private LinkedList<String> ldifPaths = new LinkedList<String>(); private String rejectedFile; private String skippedFile; private int numberEntries = 2000; /** * Constructor for the NewSuffixOptions object. * Private constructor. * @param baseDns the base DNs of the suffix options. * * If the Data Options is IMPORT_FROM_LDIF_FILE the args are the baseDn and * a String with the ldif location. * * If the Data Options is IMPORT_AUTOMATICALLY_GENERATED_DATA the args * are the baseDn and an Integer with the number of entries. * * For the rest of the types the args are just the baseDn. * * @param type the Type of NewSuffixOptions. * @param args the different argument objects (depending on the Type * specified) */ public NewSuffixOptions(Type type, Object... args) private NewSuffixOptions(LinkedList<String> baseDns) { this.type = type; LinkedList<?> v = (LinkedList<?>)args[0]; for (Object o : v) { baseDns.add((String)o); } switch (type) { case IMPORT_FROM_LDIF_FILE: v = (LinkedList<?>)args[1]; for (Object o : v) { ldifPaths.add((String)o); } break; this.baseDns.addAll(baseDns); } case IMPORT_AUTOMATICALLY_GENERATED_DATA: numberEntries = ((Integer) args[1]).intValue(); break; } /** * Creates a base entry suffix options. * @param baseDNs the base DNs of the suffix options. * @return a base entry suffix options. */ public static NewSuffixOptions createBaseEntry(LinkedList<String> baseDNs) { NewSuffixOptions ops = new NewSuffixOptions(baseDNs); ops.type = Type.CREATE_BASE_ENTRY; return ops; } /** * Creates an empty suffix options. * @param baseDNs the base DNs of the suffix options. * @return an empty suffix options. */ public static NewSuffixOptions createEmpty(LinkedList<String> baseDNs) { NewSuffixOptions ops = new NewSuffixOptions(baseDNs); ops.type = Type.LEAVE_DATABASE_EMPTY; return ops; } /** * Creates a base entry suffix options. * @param baseDNs the base DNs of the suffix options. * @param ldifPaths the LDIF files to be imported. * @param rejectedFile the files where the rejected entries are stored. * @param skippedFile the files where the skipped entries are stored. * @return a base entry suffix options. */ public static NewSuffixOptions createImportFromLDIF( LinkedList<String> baseDNs, LinkedList<String> ldifPaths, String rejectedFile, String skippedFile) { NewSuffixOptions ops = new NewSuffixOptions(baseDNs); ops.type = Type.IMPORT_FROM_LDIF_FILE; ops.ldifPaths.addAll(ldifPaths); ops.rejectedFile = rejectedFile; ops.skippedFile = skippedFile; return ops; } /** * Creates an automatically generated entries suffix options. * @param baseDNs the base DNs of the suffix options. * @param numberEntries the number of entries to generate. * @return a base entry suffix options. */ public static NewSuffixOptions createAutomaticallyGenerated( LinkedList<String> baseDNs, int numberEntries) { NewSuffixOptions ops = new NewSuffixOptions(baseDNs); ops.type = Type.IMPORT_AUTOMATICALLY_GENERATED_DATA; ops.numberEntries = numberEntries; return ops; } /** @@ -136,6 +166,30 @@ } /** * Returns the path to store the rejected entries of the import. * <CODE>null</CODE> if no rejected file is specified. * * @return the path to store the rejected entries of the import. * <CODE>null</CODE> if no rejected file is specified. */ public String getRejectedFile() { return rejectedFile; } /** * Returns the path to store the skipped entries of the import. * <CODE>null</CODE> if no skipped file is specified. * * @return the path to store the skipped entries of the import. * <CODE>null</CODE> if no skipped file is specified. */ public String getSkippedFile() { return skippedFile; } /** * Returns the number of entries that will be automatically generated. * * @return the number of entries that will be automatically generated. opends/src/server/org/opends/server/tools/InstallDS.java
@@ -617,25 +617,40 @@ errorMessages.add(ERR_INSTALLDS_NO_SUCH_LDIF_FILE.get( Utils.getStringFromCollection(nonExistingFiles, ", "))); } dataOptions = new NewSuffixOptions( NewSuffixOptions.Type.IMPORT_FROM_LDIF_FILE, baseDNs, argParser.importLDIFArg.getValues()); String rejectedFile = argParser.rejectedImportFileArg.getValue(); if (rejectedFile != null) { if (!Utils.canWrite(rejectedFile)) { errorMessages.add( ERR_INSTALLDS_CANNOT_WRITE_REJECTED.get(rejectedFile)); } } String skippedFile = argParser.skippedImportFileArg.getValue(); if (skippedFile != null) { if (!Utils.canWrite(skippedFile)) { errorMessages.add(ERR_INSTALLDS_CANNOT_WRITE_SKIPPED.get( skippedFile)); } } dataOptions = NewSuffixOptions.createImportFromLDIF(baseDNs, argParser.importLDIFArg.getValues(), rejectedFile, skippedFile); } else if (argParser.addBaseEntryArg.isPresent()) { dataOptions = new NewSuffixOptions( NewSuffixOptions.Type.CREATE_BASE_ENTRY, baseDNs); dataOptions = NewSuffixOptions.createBaseEntry(baseDNs); } else if (argParser.sampleDataArg.isPresent()) { dataOptions = new NewSuffixOptions( NewSuffixOptions.Type.IMPORT_AUTOMATICALLY_GENERATED_DATA, baseDNs, dataOptions = NewSuffixOptions.createAutomaticallyGenerated(baseDNs, new Integer(argParser.sampleDataArg.getValue())); } else { dataOptions = new NewSuffixOptions( NewSuffixOptions.Type.LEAVE_DATABASE_EMPTY, baseDNs); dataOptions = NewSuffixOptions.createEmpty(baseDNs); } uData.setNewSuffixOptions(dataOptions); @@ -1021,15 +1036,39 @@ importLDIFFiles.add(path); } } dataOptions = new NewSuffixOptions( NewSuffixOptions.Type.IMPORT_FROM_LDIF_FILE, baseDNs, importLDIFFiles); String rejectedFile = argParser.rejectedImportFileArg.getValue(); if (rejectedFile != null) { while (!Utils.canWrite(rejectedFile)) { printLineBreak(); printErrorMessage(ERR_INSTALLDS_CANNOT_WRITE_REJECTED.get( rejectedFile)); printLineBreak(); rejectedFile = promptForString(INFO_INSTALLDS_PROMPT_REJECTED_FILE.get(), null); } } String skippedFile = argParser.skippedImportFileArg.getValue(); if (skippedFile != null) { while (!Utils.canWrite(skippedFile)) { printLineBreak(); printErrorMessage( ERR_INSTALLDS_CANNOT_WRITE_SKIPPED.get(skippedFile)); printLineBreak(); skippedFile = promptForString(INFO_INSTALLDS_PROMPT_SKIPPED_FILE.get(), null); } } dataOptions = NewSuffixOptions.createImportFromLDIF(baseDNs, importLDIFFiles, rejectedFile, skippedFile); } else if (argParser.addBaseEntryArg.isPresent()) { dataOptions = new NewSuffixOptions( NewSuffixOptions.Type.CREATE_BASE_ENTRY, baseDNs); dataOptions = NewSuffixOptions.createBaseEntry(baseDNs); } else if (argParser.sampleDataArg.isPresent()) { @@ -1045,9 +1084,8 @@ Message message = INFO_INSTALLDS_PROMPT_NUM_ENTRIES.get(); numUsers = promptForInteger(message, 2000, 0, Integer.MAX_VALUE); } dataOptions = new NewSuffixOptions( NewSuffixOptions.Type.IMPORT_AUTOMATICALLY_GENERATED_DATA, baseDNs, numUsers); dataOptions = NewSuffixOptions.createAutomaticallyGenerated(baseDNs, numUsers); } else { @@ -1093,28 +1131,50 @@ printErrorMessage(message); } } dataOptions = new NewSuffixOptions( NewSuffixOptions.Type.IMPORT_FROM_LDIF_FILE, baseDNs, importLDIFFiles); String rejectedFile = argParser.rejectedImportFileArg.getValue(); if (rejectedFile != null) { while (!Utils.canWrite(rejectedFile)) { printLineBreak(); printErrorMessage( ERR_INSTALLDS_CANNOT_WRITE_REJECTED.get(rejectedFile)); printLineBreak(); rejectedFile = promptForString(INFO_INSTALLDS_PROMPT_REJECTED_FILE.get(), null); } } String skippedFile = argParser.skippedImportFileArg.getValue(); if (skippedFile != null) { while (!Utils.canWrite(skippedFile)) { printLineBreak(); printErrorMessage( ERR_INSTALLDS_CANNOT_WRITE_SKIPPED.get(skippedFile)); printLineBreak(); skippedFile = promptForString(INFO_INSTALLDS_PROMPT_SKIPPED_FILE.get(), null); } } dataOptions = NewSuffixOptions.createImportFromLDIF(baseDNs, importLDIFFiles, rejectedFile, skippedFile); } else if (populateType == POPULATE_TYPE_GENERATE_SAMPLE_DATA) { Message message = INFO_INSTALLDS_PROMPT_NUM_ENTRIES.get(); int numUsers = promptForInteger(message, 2000, 0, Integer.MAX_VALUE); dataOptions = new NewSuffixOptions( NewSuffixOptions.Type.IMPORT_AUTOMATICALLY_GENERATED_DATA, baseDNs, numUsers); dataOptions = NewSuffixOptions.createAutomaticallyGenerated(baseDNs, numUsers); } else if (populateType == POPULATE_TYPE_LEAVE_EMPTY) { dataOptions = new NewSuffixOptions( NewSuffixOptions.Type.LEAVE_DATABASE_EMPTY, baseDNs); dataOptions = NewSuffixOptions.createEmpty(baseDNs); } else if (populateType == POPULATE_TYPE_BASE_ONLY) { dataOptions = new NewSuffixOptions( NewSuffixOptions.Type.CREATE_BASE_ENTRY, baseDNs); dataOptions = NewSuffixOptions.createBaseEntry(baseDNs); } else { opends/src/server/org/opends/server/tools/InstallDSArgumentParser.java
@@ -81,6 +81,8 @@ StringArgument configClassArg; StringArgument configFileArg; StringArgument importLDIFArg; StringArgument rejectedImportFileArg; StringArgument skippedImportFileArg; StringArgument directoryManagerDNArg; StringArgument directoryManagerPwdStringArg; StringArgument useJavaKeyStoreArg; @@ -188,6 +190,18 @@ INFO_INSTALLDS_DESCRIPTION_IMPORTLDIF.get()); addArgument(importLDIFArg); rejectedImportFileArg = new StringArgument( "rejectfile", 'R', "rejectFile", false, false, true, "{rejectFile}", null, null, INFO_INSTALLDS_DESCRIPTION_REJECTED_FILE.get()); addArgument(rejectedImportFileArg); skippedImportFileArg = new StringArgument( "skipFile", null, "skipFile", false, false, true, "{skipFile}", null, null, INFO_INSTALLDS_DESCRIPTION_SKIPPED_FILE.get()); addArgument(skippedImportFileArg); sampleDataArg = new IntegerArgument( "sampledata", 'd', "sampleData", false, false, true, "{numEntries}", 0, null, @@ -516,6 +530,36 @@ sampleDataArg.getLongIdentifier()); errorMessages.add(message); } if (rejectedImportFileArg.isPresent() && addBaseEntryArg.isPresent()) { Message message = ERR_TOOL_CONFLICTING_ARGS.get( addBaseEntryArg.getLongIdentifier(), rejectedImportFileArg.getLongIdentifier()); errorMessages.add(message); } else if (rejectedImportFileArg.isPresent() && sampleDataArg.isPresent()) { Message message = ERR_TOOL_CONFLICTING_ARGS.get( rejectedImportFileArg.getLongIdentifier(), sampleDataArg.getLongIdentifier()); errorMessages.add(message); } if (skippedImportFileArg.isPresent() && addBaseEntryArg.isPresent()) { Message message = ERR_TOOL_CONFLICTING_ARGS.get( addBaseEntryArg.getLongIdentifier(), skippedImportFileArg.getLongIdentifier()); errorMessages.add(message); } else if (skippedImportFileArg.isPresent() && sampleDataArg.isPresent()) { Message message = ERR_TOOL_CONFLICTING_ARGS.get( skippedImportFileArg.getLongIdentifier(), sampleDataArg.getLongIdentifier()); errorMessages.add(message); } } /**