Index: lutinutil/src/java/org/codelutin/util/Option.java diff -u lutinutil/src/java/org/codelutin/util/Option.java:1.3 lutinutil/src/java/org/codelutin/util/Option.java:1.4 --- lutinutil/src/java/org/codelutin/util/Option.java:1.3 Wed Nov 28 17:18:40 2007 +++ lutinutil/src/java/org/codelutin/util/Option.java Wed Nov 28 19:59:40 2007 @@ -17,7 +17,7 @@ *@author Benjamin Poussin * * Copyright Code Lutin - *@version $Revision: 1.3 $ Mise a jour: $Date: 2007-11-28 17:18:40 $ par : $Author: tchemit $ + *@version $Revision: 1.4 $ Mise a jour: $Date: 2007-11-28 19:59:40 $ par : $Author: tchemit $ */ package org.codelutin.util; @@ -36,29 +36,17 @@ */ public class Option { // Option - /** la clef de cette option */ - protected final OptionKeyFactory.OptionKey key; - /** L'alias utilisé sur la ligne de commande pour cette option */ protected final String usedAlias; /** la liste des arguments consommés pour cette option */ protected final OptionArgument[] arguments; - /** la definition de l'option */ - 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) + * @param usedAlias used alias + * @param arguments arguments of the option */ - public Option(OptionKeyFactory.OptionKey key, OptionDefinition definition, - String usedAlias, OptionArgument... arguments) { - this.key = key; - this.definition = definition; + public Option(String usedAlias, OptionArgument... arguments) { this.usedAlias = usedAlias; this.arguments = arguments; } @@ -67,56 +55,37 @@ return usedAlias; } - public OptionDefinition getDefinition() { - return definition; - } - - public OptionKeyFactory.OptionKey getKey() { - return key; + public String getConstantArgumentValue(int position) { + return filterValue(position, OptionArgumentType.constant, String.class, null); } - public OptionArgument[] getArguments() { - return arguments; + public T getValuedArgumentValue(int position, Class clazz) { + return filterValue(position, OptionArgumentType.valued, clazz, null); } - public OptionKeyFactory.OptionArgumentKey[] getArgumentKeys() { - List result = new ArrayList(); - for (OptionArgument argument : arguments) { - result.add(argument.getKey()); - } - return result.toArray(new OptionKeyFactory.OptionArgumentKey[result.size()]); + public T getNamedAndValuedArgumentValue(int position, Class clazz, String key) { + return filterValue(position, OptionArgumentType.namedAndValued, clazz, key); } - public String getConstantArgumentValue(int position) { - for (OptionArgument argument : arguments) { - if (argument.getPosition() == position && argument.definition.getType() == OptionArgumentType.constant) { - return (String) argument.getValue(); - } - } - return null; + public T[] getValuedArgumentValues(int position, Class clazz) { + T[] result; + result = filterValues(position, OptionArgumentType.valued, clazz,null); + return result; } - @SuppressWarnings({"unchecked"}) - public T getValuedArgumentValue(int position, Class clazz) { - for (OptionArgument argument : arguments) { - if (argument.getPosition() == position - && argument.definition.getType() == OptionArgumentType.valued - && argument.definition.getValueType().getClazz() == clazz) { - - return (T) argument.getValue(); - } - } - return null; + public T[] getNamedAndValuedArgumentValues(int position, Class clazz, String key) { + T[] result; + result = filterValues(position, OptionArgumentType.namedAndValued, clazz,key); + return result; } @SuppressWarnings({"unchecked"}) - public T getNamedAndValuedArgumentValue(int position, String key, Class clazz) { + protected T filterValue(int position, OptionArgumentType type, Class clazz, String key) { for (OptionArgument argument : arguments) { - if (argument.getPosition() == position - && argument.definition.getType() == OptionArgumentType.namedAndValued - && argument.definition.getKey().equals(key) - && argument.definition.getValueType().getClazz() == clazz) { - + if (argument.getPos() == position + && argument.definition.getType() == type + && argument.definition.getValueType().getClazz() == clazz + && (key == null || argument.definition.getKey().equals(key))) { return (T) argument.getValue(); } } @@ -124,38 +93,21 @@ } @SuppressWarnings({"unchecked"}) - public T[] getValuedArgumentValues(int position, Class clazz) { + protected T[] filterValues(int position, OptionArgumentType type, Class clazz,String key) { List result = new ArrayList(); for (OptionArgument argument : arguments) { - if (argument.getPosition() == position - && argument.definition.getType() == OptionArgumentType.valued - && argument.definition.getValueType().getClazz() == clazz) { - - result.add((T) argument.getValue()); - } - } - T[] r = (T[]) Array.newInstance(clazz, result.size()); - return result.toArray(r); - } - - @SuppressWarnings({"unchecked"}) - public T[] getNamedAndValuedArgumentValues(int position, String key, Class clazz) { - List result = new ArrayList(); - for (OptionArgument argument : arguments) { - if (argument.getPosition() == position - && argument.definition.getType() == OptionArgumentType.namedAndValued - && argument.definition.getKey().equals(key) - && argument.definition.getValueType().getClazz() == clazz) { - + if (argument.getPos() == position + && argument.definition.getType() == type + && argument.definition.getValueType().getClazz() == clazz + && (key == null || argument.definition.getKey().equals(key))) { result.add((T) argument.getValue()); } } - T[] r = (T[]) Array.newInstance(clazz, result.size()); - return result.toArray(r); + return (T[]) Array.newInstance(clazz, result.size()); } @Override public String toString() { - return definition + " (" + usedAlias + ")" + Arrays.toString(getArguments()); + return super.toString() + " (" + usedAlias + ")" + Arrays.toString(arguments); } }// Option