From 0d9383e9bdcfc20e808968f4b7fe6c1ac0f48fa6 Mon Sep 17 00:00:00 2001
From: dugan <dugan@localhost>
Date: Mon, 17 Aug 2009 00:23:12 +0000
Subject: [PATCH] These changes allow import-ldif to support multiple suffixes and fix some problems with the include/exclude options.

---
 opends/src/server/org/opends/server/tools/ImportLDIF.java |   74 ++++++++++++++++++++++++++-----------
 1 files changed, 52 insertions(+), 22 deletions(-)

diff --git a/opends/src/server/org/opends/server/tools/ImportLDIF.java b/opends/src/server/org/opends/server/tools/ImportLDIF.java
index 890a80d..e45b1c1 100644
--- a/opends/src/server/org/opends/server/tools/ImportLDIF.java
+++ b/opends/src/server/org/opends/server/tools/ImportLDIF.java
@@ -145,15 +145,14 @@
   }
 
   // Define the command-line arguments that may be used with this program.
- //Append and replace removed for new import.
-//  private BooleanArgument append                  = null;
+  private BooleanArgument append                  = null;
   private BooleanArgument countRejects            = null;
   private BooleanArgument displayUsage            = null;
   private BooleanArgument isCompressed            = null;
   private BooleanArgument isEncrypted             = null;
   private BooleanArgument overwrite               = null;
   private BooleanArgument quietMode               = null;
-//  private BooleanArgument replaceExisting         = null;
+  private BooleanArgument replaceExisting         = null;
   private BooleanArgument skipSchemaValidation    = null;
   private BooleanArgument clearBackend            = null;
   private IntegerArgument randomSeed              = null;
@@ -170,7 +169,8 @@
   private StringArgument  rejectFile              = null;
   private StringArgument  skipFile                = null;
   private StringArgument  templateFile            = null;
-  private BooleanArgument dnCheckPhase2           = null;
+  private BooleanArgument skipDNValidation        = null;
+  private IntegerArgument threadCount             = null;
   private StringArgument  tmpDirectory            = null;
 
   private int process(String[] args, boolean initializeServer,
@@ -242,8 +242,6 @@
                               INFO_LDIFIMPORT_DESCRIPTION_TEMPLATE_FILE.get());
       argParser.addArgument(templateFile);
 
