You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oodt.apache.org by bf...@apache.org on 2011/11/25 05:35:19 UTC

svn commit: r1206056 - in /oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli: help/ printer/StdCmdLinePrinter.java util/CmdLineUtils.java

Author: bfoster
Date: Fri Nov 25 04:35:18 2011
New Revision: 1206056

URL: http://svn.apache.org/viewvc?rev=1206056&view=rev
Log:
- removed unused help directory
- StdCmdLinePrinter didn't print optional sub-options for group options... fixed!

----------
OODT-354

Removed:
    oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/help/
Modified:
    oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/printer/StdCmdLinePrinter.java
    oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/util/CmdLineUtils.java

Modified: oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/printer/StdCmdLinePrinter.java
URL: http://svn.apache.org/viewvc/oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/printer/StdCmdLinePrinter.java?rev=1206056&r1=1206055&r2=1206056&view=diff
==============================================================================
--- oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/printer/StdCmdLinePrinter.java (original)
+++ oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/printer/StdCmdLinePrinter.java Fri Nov 25 04:35:18 2011
@@ -19,6 +19,7 @@ package org.apache.oodt.cas.cli.printer;
 //OODT static imports
 import static org.apache.oodt.cas.cli.util.CmdLineUtils.asGroupOption;
 import static org.apache.oodt.cas.cli.util.CmdLineUtils.determineOptional;
+import static org.apache.oodt.cas.cli.util.CmdLineUtils.determineRelevantSubOptions;
 import static org.apache.oodt.cas.cli.util.CmdLineUtils.determineRequired;
 import static org.apache.oodt.cas.cli.util.CmdLineUtils.determineRequiredSubOptions;
 import static org.apache.oodt.cas.cli.util.CmdLineUtils.getFormattedString;
@@ -40,8 +41,8 @@ import org.apache.oodt.cas.cli.option.Cm
 import org.apache.oodt.cas.cli.option.GroupCmdLineOption;
 import org.apache.oodt.cas.cli.option.GroupSubOption;
 import org.apache.oodt.cas.cli.option.validator.CmdLineOptionValidator.Result;
-import org.apache.oodt.cas.cli.util.CmdLineUtils;
 
+//Google imports
 import com.google.common.collect.Lists;
 
 /**
@@ -131,12 +132,12 @@ public class StdCmdLinePrinter implement
 
    protected String getGroupHelp(CmdLineAction action,
          GroupCmdLineOption option, String indent) {
-      String helpString = getOptionHelp(action, option, indent) + "\n";
+      String helpString = getOptionHelp(action, option, indent);
       Set<CmdLineOption> subOptions = determineRequiredSubOptions(action,
             (GroupCmdLineOption) option);
       if (subOptions.isEmpty()) {
          if (!option.getSubOptions().isEmpty()) {
-            helpString += indent + "  One of:";
+            helpString += "\n" + indent + "  One of:";
             for (GroupSubOption subOption : option.getSubOptions()) {
                helpString += "\n"
                      + getOptionHelp(action, subOption.getOption(), "   "
@@ -144,13 +145,18 @@ public class StdCmdLinePrinter implement
             }
          }
       } else {
-         for (CmdLineOption subOption : subOptions) {
+         for (CmdLineOption subOption : determineRelevantSubOptions(action,
+               option)) {
+            helpString += "\n";
             if (subOption instanceof GroupCmdLineOption) {
                helpString += getGroupHelp(action,
                      (GroupCmdLineOption) subOption, "  " + indent);
             } else {
                helpString += getOptionHelp(action, subOption, "  " + indent);
             }
+            helpString += " "
+                  + (subOptions.contains(subOption) ? "(required)"
+                        : "(optional)");
          }
       }
       return helpString;

Modified: oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/util/CmdLineUtils.java
URL: http://svn.apache.org/viewvc/oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/util/CmdLineUtils.java?rev=1206056&r1=1206055&r2=1206056&view=diff
==============================================================================
--- oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/util/CmdLineUtils.java (original)
+++ oodt/trunk/cli/src/main/java/org/apache/oodt/cas/cli/util/CmdLineUtils.java Fri Nov 25 04:35:18 2011
@@ -83,6 +83,67 @@ public class CmdLineUtils {
       return requiredOptions;
    }
 
+   /**
+    * Determines the given {@link GroupCmdLineOption}'s sub-options which are
+    * affect the given {@link CmdLineAction}.
+    * 
+    * @param action
+    *           The {@link CmdLineAction} for which given
+    *           {@link GroupCmdLineOption}'s sub-options will be determined
+    *           relevant or not
+    * @param option
+    *           The {@link GroupCmdLineOption} whose sub-options are in question
+    *           of being relevant to the given {@link CmdLineAction}
+    * @return The {@link GroupCmdLineOption}'s sub-options who are relevant to
+    *         given {@link CmdLineAction}
+    */
+   public static Set<CmdLineOption> determineRelevantSubOptions(
+         CmdLineAction action, GroupCmdLineOption option) {
+      Set<CmdLineOption> relevantOptions = Sets.newHashSet();
+      for (GroupSubOption subOption : option.getSubOptions()) {
+         if (subOption.isRequired()
+               || isRequired(action, subOption.getOption())
+               || isOptional(action, subOption.getOption())) {
+            relevantOptions.add(subOption.getOption());
+         }
+      }
+      return relevantOptions;
+   }
+
+   /**
+    * Determines the sub-options of given {@link GroupCmdLineOption} who are
+    * always required.
+    * 
+    * @param option
+    *           The {@link GroupCmdLineOption} whose sub-options are check where
+    *           they are required
+    * @return The required sub-options of given {@link GroupCmdLineOption}
+    */
+   public static Set<CmdLineOption> determineRequiredSubOptions(
+         GroupCmdLineOption option) {
+      Validate.notNull(option);
+
+      Set<CmdLineOption> requiredOptions = Sets.newHashSet();
+      for (GroupSubOption subOption : option.getSubOptions()) {
+         if (subOption.isRequired()) {
+            requiredOptions.add(subOption.getOption());
+         }
+      }
+      return requiredOptions;
+   }
+
+   /**
+    * Determines the sub-options of given {@link GroupCmdLineOption} who are
+    * either always required for become requried when given
+    * {@link CmdLineAction} is specified.
+    * 
+    * @param action
+    *           The specified {@link CmdLineAction}
+    * @param option
+    *           The {@link GroupCmdLineOption} whose sub-options are checked if
+    *           they are required
+    * @return The given {@link GroupCmdLineOption}'s required sub-options
+    */
    public static Set<CmdLineOption> determineRequiredSubOptions(
          CmdLineAction action, GroupCmdLineOption option) {
       Validate.notNull(action);