From a746e30f968e6d0e544e7d30b18245b3018c2838 Mon Sep 17 00:00:00 2001
From: lutoff <lutoff@localhost>
Date: Thu, 24 May 2007 08:13:25 +0000
Subject: [PATCH] fix for issue #1635 (In CLi Usage, the 'help' information shoud be the last element)

---
 opends/src/server/org/opends/server/util/args/ArgumentParser.java |  276 ++++++++++++++++++++++++++++++------------------------
 1 files changed, 152 insertions(+), 124 deletions(-)

diff --git a/opends/src/server/org/opends/server/util/args/ArgumentParser.java b/opends/src/server/org/opends/server/util/args/ArgumentParser.java
index 5428335..aed1cc7 100644
--- a/opends/src/server/org/opends/server/util/args/ArgumentParser.java
+++ b/opends/src/server/org/opends/server/util/args/ArgumentParser.java
@@ -1050,6 +1050,7 @@
     buffer.append( getMessage(MSGID_DESCRIPTION_PRODUCT_VERSION));
     buffer.append(EOL);
 
+    Argument helpArgument = null ;
     for (Argument a : argumentList)
     {
       // If this argument is hidden, then skip it.
@@ -1058,133 +1059,20 @@
         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)
+      // Help argument should be printed at the end
+      if ((usageArgument != null) ? usageArgument.getName().equals(a.getName())
+          : false)
       {
-        int currentLength = buffer.length();
-
-        if (usageArgument.getName().equals(a.getName()))
-        {
-          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 > 80)
-          {
-            buffer.append(EOL);
-            buffer.append(newBuffer.toString());
-          }
-          else
-          {
-            buffer.append(newBuffer.toString());
-          }
-        }
-
-        buffer.append(EOL);
+        helpArgument = a ;
+        continue ;
       }
-      else
-      {
-        if (longID != null)
-        {
-          if (usageArgument.getName().equals(a.getName()))
-          {
-            buffer.append("-?, ");
-          }
-          buffer.append("--");
-          buffer.append(longID);
-
-          if (a.needsValue())
-          {
-            buffer.append(" ");
-            buffer.append(a.getValuePlaceholder());
-          }
-
-          buffer.append(EOL);
-        }
-      }
-
-
-      // 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.
-      String description = a.getDescription();
-      if (description.length() <= 75)
-      {
-        buffer.append("    ");
-        buffer.append(description);
-        buffer.append(EOL);
-      }
-      else
-      {
-        String s = description;
-        while (s.length() > 75)
-        {
-          int spacePos = s.lastIndexOf(' ', 75);
-          if (spacePos > 0)
-          {
-            buffer.append("    ");
-            buffer.append(s.substring(0, spacePos).trim());
-            s = s.substring(spacePos+1).trim();
-            buffer.append(EOL);
-          }
-          else
-          {
-            // There are no spaces in the first 74 columns.  See if there is one
-            // after that point.  If so, then break there.  If not, then don't
-            // break at all.
-            spacePos = s.indexOf(' ');
-            if (spacePos > 0)
-            {
-              buffer.append("    ");
-              buffer.append(s.substring(0, spacePos).trim());
-              s = s.substring(spacePos+1).trim();
-              buffer.append(EOL);
-            }
-            else
-            {
-              buffer.append("    ");
-              buffer.append(s);
-              s = "";
-              buffer.append(EOL);
-            }
-          }
-        }
-
-        if (s.length() > 0)
-        {
-          buffer.append("    ");
-          buffer.append(s);
-          buffer.append(EOL);
-        }
-      }
+      printArgumentUsage(a, buffer);
     }
-    if (usageArgument == null)
+    if (helpArgument != null)
+    {
+      printArgumentUsage(helpArgument, buffer);
+    }
+    else
     {
       buffer.append(EOL);
       buffer.append("-?");
@@ -1245,5 +1133,145 @@
     return usageOrVersionDisplayed;
   }
 
+  /**
+  * Appends argument usage information to the provided buffer.
+  *
+  * @param a The argument to handle.
+  * @param buffer
+  *          The buffer to which the usage information should be
+  *          appended.
+  */
+   private void printArgumentUsage(Argument a, StringBuilder buffer)
+  {
+    // 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 (usageArgument.getName().equals(a.getName()))
+      {
+        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 > 80)
+        {
+          buffer.append(EOL);
+          buffer.append(newBuffer.toString());
+        }
+        else
+        {
+          buffer.append(newBuffer.toString());
+        }
+      }
+
+      buffer.append(EOL);
+    }
+    else
+    {
+      if (longID != null)
+      {
+        if (usageArgument.getName().equals(a.getName()))
+        {
+          buffer.append("-?, ");
+        }
+        buffer.append("--");
+        buffer.append(longID);
+
+        if (a.needsValue())
+        {
+          buffer.append(" ");
+          buffer.append(a.getValuePlaceholder());
+        }
+
+        buffer.append(EOL);
+      }
+    }
+
+
+    // 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.
+    String description = a.getDescription();
+    if (description.length() <= 75)
+    {
+      buffer.append("    ");
+      buffer.append(description);
+      buffer.append(EOL);
+    }
+    else
+    {
+      String s = description;
+      while (s.length() > 75)
+      {
+        int spacePos = s.lastIndexOf(' ', 75);
+        if (spacePos > 0)
+        {
+          buffer.append("    ");
+          buffer.append(s.substring(0, spacePos).trim());
+          s = s.substring(spacePos+1).trim();
+          buffer.append(EOL);
+        }
+        else
+        {
+          // There are no spaces in the first 74 columns. See if there
+          // is one
+          // after that point. If so, then break there. If not, then
+          // don't
+          // break at all.
+          spacePos = s.indexOf(' ');
+          if (spacePos > 0)
+          {
+            buffer.append("    ");
+            buffer.append(s.substring(0, spacePos).trim());
+            s = s.substring(spacePos+1).trim();
+            buffer.append(EOL);
+          }
+          else
+          {
+            buffer.append("    ");
+            buffer.append(s);
+            s = "";
+            buffer.append(EOL);
+          }
+        }
+      }
+
+      if (s.length() > 0)
+      {
+        buffer.append("    ");
+        buffer.append(s);
+        buffer.append(EOL);
+      }
+    }
+  }
 }
 

--
Gitblit v1.10.0