Author: tchemit Date: 2009-02-09 14:24:23 +0000 (Mon, 09 Feb 2009) New Revision: 1334 Modified: lutinutil/trunk/changelog.txt lutinutil/trunk/src/main/java/org/codelutin/util/ApplicationConfig.java lutinutil/trunk/src/main/resources/i18n/lutinutil-fr_FR.properties Log: can now exclude some keys when saving configurations (for password, for example) Modified: lutinutil/trunk/changelog.txt =================================================================== --- lutinutil/trunk/changelog.txt 2009-02-09 13:44:28 UTC (rev 1333) +++ lutinutil/trunk/changelog.txt 2009-02-09 14:24:23 UTC (rev 1334) @@ -1,5 +1,6 @@ ver 1.0.3 ??? 200901?? - * 20090209 [chemit] add inputStreamToFile method in FileUtil + javadoc on this class + * 20090209 [chemit] - add inputStreamToFile method in FileUtil + javadoc on this class + - can now exclude some keys when saving configurations (for password, for example) * 20090208 [chemit] add PropertyChangedSupport in ApplicationConfig * 20090203 [chemit] fix StringUtil failed tests since to locale. * 20090126 [chemit] i18n Resource class Modified: lutinutil/trunk/src/main/java/org/codelutin/util/ApplicationConfig.java =================================================================== --- lutinutil/trunk/src/main/java/org/codelutin/util/ApplicationConfig.java 2009-02-09 13:44:28 UTC (rev 1333) +++ lutinutil/trunk/src/main/java/org/codelutin/util/ApplicationConfig.java 2009-02-09 14:24:23 UTC (rev 1334) @@ -92,13 +92,13 @@ * La sauvegarde des options se fait via une des trois methodes disponible * <p/> * <ul> - * <li> {@link #save(File, boolean)} sauve les données dans le fichier demandé + * <li> {@link #save(File, boolean,String[])} sauve les données dans le fichier demandé * <li> {@link #saveForSystem} sauvegarde les donnees dans /etc * <li> {@link #saveForUser} sauvegarde les donnees dans $HOME * </ul> * <p/> - * Lors de l'utilisation de la methode {@link #saveForSystem()} ou - * {@link #saveForUser()} seul les options lu dans un fichier ou modifier par + * Lors de l'utilisation de la methode {@link #saveForSystem(String[])} ou + * {@link #saveForUser(String[])} seul les options lu dans un fichier ou modifier par * programmation ({@link #setOption} seront sauvegardees. Par exemple les * options passees sur la ligne de commande ne seront pas sauvees. * <p/> @@ -380,9 +380,10 @@ * @param file file where config will be writen * @param forceAll if true save all config option * (with defaults, classpath, env, command line) - * @throws java.io.IOException if IO pb + * @param excludeKeys optional list of keys to exclude from + * @throws IOException if IO pb */ - public void save(File file, boolean forceAll) throws IOException { + public void save(File file, boolean forceAll, String... excludeKeys) throws IOException { Properties prop = new Properties(); if (forceAll) { prop.putAll(defaults); @@ -398,18 +399,23 @@ } prop.putAll(options); + for (String excludeKey : excludeKeys) { + prop.remove(excludeKey); + } Writer writer = new FileWriter(file); prop.store(writer, "Last saved " + new java.util.Date()); } /** * Save configuration, in system directory (/etc/) using the - * {@link #getConfigFileName}. Default, env and commande line note saved + * {@link #getConfigFileName}. Default, env and commande line note saved. + * + * @param excludeKeys optional list of keys to exclude from */ - public void saveForSystem() { + public void saveForSystem(String... excludeKeys) { File file = new File(systemPath + getConfigFileName()); try { - save(file, false); + save(file, false, excludeKeys); } catch (IOException eee) { if (log.isWarnEnabled()) { log.warn(_("lutinutil.error.applicationconfig.save", file), eee); @@ -420,11 +426,13 @@ /** * Save configuration, in user home directory using the * {@link #getConfigFileName}. Default, env and commande line note saved + * + * @param excludeKeys optional list of keys to exclude from */ - public void saveForUser() { + public void saveForUser(String... excludeKeys) { File file = new File(userPath + getConfigFileName()); try { - save(file, false); + save(file, false, excludeKeys); } catch (IOException eee) { if (log.isWarnEnabled()) { log.warn(_("lutinutil.error.applicationconfig.save", file), eee); @@ -542,7 +550,7 @@ * chaine * * @param prefix debut de cle a recuperer - * @return + * @return la liste des options filtrées */ public Properties getOptionStartsWith(String prefix) { Properties result = new Properties(); @@ -747,6 +755,11 @@ * @param name name of the action * @param args * @return + * @throws ArgumentsParserException + * @throws IllegalAccessException + * @throws IllegalArgumentException + * @throws InstantiationException + * @throws java.lang.reflect.InvocationTargetException */ protected Action createAction(String name, ListIterator<String> args) throws ArgumentsParserException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { Action result = null; @@ -819,7 +832,7 @@ * Load configuration file and prepare Action. * * @param args argument as main(String[] args) - * @throws org.codelutin.util.ArgumentsParserException + * @throws ArgumentsParserException * */ public void parse(String[] args) throws ArgumentsParserException { Modified: lutinutil/trunk/src/main/resources/i18n/lutinutil-fr_FR.properties =================================================================== --- lutinutil/trunk/src/main/resources/i18n/lutinutil-fr_FR.properties 2009-02-09 13:44:28 UTC (rev 1333) +++ lutinutil/trunk/src/main/resources/i18n/lutinutil-fr_FR.properties 2009-02-09 14:24:23 UTC (rev 1334) @@ -1,30 +1,30 @@ hello\ you\ \!= -lutinuitl.error.convert.file.to.url=Le fichier '%1$s' n'a pas pu \u00eatre converti en URL pour la raison suivante \: %2$S -lutinuitl.error.resource.not.found=La resource '%1$s' n'a pas \u00e9t\u00e9 trouv\u00e9e -lutinutil.debug.objectutil.create=Essaye de cr\u00e9er %s avec %s -lutinutil.debug.objectutil.instantiate=Ne peut pas instancier %s avec les param\u00eatres %s +lutinuitl.error.convert.file.to.url=Le fichier '%1$s' n'a pas pu \u00EAtre converti en URL pour la raison suivante \: %2$S +lutinuitl.error.resource.not.found=La resource '%1$s' n'a pas \u00E9t\u00E9 trouv\u00E9e +lutinutil.debug.objectutil.create=Essaye de cr\u00E9er %s avec %s +lutinutil.debug.objectutil.instantiate=Ne peut pas instancier %s avec les param\u00EAtres %s lutinutil.debug.objectutil.invoke=Invocation de %s avec %s lutinutil.error.add.url.in.classloader=Can't add url in classloader %1$s for reason %2$s lutinutil.error.applicationconfig.save=Impossible de sauvegarder le fichier de configuration dans %s -lutinutil.error.convertor.noValue=Aucune valeur \u00e0 convertir pour le convertisseur %s -lutinutil.error.get.url.from.zip=Erreur lors de la lecture du fichier compress\u00e9 %1$s \: %2$s -lutinutil.error.i18n.unformated.message=Le message suivant n''a pas pu \u00eatre format\u00e9 \: '%s' avec les arguments %s -lutinutil.error.i18n.unfound.country=n'a pas pu trouver le pays \u00e0 partir de '%s', utilise le pays par d\u00e9faut '%s' -lutinutil.error.i18n.unfound.language=n'a pas pu trouver la langue \u00e0 partir de '%s', utilise la langue par d\u00e9faut '%s' -lutinutil.error.i18n.untranslated.message=Le message suivant n'a pas pu \u00eatre traduit \: '%s' -lutinutil.error.no.convertor=Aucun convertisseur trouv\u00e9 pour le type %2$s et l''objet '%1$s' +lutinutil.error.convertor.noValue=Aucune valeur \u00E0 convertir pour le convertisseur %s +lutinutil.error.get.url.from.zip=Erreur lors de la lecture du fichier compress\u00E9 %1$s \: %2$s +lutinutil.error.i18n.unformated.message=Le message suivant n''a pas pu \u00EAtre format\u00E9 \: '%s' avec les arguments %s +lutinutil.error.i18n.unfound.country=n'a pas pu trouver le pays \u00E0 partir de '%s', utilise le pays par d\u00E9faut '%s' +lutinutil.error.i18n.unfound.language=n'a pas pu trouver la langue \u00E0 partir de '%s', utilise la langue par d\u00E9faut '%s' +lutinutil.error.i18n.untranslated.message=Le message suivant n'a pas pu \u00EAtre traduit \: '%s' +lutinutil.error.no.convertor=Aucun convertisseur trouv\u00E9 pour le type %2$s et l''objet '%1$s' lutinutil.error.resource.not.found= -lutinutil.error.unfound.month=n'a pas pu trouv\u00e9 le mois \u00e0 partir de '%s', utilise le mois par d\u00e9faut '%s' +lutinutil.error.unfound.month=n'a pas pu trouv\u00E9 le mois \u00E0 partir de '%s', utilise le mois par d\u00E9faut '%s' lutinutil.error.unknown.url.type=could not treate unknown type of url %1$s -lutinutil.error.url.convertor=Un probl\u00e8me est apparu lors de la convertion en url de '%s' avec le convertisseur %s pour la raison suivante \: %s -lutinutil.fileCompletion.cancel=.. pour annuler ou pour revenir au repertoire pr\u00e9c\u00e9dent -lutinutil.fileCompletion.enter=Entrer pour afficher la liste des fichiers, ou pour compl\u00e9ter le chemin +lutinutil.error.url.convertor=Un probl\u00E8me est apparu lors de la convertion en url de '%s' avec le convertisseur %s pour la raison suivante \: %s +lutinutil.fileCompletion.cancel=.. pour annuler ou pour revenir au repertoire pr\u00E9c\u00E9dent +lutinutil.fileCompletion.enter=Entrer pour afficher la liste des fichiers, ou pour compl\u00E9ter le chemin lutinutil.fileCompletion.exit=Saisir "\!q" pour quitter lutinutil.fileCompletion.save=Saisir "\!s" a la fin du nom de fichier pour l'enregistrer lutinutil.month.april=avril -lutinutil.month.august=ao\u00fbt -lutinutil.month.december=d\u00e9cembre -lutinutil.month.february=f\u00e9vrier +lutinutil.month.august=ao\u00FBt +lutinutil.month.december=d\u00E9cembre +lutinutil.month.february=f\u00E9vrier lutinutil.month.january=janvier lutinutil.month.july=juillet lutinutil.month.june=juin