Author: tchemit Date: 2010-03-28 12:52:25 +0200 (Sun, 28 Mar 2010) New Revision: 1721 Log: Evolution #423: Improve parser log Removed: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/I18nLogger.java Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/I18nSourceEntry.java Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java 2010-03-27 20:03:40 UTC (rev 1720) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java 2010-03-28 10:52:25 UTC (rev 1721) @@ -30,10 +30,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.net.URL; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.Locale; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; /** @@ -155,6 +152,7 @@ continue; } + List<String> bundlesUrls = new ArrayList<String>(); for (URL url : urls) { long t000 = System.nanoTime(); I18nBundleEntry bundleEntry = @@ -163,7 +161,9 @@ String strPath = bundleEntry.getPath().toString(); int index = strPath.indexOf("i18n/"); - buffer.append(',').append(strPath.substring(index)); + String str = strPath.substring(index); + bundlesUrls.add(str); + buffer.append(',').append(str); if (verbose) { getLog().info( "loaded " + bundleEntry.getPath() + " in " + @@ -171,11 +171,13 @@ } } - if (buffer.length() > 0) { + if (!bundlesUrls.isEmpty()) { bundleDico.put(locale, buffer.substring(1)); if (!silent) { - getLog().info( - "bundles for locale : " + bundleDico.get(locale)); + getLog().info(bundlesUrls.size() + " i18n resource(s) detected"); + for (String u : bundlesUrls) { + getLog().info(" - " + u); + } } } propertiesOut.store(bundleOut); Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java 2010-03-27 20:03:40 UTC (rev 1720) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java 2010-03-28 10:52:25 UTC (rev 1721) @@ -23,7 +23,9 @@ import org.nuiton.i18n.plugin.AbstractI18nMojo; import org.nuiton.io.FileUpdater; import org.nuiton.io.SortedProperties; +import org.nuiton.plugin.PluginHelper; +import java.beans.Introspector; import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -109,6 +111,15 @@ */ protected boolean backupGetter; + + /** + * To force reparse of all sources. + * + * @parameter expression="${i18n.force}" default-value="false" + * @since 1.1.1 + */ + protected boolean force; + /** Liste des évènements */ protected List<ParserEvent> events = new ArrayList<ParserEvent>(); @@ -126,20 +137,16 @@ protected List<File> treadedFiles; - /** logger verbeux */ - protected I18nLogger verboseLog; - public boolean isStrictMode() { return strictMode; } - protected I18nLogger getVerboseLog() { - return verboseLog; + public boolean isForce() { + return force; } @Override public void init() throws Exception { - verboseLog = new I18nLogger(this); super.init(); t0 = System.nanoTime(); result = new SortedProperties(encoding); @@ -172,9 +179,6 @@ } treadedFiles = new ArrayList<File>(); -// if (!silent && verbose) { -// showTouchedFiles = true; -// } } @Override @@ -186,6 +190,10 @@ getLog().info("config - strictMode is on (all files will be" + " parsed)."); } + if (!silent && force) { + getLog().info("config - force is on (all files will be" + + " parsed)."); + } // Reprise sur un ancien parsing File oldParserFile = getGetterFile(out, getOutGetter(), true); @@ -219,7 +227,7 @@ } } else { if (!silent) { - getLog().info(getVerboseLog().getLogEntry( + getLog().info(getLogEntry( "Parsing is done. [treated file(s) : " + i + '/' + fileTreated + "]", fileTreated, 0, t0)); } @@ -234,10 +242,7 @@ } long t00 = System.nanoTime(); for (I18nSourceEntry entry : entries) { - I18nLogger vLog = getVerboseLog(); - vLog.setEntry(entry); - boolean skip = entry.init(this); if (skip) { @@ -250,34 +255,30 @@ long t000 = System.nanoTime(); int nbFiles = entry.getFiles().length; if (!silent) { -// if (!silent && verbose) { - vLog.infoEntry("start", vLog.getLogEntry( - "[incoming file(s) : " + entry.getFoudFiles() + "]", - 0, 0, 0)); + getLog().info("start entry " + entry.toString()); + getLog().info("incoming file(s) : " + entry.getFoudFiles()); } int nbTreatedFilesBefore = treadedFiles.size(); // launch parser for found files parseEntry(entry); + if (!silent && verbose) { // log skipped files for (String skipFile : entry.getSkipFiles()) { - vLog.setFile(new File(entry.getBasedir(), skipFile)); - vLog.infoFile("skip", null); + getLog().info("skip file " + skipFile); } } fileTreated += nbFiles; if (!silent) { -// if (!silent && verbose) { int nbTreatedFilesAfter = treadedFiles.size() - nbTreatedFilesBefore; - vLog.infoEntry( - "end", - vLog.getLogEntry( - "[treated file(s) : " + nbTreatedFilesAfter + - "/" + nbFiles + "]", nbFiles, t000, - t00)); + + getLog().info(getLogEntry( + "treated file(s) : " + nbTreatedFilesAfter + + "/" + nbFiles + " ", nbFiles, t000, + t00)); } t00 = System.nanoTime(); } @@ -321,13 +322,14 @@ for (ParserEvent event : events) { event.eventChangeFile(file); } - I18nLogger vLog = getVerboseLog(); - vLog.setFile(file); +// I18nLogger vLog = getVerboseLog(); +// vLog.setFile(file); touchFile = false; int size = result.size(); if (!silent && verbose) { - vLog.infoFile("parse", null); + getLog().info(print(getParser(this), 0, "parse", null, file.toString())); +// vLog.infoFile("parse", null); } parseFile(file); @@ -343,11 +345,13 @@ } if (touchFile) { if (showTouchedFiles) { - vLog.infoFile("touch", null); + getLog().info(print(getParser(this), 0, "touch", null, file.toString())); +// vLog.infoFile("touch", null); } treadedFiles.add(file); if (getLog().isDebugEnabled()) { - vLog.debug(vLog.getLogEntry(fileName, i, t000, t00)); + getLog().debug(print(getParser(this), 0, "touch", null, file.toString() + " - " + getLogEntry(fileName, i, t000, t00))); +// vLog.debug(I18nLogger.getLogEntry(fileName, i, t000, t00)); } } for (ParserEvent event : events) { @@ -389,4 +393,50 @@ events.remove(parserEvent); } + public static String getParser(AbstractI18nMojo parser) { + return "i18n:" + Introspector.decapitalize( + parser.getClass().getSimpleName()) + " on " + + parser.getArtifactId(); + } + + public static String print(String parser, int start, String prefix, String context, + String content) { + StringBuilder sb = new StringBuilder(); + sb.append("[").append(prefix).append("] [").append(parser).append("] "); + + for (int i = 0; i < start; i++) { + sb.append(' '); + } + if (context != null) { + sb.append("<").append(context).append("> "); + } + sb.append(content); + return sb.toString(); + } + + /** + * Construit une chaine de log formatée. + * + * @param msg le prefix du message + * @param nbFiles le nombre de fichiers actuellement traités + * @param time le time de traitement de ce fichier + * @param all le temps de traitement de tous les fichiers + * @return la chaine de log formatée + */ + public static String getLogEntry(String msg, int nbFiles, long time, long all) { + long now = System.nanoTime(); + long delta = now - time; + String s = msg; + if (time > 0 && all == 0) { + s += " (" + PluginHelper.convertTime(delta) + ")"; + } + if (all > 0) { + s += "(total time:" + PluginHelper.convertTime(now - all) + ")"; + } + if (nbFiles > 0) { + s += " ( ~ " + + PluginHelper.convertTime((now - all) / nbFiles) + " / file)"; + } + return s; + } } Deleted: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/I18nLogger.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/I18nLogger.java 2010-03-27 20:03:40 UTC (rev 1720) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/I18nLogger.java 2010-03-28 10:52:25 UTC (rev 1721) @@ -1,127 +0,0 @@ -/** - * *##% - * I18n :: Maven Plugin - * Copyright (C) 2007 - 2010 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 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 Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ -package org.nuiton.i18n.plugin.parser; - -import org.apache.maven.plugin.logging.SystemStreamLog; -import org.nuiton.i18n.plugin.AbstractI18nMojo; -import org.nuiton.plugin.PluginHelper; - -import java.beans.Introspector; -import java.io.File; - -/** - * Le logger utilisé par les mojo de parsing. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.9 - */ -public class I18nLogger extends SystemStreamLog { - - /** l'entrée en cours de traitement (pour les parseurs) */ - private SourceEntry entry; - - /** le fichier en cours de traitement (pour les parseurs) */ - protected File file; - - /** le prefix du mojo courant a ajouter dans les logs. */ - protected String parser; - - public I18nLogger(AbstractI18nMojo parser) { - this.parser = "i18n:" + Introspector.decapitalize( - parser.getClass().getSimpleName()) + " on " + - parser.getArtifactId(); - } - - @Override - public void info(CharSequence content) { - print(0, "INFO", null, content.toString()); - } - - @Override - public void debug(CharSequence content) { - print(0, "DEBUG", null, content.toString()); - } - - public void infoEntry(String action, CharSequence content) { - print(0, "INFO", action, - entry.toString() + - (content == null ? "" : " - " + content.toString())); - } - - public void infoFile(String action, String content) { - print(2, "INFO", action, file.toString() + - (content == null ? "" : " - " + content)); - } - - public void infoAction(String action, String content) { - print(2, "INFO", action, content == null ? "" : " - " + content); - } - - private void print(int start, String prefix, String context, - String content) { - StringBuilder sb = new StringBuilder(); - sb.append("[").append(prefix).append("] [").append(parser).append("] "); - - for (int i = 0; i < start; i++) { - sb.append(' '); - } - if (context != null) { - sb.append("<").append(context).append("> "); - } - sb.append(content); - System.out.println(sb.toString()); - } - - public void setEntry(SourceEntry entry) { - this.entry = entry; - } - - /** - * Construit une chaine de log formatée. - * - * @param msg le prefix du message - * @param nbFiles le nombre de fichiers actuellement traités - * @param time le time de traitement de ce fichier - * @param all le temps de traitement de tous les fichiers - * @return la chaine de log formatée - */ - public String getLogEntry(String msg, int nbFiles, long time, long all) { - long now = System.nanoTime() ; - long delta = now - time; - String s = msg; - if (time > 0 && all == 0) { - s += " (" + PluginHelper.convertTime(delta) + ")"; - } - if (all > 0) { - s += "(total time:" + PluginHelper.convertTime(now - all) + ")"; - } - if (nbFiles > 0) { - s += " ( ~ " + - PluginHelper.convertTime((now - all) / nbFiles) + " / file)"; - } - return s; - } - - public void setFile(File file) { - this.file = file; - } - -} Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/I18nSourceEntry.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/I18nSourceEntry.java 2010-03-27 20:03:40 UTC (rev 1720) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/I18nSourceEntry.java 2010-03-28 10:52:25 UTC (rev 1721) @@ -53,8 +53,8 @@ } setUpdater(mojo.newFileUpdater(this)); - if (mojo.isStrictMode() || updater == null) { - // mojo strict mode or not updater, so force all files + if (mojo.isStrictMode() || updater == null || mojo.isForce()) { + // mojo strict/force mode or not updater, so force all files skipFiles = EMPTY_STRING_ARRAY; files = filesForEntry; return false;