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/10/13 03:19:10 UTC
svn commit: r1182632 [1/2] - in /oodt/branches/cas-cl/src:
main/java/org/apache/oodt/cas/cl/ main/java/org/apache/oodt/cas/cl/action/
main/java/org/apache/oodt/cas/cl/help/formatter/
main/java/org/apache/oodt/cas/cl/help/printer/ main/java/org/apache/o...
Author: bfoster
Date: Thu Oct 13 01:19:08 2011
New Revision: 1182632
URL: http://svn.apache.org/viewvc?rev=1182632&view=rev
Log:
- ditched generics
- cleaned up CmdLineOptionHandler interface
- introduced RequirementRule interface
- CmdLineOption is now an interface
- started to add in CmdLineAction support
Added:
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/action/
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/action/CmdLineAction.java (contents, props changed)
- copied, changed from r1180819, oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineAction.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/ActionCmdLineOption.java (with props)
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/AdvancedCmdLineOption.java (with props)
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/GroupCmdLineOption.java (with props)
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/HandleableCmdLineOption.java (with props)
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/HelpCmdLineOption.java (with props)
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/SimpleCmdLineOption.java (contents, props changed)
- copied, changed from r1182153, oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineOption.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/ValidatableCmdLineOption.java (with props)
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/require/
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/require/ActionBasedRequirementRule.java (with props)
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/require/RequirementRule.java (contents, props changed)
- copied, changed from r1180819, oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/RequirementRule.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/util/GenericsSafeIterable.java (with props)
oodt/branches/cas-cl/src/test/
oodt/branches/cas-cl/src/test/org/
oodt/branches/cas-cl/src/test/org/apache/
oodt/branches/cas-cl/src/test/org/apache/oodt/
oodt/branches/cas-cl/src/test/org/apache/oodt/cas/
oodt/branches/cas-cl/src/test/org/apache/oodt/cas/cl/
oodt/branches/cas-cl/src/test/org/apache/oodt/cas/cl/option/
oodt/branches/cas-cl/src/test/org/apache/oodt/cas/cl/option/util/
oodt/branches/cas-cl/src/test/org/apache/oodt/cas/cl/option/util/TestCmdLineOptionUtils.java (with props)
Removed:
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineAction.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineSubOption.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/RequirementRule.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/handler/StdCmdLineOptionHandler.java
Modified:
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/CmdLineUtility.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/formatter/CmdLineOptionHelpFormatter.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/formatter/StdCmdLineOptionHelpFormatter.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/printer/StdCmdLineOptionHelpPrinter.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/printer/StdCmdLineOptionSpecificHelpPrinter.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineOption.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineOptionInstance.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/handler/CmdLineOptionBeanHandler.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/handler/CmdLineOptionHandler.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/store/CmdLineOptionStore.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/store/spring/SpringCmdLineOptionStore.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/util/CmdLineOptionUtils.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/AllowedArgsCmdLineOptionValidator.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/ArgRegExpCmdLineOptionValidator.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/ClassExistsCmdLineOptionValidator.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/CmdLineOptionValidator.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/FileExistCmdLineOptionValidator.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/NoRestrictionsCmdLineOptionValidator.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/parser/CmdLineOptionParser.java
oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/parser/StdCmdLineOptionParser.java
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/CmdLineUtility.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/CmdLineUtility.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/CmdLineUtility.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/CmdLineUtility.java Thu Oct 13 01:19:08 2011
@@ -1,5 +1,10 @@
package org.apache.oodt.cas.cl;
+import static org.apache.oodt.cas.cl.option.util.CmdLineOptionUtils.findSpecifiedHelpOption;
+import static org.apache.oodt.cas.cl.option.util.CmdLineOptionUtils.isHelpOption;
+import static org.apache.oodt.cas.cl.option.util.CmdLineOptionUtils.validateAndHandleInstances;
+
+import java.io.IOException;
import java.util.Set;
import org.apache.commons.lang.Validate;
@@ -11,10 +16,14 @@ import org.apache.oodt.cas.cl.help.print
import org.apache.oodt.cas.cl.help.printer.CmdLineOptionSpecificHelpPrinter;
import org.apache.oodt.cas.cl.help.printer.StdCmdLineOptionHelpPrinter;
import org.apache.oodt.cas.cl.help.printer.StdCmdLineOptionSpecificHelpPrinter;
+import org.apache.oodt.cas.cl.option.ActionCmdLineOption;
import org.apache.oodt.cas.cl.option.CmdLineOption;
import org.apache.oodt.cas.cl.option.CmdLineOptionInstance;
+import org.apache.oodt.cas.cl.option.GroupCmdLineOption;
+import org.apache.oodt.cas.cl.option.HelpCmdLineOption;
import org.apache.oodt.cas.cl.option.store.CmdLineOptionStore;
import org.apache.oodt.cas.cl.option.store.spring.SpringCmdLineOptionStoreFactory;
+import org.apache.oodt.cas.cl.option.util.CmdLineOptionUtils;
import org.apache.oodt.cas.cl.parser.CmdLineOptionParser;
import org.apache.oodt.cas.cl.parser.StdCmdLineOptionParser;
@@ -26,7 +35,9 @@ public class CmdLineUtility {
private CmdLineOptionSpecificHelpPrinter specificHelpPrinter;
private CmdLineOptionHelpFormatter helpFormatter;
private CmdLineOptionHelpPresenter helpPresenter;
-
+ private boolean requireHelp;
+ private boolean requireAction;
+
public CmdLineUtility() {
parser = new StdCmdLineOptionParser();
optionStore = new SpringCmdLineOptionStoreFactory().createStore();
@@ -77,47 +88,59 @@ public class CmdLineUtility {
this.helpPresenter = helpPresenter;
}
- public void handleCmdLine(String[] args) {
+ private void printHelp(Set<CmdLineOption> validOptions) {
+ helpPresenter.presentHelp(helpFormatter.format(helpPrinter, validOptions));
+ }
+
+ private void printSpecificHelp(Set<CmdLineOption> validOptions, CmdLineOptionInstance specifiedOption) {
+ helpPresenter.presentSpecificHelp(helpFormatter.format(
+ specificHelpPrinter, validOptions, specifiedOption));
+ }
+
+ public void handleCmdLine(String[] args) throws IOException {
Validate.notNull(parser);
Validate.notNull(optionStore);
+ // Load supported options.
Set<CmdLineOption> validOptions = optionStore.loadSupportedOptions();
- ensureHasHelpOption(validOptions);
-// Set<? extends CmdLineOptionInstance<?>> specifiedOptions = parser.parse(args, validOptions);
-//
-// if (specifiedOptions.size() == 1 && specifiedOptions.iterator().next().getOption().isHelp()) {
-// if (args.length > j + 1) {
-// String[] helpArgs = new String[args.length - j - 1];
-// System.arraycopy(args, j + 1, helpArgs, 0, helpArgs.length);
-// helpPresenter.presentSpecificHelp(helpFormatter.format(
-// specificHelpPrinter, validOptions, parse(helpArgs).iterator()
-// .next()));
-// } else {
-// helpPresenter.presentHelp(helpFormatter.format(helpPrinter,
-// validOptions));
-// }
-// }
-// // check if is a perform and quit option
-// if (curOption.isPerformAndQuit()) {
-// curOption.getHandler().handleOption(curOption, values);
-// System.exit(0);
-// }
+ if (requireHelp) {
+ ensureHasHelpOption(validOptions);
+ }
+ if (requireAction) {
+ ensureHasActionOption(validOptions);
+ }
+ // Parse command line arguments.
+ Set<CmdLineOptionInstance> specifiedOptions = parser.parse(args, validOptions);
+
+ // Check for help option and handle it if specified then return.
+ GroupCmdLineOptionInstance helpOption = findSpecifiedHelpOption(specifiedOptions);
+ if (helpOption != null) {
+ if (helpOption.getValues().isEmpty()) {
+ printHelp(validOptions);
+ } else {
+ printSpecificHelp(validOptions, helpOption.getValues().get(0));
+ }
+ return;
+ }
+
+ // Otherwise, validate and handle options.
+ validateAndHandleInstances(validOptions, specifiedOptions);
}
- private void ensureHasHelpOption(Set<CmdLineOption> validOptions) {
- Validate.notNull(validOptions);
+ private void ensureHasHelpOption(Set<CmdLineOption> options) {
+ Validate.notNull(options);
- if (validOptions != null) {
- for (CmdLineOption validOption : validOptions) {
- if (validOption.isHelp()) {
- return;
- }
- }
+ if (CmdLineOptionUtils.findHelpOption(options) == null) {
+ options.add(new HelpCmdLineOption());
}
+ }
- CmdLineOption helpOption = new CmdLineOption("h", "help", "Prints Help Menu", false);
- helpOption.setHelp(true);
- validOptions.add(helpOption);
+ private void ensureHasActionOption(Set<CmdLineOption> options) {
+ Validate.notNull(options);
+
+ if (CmdLineOptionUtils.findActionOption(options) == null) {
+ options.add(new ActionCmdLineOption());
+ }
}
}
Copied: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/action/CmdLineAction.java (from r1180819, oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineAction.java)
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/action/CmdLineAction.java?p2=oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/action/CmdLineAction.java&p1=oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineAction.java&r1=1180819&r2=1182632&rev=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineAction.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/action/CmdLineAction.java Thu Oct 13 01:19:08 2011
@@ -1,4 +1,4 @@
-package org.apache.oodt.cas.cl.option;
+package org.apache.oodt.cas.cl.action;
public abstract class CmdLineAction {
Propchange: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/action/CmdLineAction.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/formatter/CmdLineOptionHelpFormatter.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/formatter/CmdLineOptionHelpFormatter.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/formatter/CmdLineOptionHelpFormatter.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/formatter/CmdLineOptionHelpFormatter.java Thu Oct 13 01:19:08 2011
@@ -10,9 +10,9 @@ import org.apache.oodt.cas.cl.option.Cmd
public interface CmdLineOptionHelpFormatter {
public String format(CmdLineOptionHelpPrinter helpPrinter,
- Set<CmdLineOption<?>> options);
+ Set<CmdLineOption> options);
public String format(CmdLineOptionSpecificHelpPrinter specificHelpPrinter,
- Set<CmdLineOption<?>> options, CmdLineOptionInstance<?> specifiedOption);
+ Set<CmdLineOption> options, CmdLineOptionInstance specifiedOption);
}
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/formatter/StdCmdLineOptionHelpFormatter.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/formatter/StdCmdLineOptionHelpFormatter.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/formatter/StdCmdLineOptionHelpFormatter.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/formatter/StdCmdLineOptionHelpFormatter.java Thu Oct 13 01:19:08 2011
@@ -1,8 +1,6 @@
package org.apache.oodt.cas.cl.help.formatter;
-import static org.apache.oodt.cas.cl.option.util.CmdLineOptionUtils.getAlwaysRequiredOptions;
-import static org.apache.oodt.cas.cl.option.util.CmdLineOptionUtils.getConditionallyRequiredOptions;
-import static org.apache.oodt.cas.cl.option.util.CmdLineOptionUtils.getOptionalOptions;
+import static org.apache.oodt.cas.cl.option.util.CmdLineOptionUtils.getRequiredOptions;
import static org.apache.oodt.cas.cl.option.util.CmdLineOptionUtils.sortOptionsByRequiredStatus;
import java.util.List;
@@ -13,15 +11,14 @@ import org.apache.oodt.cas.cl.help.print
import org.apache.oodt.cas.cl.option.CmdLineOption;
import org.apache.oodt.cas.cl.option.CmdLineOptionInstance;
-
public class StdCmdLineOptionHelpFormatter implements CmdLineOptionHelpFormatter {
public String format(CmdLineOptionHelpPrinter helpPrinter,
- Set<CmdLineOption<?>> options) {
+ Set<CmdLineOption> options) {
StringBuffer sb = new StringBuffer("");
- List<CmdLineOption<?>> sortedOptions = sortOptionsByRequiredStatus(options);
+ List<CmdLineOption> sortedOptions = sortOptionsByRequiredStatus(options);
sb.append(helpPrinter.getHeader()).append("\n");
- for (CmdLineOption<?> option : sortedOptions) {
+ for (CmdLineOption option : sortedOptions) {
sb.append(helpPrinter.getOptionHelp(option)).append("\n");
}
sb.append(helpPrinter.getFooter()).append("\n");
@@ -29,22 +26,22 @@ public class StdCmdLineOptionHelpFormatt
}
public String format(CmdLineOptionSpecificHelpPrinter specificHelpPrinter,
- Set<CmdLineOption<?>> options, CmdLineOptionInstance<?> specifiedOption) {
+ Set<CmdLineOption> options, CmdLineOptionInstance specifiedOption) {
StringBuffer sb = new StringBuffer("");
sb.append(specificHelpPrinter.getHeader(specifiedOption)).append("\n");
sb.append(specificHelpPrinter.getRequiredSubHeader(specifiedOption)).append("\n");
- Set<CmdLineOption<?>> requiredOptions = getAlwaysRequiredOptions(options);
+ Set<CmdLineOption> requiredOptions = getAlwaysRequiredOptions(options);
requiredOptions.addAll(getConditionallyRequiredOptions(options, specifiedOption));
- List<CmdLineOption<?>> sortedRequiredOptions = sortOptionsByRequiredStatus(requiredOptions);
- for (CmdLineOption<?> option : sortedRequiredOptions) {
+ List<CmdLineOption> sortedRequiredOptions = sortOptionsByRequiredStatus(requiredOptions);
+ for (CmdLineOption option : sortedRequiredOptions) {
sb.append(specificHelpPrinter.getRequiredOptionHelp(option, specifiedOption)).append("\n");
}
sb.append(specificHelpPrinter.getOptionalSubHeader(specifiedOption)).append("\n");
- Set<CmdLineOption<?>> optionalOptions = getOptionalOptions(options, specifiedOption);
- List<CmdLineOption<?>> sortedOptionalOptions = sortOptionsByRequiredStatus(optionalOptions);
- for (CmdLineOption<?> option : sortedOptionalOptions) {
+ Set<CmdLineOption> optionalOptions = getOptionallyRequiredOptions(options, specifiedOption);
+ List<CmdLineOption> sortedOptionalOptions = sortOptionsByRequiredStatus(optionalOptions);
+ for (CmdLineOption option : sortedOptionalOptions) {
sb.append(specificHelpPrinter.getOptionalOptionHelp(option, specifiedOption)).append("\n");
}
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/printer/StdCmdLineOptionHelpPrinter.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/printer/StdCmdLineOptionHelpPrinter.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/printer/StdCmdLineOptionHelpPrinter.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/printer/StdCmdLineOptionHelpPrinter.java Thu Oct 13 01:19:08 2011
@@ -3,6 +3,7 @@ package org.apache.oodt.cas.cl.help.prin
import static org.apache.oodt.cas.cl.option.util.CmdLineOptionUtils.getFormattedString;
import org.apache.commons.lang.StringUtils;
+import org.apache.oodt.cas.cl.option.AdvancedCmdLineOption;
import org.apache.oodt.cas.cl.option.CmdLineOption;
public class StdCmdLineOptionHelpPrinter implements CmdLineOptionHelpPrinter {
@@ -17,13 +18,17 @@ public class StdCmdLineOptionHelpPrinter
}
public String getOptionHelp(CmdLineOption option) {
- String argName = option.hasArgs() ? " <" + option.getOptionArgName() + ">" : "";
+ String argName = option.hasArgs() ? " <" + option.getArgsDescription() + ">" : "";
String optionUsage = "-"
+ StringUtils.rightPad(option.getShortOption() + ",", 7) + "--"
+ StringUtils.rightPad((option.getLongOption() + argName), 49)
+ option.getDescription();
- optionUsage += getFormattedString(option.getHandler().getCustomOptionHelp(option),
- 62, 113);
+ if (option instanceof AdvancedCmdLineOption) {
+ if (((AdvancedCmdLineOption) option).hasHandler()) {
+ optionUsage += getFormattedString(((AdvancedCmdLineOption) option).getHandler().getHelp(option),
+ 62, 113);
+ }
+ }
if (option.isRequired()) {
optionUsage = " " + optionUsage;
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/printer/StdCmdLineOptionSpecificHelpPrinter.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/printer/StdCmdLineOptionSpecificHelpPrinter.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/printer/StdCmdLineOptionSpecificHelpPrinter.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/help/printer/StdCmdLineOptionSpecificHelpPrinter.java Thu Oct 13 01:19:08 2011
@@ -3,7 +3,8 @@ package org.apache.oodt.cas.cl.help.prin
import org.apache.oodt.cas.cl.option.CmdLineOption;
import org.apache.oodt.cas.cl.option.CmdLineOptionInstance;
-public class StdCmdLineOptionSpecificHelpPrinter implements CmdLineOptionSpecificHelpPrinter {
+public class StdCmdLineOptionSpecificHelpPrinter implements
+ CmdLineOptionSpecificHelpPrinter {
public String getHeader(CmdLineOptionInstance specifiedOption) {
return "Option Help when option '--"
@@ -15,7 +16,8 @@ public class StdCmdLineOptionSpecificHel
return " - Required:";
}
- public String getRequiredOptionHelp(CmdLineOption option, CmdLineOptionInstance specifiedOption) {
+ public String getRequiredOptionHelp(CmdLineOption option,
+ CmdLineOptionInstance specifiedOption) {
return getOptionHelp(option, specifiedOption);
}
@@ -23,7 +25,8 @@ public class StdCmdLineOptionSpecificHel
return " - Optional:";
}
- public String getOptionalOptionHelp(CmdLineOption option, CmdLineOptionInstance specifiedOption) {
+ public String getOptionalOptionHelp(CmdLineOption option,
+ CmdLineOptionInstance specifiedOption) {
return getOptionHelp(option, specifiedOption);
}
@@ -33,8 +36,8 @@ public class StdCmdLineOptionSpecificHel
private String getOptionHelp(CmdLineOption option,
CmdLineOptionInstance specifiedOption) {
- return " -" + option.getShortOption() + " [--"
- + option.getLongOption() + "] "
- + (option.hasArgs() ? "<" + option.getOptionArgName() + ">" : "");
+ return " -" + option.getShortOption() + " [--" + option.getLongOption()
+ + "] "
+ + (option.hasArgs() ? "<" + option.getArgsDescription() + ">" : "");
}
}
Added: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/ActionCmdLineOption.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/ActionCmdLineOption.java?rev=1182632&view=auto
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/ActionCmdLineOption.java (added)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/ActionCmdLineOption.java Thu Oct 13 01:19:08 2011
@@ -0,0 +1,17 @@
+package org.apache.oodt.cas.cl.option;
+
+public class ActionCmdLineOption extends SimpleCmdLineOption {
+
+ public ActionCmdLineOption() {
+ this("a", "action", "This is the name of the action to trigger", true);
+ }
+
+ public ActionCmdLineOption(String shortOption, String longOption, String description, boolean hasArgs) {
+ super(shortOption, longOption, description, hasArgs);
+ this.setArgsDescription("action-name");
+ this.setRequired(true);
+ this.setType(String.class);
+ this.setPerformAndQuit(false);
+ }
+
+}
Propchange: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/ActionCmdLineOption.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/AdvancedCmdLineOption.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/AdvancedCmdLineOption.java?rev=1182632&view=auto
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/AdvancedCmdLineOption.java (added)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/AdvancedCmdLineOption.java Thu Oct 13 01:19:08 2011
@@ -0,0 +1,61 @@
+package org.apache.oodt.cas.cl.option;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.oodt.cas.cl.option.handler.CmdLineOptionHandler;
+import org.apache.oodt.cas.cl.option.validator.CmdLineOptionValidator;
+
+public class AdvancedCmdLineOption extends SimpleCmdLineOption implements ValidatableCmdLineOption, HandleableCmdLineOption {
+
+ private boolean isAction;
+ private CmdLineOptionHandler handler;
+ private List<CmdLineOptionValidator> validators;
+ private boolean performAndQuit;
+
+ public AdvancedCmdLineOption() {
+ super();
+ validators = new ArrayList<CmdLineOptionValidator>();
+ }
+
+ public AdvancedCmdLineOption(String shortOption, String longOption, String description, boolean hasArgs) {
+ super(shortOption, longOption, description, hasArgs);
+ }
+
+ public void setAction(boolean isAction) {
+ this.isAction = isAction;
+ }
+
+ public boolean isAction() {
+ return isAction;
+ }
+
+ public void setHandler(CmdLineOptionHandler handler) {
+ this.handler = handler;
+ }
+
+ public CmdLineOptionHandler getHandler() {
+ return handler;
+ }
+
+ public boolean hasHandler() {
+ return handler != null;
+ }
+
+ public List<CmdLineOptionValidator> getValidators() {
+ return this.validators;
+ }
+
+ public void setValidators(List<CmdLineOptionValidator> validators) {
+ this.validators = validators;
+ }
+
+ public boolean isPerformAndQuit() {
+ return performAndQuit;
+ }
+
+ public void setPerformAndQuit(boolean performAndQuit) {
+ this.performAndQuit = performAndQuit;
+ }
+}
Propchange: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/AdvancedCmdLineOption.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineOption.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineOption.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineOption.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineOption.java Thu Oct 13 01:19:08 2011
@@ -18,195 +18,52 @@
package org.apache.oodt.cas.cl.option;
//JDK imports
-import java.util.ArrayList;
-import java.util.LinkedList;
import java.util.List;
-import java.util.Set;
//OODT imports
-import org.apache.oodt.cas.cl.option.handler.CmdLineOptionHandler;
-import org.apache.oodt.cas.cl.option.validator.CmdLineOptionValidator;
+import org.apache.oodt.cas.cl.option.require.RequirementRule;
/**
- *
* @author bfoster
* @version $Revision$
*/
-public class CmdLineOption<T> implements Comparable<CmdLineOption<T>> {
+public interface CmdLineOption extends Comparable<CmdLineOption> {
- private String shortOption;
+ public void setLongOption(String longOption);
- private String longOption;
+ public String getLongOption();
- private String description;
+ public void setShortOption(String shortOption);
- private String optionArgName;
+ public String getShortOption();
- private boolean required;
+ public void setDescription(String description);
- private List<RequirementRule> requirementRules;
+ public String getDescription();
- private boolean hasArgs;
+ public void setType(Class<?> type);
- private boolean performAndQuit;
+ public Class<?> getType();
- private Class<?> type;
+ public void setHasArgs(boolean hasArgs);
- private CmdLineOptionHandler<T> handler;
+ public boolean hasArgs();
- private List<CmdLineOptionValidator<T>> validators;
+ public void setArgsDescription(String argDescription);
- private boolean isHelp;
+ public String getArgsDescription();
- private Set<CmdLineSubOption> subOptions;
+ public void setRequired(boolean required);
- public CmdLineOption() {
- optionArgName = "arg";
- required = false;
- hasArgs = false;
- performAndQuit = false;
- type = String.class;
- requirementRules = new ArrayList<RequirementRule>();
- validators = new LinkedList<CmdLineOptionValidator<T>>();
- }
+ public boolean isRequired();
- public CmdLineOption(String shortOption, String longOption,
- String description, boolean hasArgs) {
- this();
- this.shortOption = shortOption;
- this.longOption = longOption;
- this.description = description;
- this.hasArgs = hasArgs;
- }
+ public void setRequirementRules(List<RequirementRule> requirementRules);
- public Class<?> getType() {
- return type;
- }
+ public List<RequirementRule> getRequirementRules();
- public void setType(Class<?> type) {
- this.type = type;
- }
+ public int compareTo(CmdLineOption cmdLineOption);
- public void setHandler(CmdLineOptionHandler<T> handler) {
- this.handler = handler;
- }
+ public boolean equals(Object obj);
- public CmdLineOptionHandler<T> getHandler() {
- return this.handler;
- }
-
- public List<CmdLineOptionValidator<T>> getValidators() {
- return this.validators;
- }
-
- public void setValidators(List<CmdLineOptionValidator<T>> validators) {
- this.validators = validators;
- }
-
- public String getShortOption() {
- return shortOption;
- }
-
- public void setShortOption(String shortOption) {
- this.shortOption = shortOption;
- }
-
- public String getLongOption() {
- return longOption;
- }
-
- public void setLongOption(String longOption) {
- this.longOption = longOption;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public boolean hasArgs() {
- return hasArgs;
- }
-
- public void setHasArgs(boolean hasArgs) {
- this.hasArgs = hasArgs;
- }
-
- public void setOptionArgName(String optionArgName) {
- this.optionArgName = optionArgName;
- }
-
- public String getOptionArgName() {
- return optionArgName;
- }
-
- public void setRequired(boolean required) {
- this.required = required;
- }
-
- public boolean isRequired() {
- return required;
- }
-
- public List<RequirementRule> getRequirementRules() {
- return this.requirementRules;
- }
-
- public void setRequirementRules(List<RequirementRule> requirementRules) {
- this.requirementRules = requirementRules;
- }
-
- public boolean isPerformAndQuit() {
- return performAndQuit;
- }
-
- public void setPerformAndQuit(boolean performAndQuit) {
- this.performAndQuit = performAndQuit;
- }
-
- public void setHelp(boolean isHelp) {
- this.isHelp = isHelp;
- }
-
- public boolean isHelp() {
- return isHelp;
- }
-
- public void setSubOptions(Set<CmdLineSubOption> subOptions) {
- this.subOptions = subOptions;
- }
-
- public Set<CmdLineSubOption> getSubOptions() {
- return subOptions;
- }
-
- public boolean isGroup() {
- return subOptions != null && !subOptions.isEmpty();
- }
-
- public int compareTo(CmdLineOption<T> cmdLineOption) {
- int thisScore = (this.required ? 2 : 0)
- + (!requirementRules.isEmpty() ? 1 : 0);
- int compareScore = (cmdLineOption.required ? 2 : 0)
- + (!cmdLineOption.requirementRules.isEmpty() ? 1 : 0);
- return new Integer(thisScore).compareTo(compareScore);
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj instanceof CmdLineOption) {
- CmdLineOption<T> compareObj = (CmdLineOption<T>) obj;
- return compareObj.shortOption.equals(this.shortOption)
- || compareObj.longOption.equals(this.longOption);
- } else
- return false;
- }
-
- @Override
- public int hashCode() {
- return shortOption.hashCode();
- }
+ public int hashCode();
}
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineOptionInstance.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineOptionInstance.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineOptionInstance.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineOptionInstance.java Thu Oct 13 01:19:08 2011
@@ -26,52 +26,89 @@ import org.apache.commons.lang.Validate;
* @author bfoster
* @version $Revision$
*/
-public abstract class CmdLineOptionInstance<T> {
+public class CmdLineOptionInstance {
- private CmdLineOption<T> option;
- private List<T> values;
+ private CmdLineOption option;
+ private List<String> values;
+ private List<CmdLineOptionInstance> subOptions;
public CmdLineOptionInstance() {
- this.option = null;
- this.values = new ArrayList<T>();
+ values = new ArrayList<String>();
+ subOptions = new ArrayList<CmdLineOptionInstance>();
}
- public CmdLineOptionInstance(CmdLineOption<T> option, List<T> values) {
+ public CmdLineOptionInstance(CmdLineOption option, List<String> values) {
Validate.notNull(option);
Validate.notNull(values);
- this.option = option;
+ this.option = option;
this.values = values;
+ subOptions = new ArrayList<CmdLineOptionInstance>();
+ }
+
+ public void setOption(CmdLineOption option) {
+ this.option = option;
}
- public CmdLineOption<T> getOption() {
+ public CmdLineOption getOption() {
return option;
}
- public void setOption(CmdLineOption<T> option) {
- this.option = option;
+ public boolean isGroup() {
+ return option instanceof GroupCmdLineOption;
}
- public List<T> getValues() {
- return values;
+ public boolean isAction() {
+ return option instanceof ActionCmdLineOption;
}
- public void addValue(T value) {
- values.add(value);
+ public boolean isHelp() {
+ return option instanceof HelpCmdLineOption;
}
- public void setValues(List<T> values) {
+ public void setValues(List<String> values) {
Validate.notNull(values);
- this.values = values;
+ this.values = new ArrayList<String>(values);
+ }
+
+ public void addValue(String value) {
+ values.add(value);
+ }
+
+ public List<String> getValues() {
+ return values;
+ }
+
+ public void setSubOptions(List<CmdLineOptionInstance> subOptions) {
+ Validate.isTrue(isGroup(), "Must be group option to have subOptions");
+ Validate.notNull(subOptions, "Cannot set subOptions to NULL");
+
+ this.subOptions = new ArrayList<CmdLineOptionInstance>(subOptions);
+ }
+
+ public void addSubOption(CmdLineOptionInstance subOption) {
+ Validate.isTrue(isGroup(), "Must be group option to have subOptions");
+ Validate.notNull(subOption, "Cannot add NULL subOption");
+
+ this.subOptions.add(subOption);
+ }
+
+ public List<CmdLineOptionInstance> getSubOptions() {
+ return subOptions;
}
public boolean equals(Object obj) {
if (obj instanceof CmdLineOptionInstance) {
- CmdLineOptionInstance<?> compareObj = (CmdLineOptionInstance<?>) obj;
+ CmdLineOptionInstance compareObj = (CmdLineOptionInstance) obj;
return compareObj.option.equals(this.option)
&& compareObj.values.equals(this.values);
- } else
+ } else {
return false;
+ }
+ }
+
+ public int hashCode() {
+ return option.hashCode();
}
}
Added: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/GroupCmdLineOption.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/GroupCmdLineOption.java?rev=1182632&view=auto
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/GroupCmdLineOption.java (added)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/GroupCmdLineOption.java Thu Oct 13 01:19:08 2011
@@ -0,0 +1,59 @@
+package org.apache.oodt.cas.cl.option;
+
+import java.util.Set;
+
+public class GroupCmdLineOption extends SimpleCmdLineOption {
+
+ private Set<SubOption> subOptions;
+
+ public GroupCmdLineOption() {
+ super();
+ this.setHasArgs(false);
+ }
+
+ public GroupCmdLineOption(String shortOption, String longOption,
+ String description, boolean hasArgs) {
+ super(shortOption, longOption, description, hasArgs);
+ }
+
+ public void setSubOptions(Set<SubOption> subOptions) {
+ this.subOptions = subOptions;
+ }
+
+ public Set<SubOption> getSubOptions() {
+ return subOptions;
+ }
+
+ public boolean hasSubOptions() {
+ return subOptions != null && !subOptions.isEmpty();
+ }
+
+ public class SubOption {
+
+ private CmdLineOption option;
+ private boolean required;
+
+ public SubOption() {}
+
+ public SubOption(CmdLineOption option, boolean required) {
+ this.option = option;
+ this.required = required;
+ }
+
+ public void setOption(CmdLineOption option) {
+ this.option = option;
+ }
+
+ public CmdLineOption getOption() {
+ return option;
+ }
+
+ public void setRequired(boolean required) {
+ this.required = required;
+ }
+
+ public boolean isRequired() {
+ return required;
+ }
+ }
+}
Propchange: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/GroupCmdLineOption.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/HandleableCmdLineOption.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/HandleableCmdLineOption.java?rev=1182632&view=auto
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/HandleableCmdLineOption.java (added)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/HandleableCmdLineOption.java Thu Oct 13 01:19:08 2011
@@ -0,0 +1,10 @@
+package org.apache.oodt.cas.cl.option;
+
+import org.apache.oodt.cas.cl.option.handler.CmdLineOptionHandler;
+
+public interface HandleableCmdLineOption {
+
+ public void setHandler(CmdLineOptionHandler handler);
+
+ public CmdLineOptionHandler getHandler();
+}
Propchange: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/HandleableCmdLineOption.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/HelpCmdLineOption.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/HelpCmdLineOption.java?rev=1182632&view=auto
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/HelpCmdLineOption.java (added)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/HelpCmdLineOption.java Thu Oct 13 01:19:08 2011
@@ -0,0 +1,13 @@
+package org.apache.oodt.cas.cl.option;
+
+public class HelpCmdLineOption extends GroupCmdLineOption {
+
+ public HelpCmdLineOption() {
+ this("h", "help", "Prints help menu", false);
+ }
+
+ public HelpCmdLineOption(String shortOption, String longOption,
+ String description, boolean hasArgs) {
+ super(shortOption, longOption, description, hasArgs);
+ }
+}
Propchange: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/HelpCmdLineOption.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/SimpleCmdLineOption.java (from r1182153, oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineOption.java)
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/SimpleCmdLineOption.java?p2=oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/SimpleCmdLineOption.java&p1=oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineOption.java&r1=1182153&r2=1182632&rev=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/CmdLineOption.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/SimpleCmdLineOption.java Thu Oct 13 01:19:08 2011
@@ -19,20 +19,17 @@ package org.apache.oodt.cas.cl.option;
//JDK imports
import java.util.ArrayList;
-import java.util.LinkedList;
import java.util.List;
-import java.util.Set;
//OODT imports
-import org.apache.oodt.cas.cl.option.handler.CmdLineOptionHandler;
-import org.apache.oodt.cas.cl.option.validator.CmdLineOptionValidator;
+import org.apache.oodt.cas.cl.option.require.RequirementRule;
/**
*
* @author bfoster
* @version $Revision$
*/
-public class CmdLineOption<T> implements Comparable<CmdLineOption<T>> {
+public class SimpleCmdLineOption implements CmdLineOption {
private String shortOption;
@@ -40,7 +37,7 @@ public class CmdLineOption<T> implements
private String description;
- private String optionArgName;
+ private String argDescription;
private boolean required;
@@ -52,25 +49,16 @@ public class CmdLineOption<T> implements
private Class<?> type;
- private CmdLineOptionHandler<T> handler;
-
- private List<CmdLineOptionValidator<T>> validators;
-
- private boolean isHelp;
-
- private Set<CmdLineSubOption> subOptions;
-
- public CmdLineOption() {
- optionArgName = "arg";
+ public SimpleCmdLineOption() {
+ argDescription = "arg";
required = false;
hasArgs = false;
performAndQuit = false;
type = String.class;
requirementRules = new ArrayList<RequirementRule>();
- validators = new LinkedList<CmdLineOptionValidator<T>>();
}
- public CmdLineOption(String shortOption, String longOption,
+ public SimpleCmdLineOption(String shortOption, String longOption,
String description, boolean hasArgs) {
this();
this.shortOption = shortOption;
@@ -87,22 +75,6 @@ public class CmdLineOption<T> implements
this.type = type;
}
- public void setHandler(CmdLineOptionHandler<T> handler) {
- this.handler = handler;
- }
-
- public CmdLineOptionHandler<T> getHandler() {
- return this.handler;
- }
-
- public List<CmdLineOptionValidator<T>> getValidators() {
- return this.validators;
- }
-
- public void setValidators(List<CmdLineOptionValidator<T>> validators) {
- this.validators = validators;
- }
-
public String getShortOption() {
return shortOption;
}
@@ -135,12 +107,12 @@ public class CmdLineOption<T> implements
this.hasArgs = hasArgs;
}
- public void setOptionArgName(String optionArgName) {
- this.optionArgName = optionArgName;
+ public void setArgsDescription(String argDescription) {
+ this.argDescription = argDescription;
}
- public String getOptionArgName() {
- return optionArgName;
+ public String getArgsDescription() {
+ return argDescription;
}
public void setRequired(boolean required) {
@@ -167,38 +139,18 @@ public class CmdLineOption<T> implements
this.performAndQuit = performAndQuit;
}
- public void setHelp(boolean isHelp) {
- this.isHelp = isHelp;
- }
-
- public boolean isHelp() {
- return isHelp;
- }
-
- public void setSubOptions(Set<CmdLineSubOption> subOptions) {
- this.subOptions = subOptions;
- }
-
- public Set<CmdLineSubOption> getSubOptions() {
- return subOptions;
- }
-
- public boolean isGroup() {
- return subOptions != null && !subOptions.isEmpty();
- }
-
- public int compareTo(CmdLineOption<T> cmdLineOption) {
+ public int compareTo(CmdLineOption cmdLineOption) {
int thisScore = (this.required ? 2 : 0)
+ (!requirementRules.isEmpty() ? 1 : 0);
- int compareScore = (cmdLineOption.required ? 2 : 0)
- + (!cmdLineOption.requirementRules.isEmpty() ? 1 : 0);
+ int compareScore = (cmdLineOption.isRequired() ? 2 : 0)
+ + (!cmdLineOption.getRequirementRules().isEmpty() ? 1 : 0);
return new Integer(thisScore).compareTo(compareScore);
}
@Override
public boolean equals(Object obj) {
if (obj instanceof CmdLineOption) {
- CmdLineOption<T> compareObj = (CmdLineOption<T>) obj;
+ SimpleCmdLineOption compareObj = (SimpleCmdLineOption) obj;
return compareObj.shortOption.equals(this.shortOption)
|| compareObj.longOption.equals(this.longOption);
} else
Propchange: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/SimpleCmdLineOption.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/SimpleCmdLineOption.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/ValidatableCmdLineOption.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/ValidatableCmdLineOption.java?rev=1182632&view=auto
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/ValidatableCmdLineOption.java (added)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/ValidatableCmdLineOption.java Thu Oct 13 01:19:08 2011
@@ -0,0 +1,13 @@
+package org.apache.oodt.cas.cl.option;
+
+import java.util.List;
+
+import org.apache.oodt.cas.cl.option.validator.CmdLineOptionValidator;
+
+public interface ValidatableCmdLineOption {
+
+ public void setValidators(List<CmdLineOptionValidator> validators);
+
+ public List<CmdLineOptionValidator> getValidators();
+
+}
Propchange: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/ValidatableCmdLineOption.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/handler/CmdLineOptionBeanHandler.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/handler/CmdLineOptionBeanHandler.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/handler/CmdLineOptionBeanHandler.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/handler/CmdLineOptionBeanHandler.java Thu Oct 13 01:19:08 2011
@@ -24,10 +24,9 @@ import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
//OODT imports
+import org.apache.oodt.cas.cl.action.CmdLineAction;
import org.apache.oodt.cas.cl.option.CmdLineOption;
import org.apache.oodt.cas.cl.option.CmdLineOptionInstance;
import org.apache.oodt.cas.cl.option.store.spring.SpringSetContextInjectionType;
@@ -38,11 +37,10 @@ import org.apache.commons.lang.Validate;
import org.springframework.context.ApplicationContext;
/**
- *
* @author bfoster
* @version $Revision$
*/
-public class CmdLineOptionBeanHandler extends CmdLineOptionHandler<String> implements
+public class CmdLineOptionBeanHandler implements CmdLineOptionHandler,
SpringSetContextInjectionType {
private List<BeanInfo> applyToBeans;
@@ -60,7 +58,7 @@ public class CmdLineOptionBeanHandler ex
this.applyToBeans = applyToBeans;
}
- public void handleOption(CmdLineOptionInstance<String> optionInstance) {
+ public void handleOption(CmdLineAction action, CmdLineOptionInstance optionInstance) {
Validate.notNull(appContext, "Spring ApplicationContext must be set!");
Validate.notNull(applyToBeans, "Apply to beans must be set!");
@@ -88,7 +86,7 @@ public class CmdLineOptionBeanHandler ex
}
}
- public String getCustomOptionHelp(CmdLineOption option) {
+ public String getHelp(CmdLineOption option) {
Validate.notNull(applyToBeans, "Apply to beans must be set!");
HashSet<String> affectedClasses = new HashSet<String>();
@@ -146,24 +144,4 @@ public class CmdLineOptionBeanHandler ex
return values.toArray(new Object[values.size()]);
}
}
-
- @Override
- public boolean affectsOption(CmdLineOptionInstance optionInstance) {
- Validate.notNull(appContext, "Spring ApplicationContext must be set!");
-
- @SuppressWarnings("unchecked")
- Map<String, CmdLineOptionInstance> instances = appContext.getBeansOfType(CmdLineOptionInstance.class);
- for (Entry<String, CmdLineOptionInstance> instance : instances.entrySet()) {
- if (instance.getValue().equals(optionInstance)) {
- for (BeanInfo beanInfo : this.applyToBeans) {
- if (beanInfo.getBeanId().equals(instance.getKey())) {
- return true;
- }
- }
- break;
- }
- }
- return false;
- }
-
}
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/handler/CmdLineOptionHandler.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/handler/CmdLineOptionHandler.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/handler/CmdLineOptionHandler.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/handler/CmdLineOptionHandler.java Thu Oct 13 01:19:08 2011
@@ -18,6 +18,7 @@
package org.apache.oodt.cas.cl.option.handler;
//OODT imports
+import org.apache.oodt.cas.cl.action.CmdLineAction;
import org.apache.oodt.cas.cl.option.CmdLineOption;
import org.apache.oodt.cas.cl.option.CmdLineOptionInstance;
@@ -25,12 +26,20 @@ import org.apache.oodt.cas.cl.option.Cmd
* @author bfoster
* @version $Revision$
*/
-public abstract class CmdLineOptionHandler<T> {
+public interface CmdLineOptionHandler {
- public abstract void handleOption(CmdLineOptionInstance<T> optionInstance);
-
- public abstract String getCustomOptionHelp(CmdLineOption<T> option);
-
- public abstract boolean affectsOption(CmdLineOptionInstance<T> optionInstance);
+ /**
+ *
+ * @param optionInstance
+ */
+ public abstract void handleOption(CmdLineAction selectedAction, CmdLineOptionInstance optionInstance);
+
+ /**
+ * Gets the {@link CmdLineOptionHandler}s help message when associated with given {@link CmdLineOption}.
+ *
+ * @param option The {@link CmdLineOption} to which this {@link CmdLineOptionHandler} was associated with
+ * @return The help message for this {@link CmdLineOptionHandler}
+ */
+ public abstract String getHelp(CmdLineOption option);
}
Added: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/require/ActionBasedRequirementRule.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/require/ActionBasedRequirementRule.java?rev=1182632&view=auto
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/require/ActionBasedRequirementRule.java (added)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/require/ActionBasedRequirementRule.java Thu Oct 13 01:19:08 2011
@@ -0,0 +1,24 @@
+package org.apache.oodt.cas.cl.option.require;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.oodt.cas.cl.action.CmdLineAction;
+
+public class ActionBasedRequirementRule implements RequirementRule {
+
+ private Set<String> actionNames;
+
+ public void setActions(Set<String> actionNames) {
+ this.actionNames = new HashSet<String>(actionNames);
+ }
+
+ public Set<String> getActions() {
+ return actionNames;
+ }
+
+ public boolean isRequired(CmdLineAction selectedAction) {
+ return actionNames.contains(selectedAction.getName());
+ }
+
+}
Propchange: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/require/ActionBasedRequirementRule.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/require/RequirementRule.java (from r1180819, oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/RequirementRule.java)
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/require/RequirementRule.java?p2=oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/require/RequirementRule.java&p1=oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/RequirementRule.java&r1=1180819&r2=1182632&rev=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/RequirementRule.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/require/RequirementRule.java Thu Oct 13 01:19:08 2011
@@ -14,60 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-
-package org.apache.oodt.cas.cl.option;
+package org.apache.oodt.cas.cl.option.require;
//OODT imports
-import java.util.LinkedList;
-import java.util.List;
+import org.apache.oodt.cas.cl.action.CmdLineAction;
/**
- *
* @author bfoster
* @version $Revision$
- *
- * <p>Describe your class here</p>.
*/
-public class RequirementRule {
-
- private List<String> optionValues;
- private String optionLongName;
- private boolean requireAllValues;
-
- public RequirementRule() {
- this.optionValues = new LinkedList<String>();
- this.requireAllValues = false;
- }
-
- public List<String> getOptionValues() {
- return optionValues;
- }
-
- public void setOptionValues(List<String> optionValues) {
- this.optionValues = optionValues;
- }
-
- public boolean isRequireAllValues() {
- return requireAllValues;
- }
-
- public void setRequireAllValues(boolean requireAllValues) {
- this.requireAllValues = requireAllValues;
- }
-
- public String getOptionLongName() {
- return optionLongName;
- }
-
- public void setOptionLongName(String optionLongName) {
- this.optionLongName = optionLongName;
- }
+public interface RequirementRule {
- public String toString() {
- return (this.requireAllValues ? "All" : "At least one")
- + " of the following values must be specified for option --"
- + this.optionLongName + " " + this.optionValues;
- }
+ public boolean isRequired(CmdLineAction selectedAction);
}
Propchange: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/require/RequirementRule.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/require/RequirementRule.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/store/CmdLineOptionStore.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/store/CmdLineOptionStore.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/store/CmdLineOptionStore.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/store/CmdLineOptionStore.java Thu Oct 13 01:19:08 2011
@@ -2,7 +2,7 @@ package org.apache.oodt.cas.cl.option.st
import java.util.Set;
-import org.apache.oodt.cas.cl.option.CmdLineAction;
+import org.apache.oodt.cas.cl.action.CmdLineAction;
import org.apache.oodt.cas.cl.option.CmdLineOption;
public interface CmdLineOptionStore {
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/store/spring/SpringCmdLineOptionStore.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/store/spring/SpringCmdLineOptionStore.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/store/spring/SpringCmdLineOptionStore.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/store/spring/SpringCmdLineOptionStore.java Thu Oct 13 01:19:08 2011
@@ -4,7 +4,7 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
-import org.apache.oodt.cas.cl.option.CmdLineAction;
+import org.apache.oodt.cas.cl.action.CmdLineAction;
import org.apache.oodt.cas.cl.option.CmdLineOption;
import org.apache.oodt.cas.cl.option.store.CmdLineOptionStore;
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/util/CmdLineOptionUtils.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/util/CmdLineOptionUtils.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/util/CmdLineOptionUtils.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/util/CmdLineOptionUtils.java Thu Oct 13 01:19:08 2011
@@ -28,13 +28,21 @@ import java.util.Set;
//OODT imports
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.Validate;
+import org.apache.oodt.cas.cl.option.ActionCmdLineOption;
+import org.apache.oodt.cas.cl.option.AdvancedCmdLineOption;
import org.apache.oodt.cas.cl.option.CmdLineOption;
import org.apache.oodt.cas.cl.option.CmdLineOptionInstance;
-import org.apache.oodt.cas.cl.option.RequirementRule;
+import org.apache.oodt.cas.cl.option.GroupCmdLineOption;
+import org.apache.oodt.cas.cl.option.GroupCmdLineOptionInstance;
+import org.apache.oodt.cas.cl.option.HandleableCmdLineOption;
+import org.apache.oodt.cas.cl.option.HelpCmdLineOption;
+import org.apache.oodt.cas.cl.option.ValidatableCmdLineOption;
+import org.apache.oodt.cas.cl.action.CmdLineAction;
import org.apache.oodt.cas.cl.help.presenter.StdCmdLineOptionHelpPresenter;
import org.apache.oodt.cas.cl.help.formatter.StdCmdLineOptionHelpFormatter;
import org.apache.oodt.cas.cl.help.printer.StdCmdLineOptionHelpPrinter;
import org.apache.oodt.cas.cl.help.printer.StdCmdLineOptionSpecificHelpPrinter;
+import org.apache.oodt.cas.cl.option.require.RequirementRule;
import org.apache.oodt.cas.cl.option.validator.CmdLineOptionValidator;
import org.apache.oodt.cas.cl.parser.CmdLineOptionParser;
import org.apache.oodt.cas.cl.parser.StdCmdLineOptionParser;
@@ -47,151 +55,134 @@ public class CmdLineOptionUtils {
private CmdLineOptionUtils() {}
- public static <T> Set<CmdLineOption<?>> getOptionalOptions(
- Set<CmdLineOption<?>> options, CmdLineOptionInstance<T> specifiedOption) {
- HashSet<CmdLineOption<?>> optionalOptions = new HashSet<CmdLineOption<?>>();
- for (CmdLineOption<?> option : options) {
- try {
- if (isOptionalOption((CmdLineOption<T>) option, specifiedOption)) {
- optionalOptions.add(option);
- }
- } catch (ClassCastException e) { /* ignore */ }
- }
- return optionalOptions;
- }
+// public static <T> Set<CmdLineOption<?>> getOptionallyRequiredOptions(
+// Set<CmdLineOption<?>> options, CmdLineOptionInstance<T> specifiedOption) {
+// HashSet<CmdLineOption<?>> optionalOptions = new HashSet<CmdLineOption<?>>();
+// for (CmdLineOption<T> option : (Set<CmdLineOption<T>>)(Set<?>) options) {
+// if (isOptionallyRequiredOption(option, specifiedOption)) {
+// optionalOptions.add(option);
+// }
+// }
+// return optionalOptions;
+// }
+//
+// public static <T> boolean isOptionallyRequiredOption(CmdLineOption<T> option,
+// CmdLineAction selectedAction) {
+// if (!isConditionallyRequired(option, selectedAction)) {
+// if (option.hasHandler()) {
+// return option.getHandler().isInterested(selectedAction);
+// }
+// }
+// return false;
+// }
- public static <T> boolean isOptionalOption(CmdLineOption<T> option,
- CmdLineOptionInstance<T> specifiedOption) {
- return !isConditionallyRequired(option, specifiedOption)
- && option.getHandler().affectsOption(specifiedOption);
- }
+// public static Set<CmdLineOption<?>> getConditionallyRequiredOptions(
+// Set<CmdLineOption<?>> options, CmdLineOptionInstance<?> specifiedOption) {
+// HashSet<CmdLineOption<?>> requiredOptions = new HashSet<CmdLineOption<?>>();
+// for (CmdLineOption<?> option : options) {
+// if (isConditionallyRequired(option, specifiedOption)) {
+// requiredOptions.add(option);
+// }
+// }
+// return requiredOptions;
+// }
- public static Set<CmdLineOption<?>> getConditionallyRequiredOptions(
- Set<CmdLineOption<?>> options, CmdLineOptionInstance<?> specifiedOption) {
- HashSet<CmdLineOption<?>> requiredOptions = new HashSet<CmdLineOption<?>>();
- for (CmdLineOption<?> option : options) {
- if (isConditionallyRequired(option, specifiedOption)) {
+ public static Set<CmdLineOption> getRequiredOptions(CmdLineAction action,
+ Set<CmdLineOption> options) {
+ Set<CmdLineOption> requiredOptions = getRequiredOptions(options);
+ for (CmdLineOption option : options) {
+ if (isRequired(action, option)) {
requiredOptions.add(option);
}
}
return requiredOptions;
}
- public static Set<CmdLineOption<?>> getConditionallyRequiredOptions(
- Set<CmdLineOption<?>> options, Set<CmdLineOptionInstance<?>> specifiedOptions) {
- HashSet<CmdLineOption<?>> requiredOptions = new HashSet<CmdLineOption<?>>();
- for (CmdLineOption<?> option : options) {
- for (CmdLineOptionInstance<?> specifiedOption : specifiedOptions) {
- if (isConditionallyRequired(option, specifiedOption)) {
- requiredOptions.add(option);
- break;
- }
- }
- }
- return requiredOptions;
- }
-
- public static boolean isConditionallyRequired(CmdLineOption<?> option,
- CmdLineOptionInstance<?> specifiedOption) {
+ public static boolean isRequired(CmdLineAction action, CmdLineOption option) {
Validate.notNull(option);
- Validate.notNull(specifiedOption);
+ Validate.notNull(action);
for (RequirementRule requirementRule : option.getRequirementRules()) {
- if (((requirementRule.isRequireAllValues() && specifiedOption.getValues()
- .containsAll(requirementRule.getOptionValues())) || (!requirementRule
- .isRequireAllValues() && !Collections.disjoint(
- specifiedOption.getValues(), requirementRule.getOptionValues())))) {
+ if (requirementRule.isRequired(action)) {
return true;
}
}
return false;
}
- public static Set<CmdLineOption<?>> getAlwaysRequiredOptions(
- Set<CmdLineOption<?>> options) {
- HashSet<CmdLineOption<?>> requiredOptions = new HashSet<CmdLineOption<?>>();
- for (CmdLineOption<?> option : options) {
+ public static Set<CmdLineOption> getRequiredOptions(Set<CmdLineOption> options) {
+ HashSet<CmdLineOption> requiredOptions = new HashSet<CmdLineOption>();
+ for (CmdLineOption option : options) {
if (option.isRequired()) {
requiredOptions.add(option);
}
}
return requiredOptions;
}
+//
+// public static Set<CmdLineOption<?>> getRequiredOptions(
+// Set<CmdLineOption<?>> supportedOptions,
+// Set<CmdLineOptionInstance<?>> specifiedOptions) {
+// Set<CmdLineOption<?>> reqOptions = getAlwaysRequiredOptions(supportedOptions);
+// reqOptions.addAll(getConditionallyRequiredOptions(supportedOptions,
+// specifiedOptions));
+// return reqOptions;
+// }
- public static Set<CmdLineOption<?>> getRequiredOptions(
- Set<CmdLineOption<?>> supportedOptions,
- Set<CmdLineOptionInstance<?>> specifiedOptions) {
- Set<CmdLineOption<?>> reqOptions = getAlwaysRequiredOptions(supportedOptions);
- reqOptions.addAll(getConditionallyRequiredOptions(supportedOptions,
- specifiedOptions));
- return reqOptions;
- }
-
- public static Set<CmdLineOption<?>> getRequiredOptionsNotSet(
- Set<CmdLineOption<?>> supportedOptions, Set<CmdLineOptionInstance<?>> setOptions) {
- return getOptionsNotSet(getRequiredOptions(supportedOptions, setOptions),
- setOptions);
- }
+// public static Set<CmdLineOption<?>> getRequiredOptionsNotSet(
+// Set<CmdLineOption<?>> supportedOptions, Set<CmdLineOptionInstance<?>> setOptions) {
+// return getOptionsNotSet(getRequiredOptions(supportedOptions, setOptions),
+// setOptions);
+// }
- public static Set<CmdLineOption<?>> getOptionsNotSet(
- Set<CmdLineOption<?>> expectedOptions, Set<CmdLineOptionInstance<?>> setOptions) {
- HashSet<CmdLineOption<?>> nonSetRequiredOptions = new HashSet<CmdLineOption<?>>();
- TOP:
- for (CmdLineOption<?> reqOption : expectedOptions) {
- for (CmdLineOptionInstance<?> optionInst : setOptions) {
- if (reqOption.equals(optionInst.getOption()))
- continue TOP;
- }
- nonSetRequiredOptions.add(reqOption);
- }
- return nonSetRequiredOptions;
- }
+// public static Set<CmdLineOption<?>> getOptionsNotSet(
+// Set<CmdLineOption<?>> expectedOptions, Set<CmdLineOptionInstance<?>> setOptions) {
+// HashSet<CmdLineOption<?>> nonSetRequiredOptions = new HashSet<CmdLineOption<?>>();
+// TOP:
+// for (CmdLineOption<?> reqOption : expectedOptions) {
+// for (CmdLineOptionInstance<?> optionInst : setOptions) {
+// if (reqOption.equals(optionInst.getOption()))
+// continue TOP;
+// }
+// nonSetRequiredOptions.add(reqOption);
+// }
+// return nonSetRequiredOptions;
+// }
- public static List<CmdLineOption<?>> sortOptionsByRequiredStatus(Set<CmdLineOption<?>> options) {
- ArrayList<CmdLineOption<?>> optionsList = new ArrayList<CmdLineOption<?>>(options);
+ public static List<CmdLineOption> sortOptionsByRequiredStatus(Set<CmdLineOption> options) {
+ ArrayList<CmdLineOption> optionsList = new ArrayList<CmdLineOption>(options);
Collections.sort(optionsList);
Collections.reverse(optionsList);
return optionsList;
}
- public static CmdLineOption<?> getOptionByName(String optionName,
- Set<CmdLineOption<?>> options) {
- for (CmdLineOption<?> option : options)
+ public static CmdLineOption getOptionByName(String optionName, Set<CmdLineOption> options) {
+ for (CmdLineOption option : options)
if (option.getLongOption().equals(optionName)
|| option.getShortOption().equals(optionName))
return option;
return null;
}
- public static CmdLineOptionInstance<?> getOptionInstanceByName(
- String optionName, Set<CmdLineOptionInstance<?>> optionInsts) {
- for (CmdLineOptionInstance<?> optionInst : optionInsts)
+ public static CmdLineOptionInstance getOptionInstanceByName(
+ String optionName, Set<CmdLineOptionInstance> optionInsts) {
+ for (CmdLineOptionInstance optionInst : optionInsts)
if (optionInst.getOption().getLongOption().equals(optionName)
|| optionInst.getOption().getShortOption().equals(optionName))
return optionInst;
return null;
}
-// public static List<?> getOptionValues(String optionName,
-// Set<CmdLineOptionInstance<?>> options) {
-// for (CmdLineOptionInstance<?> optionInst : options)
-// if (optionInst.getOption().getLongOption().equals(optionName)
-// || optionInst.getOption().getShortOption().equals(optionName))
-// return optionInst.getValues();
-// return null;
-// }
-
-
- public static Set<CmdLineOptionInstance<?>> parseArgs(Set<CmdLineOption<?>> supportedOptions, String[] args) throws IOException {
+ public static Set<CmdLineOptionInstance> parseArgs(Set<CmdLineOption> supportedOptions, String[] args) throws IOException {
CmdLineOptionParser parser = new StdCmdLineOptionParser();
return parser.parse(args, supportedOptions);
}
- public static Set<CmdLineOptionInstance<?>> validateOptions(Set<CmdLineOptionInstance<?>> options) throws IOException {
+ public static Set<CmdLineOptionInstance> validateOptions(Set<CmdLineOptionInstance> options) throws IOException {
Validate.notNull(options);
- HashSet<CmdLineOptionInstance<?>> optionsFailed = new HashSet<CmdLineOptionInstance<?>>();
- for (CmdLineOptionInstance<?> optionInst : options) {
+ HashSet<CmdLineOptionInstance> optionsFailed = new HashSet<CmdLineOptionInstance>();
+ for (CmdLineOptionInstance optionInst : options) {
if (!validateOption(optionInst)) {
optionsFailed.add(optionInst);
}
@@ -199,64 +190,183 @@ public class CmdLineOptionUtils {
return optionsFailed;
}
- public static <T> boolean validateOption(CmdLineOptionInstance<T> option) {
- for (CmdLineOptionValidator<T> validator : option.getOption()
- .getValidators()) {
- if (!validator.validate(option)) {
- return false;
+ public static boolean validateOption(CmdLineOptionInstance option) {
+ if (isValidatable(option.getOption())) {
+ for (CmdLineOptionValidator validator : ((ValidatableCmdLineOption) option.getOption()).getValidators()) {
+ if (!validator.validate(option)) {
+ return false;
+ }
}
}
return true;
}
- public static void handleOptions(Set<CmdLineOptionInstance<?>> options) {
- for (CmdLineOptionInstance<?> option : options) {
- handleOption(option);
+ public static boolean isValidatable(CmdLineOption option) {
+ return option instanceof ValidatableCmdLineOption;
+ }
+
+ public static void handleOptions(CmdLineAction action, Set<CmdLineOptionInstance> options) {
+ for (CmdLineOptionInstance option : options) {
+ handleOption(action, option);
+ }
+ }
+
+ public static void handleOption(CmdLineAction action, CmdLineOptionInstance option) {
+ if (isHandleable(option.getOption())) {
+ ((HandleableCmdLineOption) option.getOption()).getHandler().handleOption(action, option);
}
}
- public static <T> void handleOption(CmdLineOptionInstance<T> option) {
- option.getOption().getHandler().handleOption(option);
+ public static boolean isHandleable(CmdLineOption option) {
+ return option instanceof HandleableCmdLineOption;
}
- public static Set<CmdLineOptionInstance<?>> validateAndHandleInstances(
- Set<CmdLineOption<?>> supportedOptions, String[] args) throws IOException {
+ public static void validateAndHandleInstances(Set<CmdLineOption> supportedOptions,
+ Set<CmdLineOptionInstance> specifiedOptions) throws IOException {
- // parse args
- Set<CmdLineOptionInstance<?>> setOptions = parseArgs(supportedOptions, args);
// check that required args have been specified
- Set<CmdLineOption<?>> unsetReqOptions = getRequiredOptionsNotSet(supportedOptions, setOptions);
+ Set<CmdLineOption> requiredOptions = getRequiredOptions();
+ Set<CmdLineOption> unsetReqOptions = getRequiredOptionsNotSet(supportedOptions, specifiedOptions);
if (!unsetReqOptions.isEmpty()) {
throw new IOException("Miss required options: " + sortOptionsByRequiredStatus(unsetReqOptions));
}
// validate options
- Set<CmdLineOptionInstance<?>> optionsFailedVal = validateOptions(setOptions);
+ Set<CmdLineOptionInstance> optionsFailedVal = validateOptions(specifiedOptions);
if (!optionsFailedVal.isEmpty()) {
throw new IOException("Options failed validations: " + optionsFailedVal);
}
+ // Check for perform and quit options and handle them if specified then return.
+ Set<CmdLineOptionInstance> performAndQuitOptions = findPerformAndQuitOptions(specifiedOptions);
+ if (!performAndQuitOptions.isEmpty()) {
+ handleOptions(performAndQuitOptions);
+ return;
+ }
+
// if all looks good . . . handle options
- handleOptions(setOptions);
+ handleOptions(specifiedOptions);
+ }
- return setOptions;
+ public static boolean isSubOption(CmdLineOptionInstance specifiedOption, CmdLineOption option) {
+ if (specifiedOption.isGroup()) {
+ for (GroupCmdLineOption.SubOption subOption : ((GroupCmdLineOption) specifiedOption.getOption()).getSubOptions()) {
+ if (subOption.getOption().equals(option)) {
+ return true;
+ }
+ }
+ }
+ return false;
}
- public static void printHelp(Set<CmdLineOption<?>> options) {
+ public static Set<CmdLineOptionInstance> findPerformAndQuitOptions(
+ Set<CmdLineOptionInstance> options) {
+ HashSet<CmdLineOptionInstance> performAndQuitOptions = new HashSet<CmdLineOptionInstance>();
+ for (CmdLineOptionInstance option : options) {
+ if (isPerformAndQuitOption(option.getOption())) {
+ performAndQuitOptions.add(option);
+ }
+ }
+ return performAndQuitOptions;
+ }
+
+ public static boolean isPerformAndQuitOption(CmdLineOption option) {
+ if (option instanceof AdvancedCmdLineOption) {
+ return ((AdvancedCmdLineOption) option).isPerformAndQuit();
+ }
+ return false;
+ }
+
+ public static CmdLineOptionInstance findSpecifiedOption(CmdLineOption option, Set<CmdLineOptionInstance> specifiedOptions) {
+ Validate.notNull(option);
+ Validate.notNull(specifiedOptions);
+
+ for (CmdLineOptionInstance specifiedOption : specifiedOptions) {
+ if (specifiedOption.getOption().equals(option)) {
+ return specifiedOption;
+ }
+ }
+ return null;
+ }
+
+ public static boolean isActionOption(CmdLineOption option) {
+ return option instanceof ActionCmdLineOption;
+ }
+
+ public static ActionCmdLineOption findActionOption(Set<CmdLineOption> options) {
+ for (CmdLineOption option : options) {
+ if (isActionOption(option)) {
+ return (ActionCmdLineOption) option;
+ }
+ }
+ }
+
+ public static CmdLineOptionInstance findSpecifiedActionOption(Set<CmdLineOptionInstance> options) {
+ for (CmdLineOptionInstance option : options) {
+ if (isActionOption(option.getOption())) {
+ return option;
+ }
+ }
+ }
+
+ public static boolean isHelpOption(CmdLineOption option) {
+ return option instanceof HelpCmdLineOption;
+ }
+
+ public static HelpCmdLineOption findHelpOption(Set<CmdLineOption> options) {
+ for (CmdLineOption option : options) {
+ if (isHelpOption(option)) {
+ return (HelpCmdLineOption) option;
+ }
+ }
+ return null;
+ }
+
+ public static CmdLineOptionInstance findSpecifiedHelpOption(
+ Set<CmdLineOptionInstance> options) {
+ for (CmdLineOptionInstance option : options) {
+ if (isHelpOption(option.getOption())) {
+ return option;
+ }
+ }
+ return null;
+ }
+
+ public static void printHelp(Set<CmdLineOption> options) {
new StdCmdLineOptionHelpPresenter()
.presentHelp(new StdCmdLineOptionHelpFormatter().format(
new StdCmdLineOptionHelpPrinter(), options));
}
- public static void printSpecificHelp(Set<CmdLineOption<?>> options,
- CmdLineOptionInstance<?> specifiedOption) {
+ public static void printSpecificHelp(Set<CmdLineOption> options,
+ CmdLineOptionInstance specifiedOption) {
new StdCmdLineOptionHelpPresenter()
.presentSpecificHelp(new StdCmdLineOptionHelpFormatter()
.format(new StdCmdLineOptionSpecificHelpPrinter(), options,
specifiedOption));
}
+// public static <T> Iterable<CmdLineOption<T>> safeCast(Iterable<CmdLineOption<?>> options) {
+// return new GenericsSafeIterable<CmdLineOption<T>>(options);
+// }
+//
+// public static <T> List<T> iterableToList(Iterable<T> iterable) {
+// ArrayList<T> safeItems = new ArrayList<T>();
+// for (T item : iterable) {
+// safeItems.add(item);
+// }
+// return safeItems;
+// }
+//
+// public static <T> HashSet<T> iterableToSet(Iterable<T> iterable) {
+// HashSet<T> safeItems = new HashSet<T>();
+// for (T item : iterable) {
+// safeItems.add(item);
+// }
+// return safeItems;
+// }
+
public static String getFormattedString(String string, int startIndex,
int endIndex) {
StringBuffer outputString = new StringBuffer("");
Added: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/util/GenericsSafeIterable.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/util/GenericsSafeIterable.java?rev=1182632&view=auto
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/util/GenericsSafeIterable.java (added)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/util/GenericsSafeIterable.java Thu Oct 13 01:19:08 2011
@@ -0,0 +1,52 @@
+package org.apache.oodt.cas.cl.option.util;
+
+import java.util.Iterator;
+
+public class GenericsSafeIterable<T> implements Iterable<T> {
+
+ private static final long serialVersionUID = -4763442582059214684L;
+
+ private Iterable<?> iterable;
+
+ public GenericsSafeIterable(Iterable<?> iterable) {
+ this.iterable = iterable;
+ }
+
+ public Iterator<T> iterator() {
+ return new Iterator<T>() {
+
+ private Iterator<?> iterator = iterable.iterator();
+ private T next = null;
+
+ public boolean hasNext() {
+ if (next == null) {
+ next = safeGetNext(iterator);
+ }
+ return next != null;
+ }
+
+ public T next() {
+ if (next == null) {
+ next = safeGetNext(iterator);
+ }
+ T curNext = next;
+ next = safeGetNext(iterator);
+ return curNext;
+ }
+
+ public void remove() {
+ // do nothing
+ }
+
+ };
+ }
+
+ private T safeGetNext(Iterator<?> iterator) {
+ while (iterator.hasNext()) {
+ try {
+ return (T) iterator.next();
+ } catch (ClassCastException e) {}
+ }
+ return null;
+ }
+}
Propchange: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/util/GenericsSafeIterable.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/AllowedArgsCmdLineOptionValidator.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/AllowedArgsCmdLineOptionValidator.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/AllowedArgsCmdLineOptionValidator.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/AllowedArgsCmdLineOptionValidator.java Thu Oct 13 01:19:08 2011
@@ -29,7 +29,7 @@ import org.apache.oodt.cas.cl.option.Cmd
* @version $Revision$
*/
public class AllowedArgsCmdLineOptionValidator implements
- CmdLineOptionValidator<String> {
+ CmdLineOptionValidator {
private List<String> allowedArgs;
@@ -37,7 +37,7 @@ public class AllowedArgsCmdLineOptionVal
this.allowedArgs = new LinkedList<String>();
}
- public boolean validate(CmdLineOptionInstance<String> optionInst) {
+ public boolean validate(CmdLineOptionInstance optionInst) {
for (String value : optionInst.getValues()) {
if (!allowedArgs.contains(value)) {
LOG.severe("Option value " + value + " is not allowed for option "
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/ArgRegExpCmdLineOptionValidator.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/ArgRegExpCmdLineOptionValidator.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/ArgRegExpCmdLineOptionValidator.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/ArgRegExpCmdLineOptionValidator.java Thu Oct 13 01:19:08 2011
@@ -31,7 +31,7 @@ public class ArgRegExpCmdLineOptionValid
AllowedArgsCmdLineOptionValidator {
@Override
- public boolean validate(CmdLineOptionInstance<String> optionInst) {
+ public boolean validate(CmdLineOptionInstance optionInst) {
TOP: for (String value : optionInst.getValues()) {
for (String regex : this.getAllowedArgs()) {
if (Pattern.matches(regex, value))
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/ClassExistsCmdLineOptionValidator.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/ClassExistsCmdLineOptionValidator.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/ClassExistsCmdLineOptionValidator.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/ClassExistsCmdLineOptionValidator.java Thu Oct 13 01:19:08 2011
@@ -25,9 +25,9 @@ import org.apache.oodt.cas.cl.option.Cmd
* @version $Revision$
*/
public class ClassExistsCmdLineOptionValidator implements
- CmdLineOptionValidator<String> {
+ CmdLineOptionValidator {
- public boolean validate(CmdLineOptionInstance<String> optionInst) {
+ public boolean validate(CmdLineOptionInstance optionInst) {
for (String value : optionInst.getValues()) {
try {
Class.forName(value);
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/CmdLineOptionValidator.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/CmdLineOptionValidator.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/CmdLineOptionValidator.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/CmdLineOptionValidator.java Thu Oct 13 01:19:08 2011
@@ -31,11 +31,11 @@ import org.apache.oodt.cas.cl.option.Cmd
*
* <p>Describe your class here</p>.
*/
-public interface CmdLineOptionValidator<T> {
+public interface CmdLineOptionValidator {
static Logger LOG = Logger
.getLogger(CmdLineOptionValidator.class.getName());
- public boolean validate(CmdLineOptionInstance<T> optionInst);
+ public boolean validate(CmdLineOptionInstance optionInst);
}
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/FileExistCmdLineOptionValidator.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/FileExistCmdLineOptionValidator.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/FileExistCmdLineOptionValidator.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/FileExistCmdLineOptionValidator.java Thu Oct 13 01:19:08 2011
@@ -27,9 +27,9 @@ import org.apache.oodt.cas.cl.option.Cmd
* @author bfoster
* @version $Revision$
*/
-public class FileExistCmdLineOptionValidator implements CmdLineOptionValidator<String> {
+public class FileExistCmdLineOptionValidator implements CmdLineOptionValidator {
- public boolean validate(CmdLineOptionInstance<String> optionInst) {
+ public boolean validate(CmdLineOptionInstance optionInst) {
for (String value : optionInst.getValues()) {
if (!new File(value).exists()) {
LOG.severe("Option value " + value + " for option "
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/NoRestrictionsCmdLineOptionValidator.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/NoRestrictionsCmdLineOptionValidator.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/NoRestrictionsCmdLineOptionValidator.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/option/validator/NoRestrictionsCmdLineOptionValidator.java Thu Oct 13 01:19:08 2011
@@ -14,8 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-
package org.apache.oodt.cas.cl.option.validator;
//OODT imports
@@ -25,8 +23,6 @@ import org.apache.oodt.cas.cl.option.Cmd
*
* @author bfoster
* @version $Revision$
- *
- * <p>Describe your class here</p>.
*/
public class NoRestrictionsCmdLineOptionValidator implements
CmdLineOptionValidator {
Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/parser/CmdLineOptionParser.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/parser/CmdLineOptionParser.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/parser/CmdLineOptionParser.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/parser/CmdLineOptionParser.java Thu Oct 13 01:19:08 2011
@@ -10,11 +10,11 @@ import org.apache.oodt.cas.cl.option.Cmd
public abstract class CmdLineOptionParser {
- public Set<CmdLineOptionInstance<?>> parse(String[] args, Set<CmdLineOption<?>> validOptions) throws IOException {
+ public Set<CmdLineOptionInstance> parse(String[] args, Set<CmdLineOption> validOptions) throws IOException {
return parse(new Args(args), validOptions);
}
- public abstract Set<CmdLineOptionInstance<?>> parse(Args args, Set<CmdLineOption<?>> validOptions) throws IOException;
+ public abstract Set<CmdLineOptionInstance> parse(Args args, Set<CmdLineOption> validOptions) throws IOException;
protected class Args implements Iterable<String> {
private int curIndex;
@@ -83,12 +83,4 @@ public abstract class CmdLineOptionParse
};
}
}
-
- protected class GroupCmdLineOptionInstance extends
- CmdLineOptionInstance<CmdLineOptionInstance<?>> {
- }
-
- protected class StringCmdLineOptionInstance extends
- CmdLineOptionInstance<String> {
- }
}