From 394f9db3f8d0258fcff62f01321ae7aad59fb371 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Thu, 03 Apr 2008 21:06:07 +0000
Subject: [PATCH] Fix for issue 3118 (No error reported by the setup (GUI) if imported ldif file doesn't match the specified base DN)

---
 opends/src/quicksetup/org/opends/quicksetup/installer/InstallerHelper.java |   29 ++++++++++++++
 opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java       |   42 ++++++++++++++++++++-
 opends/src/quicksetup/org/opends/quicksetup/Application.java               |   13 ++++++
 3 files changed, 81 insertions(+), 3 deletions(-)

diff --git a/opends/src/quicksetup/org/opends/quicksetup/Application.java b/opends/src/quicksetup/org/opends/quicksetup/Application.java
index 97e4923..79b7191 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/Application.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/Application.java
@@ -842,6 +842,16 @@
   }
 
   /**
+   * Method that is invoked by the printstreams with the messages received
+   * on operations such as start or import.  This is done so that the
+   * application can parse this messages and display them.
+   * @param message the message that has been received
+   */
+  protected void applicationPrintStreamReceived(String message)
+  {
+  }
+
+  /**
    * This class is used to notify the ProgressUpdateListeners of events
    * that are written to the standard error.  It is used in WebStartInstaller
    * and in OfflineInstaller.  These classes just create a ErrorPrintStream and
@@ -947,7 +957,8 @@
       }
 
       notifyListeners(mb.toMessage());
-      LOG.log(Level.INFO, "server: " + msg);
+      applicationPrintStreamReceived(msg);
+      LOG.log(Level.INFO, msg);
       isFirstLine = false;
     }
 
diff --git a/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java b/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
index 1260689..b6d2a89 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
@@ -161,6 +161,7 @@
   private boolean registeredNewServerOnRemote;
   private boolean createdAdministrator;
   private boolean createdRemoteAds;
+  private String lastImportProgress;
 
   /**
    * An static String that contains the class name of ConfigFileHandler.
@@ -1282,10 +1283,34 @@
         // TODO: implement the abort
       }
     };
-    invokeLongOperation(thread);
+    try
+    {
+      invokeLongOperation(thread);
+    } catch (ApplicationException ae)
+    {
+      if (!isVerbose())
+      {
+        if (lastImportProgress != null)
+        {
+          notifyListeners(
+              getFormattedProgress(Message.raw(lastImportProgress)));
+          notifyListeners(getLineBreak());
+        }
+      }
+      throw ae;
+    }
     if (!isVerbose())
     {
-      notifyListeners(getFormattedDoneWithLineBreak());
+      if (lastImportProgress == null)
+      {
+        notifyListeners(getFormattedDoneWithLineBreak());
+      }
+      else
+      {
+        notifyListeners(
+            getFormattedProgress(Message.raw(lastImportProgress)));
+        notifyListeners(getLineBreak());
+      }
     }
   }
 
@@ -4701,6 +4726,19 @@
     }
     return hostPort;
   }
+
+  /**
+   * {@inheritDoc}
+   */
+  protected void applicationPrintStreamReceived(String message)
+  {
+    InstallerHelper helper = new InstallerHelper();
+    String parsedMessage = helper.getImportProgressMessage(message);
+    if (parsedMessage != null)
+    {
+      lastImportProgress = parsedMessage;
+    }
+  }
 }
 
 /**
diff --git a/opends/src/quicksetup/org/opends/quicksetup/installer/InstallerHelper.java b/opends/src/quicksetup/org/opends/quicksetup/installer/InstallerHelper.java
index fe09187..ac7729d 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/installer/InstallerHelper.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/installer/InstallerHelper.java
@@ -63,6 +63,7 @@
 import org.opends.server.admin.std.meta.*;
 import org.opends.server.backends.task.TaskState;
 import org.opends.messages.CoreMessages;
+import org.opends.messages.JebMessages;
 import org.opends.messages.ReplicationMessages;
 import org.opends.messages.Message;
 import static org.opends.messages.QuickSetupMessages.*;
@@ -828,6 +829,34 @@
   }
 
   /**
+   * If the log message is of type "[03/Apr/2008:21:25:43 +0200] category=JEB
+   * severity=NOTICE msgID=8847454 Processed 1 entries, imported 0, skipped 1,
+   * rejected 0 and migrated 0 in 1 seconds (average rate 0.0/sec)" returns
+   * the message part.  Returns <CODE>null</CODE> otherwise.
+   * @param msg the message to be parsed.
+   * @return the parsed import message.
+   */
+  public String getImportProgressMessage(String msg)
+  {
+    String parsedMsg = null;
+    if (msg != null)
+    {
+      if ((msg.indexOf(
+          "msgID="+JebMessages.NOTE_JEB_IMPORT_FINAL_STATUS.getId()) != -1) ||
+          (msg.indexOf(
+          "msgID="+JebMessages.NOTE_JEB_IMPORT_PROGRESS_REPORT.getId()) != -1))
+      {
+        int index = msg.indexOf("msg=");
+        if (index != -1)
+        {
+          parsedMsg = msg.substring(index + 4);
+        }
+      }
+    }
+    return parsedMsg;
+  }
+
+  /**
    * Tells whether the provided java installation supports the server option
    * or not.
    * @param javaHome the java installation path.

--
Gitblit v1.10.0