Author: tchemit Date: 2008-08-12 17:35:52 +0000 (Tue, 12 Aug 2008) New Revision: 1013 Added: trunk/lutinutil/src/site/xdoc/ trunk/lutinutil/src/site/xdoc/fr/ trunk/lutinutil/src/site/xdoc/fr/rst/ trunk/lutinutil/src/site/xdoc/fr/rst/CommandLineArgumentApplication.rst trunk/lutinutil/src/site/xdoc/fr/rst/LutinUtil.rst trunk/lutinutil/src/site/xdoc/fr/rst/Todo.rst trunk/lutinutil/src/site/xdoc/fr/rst/index.rst Removed: trunk/lutinutil/doc/CommandLineArgumentApplication.rst trunk/lutinutil/doc/LutinUtil.rst trunk/lutinutil/doc/Todo.rst trunk/lutinutil/doc/index.rst trunk/lutinutil/src/site/xdocs/ Modified: trunk/lutinutil/src/site/xdoc/navigation.xml Log: deplacement vers le repertoire par defaut de site Deleted: trunk/lutinutil/doc/CommandLineArgumentApplication.rst =================================================================== --- trunk/lutinutil/doc/CommandLineArgumentApplication.rst 2008-08-12 16:51:11 UTC (rev 1012) +++ trunk/lutinutil/doc/CommandLineArgumentApplication.rst 2008-08-12 17:35:52 UTC (rev 1013) @@ -1,124 +0,0 @@ -====================== -Argument d'application -====================== - -Il y a deux type d'argument d'application: -- les arguments permettant de modifier la configuration qui peuvent aussi - être dans un fichier de configuration ou en variable d'environnement. -- les arguments permettant d'indiquer des actions a faire a l'application - -Les options de configuration -============================ - -Les options de configuration peuvent être décrit directement par un POJO -avec des annotations:: - - @OptionConfigOrder("resource MonApp.properties", "file /etc/MonApp.properties", - "optionfile configFile", "env", "line") - public class MonAppConfig extends OptionConfig { - - @Option - @OptionSaveFile - public File configFile = new File("$HOME/.MonApp"); - - @Option(pattern [^\s]+) - public String username = "anonyous"; - - @Option(pattern ..) - public String lang = "fr"; - - @Option(pattern ..) - public String country = "FR"; - - @Option - public boolean showGui = true; - - @Option(min=10, max=10) - public List<Integer> value; - - @Unparsed - public List<String> other; - } - -La classe OptionConfig ----------------------- - -La classe OptionConfig contient plusieurs méthodes: - -- load sans argument qui permet de charger le POJO en fonction de - OptionConfigOrder -- load(File) qui permet de charger le POJO seulement en fonction d'un - fichier. Il bien sur possible d'appeler load() puis load(File). -- save qui permet de sauver les informations du POJO, le fichier ou sauver - les options est indiqué par l'annotation @OptionSaveFile - -Annotation OptionConfigOrder ----------------------------- - -OptionConfigOrder permet de déterminer l'ordre de recherche de la bonne -valeur des options. Le dernier indiqué sera le dernier lu et donc celui qui -aura raison. - -resource - indique un fichier resource a rechercher dans le classpath - -file - indique un fichier sur le systeme de fichier - -optionfile - indique un fichier dont le chemin est indiqué par une option - -env - indique les variables d'environnement du processus - -line - indique les options sur la ligne de commande - -Implantation -~~~~~~~~~~~~ - -# On charge dans un objet **Properties** chaque entre de - **OptionConfigOrder** sauf **optionfile** s'il y en a. -# On chaine tous les fichiers de proprietes pour pouvoir demander - l'information au dernier qui recherchera lui meme dans son pere s'il n'a pas - l'informaiton. -# Pour chaque **optionfile** on demande sa valeur, on crée le fichier de - propriété et on l'ajoute dans la chaine à la bonne place -# Pour chaque option trouvé dans le POJO on met a jour sa valeur avec la - valeur trouvé dans les propriétés. - -Annotation Option ------------------ - -Indique une option possible. Elle peut contenir: - -- description -- pattern -- alias -- min -- max - -Par defaut l'option sur la ligne de commande sera le nom de la variable precedé de -- - -Annotation Unparsed -------------------- - -Indique que toutes les options de la ligne de commande non reconnu finisse dans ce champs -Il est possible de type la collection autrement que par String. - -Annotation OptionSaveFile -------------------------- - -Indique le fichier a utiliser pour sauver les options - -Les actions -=========== - -TODO: comment différencier les actions des options ? comment reutiliser le travail de tony ? - -Amélioration possible -===================== - -- Générer automatiquement par un plugin maven les methodes get/set sur les options -- Gérer les options read/write et read -- un plugin maven qui verifie la coherence des options Deleted: trunk/lutinutil/doc/LutinUtil.rst =================================================================== --- trunk/lutinutil/doc/LutinUtil.rst 2008-08-12 16:51:11 UTC (rev 1012) +++ trunk/lutinutil/doc/LutinUtil.rst 2008-08-12 17:35:52 UTC (rev 1013) @@ -1,100 +0,0 @@ -========================= -Documentation - LutinUtil -========================= - -:Authors: Benjamin POUSSIN -:Contact: poussin@codelutin.com -:Revision: $Revision$ -:Date: $Date$ - -.. sectnum:: - -.. contents:: - - -LutinUtil contient un ensemble de librairies trop petites pour avoir -leur propre projet. Elles sont aussi utile à la plupart des projets de -Code Lutin. - - -Resource -======== - -Cette librairie permet de rechercher une ressource dans le maximum -d'endroit possible et si elle est trouvée l'url de la ressource est -retournée. - -:: - - import org.codelutin.util.Resource; - import java.net.URL; - ... - URL image = Resource.getURL("/images/bidulle.png"); - ... - -Dans cet exemple l'image est recherchée sur le système de fichier -local, si elle n'est pas trouvée, elle est recherché dans le -classpath, et si elle n'est toujours pas trouvée une exception est -alors levée. - - -ArgumentsParser -=============== - -Cette librairie permet de traiter les arguments de la ligne de commande de -façon simple mais évoluable. Son principe de fonctionnement est que l'on -déclare les arguements que l'on attend sur la ligne de commande avec le nombre -de paramètre qu'ils prennent et une petite description de l'option. Ensuite -on dispose de toutes les fonctions utiles pour le traitement de la ligne de -commande. - -Voici un exemple d'utilisation:: - - import org.codelutin.util.ArgumentsParser; - ... - ArgumentsParser parser = new ArgumentsParser("ToPIA"); - - parser.addOption("version", "affiche le numéro de version", new String[]{"--version", "-v"}, 0).setRepetitionMax(1); - - parser.addOption("help", "affiche l'aide de topia", new String[]{"--help", "-h"}, 0).setRepetitionMax(1); - - parser.addOption("start", "Lancement d'une application", new - String[]{"--start", "-s"}, 1).setRepetitionMax(1); - - System.out.println(parser.checkCoherence()); - parser.parse(args); - - if(parser.hasParsedOption("help")){ - System.out.println(parser.usage()); - }else if (parser.hasParsedOption("start")){ - System.out.println ("--> Executing application: "); - String arg = parser.getParsedOption("start") - new Application(arg); - }else if (parser.hasParsedOption("version")){ - System.out.println( "- Topia version 0.01 - " + - "Get new release at http://www.codelutin.com/ -" ); - } - -Cette librairie permet d'afficher l'aide de la ligne de commande:: - - System.out.println(parser.usage()); - -Elle permet aussi de vérifier le nombre de fois qu'une option de la ligne de -commande est présente et que ce nombre est bien compris dans l'ensemble des -valeurs acceptées, grâce au méthode *setRepetitionMax*, et *setRepetitionMin*. - -Si l'implantation par défaut du parseur d'option ne convient pas pour une de vos -option, par exemple si le nombre de paramètre de l'option varie suivant la valeur -du premier paramètre vous pouvez alors écrire votre propre Parser pour cette -Option et l'utilisée avec les autres. - - -Log -=== - -Cette objet permet de suivre ce que fait une application simplement. Le -développeur indique grâce à cette classe l'état dans lequel l'application est. - -Ensuite, il peut mettre des listeners sur cette classe qui afficheront -les messages qui ont été envoyés. Ou afficheront l'état d'une tâche en train -de s'exécuter. Deleted: trunk/lutinutil/doc/Todo.rst =================================================================== --- trunk/lutinutil/doc/Todo.rst 2008-08-12 16:51:11 UTC (rev 1012) +++ trunk/lutinutil/doc/Todo.rst 2008-08-12 17:35:52 UTC (rev 1013) @@ -1,80 +0,0 @@ -Un nouveau parser d'argument -============================ - -L'idée est d'avoir une description simple des arguments et de leur type et -que soit généré une classe à partir de cette description. Dans le -programme il suffirat de demander à la classe généré les inforamtions. - -Les options sont chargées par leur valeur par defaut, puis sont surchargées -par les valeurs des fichiers de configurations, puis surchargé -par les valeurs des variables d'environnement, et enfin surchargé par les -valeurs de la ligne de commande. - -Les fichiers de configuraiton sont lu dans l'ordre suivant: /etc/ + chemin -indiqué, puis $HOME/. + chemin indiqué. - -si le chemin indiqué est titi/toto.conf et que l'on est sur un système Linux -les fichiers de configuration seront: /etc/titi/toto.conf et -~/.titi/toto.conf - -exemple de description ----------------------- - -Par exemple on pourrait avoir le fichier Toto.java.conf dans les sources du -projet qui fournirait le fichier Toto.java:: - - configfile: titi/toto.conf - - outFile: le fichier de sortie - short: o - long: outfile - default: - - type: File - environment: toto - - number: Le nombre de fichier à produire - required: 1 - short: n - default: 1 - long: number - condition: 0<Number && Number<10 - type: int - -La description commence l'option non obligatoire *configfile* qui donne le -nom du fichier de configuration à utiliser pour l'application. Puis on -trouve les options. Une option commence par un nom, puis sa description -ensuite l'option peut avoir plusieurs options: - -- short: l'option courte sur la ligne de commande. Si absente pas d'option - courte -- long: l'option longue sur la ligne de commande, si pas d'option, on - reprend le nom de l'option -- type: le type de l'option (int, Float, String, char, File, ...) -- default: la valeur par default, si elle n'est pas specifier sur la ligne - de commande, ni dans les variables d'environnement ni dans le fichier de - configuration. Pour une option de type File si default faut -, alors - le fichier est la sortie standard. -- condition: la condition que doit respecter l'option pour être valide - la condition est une expression java contenant le nom de l'option comme - valeur de variable. -- environment: le nom de la variable d'environnement qu'il faut utiliser - si l'option n'est pas retrouve sur la ligne de commande. Si cette option - n'est pas indiqué alors, la variable d'environnement recherchée est le nom - du fichier de description suivi d'un point, suivi du nom de l'option. - par exemple toto.outfile - - -L'objet résultat sera Toto placé dans le fichier Toto.java. L'extension -java.conf est obligatoire pour détecter un fichier de configuration à -parser. Cet objet aurai les méthodes getOutputFile():File et getNumber():int - -Librairies utilisé ------------------- - -Sans doute utilisé, le parser redwood pour le fichier de configuration -http://www.isellrenohomes.com/parser/. Il lit directement des EBNF. - -projet de parsage d'argument ----------------------------- - -http://www.martiansoftware.com/jsap/ Deleted: trunk/lutinutil/doc/index.rst =================================================================== (Binary files differ) Copied: trunk/lutinutil/src/site/xdoc (from rev 1012, trunk/lutinutil/src/site/xdocs) Copied: trunk/lutinutil/src/site/xdoc/fr/rst/CommandLineArgumentApplication.rst (from rev 1012, trunk/lutinutil/doc/CommandLineArgumentApplication.rst) =================================================================== --- trunk/lutinutil/src/site/xdoc/fr/rst/CommandLineArgumentApplication.rst (rev 0) +++ trunk/lutinutil/src/site/xdoc/fr/rst/CommandLineArgumentApplication.rst 2008-08-12 17:35:52 UTC (rev 1013) @@ -0,0 +1,124 @@ +====================== +Argument d'application +====================== + +Il y a deux type d'argument d'application: +- les arguments permettant de modifier la configuration qui peuvent aussi + être dans un fichier de configuration ou en variable d'environnement. +- les arguments permettant d'indiquer des actions a faire a l'application + +Les options de configuration +============================ + +Les options de configuration peuvent être décrit directement par un POJO +avec des annotations:: + + @OptionConfigOrder("resource MonApp.properties", "file /etc/MonApp.properties", + "optionfile configFile", "env", "line") + public class MonAppConfig extends OptionConfig { + + @Option + @OptionSaveFile + public File configFile = new File("$HOME/.MonApp"); + + @Option(pattern [^\s]+) + public String username = "anonyous"; + + @Option(pattern ..) + public String lang = "fr"; + + @Option(pattern ..) + public String country = "FR"; + + @Option + public boolean showGui = true; + + @Option(min=10, max=10) + public List<Integer> value; + + @Unparsed + public List<String> other; + } + +La classe OptionConfig +---------------------- + +La classe OptionConfig contient plusieurs méthodes: + +- load sans argument qui permet de charger le POJO en fonction de + OptionConfigOrder +- load(File) qui permet de charger le POJO seulement en fonction d'un + fichier. Il bien sur possible d'appeler load() puis load(File). +- save qui permet de sauver les informations du POJO, le fichier ou sauver + les options est indiqué par l'annotation @OptionSaveFile + +Annotation OptionConfigOrder +---------------------------- + +OptionConfigOrder permet de déterminer l'ordre de recherche de la bonne +valeur des options. Le dernier indiqué sera le dernier lu et donc celui qui +aura raison. + +resource + indique un fichier resource a rechercher dans le classpath + +file + indique un fichier sur le systeme de fichier + +optionfile + indique un fichier dont le chemin est indiqué par une option + +env + indique les variables d'environnement du processus + +line + indique les options sur la ligne de commande + +Implantation +~~~~~~~~~~~~ + +# On charge dans un objet **Properties** chaque entre de + **OptionConfigOrder** sauf **optionfile** s'il y en a. +# On chaine tous les fichiers de proprietes pour pouvoir demander + l'information au dernier qui recherchera lui meme dans son pere s'il n'a pas + l'informaiton. +# Pour chaque **optionfile** on demande sa valeur, on crée le fichier de + propriété et on l'ajoute dans la chaine à la bonne place +# Pour chaque option trouvé dans le POJO on met a jour sa valeur avec la + valeur trouvé dans les propriétés. + +Annotation Option +----------------- + +Indique une option possible. Elle peut contenir: + +- description +- pattern +- alias +- min +- max + +Par defaut l'option sur la ligne de commande sera le nom de la variable precedé de -- + +Annotation Unparsed +------------------- + +Indique que toutes les options de la ligne de commande non reconnu finisse dans ce champs +Il est possible de type la collection autrement que par String. + +Annotation OptionSaveFile +------------------------- + +Indique le fichier a utiliser pour sauver les options + +Les actions +=========== + +TODO: comment différencier les actions des options ? comment reutiliser le travail de tony ? + +Amélioration possible +===================== + +- Générer automatiquement par un plugin maven les methodes get/set sur les options +- Gérer les options read/write et read +- un plugin maven qui verifie la coherence des options Property changes on: trunk/lutinutil/src/site/xdoc/fr/rst/CommandLineArgumentApplication.rst ___________________________________________________________________ Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native Copied: trunk/lutinutil/src/site/xdoc/fr/rst/LutinUtil.rst (from rev 1012, trunk/lutinutil/doc/LutinUtil.rst) =================================================================== --- trunk/lutinutil/src/site/xdoc/fr/rst/LutinUtil.rst (rev 0) +++ trunk/lutinutil/src/site/xdoc/fr/rst/LutinUtil.rst 2008-08-12 17:35:52 UTC (rev 1013) @@ -0,0 +1,100 @@ +========================= +Documentation - LutinUtil +========================= + +:Authors: Benjamin POUSSIN +:Contact: poussin@codelutin.com +:Revision: $Revision$ +:Date: $Date$ + +.. sectnum:: + +.. contents:: + + +LutinUtil contient un ensemble de librairies trop petites pour avoir +leur propre projet. Elles sont aussi utile à la plupart des projets de +Code Lutin. + + +Resource +======== + +Cette librairie permet de rechercher une ressource dans le maximum +d'endroit possible et si elle est trouvée l'url de la ressource est +retournée. + +:: + + import org.codelutin.util.Resource; + import java.net.URL; + ... + URL image = Resource.getURL("/images/bidulle.png"); + ... + +Dans cet exemple l'image est recherchée sur le système de fichier +local, si elle n'est pas trouvée, elle est recherché dans le +classpath, et si elle n'est toujours pas trouvée une exception est +alors levée. + + +ArgumentsParser +=============== + +Cette librairie permet de traiter les arguments de la ligne de commande de +façon simple mais évoluable. Son principe de fonctionnement est que l'on +déclare les arguements que l'on attend sur la ligne de commande avec le nombre +de paramètre qu'ils prennent et une petite description de l'option. Ensuite +on dispose de toutes les fonctions utiles pour le traitement de la ligne de +commande. + +Voici un exemple d'utilisation:: + + import org.codelutin.util.ArgumentsParser; + ... + ArgumentsParser parser = new ArgumentsParser("ToPIA"); + + parser.addOption("version", "affiche le numéro de version", new String[]{"--version", "-v"}, 0).setRepetitionMax(1); + + parser.addOption("help", "affiche l'aide de topia", new String[]{"--help", "-h"}, 0).setRepetitionMax(1); + + parser.addOption("start", "Lancement d'une application", new + String[]{"--start", "-s"}, 1).setRepetitionMax(1); + + System.out.println(parser.checkCoherence()); + parser.parse(args); + + if(parser.hasParsedOption("help")){ + System.out.println(parser.usage()); + }else if (parser.hasParsedOption("start")){ + System.out.println ("--> Executing application: "); + String arg = parser.getParsedOption("start") + new Application(arg); + }else if (parser.hasParsedOption("version")){ + System.out.println( "- Topia version 0.01 - " + + "Get new release at http://www.codelutin.com/ -" ); + } + +Cette librairie permet d'afficher l'aide de la ligne de commande:: + + System.out.println(parser.usage()); + +Elle permet aussi de vérifier le nombre de fois qu'une option de la ligne de +commande est présente et que ce nombre est bien compris dans l'ensemble des +valeurs acceptées, grâce au méthode *setRepetitionMax*, et *setRepetitionMin*. + +Si l'implantation par défaut du parseur d'option ne convient pas pour une de vos +option, par exemple si le nombre de paramètre de l'option varie suivant la valeur +du premier paramètre vous pouvez alors écrire votre propre Parser pour cette +Option et l'utilisée avec les autres. + + +Log +=== + +Cette objet permet de suivre ce que fait une application simplement. Le +développeur indique grâce à cette classe l'état dans lequel l'application est. + +Ensuite, il peut mettre des listeners sur cette classe qui afficheront +les messages qui ont été envoyés. Ou afficheront l'état d'une tâche en train +de s'exécuter. Property changes on: trunk/lutinutil/src/site/xdoc/fr/rst/LutinUtil.rst ___________________________________________________________________ Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native Copied: trunk/lutinutil/src/site/xdoc/fr/rst/Todo.rst (from rev 1012, trunk/lutinutil/doc/Todo.rst) =================================================================== --- trunk/lutinutil/src/site/xdoc/fr/rst/Todo.rst (rev 0) +++ trunk/lutinutil/src/site/xdoc/fr/rst/Todo.rst 2008-08-12 17:35:52 UTC (rev 1013) @@ -0,0 +1,80 @@ +Un nouveau parser d'argument +============================ + +L'idée est d'avoir une description simple des arguments et de leur type et +que soit généré une classe à partir de cette description. Dans le +programme il suffirat de demander à la classe généré les inforamtions. + +Les options sont chargées par leur valeur par defaut, puis sont surchargées +par les valeurs des fichiers de configurations, puis surchargé +par les valeurs des variables d'environnement, et enfin surchargé par les +valeurs de la ligne de commande. + +Les fichiers de configuraiton sont lu dans l'ordre suivant: /etc/ + chemin +indiqué, puis $HOME/. + chemin indiqué. + +si le chemin indiqué est titi/toto.conf et que l'on est sur un système Linux +les fichiers de configuration seront: /etc/titi/toto.conf et +~/.titi/toto.conf + +exemple de description +---------------------- + +Par exemple on pourrait avoir le fichier Toto.java.conf dans les sources du +projet qui fournirait le fichier Toto.java:: + + configfile: titi/toto.conf + + outFile: le fichier de sortie + short: o + long: outfile + default: - + type: File + environment: toto + + number: Le nombre de fichier à produire + required: 1 + short: n + default: 1 + long: number + condition: 0<Number && Number<10 + type: int + +La description commence l'option non obligatoire *configfile* qui donne le +nom du fichier de configuration à utiliser pour l'application. Puis on +trouve les options. Une option commence par un nom, puis sa description +ensuite l'option peut avoir plusieurs options: + +- short: l'option courte sur la ligne de commande. Si absente pas d'option + courte +- long: l'option longue sur la ligne de commande, si pas d'option, on + reprend le nom de l'option +- type: le type de l'option (int, Float, String, char, File, ...) +- default: la valeur par default, si elle n'est pas specifier sur la ligne + de commande, ni dans les variables d'environnement ni dans le fichier de + configuration. Pour une option de type File si default faut -, alors + le fichier est la sortie standard. +- condition: la condition que doit respecter l'option pour être valide + la condition est une expression java contenant le nom de l'option comme + valeur de variable. +- environment: le nom de la variable d'environnement qu'il faut utiliser + si l'option n'est pas retrouve sur la ligne de commande. Si cette option + n'est pas indiqué alors, la variable d'environnement recherchée est le nom + du fichier de description suivi d'un point, suivi du nom de l'option. + par exemple toto.outfile + + +L'objet résultat sera Toto placé dans le fichier Toto.java. L'extension +java.conf est obligatoire pour détecter un fichier de configuration à +parser. Cet objet aurai les méthodes getOutputFile():File et getNumber():int + +Librairies utilisé +------------------ + +Sans doute utilisé, le parser redwood pour le fichier de configuration +http://www.isellrenohomes.com/parser/. Il lit directement des EBNF. + +projet de parsage d'argument +---------------------------- + +http://www.martiansoftware.com/jsap/ Property changes on: trunk/lutinutil/src/site/xdoc/fr/rst/Todo.rst ___________________________________________________________________ Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native Copied: trunk/lutinutil/src/site/xdoc/fr/rst/index.rst (from rev 1012, trunk/lutinutil/doc/index.rst) =================================================================== (Binary files differ) Property changes on: trunk/lutinutil/src/site/xdoc/fr/rst/index.rst ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/lutinutil/src/site/xdoc/navigation.xml =================================================================== --- trunk/lutinutil/src/site/xdocs/navigation.xml 2008-08-12 16:51:11 UTC (rev 1012) +++ trunk/lutinutil/src/site/xdoc/navigation.xml 2008-08-12 17:35:52 UTC (rev 1013) @@ -13,6 +13,7 @@ </menu> <menu name="Developpeur"> <item href="/Todo.html" name="Todo"></item> + <item href="/Todo.html" name="Todo"></item> </menu> </body> </project>