From f738665ce7ea61f640e4219c8bfd590efea22650 Mon Sep 17 00:00:00 2001
From: kenneth_suter <kenneth_suter@localhost>
Date: Thu, 29 Mar 2007 21:37:27 +0000
Subject: [PATCH] - Created CliApplication interface which defines a common inteface between CliApplications and controlling logic.
---
opends/src/quicksetup/org/opends/quicksetup/uninstaller/UninstallLauncher.java | 222 ++++++++++++-------------------------------------------
1 files changed, 49 insertions(+), 173 deletions(-)
diff --git a/opends/src/quicksetup/org/opends/quicksetup/uninstaller/UninstallLauncher.java b/opends/src/quicksetup/org/opends/quicksetup/uninstaller/UninstallLauncher.java
index 1f21e61..0fb0adc 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/uninstaller/UninstallLauncher.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/uninstaller/UninstallLauncher.java
@@ -27,11 +27,8 @@
package org.opends.quicksetup.uninstaller;
-import java.io.ByteArrayOutputStream;
-import java.io.PrintStream;
-
-import org.opends.quicksetup.SplashScreen;
-import org.opends.quicksetup.i18n.ResourceProvider;
+import org.opends.quicksetup.CliApplication;
+import org.opends.quicksetup.Launcher;
import org.opends.quicksetup.util.Utils;
/**
@@ -39,198 +36,77 @@
* of the Directory Server. It just checks the command line arguments and the
* environment and determines whether the graphical or the command line
* based uninstall much be launched.
- *
*/
-public class UninstallLauncher
-{
+public class UninstallLauncher extends Launcher {
+
/**
- * The main method which is called by the uninstall command lines.
+ * The main method which is called by the setup command lines.
+ *
+ * @param args the arguments passed by the command lines. In the case
+ * we want to launch the cli setup they are basically the arguments that we
+ * will pass to the org.opends.server.tools.InstallDS class.
+ */
+ public static void main(String[] args) {
+ new UninstallLauncher(args).launch();
+ }
+
+ /**
+ * Creates a launcher.
+ *
* @param args the arguments passed by the command lines.
*/
- public static void main(String[] args)
- {
- boolean printUsage = false;
- boolean useCli = false;
- if ((args != null) && (args.length > 0))
- {
- for (int i = 0; i < args.length; i++)
- {
- if (args[i].equalsIgnoreCase("--cli"))
- {
- useCli = true;
- }
- else if (args[i].equalsIgnoreCase("-H") ||
- args[i].equalsIgnoreCase("--help"))
- {
- printUsage = true;
- }
- }
-
- if (!useCli)
- {
- if (args.length > 0)
- {
- printUsage = true;
- }
- }
- }
- if (printUsage)
- {
- printUsage();
- System.exit(1);
- } else if (useCli)
- {
- int exitCode = launchCliUninstall(args);
- if (exitCode != 0)
- {
- System.exit(exitCode);
- }
- } else
- {
- System.setProperty("org.opends.quicksetup.uninstall", "true");
- System.setProperty("org.opends.quicksetup.Application.class",
- "org.opends.quicksetup.uninstaller.Uninstaller");
- int exitCode = launchGuiUninstall(args);
- if (exitCode != 0)
- {
- System.err.println(getMsg("uninstall-launcher-gui-launched-failed"));
- exitCode = launchCliUninstall(args);
- if (exitCode != 0)
- {
- System.exit(exitCode);
- }
- }
- }
+ public UninstallLauncher(String[] args) {
+ super(args);
}
/**
- * Launches the command line based uninstall.
- * @param args the arguments passed
- * @return 0 if everything worked fine, and an error code if something wrong
- * occurred.
+ * {@inheritDoc}
*/
- private static int launchCliUninstall(String[] args)
- {
- System.setProperty("org.opends.quicksetup.cli", "true");
-
- UninstallCli cli = new UninstallCli(args);
- int returnValue = cli.run();
- if (returnValue == UninstallCli.USER_DATA_ERROR)
- {
- printUsage();
- }
-// Add an extra space systematically
- System.out.println();
-
- return returnValue;
+ protected void guiLaunchFailed() {
+ System.err.println(getMsg("uninstall-launcher-gui-launched-failed"));
}
/**
- * Launches the graphical uninstall. The graphical uninstall is launched in a
- * different thread that the main thread because if we have a problem with the
- * graphical system (for instance the DISPLAY environment variable is not
- * correctly set) the native libraries will call exit. However if we launch
- * this from another thread, the thread will just be killed.
- *
- * This code also assumes that if the call to SplashWindow.main worked (and
- * the splash screen was displayed) we will never get out of it (we will call
- * a System.exit() when we close the graphical uninstall dialog).
- *
- * @params String[] args the arguments used to call the SplashWindow main
- * method
- * @return 0 if everything worked fine, or 1 if we could not display properly
- * the SplashWindow.
+ * {@inheritDoc}
*/
- private static int launchGuiUninstall(final String[] args)
- {
+ protected void willLaunchGui() {
System.out.println(getMsg("uninstall-launcher-launching-gui"));
- final int[] returnValue =
- { -1 };
- Thread t = new Thread(new Runnable()
- {
- public void run()
- {
- // Setup MacOSX native menu bar before AWT is loaded.
- Utils.setMacOSXMenuBar(getMsg("frame-uninstall-title"));
- SplashScreen.main(args);
- returnValue[0] = 0;
- }
- });
- /*
- * This is done to avoid displaying the stack that might occur if there are
- * problems with the display environment.
- */
- PrintStream printStream = System.err;
- System.setErr(new EmptyPrintStream());
- t.start();
- try
- {
- t.join();
- }
- catch (InterruptedException ie)
- {
- /* An error occurred, so the return value will be -1. We got nothing to
- do with this exception. */
- }
- System.setErr(printStream);
- return returnValue[0];
+ System.setProperty("org.opends.quicksetup.uninstall", "true");
+ System.setProperty("org.opends.quicksetup.Application.class",
+ "org.opends.quicksetup.uninstaller.Uninstaller");
}
- private static void printUsage()
- {
+ /**
+ * {@inheritDoc}
+ */
+ protected CliApplication createCliApplication() {
+ return new Uninstaller();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected String getFrameTitle() {
+ return getMsg("frame-uninstall-title");
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected void printUsage() {
String arg;
- if (Utils.isWindows())
- {
+ if (Utils.isWindows()) {
arg = Utils.getWindowsUninstallFileName();
- } else
- {
+ } else {
arg = Utils.getUnixUninstallFileName();
}
+ String msg = getMsg("uninstall-launcher-usage");
/*
* This is required because the usage message contains '{' characters that
* mess up the MessageFormat.format method.
*/
- String msg = getMsg("uninstall-launcher-usage");
msg = msg.replace("{0}", arg);
- System.err.println(msg);
+ printUsage(msg);
}
- /**
- * The following three methods are just commodity methods to get localized
- * messages.
- */
- private static String getMsg(String key)
- {
- return org.opends.server.util.StaticUtils.wrapText(getI18n().getMsg(key),
- Utils.getCommandLineMaxLineWidth());
- }
-
- private static ResourceProvider getI18n()
- {
- return ResourceProvider.getInstance();
- }
-
- /**
- * This class is used to avoid displaying the error message related to display
- * problems that we might have when trying to display the SplashWindow.
- *
- */
- static class EmptyPrintStream extends PrintStream
- {
- /**
- * Default constructor.
- *
- */
- public EmptyPrintStream()
- {
- super(new ByteArrayOutputStream(), true);
- }
-
- /**
- * {@inheritDoc}
- */
- public void println(String msg)
- {
- }
- }
}
--
Gitblit v1.10.0