Author: echatellier Date: 2009-12-17 10:31:15 +0100 (Thu, 17 Dec 2009) New Revision: 1708 Added: trunk/src/site/apt/CommandLineArgumentApplication.apt trunk/src/site/apt/nuitonUtil.apt Removed: trunk/src/site/apt/LutinUtil.apt trunk/src/site/rst/ Modified: trunk/src/site/site.xml Log: Update site (all doc moved to apt file format) Copied: trunk/src/site/apt/CommandLineArgumentApplication.apt (from rev 1707, trunk/src/site/rst/CommandLineArgumentApplication.rst) =================================================================== --- trunk/src/site/apt/CommandLineArgumentApplication.apt (rev 0) +++ trunk/src/site/apt/CommandLineArgumentApplication.apt 2009-12-17 09:31:15 UTC (rev 1708) @@ -0,0 +1,126 @@ +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 + + * sline + 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'information. + + * 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/src/site/apt/LutinUtil.apt =================================================================== --- trunk/src/site/apt/LutinUtil.apt 2009-12-16 14:50:21 UTC (rev 1707) +++ trunk/src/site/apt/LutinUtil.apt 2009-12-17 09:31:15 UTC (rev 1708) @@ -1,312 +0,0 @@ ----- -Documentation - LutinUtil ----- ----- -2009-08-23 ----- - - 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.nuiton.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.nuiton.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. - - -Liste des librairies - - Cette liste répertorie l'ensemble des librairies de LutinUtil. - - -* Configuration - - Gestion de la configuration d'une l'application, de l'internationalisation, - des numéros de versions, des ressources... - -** ApplicationConfig - - Gestion des fichiers de configuration, des variables d'environnement - et des arguments de la ligne de commande. - -** Resource - - Recherche d'un fichier dans le système de fichiers et dans le classpath - (.jar, .zip). - -** ClassLoaderUtil - - Récupération des urls d'un URLClassLoader. - -** LocaleConverter - - Conversion d'une chaîne en Locale. - -** SortedProperties - - Fichier de propriétés trié par ordre alphabétique. - -** RecursiveProperties - - Fichier de propriétés contenant des références à des propriétés de ce - même fichier. - -** Version - - Représentation d'un numéro de version pour une application. - -** VersionConverter - - Conversion d'une chaine en VersionNumber. - -** VersionUtil - - Manipulation de numéros de version sous forme de chaînes - (comparaison, incrémentation...). - - -* Fichiers - - Gestion de fichiers. - -** FileUtil - - Opérations sur des fichiers. Copie, suppression, renommage, - recherche, fichiers d'un répertoire, sous-répertoires d'un répertoire, - récupération du basename ou de l'extension, création d'un fichier - temporaire, comparaison de dates de création, récupération d'une chaîne, - d'un Reader ou d'un Writer à partir d'un fichier, récupération du fichier - saisi dans une boîte de dialogue, conversions en byte[], en Stream... - -** IOUtils - - Copie d'un fichier, chemin temporaire... - -** ZipUtil - - Opérations sur des fichiers Zip. Compression et décompression avec ou - sans filtres, scan des fichiers créés ou écrasés lors de la décompression... - -** ZipStreamEncoder - - Encodage de fichiers Zip dans des threads. - -* Collections - - Gestion de collections et de tableaux. - -** CollectionUtil - - Manipulation des collections. Ajout de plusieurs éléments à une - collection, conversion d'une collection non typée en collection typée. - -** ArrayUtil - - Opérations sur des tableaux. Concaténation, somme, recherche, - conversion d'une liste en tableau, d'un String[] en int[]. - -** BoundedList - - ArrayList avec un nombre d'élément minimum et maximum. - -** HashList - Liste d'objets uniques. - -** TransformedList - Liste d'objets transformables (interface Transformer). - - -* Chaînes de caractères - - Gestion des chaînes de caractères. - -** StringUtil - - Manipulation de chaînes de caractères. Découpage, suppression - d'accents, vérification de parenthésage, conversions vers un nombre, - un tableau, une couleur, une date... - -** URIConverter - - Conversion d'une chaîne en URI. - -** URLConverter - - Conversion d'une chaîne en URL. - -** GZUtil - - Compression et décompression de chaînes de caractères. - - -* Analyse - - Analyse du code et monitoring. - -** CallAnalyse - - Analyse sur des appels de méthodes. Temps d'éxecution, mémoire - utilisée et nombre d'appels. - -* Log - Mise en place de logs dans une application. - -** LoggingPatternFormatter - Formattage des logs. - - -* Énumérations - - Gestion des énumérations et énumérations utiles. - -** EnumConverter - - Conversion d'une chaîne en Enum. - -** EnumEditor - - Editeur d'Enum en Swing. - -** H2TypeEnum - - Énumération pour représenter les différents types d'implantation dans H2. - -** MonthEnum - - Énumération pour représenter les mois d'une année. - -** SimplePaginationEnum - - Énumération pour définir les tailles de liste. - -* Introspection - - Introspection et manipulations sur des objets et des classes. - -** ObjectUtil - - Outils pour manipuler des objets. Création d'un objet à partir d'une chaîne - le décrivant, conversion d'un objet en Object, récupération de méthodes - à partir de leur nom, de constructeurs à partir de leurs paramètres... - -** ReflectUtil - - Introspection sur une classe. Détermine si un attribut est constant, - recherche de constantes d'un type donné, conversion d'une classe en - Enum... - -** FormatConverter - - Conversion d'une représentation d'un objet à une autre représentation. - (Java, SQL, XML...). - - -* Divers - - Autres librairies utiles n'appartenant à aucune des catégories précédentes. - -** CardinalityHelper - - Méthodes pour tester des cardinalités. - -** ListenerSet - - Mise en place de listeners. - -** CategorisedListenerSet - - Gestion des catégories de listeners. - -** ConverterUtil - - Méthodes sur des converters. - -** DigestGenerator - - Fonctionnalités de Digest XML. - -** MD5 - - Implémentation des MD5 hash. - -** MD5InputStream - - MD5 dans un flux. Copied: trunk/src/site/apt/nuitonUtil.apt (from rev 1707, trunk/src/site/apt/LutinUtil.apt) =================================================================== --- trunk/src/site/apt/nuitonUtil.apt (rev 0) +++ trunk/src/site/apt/nuitonUtil.apt 2009-12-17 09:31:15 UTC (rev 1708) @@ -0,0 +1,312 @@ +---- +Documentation - LutinUtil +---- +---- +2009-08-23 +---- + + 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.nuiton.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.nuiton.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. + + +Liste des librairies + + Cette liste répertorie l'ensemble des librairies de LutinUtil. + + +* Configuration + + Gestion de la configuration d'une l'application, de l'internationalisation, + des numéros de versions, des ressources... + +** ApplicationConfig + + Gestion des fichiers de configuration, des variables d'environnement + et des arguments de la ligne de commande. + +** Resource + + Recherche d'un fichier dans le système de fichiers et dans le classpath + (.jar, .zip). + +** ClassLoaderUtil + + Récupération des urls d'un URLClassLoader. + +** LocaleConverter + + Conversion d'une chaîne en Locale. + +** SortedProperties + + Fichier de propriétés trié par ordre alphabétique. + +** RecursiveProperties + + Fichier de propriétés contenant des références à des propriétés de ce + même fichier. + +** Version + + Représentation d'un numéro de version pour une application. + +** VersionConverter + + Conversion d'une chaine en VersionNumber. + +** VersionUtil + + Manipulation de numéros de version sous forme de chaînes + (comparaison, incrémentation...). + + +* Fichiers + + Gestion de fichiers. + +** FileUtil + + Opérations sur des fichiers. Copie, suppression, renommage, + recherche, fichiers d'un répertoire, sous-répertoires d'un répertoire, + récupération du basename ou de l'extension, création d'un fichier + temporaire, comparaison de dates de création, récupération d'une chaîne, + d'un Reader ou d'un Writer à partir d'un fichier, récupération du fichier + saisi dans une boîte de dialogue, conversions en byte[], en Stream... + +** IOUtils + + Copie d'un fichier, chemin temporaire... + +** ZipUtil + + Opérations sur des fichiers Zip. Compression et décompression avec ou + sans filtres, scan des fichiers créés ou écrasés lors de la décompression... + +** ZipStreamEncoder + + Encodage de fichiers Zip dans des threads. + +* Collections + + Gestion de collections et de tableaux. + +** CollectionUtil + + Manipulation des collections. Ajout de plusieurs éléments à une + collection, conversion d'une collection non typée en collection typée. + +** ArrayUtil + + Opérations sur des tableaux. Concaténation, somme, recherche, + conversion d'une liste en tableau, d'un String[] en int[]. + +** BoundedList + + ArrayList avec un nombre d'élément minimum et maximum. + +** HashList + Liste d'objets uniques. + +** TransformedList + Liste d'objets transformables (interface Transformer). + + +* Chaînes de caractères + + Gestion des chaînes de caractères. + +** StringUtil + + Manipulation de chaînes de caractères. Découpage, suppression + d'accents, vérification de parenthésage, conversions vers un nombre, + un tableau, une couleur, une date... + +** URIConverter + + Conversion d'une chaîne en URI. + +** URLConverter + + Conversion d'une chaîne en URL. + +** GZUtil + + Compression et décompression de chaînes de caractères. + + +* Analyse + + Analyse du code et monitoring. + +** CallAnalyse + + Analyse sur des appels de méthodes. Temps d'éxecution, mémoire + utilisée et nombre d'appels. + +* Log + Mise en place de logs dans une application. + +** LoggingPatternFormatter + Formattage des logs. + + +* Énumérations + + Gestion des énumérations et énumérations utiles. + +** EnumConverter + + Conversion d'une chaîne en Enum. + +** EnumEditor + + Editeur d'Enum en Swing. + +** H2TypeEnum + + Énumération pour représenter les différents types d'implantation dans H2. + +** MonthEnum + + Énumération pour représenter les mois d'une année. + +** SimplePaginationEnum + + Énumération pour définir les tailles de liste. + +* Introspection + + Introspection et manipulations sur des objets et des classes. + +** ObjectUtil + + Outils pour manipuler des objets. Création d'un objet à partir d'une chaîne + le décrivant, conversion d'un objet en Object, récupération de méthodes + à partir de leur nom, de constructeurs à partir de leurs paramètres... + +** ReflectUtil + + Introspection sur une classe. Détermine si un attribut est constant, + recherche de constantes d'un type donné, conversion d'une classe en + Enum... + +** FormatConverter + + Conversion d'une représentation d'un objet à une autre représentation. + (Java, SQL, XML...). + + +* Divers + + Autres librairies utiles n'appartenant à aucune des catégories précédentes. + +** CardinalityHelper + + Méthodes pour tester des cardinalités. + +** ListenerSet + + Mise en place de listeners. + +** CategorisedListenerSet + + Gestion des catégories de listeners. + +** ConverterUtil + + Méthodes sur des converters. + +** DigestGenerator + + Fonctionnalités de Digest XML. + +** MD5 + + Implémentation des MD5 hash. + +** MD5InputStream + + MD5 dans un flux. Modified: trunk/src/site/site.xml =================================================================== --- trunk/src/site/site.xml 2009-12-16 14:50:21 UTC (rev 1707) +++ trunk/src/site/site.xml 2009-12-17 09:31:15 UTC (rev 1708) @@ -8,9 +8,6 @@ <poweredBy> <logo href="http://maven.apache.org" name="Maven" img="images/logos/maven-feather.png"/> - <!--logo href="http://jrst.labs.libre-entreprise.org" name="JRst" img="images/jrst-logo.png"/> - <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" - img="images/restructuredtext-logo.png"/--> </poweredBy> <body> @@ -21,7 +18,8 @@ <menu name="Utilisateur"> <item name="Accueil" href="index.html"/> - <item name="Documentation" href="/LutinUtil.html"/> + <item name="Documentation" href="/nuitonUtil.html"/> + <item name="Command Line" href="/CommandLineArgumentApplication.html"/> </menu> <menu name="Téléchargement">