From 694ba2715a3d8c483b442eeb16b0d5fe40e0e28e Mon Sep 17 00:00:00 2001
From: kenneth_suter <kenneth_suter@localhost>
Date: Thu, 26 Apr 2007 21:51:20 +0000
Subject: [PATCH] fixed serveral message formatting problems in the CLI and GUI

---
 opends/src/quicksetup/org/opends/quicksetup/upgrader/Upgrader.java |  136 +++++++++++++++++++++++++++++++-------------
 1 files changed, 95 insertions(+), 41 deletions(-)

diff --git a/opends/src/quicksetup/org/opends/quicksetup/upgrader/Upgrader.java b/opends/src/quicksetup/org/opends/quicksetup/upgrader/Upgrader.java
index b2d5442..305e7f1 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/upgrader/Upgrader.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/upgrader/Upgrader.java
@@ -93,10 +93,6 @@
 
     INITIALIZING("summary-upgrade-initializing"),
 
-    STARTING_SERVER("summary-starting"),
-
-    STOPPING_SERVER("summary-stopping"),
-
     CALCULATING_SCHEMA_CUSTOMIZATIONS(
             "summary-upgrade-calculating-schema-customization"),
 
@@ -300,7 +296,7 @@
    * {@inheritDoc}
    */
   public Integer getRatio(ProgressStep step) {
-    return 100 * ((UpgradeProgressStep) step).ordinal() /
+    return ((UpgradeProgressStep) step).ordinal() /
             EnumSet.allOf(UpgradeWizardStep.class).size();
   }
 
@@ -310,23 +306,12 @@
   public String getSummary(ProgressStep step) {
     String txt = null;
     if (step == UpgradeProgressStep.FINISHED) {
-//    String installPath = Utils.getPath(getInstallation().getRootDirectory());
-//    String newVersion = null;
-//    try {
-//      newVersion = getInstallation().getBuildId();
-//    } catch (QuickSetupException e) {
-//      newVersion = getMsg("upgrade-build-id-unknown");
-//    }
-//    String[] args = {
-//            formatter.getFormattedText(installPath),
-//            newVersion };
-//    txt = getFormattedSuccess(
-//            getMsg("summary-upgrade-finished-successfully",
-//            args));
-      txt = "Upgrade completed successfully"; // TODO BETTER MESSAGE
+      txt = getFinalSuccessMessage();
     } else if (step == UpgradeProgressStep.FINISHED_WITH_ERRORS) {
-      txt = getFormattedError(
-              getMsg("summary-upgrade-finished-with-errors"));
+      txt = getMsg(((UpgradeProgressStep) step).getSummaryMesssageKey());
+      if (!Utils.isCli()) {
+        txt = formatter.getFormattedError(txt, true);
+      }
     } else {
       txt = getMsg(((UpgradeProgressStep) step).getSummaryMesssageKey());
     }
@@ -591,7 +576,8 @@
             }
           }
           getRemoteBuildManager().download(buildToDownload, buildZip);
-          notifyListeners(formatter.getFormattedDone());
+          notifyListeners(formatter.getFormattedDone() +
+                  formatter.getLineBreak());
         } catch (ApplicationException e) {
           LOG.log(Level.INFO, "Error downloading build file", e);
           throw e;
@@ -621,17 +607,11 @@
         throw e;
       }
 
-      try {
-        setCurrentProgressStep(UpgradeProgressStep.INITIALIZING);
-        initialize();
-      } catch (ApplicationException e) {
-        LOG.log(Level.INFO, "Error initializing upgrader", e);
-        throw e;
-      }
-
+      // If the server has never been started and schema changes
+      // have been made, the server will have never had the chance
+      // to write schema.current.
       if (!getInstallation().getStatus().isServerRunning()) {
         try {
-          setCurrentProgressStep(UpgradeProgressStep.STARTING_SERVER);
           startServerWithoutConnectionHandlers();
           getServerController().stopServerInProcess();
         } catch (ApplicationException e) {
@@ -643,7 +623,6 @@
 
       if (getInstallation().getStatus().isServerRunning()) {
         try {
-          setCurrentProgressStep(UpgradeProgressStep.STOPPING_SERVER);
           new ServerController(this).stopServer();
         } catch (ApplicationException e) {
           LOG.log(Level.INFO, "Error stopping server", e);
@@ -690,12 +669,27 @@
         setCurrentProgressStep(
                 UpgradeProgressStep.UPGRADING_COMPONENTS);
         upgradeComponents();
+        notifyListeners(formatter.getFormattedDone() +
+                formatter.getLineBreak());
       } catch (ApplicationException e) {
         LOG.log(Level.INFO,
                 "Error upgrading components", e);
         throw e;
       }
 
+      //********************************************
+      //*  The two steps following this step require
+      //*  the server to be started 'in process'.
+      // *******************************************
+      try {
+        startServerWithoutConnectionHandlers();
+      } catch (ApplicationException e) {
+        LOG.log(Level.INFO,
+                "Error starting server in process in order to apply custom" +
+                        "schema and/or configuration", e);
+        throw e;
+      }
+
       try {
         setCurrentProgressStep(
                 UpgradeProgressStep.APPLYING_SCHEMA_CUSTOMIZATIONS);
@@ -716,12 +710,21 @@
         throw e;
       }
 
+      try {
+        getServerController().stopServerInProcess();
+      } catch (Throwable t) {
+        LOG.log(Level.INFO,
+                "Error applying configuration customizations", t);
+        throw new ApplicationException(ApplicationException.Type.BUG,
+                "Error stopping server in process", t);
+      }
+
       // This allows you to test whether or not he upgrader can successfully
       // abort an upgrade once changes have been made to the installation
       // path's filesystem.
       if ("true".equals(
               System.getProperty(
-                      "org.opends.upgrader.Upgrader.CreateError.CreateError")))
+                      "org.opends.upgrader.Upgrader.CreateError")))
       {
         throw new ApplicationException(
                 null, "ARTIFICIAL ERROR FOR TESTING ABORT PROCESS", null);
@@ -772,7 +775,6 @@
                 getStagedVersion(),
                 status,
                 note);
