r1674 - in trunk: . maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/event maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl
Author: tchemit Date: 2009-09-29 13:41:17 +0200 (Tue, 29 Sep 2009) New Revision: 1674 Added: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/SourceEntry.java Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nPlugin.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/Bundle.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/Generate.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/Getter.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/I18nLogger.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParser.java 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/event/KeysModifier.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJava.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJaxx.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserSwixat.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidation.java trunk/pom.xml Log: use maven-helper-plugin 1.1.0 Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nPlugin.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nPlugin.java 2009-09-26 02:17:37 UTC (rev 1673) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nPlugin.java 2009-09-29 11:41:17 UTC (rev 1674) @@ -28,7 +28,7 @@ import java.util.Locale; import java.util.Properties; import java.util.SortedSet; -import org.nuiton.util.PluginHelper; +import org.nuiton.plugin.PluginHelper; /** * Classe permettant d'obenir les parametres pendant les différentes phases Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/Bundle.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/Bundle.java 2009-09-26 02:17:37 UTC (rev 1673) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/Bundle.java 2009-09-29 11:41:17 UTC (rev 1674) @@ -44,10 +44,10 @@ import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder; import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException; import org.nuiton.i18n.bundle.I18nBundleEntry; -import org.nuiton.util.PluginHelper.SortedProperties; +import org.nuiton.io.SortedProperties; import org.nuiton.i18n.bundle.I18nBundleFactory; -import org.nuiton.util.DependencyUtil; -import org.nuiton.util.PluginHelper; +import org.nuiton.plugin.DependencyUtil; +import org.nuiton.plugin.PluginHelper; /** * Créer un bundle pour une application finale. Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/Generate.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/Generate.java 2009-09-26 02:17:37 UTC (rev 1673) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/Generate.java 2009-09-29 11:41:17 UTC (rev 1674) @@ -19,7 +19,7 @@ import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; -import org.nuiton.util.PluginHelper.SortedProperties; +import org.nuiton.io.SortedProperties; import java.io.File; import java.io.FileOutputStream; Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/Getter.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/Getter.java 2009-09-26 02:17:37 UTC (rev 1673) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/Getter.java 2009-09-29 11:41:17 UTC (rev 1674) @@ -25,8 +25,8 @@ import java.io.IOException; import java.util.Arrays; import java.util.Locale; -import org.nuiton.util.PluginHelper; -import org.nuiton.util.PluginHelper.SortedProperties; +import org.nuiton.plugin.PluginHelper; +import org.nuiton.io.SortedProperties; /** * Recupere les différents fichiers des parsers en un fichier de proprietes. Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/I18nLogger.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/I18nLogger.java 2009-09-26 02:17:37 UTC (rev 1673) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/I18nLogger.java 2009-09-29 11:41:17 UTC (rev 1674) @@ -18,12 +18,11 @@ */ package org.nuiton.i18n.plugin; -import org.nuiton.util.SourceEntry; import org.apache.maven.plugin.logging.SystemStreamLog; import java.beans.Introspector; import java.io.File; -import org.nuiton.util.PluginHelper; +import org.nuiton.plugin.PluginHelper; /** * Le logger utilisé par les mojo. * Added: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/SourceEntry.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/SourceEntry.java (rev 0) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/SourceEntry.java 2009-09-29 11:41:17 UTC (rev 1674) @@ -0,0 +1,264 @@ +/* + * *##% + * Maven helper plugin + * Copyright (C) 2009 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; + +import org.nuiton.io.FileUpdater; +import org.apache.maven.plugin.logging.Log; +import org.codehaus.plexus.util.DirectoryScanner; + +import java.io.File; +import java.lang.annotation.Annotation; +import java.net.URLClassLoader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * A simple model for a sourceEntry represents by a basedir and includes and/or exlucdes pattern. + * <p/> + * The class offers the usefull method : + * {@link #getIncludedFiles(File, String[], String[])} + * <p/> + * to obtain the list of files from + * the {@link #basedir} directory which respects the {@link #includes} and/or + * {@link #excludes} patterns using an internal {@link DirectoryScanner} object. + * <p/> + * Note : <b>The class does not extends <code>DirectoryScanner</code> since we DO not want + * to expose his methods.</b> + * + * @author tony + */ +public class SourceEntry { + /** + * If you want to restrict use of the entry, set the class name goal to + * this property via {@link #setSpecificGoal(String)}. + * <p/> + * If let to <code>null</code>, all goals can use this entry. + */ + protected String specificGoal = null; + + protected File basedir; + + protected String[] includes; + protected String[] excludes; + /** Files to be find */ + protected String[] files; + + protected String[] skipFiles; + + protected String skipMessage; + + protected FileUpdater updater; + + public String[] getExcludes() { + return excludes; + } + + public void setExcludes(String[] excludes) { + this.excludes = excludes; + } + + public String[] getIncludes() { + return includes; + } + + public void setIncludes(String[] includes) { + this.includes = includes; + } + + public File getBasedir() { + return basedir; + } + + public void setBasedir(File basedir) { + this.basedir = basedir; + } + + public String getSpecificGoal() { + return specificGoal; + } + + public void setSpecificGoal(String specificGoal) { + this.specificGoal = specificGoal; + } + + public boolean useForGoal(String goal) { + return specificGoal == null || specificGoal.equalsIgnoreCase(goal); + } + + public boolean hasSrc() { + return basedir != null; + } + + public boolean hasIncludes() { + return includes != null && includes.length > 0; + } + + public boolean hasExcludes() { + return excludes != null && excludes.length > 0; + } + + /** + * Test if a file is up to date and not to be treated. + * <p/> + * + * @param file the file path to test + * @return <code>true</code> if file is up to date and do not need to be parsed + * @see FileUpdater + */ + public final boolean isFileUptodate(File file) { + return updater != null && updater.isFileUpToDate(file); + } + + public String[] getIncludedFiles(File defaultBasedir, String[] defaultIncludes, String[] defaultExcludes) { + // normalized entry + if (!hasSrc()) { + setBasedir(defaultBasedir); + } + if (!hasIncludes()) { + setIncludes(defaultIncludes); + } + if (!hasExcludes()) { + setExcludes(defaultExcludes); + } + // init directory scanner + DirectoryScanner ds = new DirectoryScanner(); + ds.setBasedir(getBasedir()); + ds.setIncludes(getIncludes()); + if (hasExcludes()) { + ds.setExcludes(getExcludes()); + } + // scan + ds.scan(); + // get found files + String[] foundFiles; + foundFiles = ds.getIncludedFiles(); + return foundFiles; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("basedir:").append(basedir); + if (includes != null) { + sb.append(", includes:").append(Arrays.toString(includes)); + } + if (excludes != null) { + sb.append(", excludes:").append(Arrays.toString(excludes)); + } + return sb.toString(); + } + + public String[] getIncludedFiles(File basedir, String[] defaultIncludes, String[] defaultExcludes, URLClassLoader loader, List<String> annotationClass, Log log) { + List<String> result = new ArrayList<String>(); + + for (String s : getIncludedFiles(basedir, defaultIncludes, defaultExcludes)) { + if (filterByAnnotation(s, loader, annotationClass, log)) { + result.add(s); + } + } + return result.toArray(new String[result.size()]); + } + + protected boolean filterByAnnotation(String file, URLClassLoader loader, List<String> annotationClass, Log log) { + + + Annotation annotation = getAnnotation(file, loader, annotationClass, log); + + boolean result = annotation != null; + + if (result && log.isDebugEnabled()) { + log.debug("find i18n annotated file : " + file); + } + return result; + } + + protected String getFQN(String file) { + String filePath = file; + filePath = filePath.substring(0, filePath.length() - ".java".length()); + String replaceEx = File.separator.equals("\\") ? "\\\\" : File.separator; + return filePath.replaceAll(replaceEx, "."); + } + + public Class<?> getClass(String file, URLClassLoader loader, Log log) { + String fqn = getFQN(file); + try { + return loader.loadClass(fqn); + + } catch (Throwable e) { + log.warn("could not find class " + fqn + " " + e); + return null; + } + } + + public Annotation getAnnotation(String file, URLClassLoader loader, List<String> annotationClass, Log log) { + + Class<?> currentClass = getClass(file, loader, log); + + try { + Annotation[] annos = currentClass.getAnnotations(); + if (annos != null && annos.length > 0) { + for (Annotation anno : annos) { + if (annotationClass.contains(anno.annotationType().getName())) { + return anno; + } + } + } + } catch (Throwable e) { + log.warn("could not find annotation for " + file + " " + e); + } + return null; + + } + + public Class<?> getClass(File file, URLClassLoader loader, Log log) { + String f = file.getAbsolutePath().substring(basedir.getAbsolutePath().length() + 1); + return getClass(f, loader, log); + } + + public Annotation getAnnotation(File file, URLClassLoader loader, List<String> annotationClass, Log log) { + String f = file.getAbsolutePath().substring(basedir.getAbsolutePath().length() + 1); + return getAnnotation(f, loader, annotationClass, log); + } + + public String getSkipMessage() { + return skipMessage; + } + + public String[] getFiles() { + return files; + } + + public String[] getSkipFiles() { + return skipFiles; + } + + public int getFoudFiles() { + return skipFiles.length + files.length; + } + + public FileUpdater getUpdater() { + return updater; + } + + public void setUpdater(FileUpdater updater) { + this.updater = updater; + } +} Property changes on: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/SourceEntry.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParser.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParser.java 2009-09-26 02:17:37 UTC (rev 1673) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParser.java 2009-09-29 11:41:17 UTC (rev 1674) @@ -21,14 +21,14 @@ import org.apache.maven.plugin.MojoFailureException; import org.nuiton.i18n.plugin.AbstractI18nPlugin; import org.nuiton.i18n.plugin.I18nLogger; -import org.nuiton.util.PluginHelper.SortedProperties; +import org.nuiton.io.SortedProperties; import org.nuiton.i18n.plugin.parser.event.KeysModifier; -import org.nuiton.util.FileUpdater; +import org.nuiton.io.FileUpdater; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; -import org.nuiton.util.SourceEntry; +import org.nuiton.i18n.plugin.SourceEntry; /** * Abstract implementation for parsing goal. 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 2009-09-26 02:17:37 UTC (rev 1673) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/I18nSourceEntry.java 2009-09-29 11:41:17 UTC (rev 1674) @@ -3,7 +3,7 @@ import java.io.File; import java.util.ArrayList; import java.util.List; -import org.nuiton.util.SourceEntry; +import org.nuiton.i18n.plugin.SourceEntry; /** * Customized {@link SourceEntry} for parsers goals. Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/event/KeysModifier.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/event/KeysModifier.java 2009-09-26 02:17:37 UTC (rev 1673) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/event/KeysModifier.java 2009-09-29 11:41:17 UTC (rev 1674) @@ -39,7 +39,7 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.nuiton.util.PluginHelper; +import org.nuiton.plugin.PluginHelper; /** * IHM permettant de modifier les clés de traduction en direct dans les fichiers Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJava.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJava.java 2009-09-26 02:17:37 UTC (rev 1673) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJava.java 2009-09-29 11:41:17 UTC (rev 1674) @@ -19,12 +19,12 @@ package org.nuiton.i18n.plugin.parser.impl; import org.apache.maven.project.MavenProject; -import org.nuiton.util.SourceEntry; +import org.nuiton.i18n.plugin.SourceEntry; import org.nuiton.i18n.plugin.parser.AbstractI18nParser; import org.nuiton.i18n.plugin.parser.ParserEvent; import org.nuiton.i18n.plugin.parser.ParserException; -import org.nuiton.util.FileUpdater; -import org.nuiton.util.FileUpdaterHelper; +import org.nuiton.io.FileUpdater; +import org.nuiton.io.FileUpdaterHelper; import java.io.File; import java.io.FileInputStream; Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJaxx.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJaxx.java 2009-09-26 02:17:37 UTC (rev 1673) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJaxx.java 2009-09-29 11:41:17 UTC (rev 1674) @@ -18,9 +18,9 @@ package org.nuiton.i18n.plugin.parser.impl; -import org.nuiton.util.SourceEntry; -import org.nuiton.util.FileUpdater; -import org.nuiton.util.FileUpdaterHelper; +import org.nuiton.i18n.plugin.SourceEntry; +import org.nuiton.io.FileUpdater; +import org.nuiton.io.FileUpdaterHelper; import java.io.File; Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserSwixat.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserSwixat.java 2009-09-26 02:17:37 UTC (rev 1673) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserSwixat.java 2009-09-29 11:41:17 UTC (rev 1674) @@ -18,8 +18,8 @@ package org.nuiton.i18n.plugin.parser.impl; -import org.nuiton.util.SourceEntry; -import org.nuiton.util.FileUpdater; +import org.nuiton.i18n.plugin.SourceEntry; +import org.nuiton.io.FileUpdater; /** * Recuperation des chaines à traduire depuis les fichiers xml Swixat. Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidation.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidation.java 2009-09-26 02:17:37 UTC (rev 1673) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidation.java 2009-09-29 11:41:17 UTC (rev 1674) @@ -19,9 +19,9 @@ import java.io.IOException; import java.net.URLConnection; -import org.nuiton.util.SourceEntry; -import org.nuiton.util.FileUpdater; -import org.nuiton.util.MirroredFileUpdater; +import org.nuiton.i18n.plugin.SourceEntry; +import org.nuiton.io.FileUpdater; +import org.nuiton.io.MirroredFileUpdater; import java.io.File; import java.net.SocketTimeoutException; Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2009-09-26 02:17:37 UTC (rev 1673) +++ trunk/pom.xml 2009-09-29 11:41:17 UTC (rev 1674) @@ -202,6 +202,9 @@ <!-- pour un muli module on doit fixer le projectId --> <projectId>i18n</projectId> + <!-- must be removed after mavenpom release, avoid hudson to break --> + <helper.version>1.1.0-SNAPSHOT</helper.version> + <processor.version>1.0.1-SNAPSHOT</processor.version> </properties>
participants (1)
-
tchemit@users.nuiton.org