From 04eb96fe835d6e9e12db6b359fb862fb8b7a3fcd Mon Sep 17 00:00:00 2001
From: jarnou <jarnou@localhost>
Date: Mon, 09 Jul 2007 16:13:16 +0000
Subject: [PATCH] Bug: 1428 Synopsis: import-ldif could allow to write skipped entries to a specified file

---
 opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java |   65 ++++++++++++++++++++++++++++----
 1 files changed, 57 insertions(+), 8 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java b/opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java
index 75c5b72..91268dc 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/util/LDIFReader.java
@@ -224,6 +224,10 @@
                     entryDN);
         }
         entriesRead++;
+        int    msgID   = MSGID_LDIF_SKIP;
+        String message = getMessage(msgID, String.valueOf(entryDN),
+            lastEntryLineNumber);
+        logToSkipWriter(lines, message);
         entriesIgnored++;
         continue;
       }
@@ -269,6 +273,10 @@
                 "that should be included based on the include and exclude " +
                 "filters.", entryDN);
           }
+          int    msgID   = MSGID_LDIF_SKIP;
+          String message = getMessage(msgID, String.valueOf(entryDN),
+              lastEntryLineNumber);
+          logToSkipWriter(lines, message);
           entriesIgnored++;
           continue;
         }
@@ -294,6 +302,10 @@
              pluginConfigManager.invokeLDIFImportPlugins(importConfig, entry);
         if (! pluginResult.continueEntryProcessing())
         {
+          int    msgID   = MSGID_LDIF_SKIP;
+          String message = getMessage(msgID, String.valueOf(entryDN),
+              lastEntryLineNumber);
+          logToSkipWriter(lines, message);
           entriesIgnored++;
           continue;
         }
@@ -1738,8 +1750,6 @@
     return value;
   }
 
-
-
   /**
    * Log a message to the reject writer if one is configured.
    *
@@ -1754,18 +1764,56 @@
     BufferedWriter rejectWriter = importConfig.getRejectWriter();
     if (rejectWriter != null)
     {
+      logToWriter(rejectWriter, lines, message);
+    }
+  }
+
+  /**
+   * Log a message to the reject writer if one is configured.
+   *
+   * @param lines
+   *          The set of rejected lines.
+   * @param message
+   *          The associated error message.
+   */
+  private void logToSkipWriter(LinkedList<StringBuilder> lines,
+      String message) {
+
+    BufferedWriter skipWriter = importConfig.getSkipWriter();
+    if (skipWriter != null)
+    {
+      logToWriter(skipWriter, lines, message);
+    }
+  }
+
+  /**
+   * Log a message to the given writer.
+   *
+   * @param writer
+   *          The writer to write to.
+   * @param lines
+   *          The set of rejected lines.
+   * @param message
+   *          The associated error message.
+   */
+  private void logToWriter(BufferedWriter writer,
+      LinkedList<StringBuilder> lines,
+      String message)
+  {
+    if (writer != null)
+    {
       try
       {
-        rejectWriter.write("# ");
-        rejectWriter.write(message);
-        rejectWriter.newLine();
+        writer.write("# ");
+        writer.write(message);
+        writer.newLine();
         for (StringBuilder sb : lines)
         {
-          rejectWriter.write(sb.toString());
-          rejectWriter.newLine();
+          writer.write(sb.toString());
+          writer.newLine();
         }
 
-        rejectWriter.newLine();
+        writer.newLine();
       }
       catch (Exception e)
       {
@@ -1776,5 +1824,6 @@
       }
     }
   }
+
 }
 

--
Gitblit v1.10.0