-   /*
-      Append and replace removed for new import.
 
       append =
            new BooleanArgument("append", 'a', "append",
@@ -256,7 +254,7 @@
                    "replaceexisting", 'r', "replaceExisting",
                    INFO_LDIFIMPORT_DESCRIPTION_REPLACE_EXISTING.get());
       argParser.addArgument(replaceExisting);
-   */
+
 
       backendID =
            new StringArgument("backendid", 'n', "backendID", false, false, true,
@@ -357,12 +355,18 @@
       argParser.addArgument(skipSchemaValidation);
 
 
-      dnCheckPhase2 =
-           new BooleanArgument("dnPhase2", null, "dnCheckPhase2",
-                    INFO_LDIFIMPORT_DESCRIPTION_DN_CHECK_PHASE_2.get());
-      argParser.addArgument(dnCheckPhase2);
+      skipDNValidation =
+           new BooleanArgument("skipDNValidation", null, "skipDNValidation",
+                    INFO_LDIFIMPORT_DESCRIPTION_DN_VALIDATION.get());
+      argParser.addArgument(skipDNValidation);
 
 
+      threadCount = new IntegerArgument("threadCount", null, "threadCount",
+              false, true,
+              INFO_LDIFIMPORT_THREAD_COUNT_PLACEHOLDER.get(),
+              INFO_LDIFIMPORT_DESCRIPTION_THREAD_COUNT.get());
+      argParser.addArgument(threadCount);
+
       tmpDirectory =
            new StringArgument("tmpdirectory", null, "tmpdirectory", false,
                    false, true, INFO_LDIFIMPORT_TEMP_DIR_PLACEHOLDER.get(),
@@ -546,8 +550,6 @@
     //
     // Optional attributes
     //
-    /*
-    Append and replace removed for new import.
 
     if (append.getValue() != null &&
             !append.getValue().equals(append.getDefaultValue())) {
@@ -563,7 +565,7 @@
       values.add(ByteString.valueOf(replaceExisting.getValue()));
       attributes.add(new LDAPAttribute(ATTR_IMPORT_REPLACE_EXISTING, values));
     }
-    */
+
     if (backendID.getValue() != null &&
             !backendID.getValue().equals(
                     backendID.getDefaultValue())) {
@@ -668,16 +670,26 @@
     }
 
 
-    if (dnCheckPhase2.getValue() != null &&
-            !dnCheckPhase2.getValue().equals(
-                    dnCheckPhase2.getDefaultValue())) {
+    if (skipDNValidation.getValue() != null &&
+            !skipDNValidation.getValue().equals(
+                    skipDNValidation.getDefaultValue())) {
       values = new ArrayList<ByteString>(1);
-      values.add(ByteString.valueOf(dnCheckPhase2.getValue()));
+      values.add(ByteString.valueOf(skipDNValidation.getValue()));
       attributes.add(
-              new LDAPAttribute(ATTR_IMPORT_DN_CHECK_PHASE2, values));
+              new LDAPAttribute(ATTR_IMPORT_SKIP_DN_VALIDATION, values));
     }
 
 
+    if (threadCount.getValue() != null &&
+            !threadCount.getValue().equals(
+                    threadCount.getDefaultValue())) {
+      values = new ArrayList<ByteString>(1);
+      values.add(ByteString.valueOf(threadCount.getValue()));
+      attributes.add(new LDAPAttribute(ATTR_IMPORT_THREAD_COUNT, values));
+    }
+
+
+
     if (isCompressed.getValue() != null &&
             !isCompressed.getValue().equals(
                     isCompressed.getDefaultValue())) {
@@ -1199,6 +1211,7 @@
     // baseDNs for the backend being imported.
 
     if(backendID.isPresent() && !includeBranchStrings.isPresent() &&
+       !append.isPresent() &&
         defaultIncludeBranches.size() > 1 &&
         !clearBackend.isPresent())
     {
@@ -1322,11 +1335,26 @@
       importConfig = new LDIFImportConfig(tf);
     }
 
+    int tc = -1;
+    if(threadCount.isPresent())
+    {
+      try
+      {
+        tc = threadCount.getIntValue();
+      }
+      catch(Exception e)
+      {
+        Message msg = ERR_LDIFIMPORT_CANNOT_PARSE_THREAD_COUNT.get(
+            threadCount.getValue(), e.getMessage());
+        logError(msg);
+        return 1;
+      }
+    }
 
 
     // Create the LDIF import configuration to use when reading the LDIF.
- //   importConfig.setAppendToExistingData(append.isPresent());
-  //  importConfig.setReplaceExistingEntries(replaceExisting.isPresent());
+    importConfig.setAppendToExistingData(append.isPresent());
+    importConfig.setReplaceExistingEntries(replaceExisting.isPresent());
     importConfig.setCompressed(isCompressed.isPresent());
     importConfig.setClearBackend(clearBackend.isPresent());
     importConfig.setEncrypted(isEncrypted.isPresent());
@@ -1337,8 +1365,9 @@
     importConfig.setIncludeBranches(includeBranches);
     importConfig.setIncludeFilters(includeFilters);
     importConfig.setValidateSchema(!skipSchemaValidation.isPresent());
-    importConfig.setDNCheckPhase2(dnCheckPhase2.isPresent());
+    importConfig.setSkipDNValidation(skipDNValidation.isPresent());
     importConfig.setTmpDirectory(tmpDirectory.getValue());
+    importConfig.setThreadCount(tc);
 
     importConfig.setBufferSize(LDIF_BUFFER_SIZE);
     importConfig.setExcludeAllUserAttributes(
@@ -1460,6 +1489,7 @@
       Message message =
           ERR_LDIFIMPORT_ERROR_DURING_IMPORT.get(getExceptionMessage(e));
       logError(message);
+e.printStackTrace();
       retCode = 1;
     }
 

--
Gitblit v1.10.0