Index: lutinutil/src/java/org/codelutin/util/ArgumentsParser.java diff -u lutinutil/src/java/org/codelutin/util/ArgumentsParser.java:1.4 lutinutil/src/java/org/codelutin/util/ArgumentsParser.java:1.5 --- lutinutil/src/java/org/codelutin/util/ArgumentsParser.java:1.4 Thu Oct 14 19:39:03 2004 +++ lutinutil/src/java/org/codelutin/util/ArgumentsParser.java Thu Dec 23 18:19:15 2004 @@ -1,18 +1,35 @@ -/* - * This file is part of [PROGRAM NAME] - [What it does in brief] - * Copyright (c) 2001 [Author] - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or any later version. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ +/* *##% +* Copyright (C) 2002, 2003, 2004, 2005 Code Lutin, +* Cédric Pineau, Benjamin Poussin, +* +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*##%*/ + +/* * +* ArgumentsParser.java +* +* Created: 22 août 2003 +* +* @author Benjamin Poussin +* @version $Revision: 1.5 $ +* +* Mise a jour: $Date: 2004/12/23 18:19:15 $ +* par : $Author: bpoussin $ +*/ + package org.codelutin.util; import java.util.ArrayList; @@ -21,206 +38,217 @@ import java.util.Iterator; /** - * Parser d'option de la ligne de commande. - * IDEA: ajouter le type de l'argument a parser (int, double, String, boolean, ) - * et mettre des methodes pour récupérer directement ce type. - * - *@author poussin - *@created 22 août 2003 - */ +* Parser d'option de la ligne de commande. +* IDEA: ajouter le type de l'argument a parser (int, double, String, boolean, ) +* et mettre des methodes pour récupérer directement ce type. +*/ public class ArgumentsParser extends java.lang.Object { /** La liste des arguments qui ne sont pas des options */ - ArrayList arguments = new ArrayList(); + protected ArrayList arguments = new ArrayList(); /** le nom à afficher pour l'usage */ - String name = ""; + protected String name = ""; /** - * la liste des options, la cle est une option, et la valeur est la liste - * des options qui ont été lu grâce à celle-ci. - */ - HashMap options = new HashMap(); + * la liste des options, la cle est une option, et la valeur est la liste + * des options qui ont été lu grâce à celle-ci. + */ + protected HashMap options = new HashMap(); /** liste a plat de toutes les options lus. */ - ArrayList parsedOptions = new ArrayList(); + protected ArrayList parsedOptions = new ArrayList(); /** - * Constructor for the ArgumentsParser object - * - *@param name e nom à afficher pour l'usage - */ + * Constructor for the ArgumentsParser object + * + *@param name e nom à afficher pour l'usage + */ public ArgumentsParser(String name) { this.name = name; } /** - * Permet de d'ajouter une option facilement au parser, sans avoir besoin de - * créer un objet Option. - * - *@param name le nom de cette option. - *@param acceptedOption la liste des marqueurs acceptables pour cette - * option. exemple -o, --option, --options - *@param argument le nombre d'argument que cette option a - *@param description description de cette option - *@return retourne l'option créer et qui sera utilisé - *@see #addOption(Option) - */ - public ArgumentsParserOption addOption(String name, String description, - String[] acceptedOption, int argument) { - return addOption(new ArgumentsParserDefaultOption(name, description, acceptedOption, argument)); + * Permet de d'ajouter une option facilement au parser, sans avoir besoin de + * créer un objet Option. + * + *@param optionName le nom de cette option. + *@param acceptedOption la liste des marqueurs acceptables pour cette + * option. exemple -o, --option, --options + *@param argument le nombre d'argument que cette option a + *@param description description de cette option + *@return retourne l'option créer et qui sera utilisé + *@see #addOption(Option) + */ + public ArgumentsParserOption addOption(String optionName, + String description, String[] acceptedOption, int argument) { + return addOption(new ArgumentsParserDefaultOption + (optionName, description, acceptedOption, argument)); } /** - * Permet de d'ajouter une option facilement au parser, sans avoir besoin de - * créer un objet Option. - * - *@param name le nom de cette option. - *@param acceptedOption le marqueur acceptable pour cette option. exemple - * -o, --option ou --options - *@param argument le nombre d'argument que cette option a - *@param description description de cette option - *@return retourne l'option créer et qui sera utilisé - *@see #addOption(Option) - */ - public ArgumentsParserOption addOption(String name, String description, - String acceptedOption, int argument) { - return addOption(new ArgumentsParserDefaultOption(name, description, new String[]{acceptedOption}, argument)); + * Permet de d'ajouter une option facilement au parser, sans avoir besoin de + * créer un objet Option. + * + *@param name le nom de cette option. + *@param acceptedOption le marqueur acceptable pour cette option. exemple + * -o, --option ou --options + *@param argument le nombre d'argument que cette option a + *@param description description de cette option + *@return retourne l'option créer et qui sera utilisé + *@see #addOption(Option) + */ + public ArgumentsParserOption addOption(String optionName, String description, + String acceptedOption, int argument) { + return addOption(new ArgumentsParserDefaultOption( + optionName, description, new String[]{acceptedOption}, argument)); } /** - * Permet d'ajouter une option au parseur - * - *@param option l'option à ajouter - *@return retourne l'option passé en paramètre - */ + * Permet d'ajouter une option au parseur + * + *@param option l'option à ajouter + *@return retourne l'option passé en paramètre + */ public ArgumentsParserOption addOption(ArgumentsParserOption option) { options.put(option, new ArrayList()); return option; } /** - * Permet de vérifier la coherence de toutes les options. Cela consiste à - * regarder si deux options n'utilise pas les même marqueurs, si deux - * options n'ont pas le même nom, si le nombre de répétition min d'une - * option n'est pas suppérieur au nombre de répétition max - * - *@return une chaine de caractère indiquant toutes les erreurs. Si la - * chaine est vide alors il n'y a pas d'erreur. - */ + * Permet de vérifier la coherence de toutes les options. Cela consiste à + * regarder si deux options n'utilise pas les même marqueurs, si deux + * options n'ont pas le même nom, si le nombre de répétition min d'une + * option n'est pas suppérieur au nombre de répétition max + * + *@return une chaine de caractère indiquant toutes les erreurs. Si la + * chaine est vide alors il n'y a pas d'erreur. + */ public String checkCoherence() { StringBuffer result = new StringBuffer(); HashSet optionNames = new HashSet(); HashSet used = new HashSet(); - for (Iterator i = options.keySet().iterator(); i.hasNext(); ) { + for (Iterator i = options.keySet().iterator(); i.hasNext();) { ArgumentsParserOption option = (ArgumentsParserOption) i.next(); if (optionNames.contains(option.getName())) { - result.append("option name " + option.getName() + " is allready used\n"); + result.append("option name " + option.getName() + + " is allready used\n"); } optionNames.add(option.getName()); String[] acceptedOption = option.getAcceptedOption(); for (int a = 0; a < acceptedOption.length; a++) { if (used.contains(acceptedOption[a])) { - result.append("Option " + acceptedOption[a] + " in " + option.getName() + " is allready used\n"); + result.append("Option " + acceptedOption[a] + " in " + + option.getName() + " is allready used\n"); } used.add(acceptedOption[a]); } - if (option.getRepetitionMax() > 0 && - option.getRepetitionMin() > option.getRepetitionMax()) { - result.append("repetition min is over repetition max for: " + option.getName() + "\n"); - option.setRepetitionMax(option.getRepetitionMin()); - } + if (option.getRepetitionMax() > 0 + && option.getRepetitionMin() > option.getRepetitionMax()) { + result.append("repetition min is over repetition max for: " + + option.getName() + "\n"); + option.setRepetitionMax(option.getRepetitionMin()); + } } return result.toString(); } /** - * Permet de vérifier la cohérence de la ligne de commande par rapport aux - * contraintes des options. Cela consiste à vérifier que chaque option est - * bien répété le nmobre de fois souhaité par l'option qui à permis de la - * lire. - * - *@return vrai s'il n'y a pas d'erreur - *@exception ArgumentsParserException une exception est levé dès qu'une - * erreur est détectée. - */ + * Permet de vérifier la cohérence de la ligne de commande par rapport aux + * contraintes des options. Cela consiste à vérifier que chaque option est + * bien répété le nmobre de fois souhaité par l'option qui à permis de la + * lire. + * + *@return vrai s'il n'y a pas d'erreur + *@exception ArgumentsParserException une exception est levé dès qu'une + * erreur est détectée. + */ boolean checkParsing() throws ArgumentsParserException { - for (Iterator i = options.keySet().iterator(); i.hasNext(); ) { + for (Iterator i = options.keySet().iterator(); i.hasNext();) { ArgumentsParserOption option = (ArgumentsParserOption) i.next(); ArrayList list = (ArrayList) options.get(option); - if (option.getRepetitionMin() > 0 && list.size() < option.getRepetitionMin()) { - throw new ArgumentsParserException("Error option repeted less than accepted need " + option.getRepetitionMin() + " find " + list.size() + ": " + option); - } - if (option.getRepetitionMax() > 0 && list.size() > option.getRepetitionMax()) { - throw new ArgumentsParserException("Error option repeted more than accepted: " + option); + if (option.getRepetitionMin() > 0 + && list.size() < option.getRepetitionMin()) { + throw new ArgumentsParserException( + "Error option repeted less than accepted need " + + option.getRepetitionMin() + " find " + list.size() + ": " + + option); + } + if (option.getRepetitionMax() > 0 + && list.size() > option.getRepetitionMax()) { + throw new ArgumentsParserException( + "Error option repeted more than accepted: " + option); } } return true; } /** - * Retourne les arguments de la ligne de commande qui n'ont pas été lu pas - * les options - * - *@return la liste des arguments non lu par les options. - */ + * Retourne les arguments de la ligne de commande qui n'ont pas été lu pas + * les options + * + *@return la liste des arguments non lu par les options. + */ public ArrayList getArguments() { return arguments; } /** - * Retourne le nom utilisé pour l'affichage de l'usage - * - *@return la chaine de caratère utilisée pour l'usage - */ + * Retourne le nom utilisé pour l'affichage de l'usage + * + *@return la chaine de caratère utilisée pour l'usage + */ public String getName() { return name; } /** - * Permet de savoir si une option a ete trouvée sur la ligne de commande - * - *@param name le nom de l'option dont il faut vérifier l'existance - *@return vrai si l'option existe sur la ligne de commande - */ - public boolean hasParsedOption(String name) { - return getParsedOptions(name).size() != 0; + * Permet de savoir si une option a ete trouvée sur la ligne de commande + * + *@param name le nom de l'option dont il faut vérifier l'existance + *@return vrai si l'option existe sur la ligne de commande + */ + public boolean hasParsedOption(String optionName) { + return getParsedOptions(optionName).size() != 0; } /** - * Retourne le premier argument d'un certain type - * - *@param name le nom de l'option à retourner - *@return la valeur de l'option si elle existe, null sinon - */ - public String [] getParsedOption(String name) { - ArrayList list = getParsedOptions(name); - if (list.size() == 0) return null; - return ((ArgumentsParserOption)list.get(0)).getArguments(); + * Retourne le premier argument d'un certain type + * + *@param name le nom de l'option à retourner + *@return la valeur de l'option si elle existe, null sinon + */ + public String [] getParsedOption(String optionName) { + ArrayList list = getParsedOptions(optionName); + if (list.size() == 0){ + return null; + } else { + return ((ArgumentsParserOption)list.get(0)).getArguments(); + } } /** - * Retourne la liste de toutes les options créées durant le parsage de la - * ligne de commande. - * - *@return la liste de toutes les options lus - */ + * Retourne la liste de toutes les options créées durant le parsage de la + * ligne de commande. + * + *@return la liste de toutes les options lus + */ public ArrayList getParsedOptions() { return parsedOptions; } /** - * Retourne la liste de toutes les options d'un certain type - * - *@param name le nom des options à retourner - *@return la liste des options d'un certain nom, ou une liste vide si - * aucune option de ce nom existe ou si cette option n'a pas été trouvé - * sur la ligne de commande - */ - public ArrayList getParsedOptions(String name) { + * Retourne la liste de toutes les options d'un certain type + * + *@param name le nom des options à retourner + *@return la liste des options d'un certain nom, ou une liste vide si + * aucune option de ce nom existe ou si cette option n'a pas été trouvé + * sur la ligne de commande + */ + public ArrayList getParsedOptions(String optionName){ ArrayList result = new ArrayList(); for (Iterator i = options.keySet().iterator(); i.hasNext(); ) { ArgumentsParserOption option = (ArgumentsParserOption) i.next(); - if (name.equals(option.getName())) { + if (optionName.equals(option.getName())) { result = (ArrayList) options.get(option); } } @@ -228,15 +256,15 @@ } /** - * Permet de recherche une option permettant de lire l'argument courant de - * la ligne de commande et d'utiliser une copie de cette option pour lire la - * suite de la ligne de commande. - * - *@param args la ligne de commande - *@param index la position courant de parsage de la ligne de commande - *@return retourne l'option qui a permit de lire la ligne de commande - * ou null si aucune option ne peut lire l'argument courant. - */ + * Permet de recherche une option permettant de lire l'argument courant de + * la ligne de commande et d'utiliser une copie de cette option pour lire la + * suite de la ligne de commande. + * + *@param args la ligne de commande + *@param index la position courant de parsage de la ligne de commande + *@return retourne l'option qui a permit de lire la ligne de commande + * ou null si aucune option ne peut lire l'argument courant. + */ ArgumentsParserOption lookingForOption(String[] args, int index) { for (Iterator i = options.keySet().iterator(); i.hasNext(); ) { ArgumentsParserOption option = (ArgumentsParserOption) i.next(); @@ -253,17 +281,24 @@ /** - * Une methode main pour tester la librairie - * - *@param args The command line arguments - *@exception Exception on fait suivre toutes les erreurs - */ + * Une methode main pour tester la librairie + * + *@param args The command line arguments + *@exception Exception on fait suivre toutes les erreurs + */ public static void main(String[] args) throws Exception { ArgumentsParser ap = new ArgumentsParser("ArgumentsParserTest"); - ap.addOption("project", "le nom du projet", "-p", 1).setRepetitionMin(1); - ap.addOption("lib", "les librairies", "-l", 1).setRepetitionMin(2).setRepetitionMax(1); + ap.addOption("project", "le nom du projet", "-p", 1) + .setRepetitionMin(1); + + ap.addOption("lib", "les librairies", "-l", 1) + .setRepetitionMin(2).setRepetitionMax(1); + ap.addOption("truc", "les dummy", "-t", 1); - ap.addOption("package", "le package utilisé", new String[]{"-k", "--package"}, 1).setRepetitionMax(10); + + ap.addOption("package", "le package utilisé", + new String[]{"-k", "--package"}, 1).setRepetitionMax(10); + System.out.println(ap.usage()); System.out.println(); System.out.println("check coherence..."); @@ -276,14 +311,14 @@ } /** - * Cette méthode permet de parser une ligne de commande. Aucune - * réinitialisation n'est faite entre deux appels. - * - *@param args la ligne de commande à parser - *@return la liste de toutes les options lus - *@exception ArgumentsParserException si la vérification de la lecture - * montre des incohérence une exception est levée - */ + * Cette méthode permet de parser une ligne de commande. Aucune + * réinitialisation n'est faite entre deux appels. + * + *@param args la ligne de commande à parser + *@return la liste de toutes les options lus + *@exception ArgumentsParserException si la vérification de la lecture + * montre des incohérence une exception est levée + */ public ArgumentsParserOption[] parse(String[] args) throws ArgumentsParserException { for (int i = 0; i < args.length; i++) { ArgumentsParserOption option = lookingForOption(args, i); @@ -296,40 +331,41 @@ checkParsing(); - return (ArgumentsParserOption[]) parsedOptions.toArray(new ArgumentsParserOption[parsedOptions.size()]); + return (ArgumentsParserOption[]) parsedOptions.toArray( + new ArgumentsParserOption[parsedOptions.size()]); } /** - *

- * - * Permet d'afficher l'usage gràce aux informations des options: répétition, - * description, ...

- * - * la chaîne retourné est de la forme suivante

-     *usage: ArgumentsParserTest [package{10}][truc+] lib  project+
-     *
-     *package(-k, --package)  le package utilisé
-     *truc(-t)        les dummy
-     *lib(-l) les librairies
-     *project(-p)     le nom du projet
-     *

- * - * ArgumentsParserTest est le nom passé au constructeur de ArgumentsParser. - *

- * - * une option qui a une répétition min à 0 est entre [ ]

- * - * une option qui a une répétition max à 0 à un + ajouté

- * - * une option qui a une répétition max à supérieur à 1 à le nombre max - * ajouté entre {}

- * - *@return la chaîne de caratère de l'usage. - */ - public String usage() { + *

+ * + * Permet d'afficher l'usage gràce aux informations des options: répétition, + * description, ...

+ * + * la chaîne retourné est de la forme suivante

+    *usage: ArgumentsParserTest [package{10}][truc+] lib  project+
+    *
+    *package(-k, --package)  le package utilisé
+    *truc(-t)        les dummy
+    *lib(-l) les librairies
+    *project(-p)     le nom du projet
+    *

+ * + * ArgumentsParserTest est le nom passé au constructeur de ArgumentsParser. + *

+ * + * une option qui a une répétition min à 0 est entre [ ]

+ * + * une option qui a une répétition max à 0 à un + ajouté

+ * + * une option qui a une répétition max à supérieur à 1 à le nombre max + * ajouté entre {}

+ * + *@return la chaîne de caratère de l'usage. + */ + public String usage() { StringBuffer result = new StringBuffer(); result.append("usage: " + getName() + " "); - for (Iterator i = options.keySet().iterator(); i.hasNext(); ) { + for (Iterator i = options.keySet().iterator(); i.hasNext();) { ArgumentsParserOption option = (ArgumentsParserOption) i.next(); if (option.getRepetitionMin() <= 0) { result.append("["); @@ -343,8 +379,8 @@ result.append("{" + option.getRepetitionMax() + "}"); } - for(int a=0; a"); + for(int a = 0; a < option.count(); a++){ + result.append(" "); } if (option.getRepetitionMin() <= 0) { @@ -354,7 +390,7 @@ } } result.append("\n\n"); - for (Iterator oi = options.keySet().iterator(); oi.hasNext(); ) { + for (Iterator oi = options.keySet().iterator(); oi.hasNext();) { ArgumentsParserOption option = (ArgumentsParserOption) oi.next(); result.append(option.getName()); result.append("("); Index: lutinutil/src/java/org/codelutin/util/ArgumentsParserDefaultOption.java diff -u lutinutil/src/java/org/codelutin/util/ArgumentsParserDefaultOption.java:1.1 lutinutil/src/java/org/codelutin/util/ArgumentsParserDefaultOption.java:1.2 --- lutinutil/src/java/org/codelutin/util/ArgumentsParserDefaultOption.java:1.1 Thu Aug 28 18:38:48 2003 +++ lutinutil/src/java/org/codelutin/util/ArgumentsParserDefaultOption.java Thu Dec 23 18:19:15 2004 @@ -17,7 +17,7 @@ *@author Benjamin Poussin * * Copyright Code Lutin - *@version $Revision: 1.1 $ Mise a jour: $Date: 2003/08/28 18:38:48 $ par : $Author: bpoussin $ + *@version $Revision: 1.2 $ Mise a jour: $Date: 2004/12/23 18:19:15 $ par : $Author: bpoussin $ */ package org.codelutin.util; @@ -90,7 +90,6 @@ *@return vrai si le parsing a reussi */ public boolean parse(String[] args, int index) { - int result = 0; parsedOption = args[index++]; if (acceptOption(parsedOption)) { for (int i = 0; i < count(); i++) { Index: lutinutil/src/java/org/codelutin/util/LoggingPatternFormatter.java diff -u lutinutil/src/java/org/codelutin/util/LoggingPatternFormatter.java:1.2 lutinutil/src/java/org/codelutin/util/LoggingPatternFormatter.java:1.3 --- lutinutil/src/java/org/codelutin/util/LoggingPatternFormatter.java:1.2 Mon Aug 16 15:01:33 2004 +++ lutinutil/src/java/org/codelutin/util/LoggingPatternFormatter.java Thu Dec 23 18:19:15 2004 @@ -23,9 +23,9 @@ * * @author POUSSIN Benjamin * Copyright Code Lutin -* @version $Revision: 1.2 $ +* @version $Revision: 1.3 $ * -* Mise a jour: $Date: 2004/08/16 15:01:33 $ +* Mise a jour: $Date: 2004/12/23 18:19:15 $ * par : $Author: bpoussin $ */ @@ -139,7 +139,6 @@ */ protected void compilePattern(String pattern){ compile = new ArrayList(); - int next = 0; String[] match = findNextPattern(pattern); while(!match[1].equals("")){ compile.add(new StringArgument(match[0])); Index: lutinutil/src/java/org/codelutin/util/Resource.java diff -u lutinutil/src/java/org/codelutin/util/Resource.java:1.19 lutinutil/src/java/org/codelutin/util/Resource.java:1.20 --- lutinutil/src/java/org/codelutin/util/Resource.java:1.19 Mon Dec 13 15:46:23 2004 +++ lutinutil/src/java/org/codelutin/util/Resource.java Thu Dec 23 18:19:15 2004 @@ -23,10 +23,10 @@ * * @author POUSSIN Benjamin * Copyright Code Lutin -* @version $Revision: 1.19 $ +* @version $Revision: 1.20 $ * -* Mise a jour: $Date: 2004/12/13 15:46:23 $ -* par : $Author: pineau $ +* Mise a jour: $Date: 2004/12/23 18:19:15 $ +* par : $Author: bpoussin $ */ package org.codelutin.util; @@ -35,7 +35,6 @@ import java.io.FileInputStream; import java.io.InputStream; import java.io.IOException; -import java.lang.ClassLoader; import java.lang.reflect.Method; import java.net.MalformedURLException; import java.net.URL; Index: lutinutil/src/java/org/codelutin/util/VersionNumberUtil.java diff -u lutinutil/src/java/org/codelutin/util/VersionNumberUtil.java:1.2 lutinutil/src/java/org/codelutin/util/VersionNumberUtil.java:1.3 --- lutinutil/src/java/org/codelutin/util/VersionNumberUtil.java:1.2 Sun Aug 15 13:55:47 2004 +++ lutinutil/src/java/org/codelutin/util/VersionNumberUtil.java Thu Dec 23 18:19:15 2004 @@ -23,10 +23,10 @@ * * @author Benjamin Poussin * Copyright Code Lutin - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ * - * Mise a jour: $Date: 2004/08/15 13:55:47 $ - * par : $Author: pineau $ + * Mise a jour: $Date: 2004/12/23 18:19:15 $ + * par : $Author: bpoussin $ */ package org.codelutin.util; @@ -77,7 +77,7 @@ public static String inc(String v){ if(v == null){ return "1"; - } else { + }else{ v = v.trim(); } @@ -85,11 +85,11 @@ int i = v.lastIndexOf('.'); if(i == -1){ int n = Integer.parseInt(v) + 1; - result = ""+n; + result = "" + n; }else{ - String num = v.substring(i+1); + String num = v.substring(i + 1); int n = Integer.parseInt(num) + 1; - result = v.substring(0, i+1) + n; + result = v.substring(0, i + 1) + n; } return result; }