r1673 - in trunk: . src/main/java/org/nuiton/util src/site src/site/apt
Author: tchemit Date: 2009-08-23 13:32:29 +0200 (Sun, 23 Aug 2009) New Revision: 1673 Added: trunk/src/site/apt/ trunk/src/site/apt/LutinUtil.apt trunk/src/site/apt/Todo.apt trunk/src/site/apt/index.apt Modified: trunk/pom.xml trunk/src/main/java/org/nuiton/util/VersionUtil.java trunk/src/site/site.xml Log: no more use of jrst (this is a dependency of jrst...), add a main method in VersionUtil to sort a incoming list of versions Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2009-08-16 08:15:41 UTC (rev 1672) +++ trunk/pom.xml 2009-08-23 11:32:29 UTC (rev 1673) @@ -10,7 +10,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>mavenpom</artifactId> - <version>1.0.0-rc-5-SNAPSHOT</version> + <version>1.0.0</version> </parent> <artifactId>nuiton-utils</artifactId> @@ -85,7 +85,7 @@ <packaging>jar</packaging> <properties> - <i18n.version>1.0.0-rc-4</i18n.version> + <i18n.version>1.0.0</i18n.version> </properties> <build> Modified: trunk/src/main/java/org/nuiton/util/VersionUtil.java =================================================================== --- trunk/src/main/java/org/nuiton/util/VersionUtil.java 2009-08-16 08:15:41 UTC (rev 1672) +++ trunk/src/main/java/org/nuiton/util/VersionUtil.java 2009-08-23 11:32:29 UTC (rev 1673) @@ -18,8 +18,11 @@ */ package org.nuiton.util; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.Comparator; +import java.util.List; import java.util.regex.Pattern; /** @@ -299,4 +302,60 @@ return o1.classifierNumber - o2.classifierNumber; } } + + /** + * Trier un ensemble de versions données en entrees + * + * On affiche le resultat dans la console + * @param args les versions + */ + public static void main(String... args) { + //System.err.println(VersionUtil.class.getName() + "#main(" + Arrays.asList(args) + ")"); + + //I18n.init(); + List<Version> list = new ArrayList<Version>(); + List<Version> snapshots = new ArrayList<Version>(); + + for (String a : args) { + //System.err.println("convert value : " + a); + if (a.endsWith("-SNAPSHOT")) { + snapshots.add(valueOf(a.substring(0, a.length() - "-SNAPSHOT".length()))); + continue; + } + Version v = valueOf(a); + list.add(v); + } + Collections.sort(list); + List<String> asString = new ArrayList<String>(); + for (Version v : list) { + asString.add(v.toString()); + } + // repositionnement des snapshots + for (Version snap : snapshots) { + String v = snap.toString(); + if (list.contains(snap)) { + // on ajoute juste avant + int index = asString.indexOf(v); + asString.add(index, v + "-SNAPSHOT"); + } else { + // ajout dans la liste initiale + list.add(snap); + Collections.sort(list); + int index = list.indexOf(snap); + if (index == 0) { + asString.add(0, v + "-SNAPSHOT"); + } else { + Version v2 = list.get(index - 1); + index = asString.indexOf(v2.toString()); + asString.add(index + 1, v + "-SNAPSHOT"); + } + list.remove(snap); + } + } + StringBuilder buffer = new StringBuilder(); + for (String s : asString) { + buffer.append(s).append("\n"); + } + System.out.println(buffer.toString()); + } } Copied: trunk/src/site/apt/LutinUtil.apt (from rev 1672, trunk/src/site/rst/LutinUtil.rst) =================================================================== --- trunk/src/site/apt/LutinUtil.apt (rev 0) +++ trunk/src/site/apt/LutinUtil.apt 2009-08-23 11:32:29 UTC (rev 1673) @@ -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. Copied: trunk/src/site/apt/Todo.apt (from rev 1672, trunk/src/site/rst/Todo.rst) =================================================================== --- trunk/src/site/apt/Todo.apt (rev 0) +++ trunk/src/site/apt/Todo.apt 2009-08-23 11:32:29 UTC (rev 1673) @@ -0,0 +1,91 @@ +---- +TODO +---- +---- +2009-08-23 +---- + +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/}} Copied: trunk/src/site/apt/index.apt (from rev 1672, trunk/src/site/rst/index.rst) =================================================================== (Binary files differ) Modified: trunk/src/site/site.xml =================================================================== --- trunk/src/site/site.xml 2009-08-16 08:15:41 UTC (rev 1672) +++ trunk/src/site/site.xml 2009-08-23 11:32:29 UTC (rev 1673) @@ -1,29 +1,16 @@ <?xml version="1.0" encoding="UTF-8"?> <project name="${project.name}"> - <publishDate format="dd/MM/yyyy"/> - - <skin> - <groupId>org.nuiton</groupId> - <artifactId>maven-nuiton-skin</artifactId> - <version>1.0.0</version> - </skin> - <bannerLeft> <name>${project.name}</name> <href>index.html</href> </bannerLeft> - <bannerRight> - <src>http://www.codelutin.com/images/lutinorange-codelutin.png</src> - <href>${project.organization.url}</href> - </bannerRight> - <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://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"/> + img="images/restructuredtext-logo.png"/--> </poweredBy> <body>
participants (1)
-
tchemit@users.nuiton.org