-
       } catch (ApplicationException e) {
         System.err.print("Error cleaning up after upgrade: " +
                 e.getLocalizedMessage());
@@ -780,11 +782,36 @@
     }
 
     // Decide final status based on presense of error
+
+    // It would be nice if this were simpler.
+
     if (runException == null) {
-      setCurrentProgressStep(UpgradeProgressStep.FINISHED);
+      if (!Utils.isCli()) {
+
+        // This seems to be the preferred way to print
+        // a message to the top of the progress panel without
+        // having it show up in the Details section which we
+        // don't want since it is in HTML
+        this.currentProgressStep = UpgradeProgressStep.FINISHED;
+        notifyListeners(null);
+
+      } else {
+        notifyListeners(getFinalSuccessMessage());
+
+        // Don't do this until we've printed out last message
+        // as doing so tells the CLI that it is finished and
+        // System.exit gets called in QuickSetupCli
+        this.currentProgressStep = UpgradeProgressStep.FINISHED;
+      }
+
     } else {
-      setCurrentProgressStep(UpgradeProgressStep.FINISHED_WITH_ERRORS);
-      notifyListeners(formatter.getFormattedError(runException, true));
+      if (!Utils.isCli()) {
+        notifyListeners(formatter.getFormattedError(runException, true));
+        setCurrentProgressStep(UpgradeProgressStep.FINISHED_WITH_ERRORS);
+      } else {
+        runException.printStackTrace();
+        this.currentProgressStep = UpgradeProgressStep.FINISHED_WITH_ERRORS;
+      }
     }
 
   }
@@ -916,12 +943,19 @@
     }
   }
 
+  /**
+   * Applies configuration or schema customizations.
+   * NOTE: Assumes that the server is running in process.
+   * @param ldifFile LDIF file to apply
+   * @throws IOException
+   * @throws org.opends.server.util.LDIFException
+   * @throws ApplicationException
+   */
   private void applyCustomizationLdifFile(File ldifFile)
           throws IOException, org.opends.server.util.LDIFException,
           ApplicationException
   {
     try {
-      startServerWithoutConnectionHandlers();
       org.opends.server.protocols.internal.InternalClientConnection cc =
               org.opends.server.protocols.internal.
                       InternalClientConnection.getRootConnection();
@@ -992,8 +1026,6 @@
     } catch (Throwable t) {
       throw new ApplicationException(ApplicationException.Type.BUG,
               t.getMessage(), t);
-    } finally {
-      getServerController().stopServerInProcess();
     }
   }
 
@@ -1324,7 +1356,7 @@
 
   private void setCurrentProgressStep(UpgradeProgressStep step) {
     this.currentProgressStep = step;
-    String msg = getMsg(step.getSummaryMesssageKey());
+    String msg = getSummary(step);
     notifyListeners(getFormattedProgress(msg) + getLineBreak());
   }
 
@@ -1335,6 +1367,28 @@
     return cliHelper;
   }
 
+  private String getFinalSuccessMessage() {
+    String txt;
+    String installPath = Utils.getPath(getInstallation().getRootDirectory());
+    String newVersion = null;
+    try {
+      newVersion = getInstallation().getBuildId();
+    } catch (QuickSetupException e) {
+      newVersion = getMsg("upgrade-build-id-unknown");
+    }
+    String[] args = {
+            formatter.getFormattedText(installPath),
+            newVersion};
+    if (Utils.isCli()) {
+      txt = getMsg("summary-upgrade-finished-successfully-cli", args);
+    } else {
+      txt = getFormattedSuccess(
+              getMsg("summary-upgrade-finished-successfully",
+                      args));
+    }
+    return txt;
+  }
+
   private File getStageDirectory()
           throws ApplicationException, IOException {
     return getInstallation().getTemporaryUpgradeDirectory();

--
Gitblit v1.10.0