From f6bff1e8c31ae6ebfabfdb478771216b9773a3c4 Mon Sep 17 00:00:00 2001
From: kenneth_suter <kenneth_suter@localhost>
Date: Thu, 24 May 2007 00:37:30 +0000
Subject: [PATCH] This commit addresses issue 1599 as well as introduces some other changes suggested by Brian after reviewing the SWAED guidelines:

---
 opends/src/quicksetup/org/opends/quicksetup/upgrader/Upgrader.java |  120 ++++++++++++++++++++++++++----------------------------------
 1 files changed, 52 insertions(+), 68 deletions(-)

diff --git a/opends/src/quicksetup/org/opends/quicksetup/upgrader/Upgrader.java b/opends/src/quicksetup/org/opends/quicksetup/upgrader/Upgrader.java
index 0bfb343..0f73c50 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/upgrader/Upgrader.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/upgrader/Upgrader.java
@@ -169,6 +169,8 @@
 
     FINISHED_WITH_WARNINGS("summary-upgrade-finished-with-warnings", 100),
 
+    FINISHED_CANCELED("summary-upgrade-finished-canceled", 100),
+
     FINISHED("summary-upgrade-finished-successfully", 100);
 
     private String summaryMsgKey;
@@ -202,7 +204,8 @@
     public boolean isLast() {
       return this == FINISHED ||
               this == FINISHED_WITH_ERRORS ||
-              this == FINISHED_WITH_WARNINGS;
+              this == FINISHED_WITH_WARNINGS ||
+              this == FINISHED_CANCELED;
     }
 
     /**
@@ -442,6 +445,8 @@
     String txt = null;
     if (step == UpgradeProgressStep.FINISHED) {
       txt = getFinalSuccessMessage();
+    } else if (step == UpgradeProgressStep.FINISHED_CANCELED) {
+      txt = getFinalCanceledMessage();
     } else if (step == UpgradeProgressStep.FINISHED_WITH_ERRORS) {
       txt = getFinalErrorMessage();
     } else if (step == UpgradeProgressStep.FINISHED_WITH_WARNINGS) {
@@ -527,13 +532,6 @@
   /**
    * {@inheritDoc}
    */
-  public boolean canClose(WizardStep step) {
-    return step == UpgradeWizardStep.PROGRESS;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
   public String getFinishButtonToolTipKey() {
     return "finish-button-upgrade-tooltip";
   }
@@ -548,33 +546,23 @@
   /**
    * {@inheritDoc}
    */
-  public void closeClicked(WizardStep cStep, final QuickSetup qs) {
-    if (cStep == UpgradeWizardStep.PROGRESS) {
-      if (isFinished()) {
-        qs.quit();
-      } else if (qs.displayConfirmation(getMsg("confirm-close-upgrade-msg"),
-              getMsg("confirm-close-upgrade-title"))) {
-        abort = true;
-        JButton btnClose = qs.getDialog().getButtonsPanel().
-                getButton(ButtonName.CLOSE);
-        btnClose.setEnabled(false);
-        new Thread(new Runnable() {
-          public void run() {
-            while (!isFinished()) {
-              try {
-                Thread.sleep(100);
-              } catch (InterruptedException e) {
-                // do nothing
-              }
-            }
-            qs.quit();
-          }
-        }).start();
-      }
-    } else {
-      throw new IllegalStateException(
-              "Close only can be clicked on PROGRESS step");
-    }
+  public void cancel() {
+
+    // The run() method checks that status of this variable
+    // occasionally and aborts the operation if it discovers
+    // a 'true' value.
+    abort = true;
+
+  }
+
+
+  /**
+   * {@inheritDoc}
+   */
+  public boolean confirmCancel(QuickSetup qs) {
+    return qs.displayConfirmation(
+            getMsg("confirm-cancel-upgrade-msg"),
+            getMsg("confirm-cancel-upgrade-title"));
   }
 
   /**
@@ -592,6 +580,13 @@
   /**
    * {@inheritDoc}
    */
+  public boolean isCancellable() {
+    return true;
+  }
+
+  /**
+   * {@inheritDoc}
+   */
   public void quitClicked(WizardStep cStep, final QuickSetup qs) {
     if (cStep == UpgradeWizardStep.PROGRESS) {
       throw new IllegalStateException(
@@ -1076,7 +1071,16 @@
       // skipped because the process has already exited by the time
       // processing messages has finished.  Need to resolve these
       // issues.
-      if (runError != null) {
+      if (abort) {
+        LOG.log(Level.INFO, "upgrade canceled by user");
+        if (!Utils.isCli()) {
+          notifyListenersOfLog();
+          this.currentProgressStep = UpgradeProgressStep.FINISHED_CANCELED;
+          notifyListeners(null);
+        } else {
+          setCurrentProgressStep(UpgradeProgressStep.FINISHED_CANCELED);
+        }
+      } else if (runError != null) {
         LOG.log(Level.INFO, "upgrade completed with errors", runError);
         if (!Utils.isCli()) {
           notifyListenersOfLog();
@@ -1120,38 +1124,7 @@
   private void checkAbort() throws ApplicationException {
     if (abort) throw new ApplicationException(
             ApplicationException.Type.APPLICATION,
-            "upgrade canceled by user", null);
-  }
-
-  /**
-   * Stops and starts the server checking for serious errors.  Also
-   * has the side effect of having the server write schema.current
-   * if it has never done so.
-   */
-  private void checkServerHealth() throws ApplicationException {
-    Installation installation = getInstallation();
-    ServerHealthChecker healthChecker = new ServerHealthChecker(installation);
-    try {
-      healthChecker.checkServer();
-      List<String> problems = healthChecker.getProblemMessages();
-      if (problems != null && problems.size() > 0) {
-        throw new ApplicationException(
-                ApplicationException.Type.APPLICATION,
-                "The server currently starts with errors which must " +
-                        "be resolved before an upgrade can occur: \n\n" +
-                        Utils.listToString(problems, "\n\n"),
-                null);
-      }
-    } catch (Exception e) {
-      if (e instanceof ApplicationException) {
-        throw (ApplicationException)e;
-      } else {
-        throw new ApplicationException(ApplicationException.Type.APPLICATION,
-                "Server health check failed.  Please resolve the following " +
-                        "before running the upgrade " +
-                        "tool: " + e.getLocalizedMessage(), e);
-      }
-    }
+            "Upgrade canceled", null);
   }
 
   /**
@@ -1616,6 +1589,17 @@
     return txt;
   }
 
+  private String getFinalCanceledMessage() {
+    String txt;
+    if (Utils.isCli()) {
+      txt = getMsg("summary-upgrade-finished-canceled-cli");
+    } else {
+      txt = getFormattedSuccess(
+              getMsg("summary-upgrade-finished-canceled"));
+    }
+    return txt;
+  }
+
   private String getFinalErrorMessage() {
     String txt;
     if (Utils.isCli()) {

--
Gitblit v1.10.0