From 9c88e7e8be7dde117ada9ae483d535b99c6c11dc Mon Sep 17 00:00:00 2001
From: Violette Roche-Montane <violette.roche-montane@forgerock.com>
Date: Tue, 25 Feb 2014 10:35:48 +0000
Subject: [PATCH] Checkpoint OPENDJ-1343 Migrate dsconfig - Code cleanup. Thanks to AutoRefactor ;)

---
 opendj3-server-dev/src/server/org/opends/server/tools/dsconfig/DSConfig.java |  247 ++++++++++++++++++++----------------------------
 1 files changed, 103 insertions(+), 144 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/tools/dsconfig/DSConfig.java b/opendj3-server-dev/src/server/org/opends/server/tools/dsconfig/DSConfig.java
index 0d16ad7..f0f6ee6 100644
--- a/opendj3-server-dev/src/server/org/opends/server/tools/dsconfig/DSConfig.java
+++ b/opendj3-server-dev/src/server/org/opends/server/tools/dsconfig/DSConfig.java
@@ -76,8 +76,6 @@
 import org.opends.server.types.InitializationException;
 import org.opends.server.util.BuildVersion;
 import org.opends.server.util.EmbeddedUtils;
-import org.opends.server.util.ServerConstants;
-import org.opends.server.util.StaticUtils;
 
 import com.forgerock.opendj.cli.ArgumentException;
 import com.forgerock.opendj.cli.BooleanArgument;
