Index: lutinutil/src/java/org/codelutin/util/OptionArgument.java diff -u lutinutil/src/java/org/codelutin/util/OptionArgument.java:1.1 lutinutil/src/java/org/codelutin/util/OptionArgument.java:1.2 --- lutinutil/src/java/org/codelutin/util/OptionArgument.java:1.1 Mon Nov 19 20:47:41 2007 +++ lutinutil/src/java/org/codelutin/util/OptionArgument.java Wed Nov 28 01:27:24 2007 @@ -26,7 +26,7 @@ public class OptionArgument { /** la clef de l'argument */ - protected String key; + protected OptionKeyFactory.OptionArgumentKey key; /** l'argument de la ligne de commande qui a été consommé par cet argument */ protected String arg; @@ -39,7 +39,7 @@ */ protected int position; - public OptionArgument(String key, int position, String arg, T value) { + public OptionArgument(OptionKeyFactory.OptionArgumentKey key, int position, String arg, T value) { this.key = key; this.arg = arg; this.value = value; @@ -47,7 +47,7 @@ } /** @return la clef de l'argument */ - public String getKey() { + public OptionKeyFactory.OptionArgumentKey getKey() { return key; } Index: lutinutil/src/java/org/codelutin/util/Option.java diff -u lutinutil/src/java/org/codelutin/util/Option.java:1.1 lutinutil/src/java/org/codelutin/util/Option.java:1.2 --- lutinutil/src/java/org/codelutin/util/Option.java:1.1 Mon Nov 19 20:47:54 2007 +++ lutinutil/src/java/org/codelutin/util/Option.java Wed Nov 28 01:27:24 2007 @@ -17,11 +17,15 @@ *@author Benjamin Poussin * * Copyright Code Lutin - *@version $Revision: 1.1 $ Mise a jour: $Date: 2007-11-19 20:47:54 $ par : $Author: tchemit $ + *@version $Revision: 1.2 $ Mise a jour: $Date: 2007-11-28 01:27:24 $ par : $Author: tchemit $ */ package org.codelutin.util; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + /** * Classe représentant une option trouvée lors du parsing de * la ligne de commande par le parseur {@link OptionParser}. @@ -31,6 +35,9 @@ */ public class Option { // Option + protected final OptionKeyFactory.OptionKey key; + + /** L'alias utilisé sur la ligne de commande pour cette option */ protected final String usedAlias; @@ -41,12 +48,15 @@ protected final OptionDefinition definition; /** + * @param key unique instanciated key of the option * @param definition definition de l'option * @param usedAlias used alias * @param arguments arguments of the option + * @see OptionKeyFactory#getOptionKey(String) */ - public Option(OptionDefinition definition, String usedAlias, - OptionArgument... arguments) { + public Option(OptionKeyFactory.OptionKey key, OptionDefinition definition, + String usedAlias, OptionArgument... arguments) { + this.key = key; this.definition = definition; this.usedAlias = usedAlias; this.arguments = arguments; @@ -60,31 +70,56 @@ return definition; } + public OptionKeyFactory.OptionKey getKey() { + return key; + } + public OptionArgument[] getArguments() { return arguments; } - public Object[] getArgumentsValue() { - Object[] result = new Object[arguments.length]; - for (int i = 0; i < arguments.length; i++) { - OptionArgument argument = arguments[i]; - result[i] = argument.getValue(); + public OptionKeyFactory.OptionArgumentKey[] getArgumentKeys() { + List result = new ArrayList(); + for (OptionArgument argument : arguments) { + result.add(argument.getKey()); } - return result; + return result.toArray(new OptionKeyFactory.OptionArgumentKey[result.size()]); } - public Object getArgumentValue(String argumentKey) { - for (OptionArgument optionArgument : arguments) { - if (optionArgument.getKey().equals(argumentKey)) { - return optionArgument.getValue(); + @SuppressWarnings({"unchecked"}) + public T getArgumentValue(OptionKeyFactory.OptionArgumentKey key) { + for (OptionArgument argument : arguments) { + if (argument.getKey().equals(key)) { + return (T) argument.getValue(); } } return null; } + @SuppressWarnings({"unchecked"}) + public T[] getArgumentValues(OptionKeyFactory.OptionArgumentKey key) { + java.util.List result = new ArrayList(); + for (OptionArgument argument : arguments) { + if (argument.getKey().equals(key)) { + result.add((T) argument.getValue()); + } + } + return (T[]) result.toArray(); + } + + @SuppressWarnings({"unchecked"}) + protected OptionArgument[] getArguments(OptionKeyFactory.OptionArgumentKey key) { + java.util.List> result = new ArrayList>(); + for (OptionArgument argument : arguments) { + if (argument.getKey().equals(key)) { + result.add(argument); + } + } + return result.toArray(new OptionArgument[result.size()]); + } + @Override public String toString() { - return definition + " (" + usedAlias + ")" + - java.util.Arrays.toString(getArguments()); + return definition + " (" + usedAlias + ")" + Arrays.toString(getArguments()); } }// Option