From 48e80eab907c573ab60a3daaaa29e9a66501adfd Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 20 Jan 2015 14:17:43 +0000
Subject: [PATCH] More code cleanup

---
 opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java |  108 ++++++++++++-----------------------------------------
 1 files changed, 25 insertions(+), 83 deletions(-)

diff --git a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java
index fea2d44..b611a29 100644
--- a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java
+++ b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java
@@ -244,20 +244,15 @@
         addGlobalArgument(argument, null);
     }
 
-
-    /**
-     * Adds the provided argument to the set of arguments handled by this parser and puts the argument in the LDAP
-     * connection group.
-     *
-     * @param argument
-     *            The argument to add to this sub command.
-     * @throws ArgumentException
-     *             If the provided argument conflicts with another global or subcommand argument that has already been
-     *             defined.
-     */
+    /** {@inheritDoc} */
     @Override
-    public void addLdapConnectionArgument(final Argument argument) throws ArgumentException {
-        addGlobalArgument(argument, null);
+    public void addArgument(Argument argument) throws ArgumentException {
+        final ArgumentGroup group = getStandardGroup(argument);
+        if (group == ldapArgGroup) {
+            addGlobalArgument(argument);
+        } else {
+            super.addArgument(argument);
+        }
     }
 
     /**
@@ -501,8 +496,7 @@
                             writeToUsageOutputStream(getUsage());
                             return;
                         } else if (OPTION_LONG_PRODUCT_VERSION.equals(argName) && getVersionHandler() != null) {
-                            // "--version" will always be interpreted as requesting usage
-                            // information.
+                            // "--version" will always be interpreted as requesting usage information.
                             printVersion();
                             return;
                         } else if (subCommand != null) {
@@ -765,7 +759,7 @@
      * @param subCommand
      *            The subcommand for which to display the usage information.
      */
-    public void getSubCommandUsage(LocalizableMessageBuilder buffer, SubCommand subCommand) {
+    public void getSubCommandUsage(StringBuilder buffer, SubCommand subCommand) {
         setUsageOrVersionDisplayed(true);
         String scriptName = System.getProperty(PROPERTY_SCRIPT_NAME);
         if (scriptName == null || scriptName.length() == 0) {
@@ -801,64 +795,13 @@
             buffer.append(EOL);
         }
 
-        final Argument usageArgument = getUsageArgument();
         for (Argument a : subCommand.getArguments()) {
             // If this argument is hidden, then skip it.
             if (a.isHidden()) {
                 continue;
             }
 
-            // Write a line with the short and/or long identifiers that may be used
-            // for the argument.
-            Character shortID = a.getShortIdentifier();
-            String longID = a.getLongIdentifier();
-            if (shortID != null) {
-                int currentLength = buffer.length();
-
-                if (a.equals(usageArgument)) {
-                    buffer.append("-?, ");
-                }
-
-                buffer.append("-");
-                buffer.append(shortID.charValue());
-
-                if (a.needsValue() && longID == null) {
-                    buffer.append(" ");
-                    buffer.append(a.getValuePlaceholder());
-                }
-
-                if (longID != null) {
-                    StringBuilder newBuffer = new StringBuilder();
-                    newBuffer.append(", --");
-                    newBuffer.append(longID);
-
-                    if (a.needsValue()) {
-                        newBuffer.append(" ");
-                        newBuffer.append(a.getValuePlaceholder());
-                    }
-
-                    int lineLength = (buffer.length() - currentLength) + newBuffer.length();
-                    if (lineLength > MAX_LINE_WIDTH) {
-                        buffer.append(EOL);
-                    }
-                    buffer.append(newBuffer);
-                }
-
-                buffer.append(EOL);
-            } else if (longID != null) {
-                if (a.equals(usageArgument)) {
-                    buffer.append("-?, ");
-                }
-                buffer.append("--");
-                buffer.append(longID);
-
-                if (a.needsValue()) {
-                    buffer.append(" ");
-                    buffer.append(a.getValuePlaceholder());
-                }
-
-                buffer.append(EOL);
-            }
+            printLineForShortLongArgument(a, buffer);
 
             indentAndWrap2(INDENT, a.getDescription(), buffer);
             if (a.needsValue() && a.getDefaultValue() != null && a.getDefaultValue().length() > 0) {
@@ -873,7 +816,7 @@
      * <p>
      * FIXME Try to merge with #indentAndWrap(LocalizableMessage, LocalizableMessage, LocalizableMessageBuilder).
      */
-    private void indentAndWrap2(String indent, LocalizableMessage text, LocalizableMessageBuilder buffer) {
+    private void indentAndWrap2(String indent, LocalizableMessage text, StringBuilder buffer) {
         int actualSize = MAX_LINE_WIDTH - indent.length() - 1;
         indentAndWrap(indent, actualSize, text, buffer);
     }
@@ -885,7 +828,7 @@
      */
     @Override
     public String getUsage() {
-        LocalizableMessageBuilder buffer = new LocalizableMessageBuilder();
+        final StringBuilder buffer = new StringBuilder();
 
         if (subCommand == null) {
             if (System.getProperty("org.forgerock.opendj.gendoc") != null) {
@@ -905,7 +848,7 @@
             getSubCommandUsage(buffer, subCommand);
         }
 
-        return buffer.toMessage().toString();
+        return buffer.toString();
     }
 
     /**
@@ -940,15 +883,15 @@
 
     /** Get usage for a specific usage argument. */
     private void getUsage(Argument a) {
-        LocalizableMessageBuilder buffer = new LocalizableMessageBuilder();
+        final StringBuilder buffer = new StringBuilder();
 
-        final Argument usageArgument = getUsageArgument();
-        if (a.equals(usageArgument) && subCommand != null) {
+        final boolean isUsageArgument = isUsageArgument(a);
+        if (isUsageArgument && subCommand != null) {
             getSubCommandUsage(buffer, subCommand);
-        } else if (a.equals(usageArgument) && usageGroupArguments.size() <= 1) {
+        } else if (isUsageArgument && usageGroupArguments.size() <= 1) {
             // No groups - so display all sub-commands.
             getFullUsage(subCommands.values(), true, buffer);
-        } else if (a.equals(usageArgument)) {
+        } else if (isUsageArgument) {
             // Using groups - so display all sub-commands group help.
             getFullUsage(Collections.<SubCommand> emptySet(), true, buffer);
         } else {
@@ -962,7 +905,7 @@
     /**
      * Appends complete usage information for the specified set of sub-commands.
      */
-    private void getFullUsage(Collection<SubCommand> c, boolean showGlobalOptions, LocalizableMessageBuilder buffer) {
+    private void getFullUsage(Collection<SubCommand> c, boolean showGlobalOptions, StringBuilder buffer) {
         setUsageOrVersionDisplayed(true);
 
         final LocalizableMessage toolDescription = getToolDescription();
@@ -996,7 +939,6 @@
             buffer.append(EOL);
         }
 
-        final Argument usageArgument = getUsageArgument();
         if (c.isEmpty()) {
             // Display usage arguments (except the default one).
             for (Argument a : globalArgumentList) {
@@ -1004,7 +946,7 @@
                     continue;
                 }
 
-                if (usageGroupArguments.containsKey(a) && !a.equals(usageArgument)) {
+                if (usageGroupArguments.containsKey(a) && !isUsageArgument(a)) {
                     printArgumentUsage(a, buffer);
                 }
             }
@@ -1061,6 +1003,7 @@
             }
 
             // Finally print default usage argument.
+            final Argument usageArgument = getUsageArgument();
             if (usageArgument != null) {
                 printArgumentUsage(usageArgument, buffer);
             } else {
@@ -1078,7 +1021,7 @@
      * @param buffer
      *            The buffer to which the usage information should be appended.
      */
-    private void printArgumentUsage(Argument a, LocalizableMessageBuilder buffer) {
+    private void printArgumentUsage(Argument a, StringBuilder buffer) {
         String value;
         if (a.needsValue()) {
             LocalizableMessage pHolder = a.getValuePlaceholder();
@@ -1130,13 +1073,12 @@
      * Write one or more lines with the description of the argument. We will indent the description five characters and
      * try our best to wrap at or before column 79 so it will be friendly to 80-column displays.
      */
-    private void indentAndWrap(String indent, LocalizableMessage text, LocalizableMessageBuilder buffer) {
+    private void indentAndWrap(String indent, LocalizableMessage text, StringBuilder buffer) {
         int actualSize = MAX_LINE_WIDTH - indent.length();
         indentAndWrap(indent, actualSize, text, buffer);
     }
 
-    static void indentAndWrap(String indent, int actualSize, LocalizableMessage text,
-            LocalizableMessageBuilder buffer) {
+    static void indentAndWrap(String indent, int actualSize, LocalizableMessage text, StringBuilder buffer) {
         if (text.length() <= actualSize) {
             buffer.append(indent);
             buffer.append(text);

--
Gitblit v1.10.0