@@ -103,11 +101,16 @@
 public final class DSConfig extends ConsoleApplication {
 
   /**
+   * The name of this tool.
+   */
+  final static String DSCONFIGTOOLNAME = "dsconfig";
+
+  /**
    * A menu call-back which runs a sub-command interactively.
    */
   private class SubCommandHandlerMenuCallback implements MenuCallback<Integer> {
 
-    // The sub-command handler.
+    /** The sub-command handler. */
     private final SubCommandHandler handler;
 
 
@@ -124,9 +127,7 @@
 
 
 
-    /**
-     * {@inheritDoc}
-     */
+    /** {@inheritDoc} */
     @Override
     public MenuResult<Integer> invoke(ConsoleApplication app)
     throws ClientException {
@@ -163,7 +164,7 @@
    */
   private class SubMenuCallback implements MenuCallback<Integer> {
 
-    // The menu.
+    /** The menu. */
     private final Menu<Integer> menu;
 
 
@@ -254,9 +255,7 @@
 
 
 
-    /**
-     * {@inheritDoc}
-     */
+    /** {@inheritDoc} */
     @Override
     public final MenuResult<Integer> invoke(ConsoleApplication app)
     throws ClientException {
@@ -293,7 +292,7 @@
    */
   public static final String GENERIC_TYPE = "generic";
 
-  // This CLI is always using the administration connector with SSL
+  /** This CLI is always using the administration connector with SSL. */
   private static final boolean alwaysSSL = true;
 
   private long sessionStartTime;
@@ -357,67 +356,81 @@
     return app.run(args);
   }
 
-  // The argument which should be used to request advanced mode.
+  /** The argument which should be used to request advanced mode. */
   private BooleanArgument advancedModeArgument;
 
-  // Flag indicating whether or not the application environment has
-  // already been initialized.
+  /**
+   * Flag indicating whether or not the application environment has already been
+   * initialized.
+   */
   private boolean environmentInitialized = false;
 
-  // The factory which the application should use to retrieve its
-  // management context.
+  /**
+   * The factory which the application should use to retrieve its management
+   * context.
+   */
   private final ManagementContextFactory factory;
 
-  // Flag indicating whether or not the global arguments have
-  // already been initialized.
+  /**
+   * Flag indicating whether or not the global arguments have already been
+   * initialized.
+   */
   private boolean globalArgumentsInitialized = false;
 
-  // The sub-command handler factory.
+  /** The sub-command handler factory. */
   private SubCommandHandlerFactory handlerFactory = null;
 
-  // Mapping of sub-commands to their implementations;
+  /** Mapping of sub-commands to their implementations. */
   private final Map<SubCommand, SubCommandHandler> handlers =
     new HashMap<SubCommand, SubCommandHandler>();
 
-  // Indicates whether or not a sub-command was provided.
+  /** Indicates whether or not a sub-command was provided. */
   private boolean hasSubCommand = true;
 
-  // The argument which should be used to read dsconfig commands from a file.
+  /** The argument which should be used to read dsconfig commands from a file. */
   private StringArgument batchFileArgument;
 
-  // The argument which should be used to request non interactive
-  // behavior.
+  /**
+   * The argument which should be used to request non interactive behavior.
+   */
   private BooleanArgument noPromptArgument;
 
-  // The argument that the user must set to display the equivalent
-  // non-interactive mode argument
+  /**
+   * The argument that the user must set to display the equivalent
+   * non-interactive mode argument.
+   */
   private BooleanArgument displayEquivalentArgument;
 
-  // The argument that allows the user to dump the equivalent non-interactive
-  // command to a file.
+  /**
+   * The argument that allows the user to dump the equivalent non-interactive
+   * command to a file.
+   */
   private StringArgument equivalentCommandFileArgument;
 
-  // The command-line argument parser.
+  /** The command-line argument parser. */
   private final SubCommandArgumentParser parser;
 
-  // The argument which should be used to request quiet output.
+  /** The argument which should be used to request quiet output. */
   private BooleanArgument quietArgument;
 
-  // The argument which should be used to request script-friendly
-  // output.
+  /**
+   * The argument which should be used to request script-friendly output.
+   */
   private BooleanArgument scriptFriendlyArgument;
 
-  // The argument which should be used to request usage information.
+  /** The argument which should be used to request usage information. */
   private BooleanArgument showUsageArgument;
 
-  // The argument which should be used to request verbose output.
+  /** The argument which should be used to request verbose output. */
   private BooleanArgument verboseArgument;
 
-  // The argument which should be used to indicate the properties file.
+  /** The argument which should be used to indicate the properties file. */
   private StringArgument propertiesFileArgument;
 
-  // The argument which should be used to indicate that we will not look for
-  // properties file.
+  /**
+   * The argument which should be used to indicate that we will not look for
+   * properties file.
+   */
   private BooleanArgument noPropertiesFileArgument;
 
   /**
@@ -437,7 +450,7 @@
       ManagementContextFactory factory) {
     super(new PrintStream(out), new PrintStream(err));
 
-    this.parser = new SubCommandArgumentParser(this.getClass().getName(),
+    this.parser = new SubCommandArgumentParser(getClass().getName(),
         INFO_CONFIGDS_TOOL_DESCRIPTION.get(), false);
 
     this.factory = factory;
@@ -453,7 +466,7 @@
    *           If the core APIs could not be initialized.
    */
   private void initializeClientEnvironment() throws InitializationException {
-    if (environmentInitialized == false) {
+    if (!environmentInitialized) {
       EmbeddedUtils.initializeForClientUse();
 
       // Bootstrap definition classes.
@@ -471,9 +484,7 @@
 
 
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isAdvancedMode() {
     return advancedModeArgument.isPresent();
@@ -481,9 +492,7 @@
 
 
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isInteractive() {
     return !noPromptArgument.isPresent();
@@ -491,9 +500,7 @@
 
 
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isMenuDrivenMode() {
     return !hasSubCommand;
@@ -501,9 +508,7 @@
 
 
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isQuiet() {
     return quietArgument.isPresent();
@@ -511,9 +516,7 @@
 
 
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isScriptFriendly() {
     return scriptFriendlyArgument.isPresent();
@@ -521,9 +524,7 @@
 
 
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isVerbose() {
     return verboseArgument.isPresent();
@@ -531,7 +532,7 @@
 
 
 
-  // Displays the provided message followed by a help usage reference.
+  /** Displays the provided message followed by a help usage reference. */
   private void displayMessageAndUsageReference(LocalizableMessage message) {
     println(message);
     println();
@@ -548,7 +549,7 @@
    */
   private void initializeGlobalArguments(String[] args)
   throws ArgumentException {
-    if (globalArgumentsInitialized == false) {
+    if (!globalArgumentsInitialized) {
 
       verboseArgument = CommonArguments.getVerbose();
       quietArgument = CommonArguments.getQuiet();
@@ -841,7 +842,7 @@
 
 
 
-  // Run the top-level interactive console.
+  /** Run the top-level interactive console. */
   private int runInteractiveMode() {
 
     ConsoleApplication app = this;
@@ -958,7 +959,7 @@
 
 
 
-  // Run the provided sub-command handler.
+  /** Run the provided sub-command handler. */
   private int runSubCommand(SubCommandHandler handler) {
     try {
       MenuResult<Integer> result = handler.run(this, factory);
@@ -1003,82 +1004,41 @@
 
       return 1;
     } catch (Exception e) {
-      println(LocalizableMessage.raw(StaticUtils.stackTraceToString(e)));
+      println(LocalizableMessage.raw(stackTraceToString(e)));
       return 1;
     }
   }
 
   /**
    * Updates the command builder with the global options: script friendly,
-   * verbose, etc. for a given subcommand.  It also adds systematically the
+   * verbose, etc. for a given sub command. It also adds systematically the
    * no-prompt option.
-   * @param handler the subcommand handler.
+   *
+   * @param <T>
+   *          SubCommand type.
+   * @param subCommand
+   *          The sub command handler or common.
+   * @return <T> The builded command.
    */
-  private CommandBuilder getCommandBuilder(SubCommandHandler handler)
+  <T> CommandBuilder getCommandBuilder(final T subCommand)
   {
-    String commandName =
-      System.getProperty(ServerConstants.PROPERTY_SCRIPT_NAME);
+    String commandName = System.getProperty(PROPERTY_SCRIPT_NAME);
     if (commandName == null)
     {
-      commandName = "dsconfig";
+      commandName = DSCONFIGTOOLNAME;
     }
-
-    CommandBuilder commandBuilder =
-      new CommandBuilder(commandName, handler.getSubCommand().getName());
-
-    commandBuilder.append(handler.getCommandBuilder());
-
-    if ((factory != null) && (factory.getContextCommandBuilder() != null))
+    CommandBuilder commandBuilder = null;
+    if (subCommand instanceof SubCommandHandler)
     {
-      commandBuilder.append(factory.getContextCommandBuilder());
+      commandBuilder =
+          new CommandBuilder(commandName, ((SubCommandHandler) subCommand)
+              .getSubCommand().getName());
     }
-
-    if (verboseArgument.isPresent())
+    else
     {
-      commandBuilder.addArgument(verboseArgument);
+      commandBuilder = new CommandBuilder(commandName, (String) subCommand);
     }
-
-    if (scriptFriendlyArgument.isPresent())
-    {
-      commandBuilder.addArgument(scriptFriendlyArgument);
-    }
-
-    commandBuilder.addArgument(noPromptArgument);
-
-    if (propertiesFileArgument.isPresent())
-    {
-      commandBuilder.addArgument(propertiesFileArgument);
-    }
-
-    if (noPropertiesFileArgument.isPresent())
-    {
-      commandBuilder.addArgument(noPropertiesFileArgument);
-    }
-
-    return commandBuilder;
-  }
-
-  /**
-   * Creates a command builder with the global options: script friendly,
-   * verbose, etc. for a given subcommand name.  It also adds systematically the
-   * no-prompt option.
-   * @param subcommandName the subcommand name.
-   * @return the command builder that has been created with the specified
-   * subcommandName.
-   */
-  CommandBuilder getCommandBuilder(String subcommandName)
-  {
-    String commandName =
-      System.getProperty(ServerConstants.PROPERTY_SCRIPT_NAME);
-    if (commandName == null)
-    {
-      commandName = "dsconfig";
-    }
-
-    CommandBuilder commandBuilder =
-      new CommandBuilder(commandName, subcommandName);
-
-    if ((factory != null) && (factory.getContextCommandBuilder() != null))
+    if (factory != null && factory.getContextCommandBuilder() != null)
     {
       commandBuilder.append(factory.getContextCommandBuilder());
     }
@@ -1126,10 +1086,10 @@
     if (equivalentCommandFileArgument.isPresent())
     {
       String file = equivalentCommandFileArgument.getValue();
+      BufferedWriter writer = null;
       try
       {
-        BufferedWriter writer =
-          new BufferedWriter(new FileWriter(file, true));
+        writer = new BufferedWriter(new FileWriter(file, true));
 
         if (!sessionStartTimePrinted)
         {
@@ -1153,12 +1113,15 @@
         writer.newLine();
 
         writer.flush();
-        writer.close();
       }
       catch (IOException ioe)
       {
         println(ERR_DSCFG_ERROR_WRITING_EQUIVALENT_COMMAND_LINE.get(file, ioe));
       }
+      finally
+      {
+        close(writer);
+      }
     }
   }
 
@@ -1171,17 +1134,19 @@
   private String getSessionStartTimeMessage()
   {
     String scriptName = System.getProperty(PROPERTY_SCRIPT_NAME);
-    if ((scriptName == null) || (scriptName.length() == 0))
+    if (scriptName == null || scriptName.length() == 0)
     {
-      scriptName = "dsconfig";
+      scriptName = DSCONFIGTOOLNAME;
     }
-    String date = formatDateTimeStringForEquivalentCommand(
+    final String date = formatDateTimeStringForEquivalentCommand(
         new Date(sessionStartTime));
     return INFO_DSCFG_SESSION_START_TIME_MESSAGE.get(scriptName, date).
     toString();
   }
 
   private void handleBatchFile(String[] args) {
+
+    BufferedReader bReader = null;
     try {
       // Build a list of initial arguments,
       // removing the batch file option + its value
@@ -1201,15 +1166,13 @@
         initialArgs.remove(batchFileArgIndex);
       }
       String batchFilePath = batchFileArgument.getValue().trim();
-      BufferedReader reader =
+      bReader =
               new BufferedReader(new FileReader(batchFilePath));
       String line;
       String command = "";
-      //
       // Split the CLI string into arguments array
-      //
-      while ((line = reader.readLine()) != null) {
-         if (line.equals("") || line.startsWith("#")) {
+      while ((line = bReader.readLine()) != null) {
+         if ("".equals(line) || line.startsWith("#")) {
           // Empty line or comment
           continue;
         }
@@ -1248,35 +1211,31 @@
         int exitCode =
                 main(allArgsArray, false, getOutputStream(), getErrorStream());
         if (exitCode != 0) {
-          reader.close();
+          bReader.close();
           System.exit(filterExitCode(exitCode));
         }
         errPrintln();
       }
-      reader.close();
+      bReader.close();
 
     } catch (IOException ex) {
       println(ERR_DSCFG_ERROR_READING_BATCH_FILE.get(ex));
+    } finally {
+      close(bReader);
     }
   }
 
-  // Replace spaces in quotes by "\ "
+  /** Replace spaces in quotes by "\ ". */
   private String replaceSpacesInQuotes(String line) {
     String newLine = "";
     boolean inQuotes = false;
     for (int ii = 0; ii < line.length(); ii++) {
       char ch = line.charAt(ii);
-      if ((ch == '\"') || (ch == '\'')) {
-        if (!inQuotes) {
-          // enter in a quoted string
-          inQuotes = true;
-        } else {
-          // end of a quoted string
-          inQuotes = false;
-        }
+      if (ch == '\"' || ch == '\'') {
+        inQuotes = !inQuotes;
         continue;
       }
-      if (inQuotes && (ch == ' ')) {
+      if (inQuotes && ch == ' ') {
         newLine += "\\ ";
       } else {
         newLine += ch;

--
Gitblit v1.10.0