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 [2/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...

Modified: oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/parser/StdCmdLineOptionParser.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/parser/StdCmdLineOptionParser.java?rev=1182632&r1=1182631&r2=1182632&view=diff
==============================================================================
--- oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/parser/StdCmdLineOptionParser.java (original)
+++ oodt/branches/cas-cl/src/main/java/org/apache/oodt/cas/cl/parser/StdCmdLineOptionParser.java Thu Oct 13 01:19:08 2011
@@ -17,6 +17,10 @@
 package org.apache.oodt.cas.cl.parser;
 
 //JDK imports
+import static org.apache.oodt.cas.cl.option.util.CmdLineOptionUtils.findHelpOption;
+import static org.apache.oodt.cas.cl.option.util.CmdLineOptionUtils.getOptionByName;
+import static org.apache.oodt.cas.cl.option.util.CmdLineOptionUtils.isSubOption;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -28,8 +32,7 @@ import java.util.Stack;
 import org.apache.oodt.cas.cl.help.OptionHelpException;
 import org.apache.oodt.cas.cl.option.CmdLineOption;
 import org.apache.oodt.cas.cl.option.CmdLineOptionInstance;
-import org.apache.oodt.cas.cl.option.CmdLineSubOption;
-import org.apache.oodt.cas.cl.option.util.CmdLineOptionUtils;
+import org.apache.oodt.cas.cl.option.GroupCmdLineOption;
 
 /**
  * @author bfoster
@@ -37,11 +40,11 @@ import org.apache.oodt.cas.cl.option.uti
  */
 public class StdCmdLineOptionParser extends CmdLineOptionParser {
 
-	public Set<CmdLineOptionInstance<?>> parse(Args args,
-			Set<CmdLineOption<?>> validOptions) throws IOException {
-		HashSet<CmdLineOptionInstance<?>> optionInstances = new HashSet<CmdLineOptionInstance<?>>();
+	public Set<CmdLineOptionInstance> parse(Args args,
+			Set<CmdLineOption> validOptions) throws IOException {
+		HashSet<CmdLineOptionInstance> optionInstances = new HashSet<CmdLineOptionInstance>();
 
-		CmdLineOption<?> helpOption = getHelpOption(validOptions);
+		CmdLineOption helpOption = findHelpOption(validOptions);
 		if (helpOption == null) {
 			throw new OptionHelpException(
 					"Must specify a help option in set of valid options");
@@ -53,27 +56,26 @@ public class StdCmdLineOptionParser exte
 					+ " for info");
 		}
 
-		Stack<GroupCmdLineOptionInstance> groupOptions = new Stack<GroupCmdLineOptionInstance>();
+		Stack<CmdLineOptionInstance> groupOptions = new Stack<CmdLineOptionInstance>();
 		for (String arg : args) {
 
 			if (isOption(arg)) {
 
 				// check if option is a valid one
-				CmdLineOption<?> option = CmdLineOptionUtils.getOptionByName(
-						getOptionName(arg), validOptions);
+				CmdLineOption option = getOptionByName(getOptionName(arg), validOptions);
 				if (option == null) {
 					throw new IOException("Invalid option: '" + arg + "'");
 				}
 
 				args.incrementIndex();
-				if (option.isGroup()) {
-					GroupCmdLineOptionInstance groupInstance = new GroupCmdLineOptionInstance();
-					groupInstance.setOption((CmdLineOption<CmdLineOptionInstance<?>>) option);
+				if (option instanceof GroupCmdLineOption) {
+					CmdLineOptionInstance groupInstance = new CmdLineOptionInstance();
+					groupInstance.setOption(option);
 
 					// Check if we are currently loading subOptions.
 					if (!groupOptions.isEmpty()) {
 
-						GroupCmdLineOptionInstance currentGroup = groupOptions.peek();
+						CmdLineOptionInstance currentGroup = groupOptions.peek();
 
 						// Verify option is a valid subOption for current group.
 						if (!isSubOption(currentGroup, option)) {
@@ -81,7 +83,7 @@ public class StdCmdLineOptionParser exte
 						}
 
 						// Add option to current group values.
-						currentGroup.addValue(groupInstance);
+						currentGroup.addSubOption(groupInstance);
 					}
 
 					// Push group as current group.
@@ -92,14 +94,14 @@ public class StdCmdLineOptionParser exte
 						throw new IOException("Option " + option
 								+ " requires argument values");
 					}
-					StringCmdLineOptionInstance stringInstance = new StringCmdLineOptionInstance();
-					stringInstance.setOption((CmdLineOption<String>) option);
-					stringInstance.setValues(values);
+					CmdLineOptionInstance specifiedOption = new CmdLineOptionInstance();
+					specifiedOption.setOption(option);
+					specifiedOption.setValues(values);
 
 					// Check if we are currently loading subOptions.
 					if (!groupOptions.isEmpty()) {
 
-						GroupCmdLineOptionInstance currentGroup = groupOptions.peek();
+						CmdLineOptionInstance currentGroup = groupOptions.peek();
 
 						// Verify option is a valid subOption for current group.
 						if (!isSubOption(currentGroup, option)) {
@@ -107,9 +109,9 @@ public class StdCmdLineOptionParser exte
 						}
 
 						// Add option to current group values.
-						currentGroup.addValue(stringInstance);
+						currentGroup.addSubOption(specifiedOption);
 					} else {
-						optionInstances.add(stringInstance);
+						optionInstances.add(specifiedOption);
 					}
 				}
 			} else {
@@ -119,16 +121,7 @@ public class StdCmdLineOptionParser exte
 		return optionInstances;
 	}
 
-	private boolean isSubOption(GroupCmdLineOptionInstance group, CmdLineOption<?> option) {
-		for (CmdLineSubOption subOption : group.getOption().getSubOptions()) {
-			if (subOption.getOption().equals(option)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	private List<String> getValues(Args args, CmdLineOption<?> option) {
+	private List<String> getValues(Args args, CmdLineOption option) {
 		List<String> values = new ArrayList<String>();
 		String nextValue = args.getCurrentArg();
 		while (!isOption(nextValue)) {
@@ -137,27 +130,27 @@ public class StdCmdLineOptionParser exte
 		return values;
 	}
 
-	private List<CmdLineOptionInstance<?>> findOptions(Args args,
-			Set<CmdLineSubOption> subOptions) {
-		HashSet<CmdLineOption<?>> allOptions = new HashSet<CmdLineOption<?>>();
-		HashSet<CmdLineOption<?>> requiredOptions = new HashSet<CmdLineOption<?>>();
-		for (CmdLineSubOption subOption : subOptions) {
-			allOptions.add(subOption.getOption());
-			if (subOption.isRequired()) {
-				requiredOptions.add(subOption.getOption());
-			}
-		}
-
-		HashSet<CmdLineOption<?>> setOptions = new HashSet<CmdLineOption<?>>();
-		for (String arg : args) {
-			if (isOption(arg)) {
-				CmdLineOption<?> option = CmdLineOptionUtils.getOptionByName(
-						getOptionName(arg), allOptions);
-				
-			}
-		}
-		return null;
-	}
+//	private List<CmdLineOptionInstance<?>> findOptions(Args args,
+//			Set<CmdLineSubOption> subOptions) {
+//		HashSet<CmdLineOption<?>> allOptions = new HashSet<CmdLineOption<?>>();
+//		HashSet<CmdLineOption<?>> requiredOptions = new HashSet<CmdLineOption<?>>();
+//		for (CmdLineSubOption subOption : subOptions) {
+//			allOptions.add(subOption.getOption());
+//			if (subOption.isRequired()) {
+//				requiredOptions.add(subOption.getOption());
+//			}
+//		}
+//
+//		HashSet<CmdLineOption<?>> setOptions = new HashSet<CmdLineOption<?>>();
+//		for (String arg : args) {
+//			if (isOption(arg)) {
+//				CmdLineOption<?> option = CmdLineOptionUtils.getOptionByName(
+//						getOptionName(arg), allOptions);
+//				
+//			}
+//		}
+//		return null;
+//	}
 
 	private static boolean isOption(String arg) {
 		return (arg.startsWith("-"));
@@ -173,12 +166,14 @@ public class StdCmdLineOptionParser exte
 		}
 	}
 
-	private CmdLineOption<?> getHelpOption(Set<CmdLineOption<?>> options) {
-		for (CmdLineOption<?> option : options) {
-			if (option.isHelp()) {
-				return option;
-			}
-		}
-		return null;
-	}
+//	private CmdLineOption<?> getHelpOption(Set<CmdLineOption<?>> options) {
+//		for (CmdLineOption<?> option : options) {
+//			if (option instanceof GroupCmdLineOption) {
+//				if (((GroupCmdLineOption) option).isHelp()) {
+//					return option;
+//				}
+//			}
+//		}
+//		return null;
+//	}
 }

Added: oodt/branches/cas-cl/src/test/org/apache/oodt/cas/cl/option/util/TestCmdLineOptionUtils.java
URL: http://svn.apache.org/viewvc/oodt/branches/cas-cl/src/test/org/apache/oodt/cas/cl/option/util/TestCmdLineOptionUtils.java?rev=1182632&view=auto
==============================================================================
--- oodt/branches/cas-cl/src/test/org/apache/oodt/cas/cl/option/util/TestCmdLineOptionUtils.java (added)
+++ oodt/branches/cas-cl/src/test/org/apache/oodt/cas/cl/option/util/TestCmdLineOptionUtils.java Thu Oct 13 01:19:08 2011
@@ -0,0 +1,58 @@
+package org.apache.oodt.cas.cl.option.util;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import org.apache.oodt.cas.cl.option.BasicCmdLineOption;
+import org.apache.oodt.cas.cl.option.BasicCmdLineOptionInstance;
+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.GroupCmdLineOptionInstance;
+import org.apache.oodt.cas.cl.option.require.RequirementRule;
+
+public class TestCmdLineOptionUtils extends TestCase {
+
+	public void testGetOptionalOptions() {
+		BasicCmdLineOption urlOption = createBasicOption("url", new RequirementRule("operation", Collections.singletonList("test"), false));
+		BasicCmdLineOption operationOption = createBasicOption("operation", true); 
+		HashSet<CmdLineOption<?>> options = new HashSet<CmdLineOption<?>>();
+		options.add(urlOption);
+		options.add(createBasicOption("pass", false));
+		options.add(createBasicOption("user", false));
+		options.add(operationOption);
+
+//		specifiedOptions.add(new BasicCmdLineOptionInstance(urlOption, Collections.singletonList("http://oodt.apache.org")));
+
+		Set<CmdLineOption<?>> optionalOptions = CmdLineOptionUtils.getConditionallyRequiredOptions(options, new BasicCmdLineOptionInstance(operationOption, Collections.singletonList("test")));
+		assertEquals(1, optionalOptions.size());
+		assertNotNull(CmdLineOptionUtils.getOptionByName("url", optionalOptions));
+	}
+
+	private static GroupCmdLineOption createGroupOption(String longName, boolean required) {
+		GroupCmdLineOption option = new GroupCmdLineOption();
+		option.setLongOption(longName);
+		option.setShortOption(longName);
+		option.setRequired(required);
+		return option;
+	}
+
+	private static BasicCmdLineOption createBasicOption(String longName, RequirementRule rule) {
+		BasicCmdLineOption option = new BasicCmdLineOption();
+		option.setLongOption(longName);
+		option.setShortOption(longName);
+		option.setRequirementRules(Collections.singletonList(rule));
+		return option;
+	}
+
+	public static BasicCmdLineOption createBasicOption(String longName, boolean required) {
+		BasicCmdLineOption option = new BasicCmdLineOption();
+		option.setLongOption(longName);
+		option.setShortOption(longName);
+		option.setRequired(required);
+		return option;
+	}
+}

Propchange: oodt/branches/cas-cl/src/test/org/apache/oodt/cas/cl/option/util/TestCmdLineOptionUtils.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain