r338 - in trunk: . ant-processor-task/src/main/java/org/nuiton/processor/ant maven-processor-plugin/src/main/java/org/nuiton/processor/plugin nuiton-processor nuiton-processor/src/main/java/org/nuiton/processor nuiton-processor/src/test/java/org/nuiton/processor nuiton-processor/src/test/java/org/nuiton/processor/filters
Author: tchemit Date: 2010-06-29 12:44:52 +0200 (Tue, 29 Jun 2010) New Revision: 338 Url: http://nuiton.org/repositories/revision/processor/338 Log: Evolution #498: Use mavenpom4redmine 2.2.2 Evolution #724: Add encoding property to fix encoding for all read or write operations Improve tests (and reactive somes) Removed: trunk/ant-processor-task/src/main/java/org/nuiton/processor/ant/I18nExtractorTask.java Modified: trunk/ant-processor-task/src/main/java/org/nuiton/processor/ant/ProcessorTask.java trunk/maven-processor-plugin/src/main/java/org/nuiton/processor/plugin/ProcessorPlugin.java trunk/nuiton-processor/pom.xml trunk/nuiton-processor/src/main/java/org/nuiton/processor/GeneratorTemplatesProcessor.java trunk/nuiton-processor/src/main/java/org/nuiton/processor/I18nExtractor.java trunk/nuiton-processor/src/main/java/org/nuiton/processor/LicenseProcessor.java trunk/nuiton-processor/src/main/java/org/nuiton/processor/LogsProcessor.java trunk/nuiton-processor/src/main/java/org/nuiton/processor/OptimisationProcessor.java trunk/nuiton-processor/src/main/java/org/nuiton/processor/Processor.java trunk/nuiton-processor/src/main/java/org/nuiton/processor/ProcessorUtil.java trunk/nuiton-processor/src/main/java/org/nuiton/processor/ProcessorWriter.java trunk/nuiton-processor/src/test/java/org/nuiton/processor/CommonTest.java trunk/nuiton-processor/src/test/java/org/nuiton/processor/LicenseProcessorTest.java trunk/nuiton-processor/src/test/java/org/nuiton/processor/filters/StringFilterTest.java trunk/pom.xml Deleted: trunk/ant-processor-task/src/main/java/org/nuiton/processor/ant/I18nExtractorTask.java =================================================================== --- trunk/ant-processor-task/src/main/java/org/nuiton/processor/ant/I18nExtractorTask.java 2010-06-27 06:56:40 UTC (rev 337) +++ trunk/ant-processor-task/src/main/java/org/nuiton/processor/ant/I18nExtractorTask.java 2010-06-29 10:44:52 UTC (rev 338) @@ -1,172 +0,0 @@ -/* - * #%L - * Nuiton Processor :: Ant task - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2009 - 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>. - * #L% - */ - -package org.nuiton.processor.ant; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.DirectoryScanner; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.taskdefs.MatchingTask; -import org.nuiton.processor.I18nExtractor; - -/** - * I18nExtractorTask. - * - * Created: Aug 16, 2004 - * - * @author Cédric Pineau <pineau@codelutin.com> - * @version $Revision$ - * - * Last update : $Date$ - * by : * @deprecated since 1.0.3, prefer use the same task in ant-i18n-task project. - */ -@Deprecated -public class I18nExtractorTask extends MatchingTask { - - public static final int MSG_VERBOSE = Project.MSG_VERBOSE; - - protected File srcDir; - - protected File destFile; - - protected String[] includes = EMPTY_STRING_ARRAY; - - protected String[] excludes = EMPTY_STRING_ARRAY; - - protected String[] srcFileNames; - - private static final String[] EMPTY_STRING_ARRAY = new String[] {}; - - public I18nExtractorTask() { - - } - - protected void doExecute() throws BuildException { - // creation du repertoire pour le fichier destination - File parentFile = destFile.getParentFile(); - if (!parentFile.exists()) { - boolean b = parentFile.mkdirs(); - if (!b) { - throw new BuildException( - "could not create directory " + parentFile); - } - } - List<File> fileList = new ArrayList<File>(); - for (String srcFileName : srcFileNames) { - fileList.add(new File(srcFileName)); - } - try { - new I18nExtractor().extract( - fileList.toArray(new File[fileList.size()]), destFile); - } catch (IOException eee) { - throw new BuildException(eee); - } - } - - public void setSrcdir(File srcDir) { - this.srcDir = srcDir; - } - - public void setDestFile(File destFile) { - this.destFile = destFile; - } - - @Override - public void execute() throws BuildException { - // first of all, make sure that we've got a srcdir - if (srcDir == null) { - throw new BuildException("srcdir attribute must be set!", - getLocation()); - } - if (!srcDir.exists()) { - throw new BuildException("srcdir \"" + srcDir.getPath() - + "\" does not exist!", getLocation()); - } - - if (destFile == null) { - throw new BuildException("destFile attribute must be set!", - getLocation()); - } - - // Build the list of files to compute - buildFileList(); - - // generate the source files - doExecute(); - } - - protected void buildFileList() { - - // Obtain this list of files within the source directory - DirectoryScanner ds = getDirectoryScanner(srcDir); - - String[] ins = getIncludes(); - if (ins.length > 0) { - ds.setIncludes(ins); - } - String[] exs = getExcludes(); - if (exs.length > 0) { - ds.setExcludes(exs); - } - - ds.scan(); - - // on met le resultat dans files - srcFileNames = ds.getIncludedFiles(); - } - - protected boolean isNewer(String filein, String fileout) { - boolean result = new File(filein).lastModified() > new File(fileout) - .lastModified(); - if (result) { - log(filein + " is newer than " + fileout, MSG_VERBOSE); - } - return result; - } - - protected String[] getExcludes() { - return excludes; - } - - protected String[] getIncludes() { - return includes; - } - - @Override - public void setIncludes(String includes) { - this.includes = includes.split(","); - } - - @Override - public void setExcludes(String excludes) { - this.excludes = excludes.split(","); - } - -} Modified: trunk/ant-processor-task/src/main/java/org/nuiton/processor/ant/ProcessorTask.java =================================================================== --- trunk/ant-processor-task/src/main/java/org/nuiton/processor/ant/ProcessorTask.java 2010-06-27 06:56:40 UTC (rev 337) +++ trunk/ant-processor-task/src/main/java/org/nuiton/processor/ant/ProcessorTask.java 2010-06-29 10:44:52 UTC (rev 338) @@ -25,40 +25,41 @@ package org.nuiton.processor.ant; -import java.io.File; import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.taskdefs.MatchingTask; -import org.nuiton.processor.Processor; -import java.io.IOException; import org.apache.tools.ant.DirectoryScanner; import org.apache.tools.ant.Project; +import org.apache.tools.ant.taskdefs.MatchingTask; +import org.nuiton.processor.Processor; import org.nuiton.processor.ProcessorUtil; +import java.io.File; +import java.io.IOException; + /** * Tache ant pour lutinprocessor. - * + * <p/> * To use this task, put this code in ant build file: * <pre> * <taskdef name="processor" classname="org.nuiton.processor.ant.ProcessorTask" * classpath="lib/lutinprocessor.jar" /> * </pre> - * + * <p/> * and use it with: * <pre> * <processor srcdir="${src}" destdir="${targetgen}" filters="org.nuiton.processor.filters.GeneratorTemplatesFilter" /> * </pre> * Created: 14 janv. 2004 - * + * * @author Benjamin Poussin <poussin@codelutin.com> Copyright Code Lutin - * * @version $Revision$ - * - * Mise a jour: $Date$ par : */ + * <p/> + * Mise a jour: $Date$ par : + */ public class ProcessorTask extends MatchingTask { // ProcessorTask public static final int MSG_VERBOSE = Project.MSG_VERBOSE; - private static final String[] EMPTY_STRING_ARRAY = new String[] {}; + private static final String[] EMPTY_STRING_ARRAY = new String[]{}; protected File srcDir; @@ -76,6 +77,8 @@ protected String filters = "org.nuiton.processor.filters.NoActionFilter"; + protected String encoding = ProcessorUtil.DEFAULT_ENCODING; + protected boolean overwrite = true; protected boolean verbose; @@ -83,34 +86,6 @@ public ProcessorTask() { } - public void setVerbose(boolean verbose) { - this.verbose = verbose; - } - - public void setOverwrite(boolean overwrite) { - this.overwrite = overwrite; - } - - public void setFileOutPattern(String fileOutPattern) { - this.fileOutPattern = fileOutPattern; - } - - public void setFileInPattern(String fileInPattern) { - this.fileInPattern = fileInPattern; - } - - public void setSrcdir(File srcDir) { - this.srcDir = srcDir; - } - - public void setDestdir(File destDir) { - this.destDir = destDir; - } - - public void setFilters(String filters) { - this.filters = filters; - } - protected String applyTransformationFilename(String filename) { return filename.replaceAll(fileInPattern, fileOutPattern); } @@ -124,7 +99,10 @@ "Could nto instanciate processor for reason : " + ex.getMessage(), ex); } -// Processor processor = new Processor(getFilters()); + if (encoding == null || encoding.trim().isEmpty()) { + setEncoding(ProcessorUtil.DEFAULT_ENCODING); + log("Using default system encoding " + encoding); + } int numberFiles; for (numberFiles = 0; numberFiles < files.length; numberFiles++) { String inputFileName = absoluteSourceName(files[numberFiles]); @@ -147,11 +125,10 @@ } } try { - ProcessorUtil.doProcess( - processor, inputFileName, outputFileName - ); -// processor.process(new FileReader(inputFileName), -// new FileWriter(outputFileName)); + ProcessorUtil.doProcess(processor, + inputFileName, + outputFileName, + encoding); } catch (IOException eee) { throw new BuildException(eee); } @@ -160,35 +137,12 @@ log("Generating " + numberFiles + " files to " + destDir); } -// protected Filter[] getFilters() throws BuildException { -// Filter[] result; -// try { -// result = ProcessorUtil.getFilters(filters, ","); -// } catch (Exception eee) { -// throw new BuildException(eee.getMessage(), eee); -// } -//// String[] filterList = filters.split(","); -//// Filter[] result = new Filter[filterList.length]; -//// for (int i = 0; i < filterList.length; i++) { -//// try { -//// // Class.forName semble fonctionner maintenant -//// // avant il fallait utiliser getClass().forName -//// result[i] = (Filter) Class.forName(filterList[i].trim()) -//// .newInstance(); -//// } catch (Exception eee) { -//// throw new BuildException("Error during looking for '" -//// + filterList[i].trim() + "' class", eee); -//// } -//// } -// return result; -// } - @Override public void execute() throws BuildException { // first of all, make sure that we've got a srcdir if (srcDir == null) { throw new BuildException("srcdir attribute must be set!", - getLocation()); + getLocation()); } if (!srcDir.exists()) { throw new BuildException("srcdir \"" + srcDir.getPath() + @@ -273,4 +227,37 @@ protected String absoluteSourceName(String fileName) { return srcDir.getPath() + File.separator + fileName; } + + public void setVerbose(boolean verbose) { + this.verbose = verbose; + } + + public void setOverwrite(boolean overwrite) { + this.overwrite = overwrite; + } + + public void setFileOutPattern(String fileOutPattern) { + this.fileOutPattern = fileOutPattern; + } + + public void setFileInPattern(String fileInPattern) { + this.fileInPattern = fileInPattern; + } + + public void setSrcdir(File srcDir) { + this.srcDir = srcDir; + } + + public void setDestdir(File destDir) { + this.destDir = destDir; + } + + public void setFilters(String filters) { + this.filters = filters; + } + + public void setEncoding(String encoding) { + this.encoding = encoding; + } + } // ProcessorTask Modified: trunk/maven-processor-plugin/src/main/java/org/nuiton/processor/plugin/ProcessorPlugin.java =================================================================== --- trunk/maven-processor-plugin/src/main/java/org/nuiton/processor/plugin/ProcessorPlugin.java 2010-06-27 06:56:40 UTC (rev 337) +++ trunk/maven-processor-plugin/src/main/java/org/nuiton/processor/plugin/ProcessorPlugin.java 2010-06-29 10:44:52 UTC (rev 338) @@ -29,6 +29,7 @@ import org.nuiton.io.MirroredFileUpdater; import org.nuiton.plugin.AbstractPlugin; import org.nuiton.plugin.PluginHelper; +import org.nuiton.plugin.PluginWithEncoding; import org.nuiton.processor.Processor; import org.nuiton.processor.ProcessorUtil; @@ -50,7 +51,7 @@ * @goal process * @requiresProject true */ -public class ProcessorPlugin extends AbstractPlugin { +public class ProcessorPlugin extends AbstractPlugin implements PluginWithEncoding { /** * Dependance du projet. @@ -120,6 +121,17 @@ */ protected String filters; /** + * Encoding used to read and writes files. + * <p/> + * <b>Note:</b> If nothing is filled here, we will use the system + * property {@code file.encoding}. + * + * @parameter expression="${license.encoding}" default-value="${project.build.sourceEncoding}" + * @required + * @since 1.0.4 + */ + private String encoding; + /** * Ecrase les fichiers générés * * @parameter expression="${processor.overwrite}" default-value="false" @@ -166,6 +178,16 @@ } @Override + public final String getEncoding() { + return encoding; + } + + @Override + public final void setEncoding(String encoding) { + this.encoding = encoding; + } + + @Override protected void init() throws Exception { if (filters.isEmpty()) { @@ -224,8 +246,7 @@ // creation du repertoire pour le fichier destination createDirectoryIfNecessary(dstFile.getParentFile()); - ProcessorUtil.doProcess(processor, srcFile, dstFile); -// processor.process(new FileReader(srcFile), new FileWriter(dstFile)); + ProcessorUtil.doProcess(processor, srcFile, dstFile, getEncoding()); } if (isVerbose()) { Modified: trunk/nuiton-processor/pom.xml =================================================================== --- trunk/nuiton-processor/pom.xml 2010-06-27 06:56:40 UTC (rev 337) +++ trunk/nuiton-processor/pom.xml 2010-06-29 10:44:52 UTC (rev 338) @@ -24,108 +24,119 @@ #L% --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> + <modelVersion>4.0.0</modelVersion> - <!-- ************************************************************* --> - <!-- *** POM Relationships *************************************** --> - <!-- ************************************************************* --> + <!-- ************************************************************* --> + <!-- *** POM Relationships *************************************** --> + <!-- ************************************************************* --> - <parent> - <groupId>org.nuiton</groupId> - <artifactId>processor</artifactId> - <version>1.0.4-SNAPSHOT</version> - </parent> + <parent> + <groupId>org.nuiton</groupId> + <artifactId>processor</artifactId> + <version>1.0.4-SNAPSHOT</version> + </parent> - <groupId>org.nuiton.processor</groupId> - <artifactId>nuiton-processor</artifactId> + <groupId>org.nuiton.processor</groupId> + <artifactId>nuiton-processor</artifactId> - <dependencies> + <dependencies> - <dependency> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </dependency> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> - <dependency> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - <scope>test</scope> - </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <scope>test</scope> + </dependency> - <dependency> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-utils</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - - <!-- ************************************************************* --> - <!-- *** Project Information ************************************* --> - <!-- ************************************************************* --> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + <scope>test</scope> + </dependency> + </dependencies> - <name>Nuiton Processor :: Api</name> - <description> - Cette librairie permet la création de filtre sur les fichiers sources. - </description> - <inceptionYear>2002</inceptionYear> - - <!-- ************************************************************* --> - <!-- *** Build Settings ****************************************** --> - <!-- ************************************************************* --> + <!-- ************************************************************* --> + <!-- *** Project Information ************************************* --> + <!-- ************************************************************* --> - <packaging>jar</packaging> + <name>Nuiton Processor :: Api</name> + <description> + Cette librairie permet la création de filtre sur les fichiers sources. + </description> + <inceptionYear>2002</inceptionYear> - <properties> - <!-- extra files to include in release --> - <redmine.releaseFiles>${redmine.libReleaseFiles}</redmine.releaseFiles> - </properties> - - <!-- ************************************************************* --> - <!-- *** Build Environment ************************************** --> - <!-- ************************************************************* --> - - <!-- perform only on a release stage when using the maven-release-plugin --> - <profiles> - <profile> - <id>release-profile</id> - <activation> - <property> - <name>performRelease</name> - <value>true</value> - </property> - </activation> - <build> - <plugins> - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <executions> - <execution> - <id>create-assemblies</id> - <phase>package</phase> - <goals> - <goal>single</goal> - </goals> - </execution> - </executions> - <configuration> - <attach>false</attach> - <descriptorRefs> - <descriptorRef>deps</descriptorRef> - <descriptorRef>full</descriptorRef> - </descriptorRefs> - </configuration> - </plugin> - - </plugins> - </build> - </profile> - </profiles> - + <!-- ************************************************************* --> + <!-- *** Build Settings ****************************************** --> + <!-- ************************************************************* --> + + <properties> + <!-- extra files to include in release --> + <redmine.releaseFiles>${redmine.libReleaseFiles}</redmine.releaseFiles> + </properties> + + <!-- ************************************************************* --> + <!-- *** Build Environment ************************************** --> + <!-- ************************************************************* --> + + <build> + <testResources> + <testResource> + <directory>src/test/resources</directory> + <includes> + <include>**/*.java2</include> + <include>**/*.properties</include> + </includes> + </testResource> + </testResources> + </build> + <!-- perform only on a release stage when using the maven-release-plugin --> + <profiles> + <profile> + <id>release-profile</id> + <activation> + <property> + <name>performRelease</name> + <value>true</value> + </property> + </activation> + <build> + <plugins> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <executions> + <execution> + <id>create-assemblies</id> + <phase>package</phase> + <goals> + <goal>single</goal> + </goals> + </execution> + </executions> + <configuration> + <attach>false</attach> + <descriptorRefs> + <descriptorRef>deps</descriptorRef> + <descriptorRef>full</descriptorRef> + </descriptorRefs> + </configuration> + </plugin> + + </plugins> + </build> + </profile> + </profiles> + </project> Modified: trunk/nuiton-processor/src/main/java/org/nuiton/processor/GeneratorTemplatesProcessor.java =================================================================== --- trunk/nuiton-processor/src/main/java/org/nuiton/processor/GeneratorTemplatesProcessor.java 2010-06-27 06:56:40 UTC (rev 337) +++ trunk/nuiton-processor/src/main/java/org/nuiton/processor/GeneratorTemplatesProcessor.java 2010-06-29 10:44:52 UTC (rev 338) @@ -38,29 +38,49 @@ package org.nuiton.processor; +import org.nuiton.processor.filters.GeneratorTemplatesFilter; + import java.io.IOException; -import org.nuiton.processor.filters.GeneratorTemplatesFilter; - public class GeneratorTemplatesProcessor extends Processor { - public GeneratorTemplatesProcessor(){ + public GeneratorTemplatesProcessor() { setInputFilter(new GeneratorTemplatesFilter()); } - static public void process(String filein, String fileout) - throws IOException{ + /** + * @param filein the source file to process + * @param fileout the output file to generate + * @param encoding encoding used to read and write files + * @throws IOException if any io problems while processing + * @since 1.0.4 + */ + static public void process(String filein, + String fileout, + String encoding) throws IOException { Processor processor = new GeneratorTemplatesProcessor(); - ProcessorUtil.doProcess(processor,filein,fileout); -// processor.process(new FileReader(filein), new FileWriter(fileout)); + ProcessorUtil.doProcess(processor, filein, fileout, encoding); } - public static void main(String [] args)throws IOException{ - if(args.length < 2) { + /** + * @param filein the source file to process + * @param fileout the output file to generate + * @throws IOException if any io problems while processing + * @deprecated since 1.0.4, prefer use {@link #process(String, String, String)}. + */ + @Deprecated + static public void process(String filein, String fileout) throws IOException { + process(filein, fileout, ProcessorUtil.DEFAULT_ENCODING); +// Processor processor = new GeneratorTemplatesProcessor(); +// ProcessorUtil.doProcess(processor, filein, fileout); + } + + public static void main(String[] args) throws IOException { + if (args.length < 2) { System.out.println("Give source and destination file"); System.exit(1); } else { - process(args[0], args[1]); + process(args[0], args[1], ProcessorUtil.DEFAULT_ENCODING); } } } Modified: trunk/nuiton-processor/src/main/java/org/nuiton/processor/I18nExtractor.java =================================================================== --- trunk/nuiton-processor/src/main/java/org/nuiton/processor/I18nExtractor.java 2010-06-27 06:56:40 UTC (rev 337) +++ trunk/nuiton-processor/src/main/java/org/nuiton/processor/I18nExtractor.java 2010-06-29 10:44:52 UTC (rev 338) @@ -37,6 +37,8 @@ package org.nuiton.processor; +import org.nuiton.processor.filters.I18nFilter; + import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; @@ -53,31 +55,38 @@ import java.util.logging.Level; import java.util.logging.Logger; -import org.nuiton.processor.filters.I18nFilter; - /** - * + * */ public class I18nExtractor { protected I18nFilter filter = new I18nFilter(); - - protected Map<String,List<String>> i18nStringsMap = - new HashMap<String,List<String>>(); - - public void extract(File[] srcFiles, File outputFile) throws IOException { + + protected Map<String, List<String>> store = + new HashMap<String, List<String>>(); + + /** + * Process input file to target. + * + * @param srcFiles source files + * @param outputFile target file + * @param encoding encoding used to read and write files + * @throws IOException if any io problems + * @since 1.0.4 + */ + public void extract(File[] srcFiles, File outputFile, String encoding) throws IOException { PrintWriter writer = new PrintWriter( new BufferedWriter( new OutputStreamWriter( - new FileOutputStream(outputFile), "UTF-8"))); + new FileOutputStream(outputFile), encoding))); try { for (File srcFile : srcFiles) { - processFile(srcFile); + processFile(srcFile, encoding); } - for (Object o : i18nStringsMap.keySet()) { + for (Object o : store.keySet()) { String i18nString = (String) o; - List<?> locations = i18nStringsMap.get(i18nString); + List<?> locations = store.get(i18nString); for (Object location1 : locations) { String location = (String) location1; writer.println("# " + location); @@ -88,10 +97,42 @@ writer.close(); } } - - protected void processFile(File srcFile) throws IOException { + + /** + * @param srcFiles source files + * @param outputFile target file + * @throws IOException if any io problems + * @deprecated since 1.0.4, prefer use the {@link #extract(File[], File, String)} + */ + @Deprecated + public void extract(File[] srcFiles, File outputFile) throws IOException { + extract(srcFiles, outputFile, "UTF-8"); +// PrintWriter writer = new PrintWriter( +// new BufferedWriter( +// new OutputStreamWriter( +// new FileOutputStream(outputFile), "UTF-8"))); +// try { +// for (File srcFile : srcFiles) { +// processFile(srcFile); +// } +// +// for (Object o : store.keySet()) { +// String i18nString = (String) o; +// List<?> locations = store.get(i18nString); +// for (Object location1 : locations) { +// String location = (String) location1; +// writer.println("# " + location); +// } +// writer.println(i18nString + "="); +// } +// } finally { +// writer.close(); +// } + } + + protected void processFile(File srcFile, String encoding) throws IOException { LineNumberReader lnr = new LineNumberReader( - new InputStreamReader(new FileInputStream(srcFile), "UTF-8")); + new InputStreamReader(new FileInputStream(srcFile), encoding)); try { while (lnr.ready()) { String line = lnr.readLine(); @@ -109,10 +150,10 @@ // Found a set of i18n Strings, split it. String[] i18nStrings = i18nStringsSet.split("="); for (String i18nString : i18nStrings) { - List<String> locations = i18nStringsMap.get(i18nString); + List<String> locations = store.get(i18nString); if (locations == null) { locations = new ArrayList<String>(); - i18nStringsMap.put(i18nString, locations); + store.put(i18nString, locations); } locations.add(srcFile.getPath() + "(" + lineNumber + ")"); } @@ -120,25 +161,28 @@ } public static void main(String[] args) { - if(args.length < 2) { - System.out.println( + Logger logger = Logger.getLogger("org.nuiton.processor.I18nExtractor."); + + if (args.length < 2) { + logger.log(Level.SEVERE, "Please give at least sources and destination file"); System.exit(0); } else if (args.length > 2) { - File[] sources = new File[args.length-1]; - for (int i = 0; i < args.length-1; i++) { - sources[i] =new File(args[i]); + File[] sources = new File[args.length - 1]; + for (int i = 0; i < args.length - 1; i++) { + sources[i] = new File(args[i]); } File destination = new File(args[args.length - 1]); try { - new I18nExtractor().extract(sources, destination); + String encoding = ProcessorUtil.DEFAULT_ENCODING; + logger.log(Level.INFO, "Will use system encoding " + encoding); + new I18nExtractor().extract(sources, destination, encoding); } catch (IOException eee) { - Logger logger = - Logger.getLogger("org.nuiton.processor.I18nExtractor."); + logger.log(Level.SEVERE, "Error during i18n extraction : " + eee, eee); } } - + } } Modified: trunk/nuiton-processor/src/main/java/org/nuiton/processor/LicenseProcessor.java =================================================================== --- trunk/nuiton-processor/src/main/java/org/nuiton/processor/LicenseProcessor.java 2010-06-27 06:56:40 UTC (rev 337) +++ trunk/nuiton-processor/src/main/java/org/nuiton/processor/LicenseProcessor.java 2010-06-29 10:44:52 UTC (rev 338) @@ -49,9 +49,30 @@ return licenseFilter; } + /** + * Process input file to target. + * + * @param filein source file + * @param fileout target file + * @param encoding encoding used to read and write files + * @throws IOException if any io problems + * @since 1.0.4 + */ + public void process(File filein, File fileout, String encoding) throws IOException { + ProcessorUtil.doProcess(this, filein, fileout, encoding); + } + + /** + * Process input file to target. + * + * @param filein source file + * @param fileout target file + * @throws IOException if any io problems + * @deprecated since 1.0.4, prefer use the method {@link #process(File, File, String)} + */ + @Deprecated public void process(File filein, File fileout) throws IOException { - ProcessorUtil.doProcess(this, filein, fileout); -// process(new FileReader(filein), new FileWriter(fileout)); + process(filein, fileout, ProcessorUtil.DEFAULT_ENCODING); } } Modified: trunk/nuiton-processor/src/main/java/org/nuiton/processor/LogsProcessor.java =================================================================== --- trunk/nuiton-processor/src/main/java/org/nuiton/processor/LogsProcessor.java 2010-06-27 06:56:40 UTC (rev 337) +++ trunk/nuiton-processor/src/main/java/org/nuiton/processor/LogsProcessor.java 2010-06-29 10:44:52 UTC (rev 338) @@ -39,9 +39,8 @@ package org.nuiton.processor; -import org.nuiton.processor.filters.*; -import java.io.*; -import java.util.logging.Logger; +import org.nuiton.processor.filters.ActiveLogsCodeFilter; +import org.nuiton.processor.filters.RemoveLogsCodeFilter; /* * This class is a processor for source logs @@ -69,7 +68,7 @@ // /** Remove logs in output */ // public final static Action NoLogsCode = new Action(); - public LogsProcessor (Action action) { + public LogsProcessor(Action action) { switch (action) { case NoAction: @@ -95,7 +94,7 @@ // } } - public static void main(String [] args) throws Exception { + public static void main(String[] args) throws Exception { if (args.length < 2) { System.out.println("Give source and destination file, then action"); System.out.println("Action may be remove or active (default is no action)"); @@ -118,7 +117,7 @@ } LogsProcessor processor = new LogsProcessor(action); - ProcessorUtil.doProcess(processor, args[0], args[1]); + ProcessorUtil.doProcess(processor, args[0], args[1], ProcessorUtil.DEFAULT_ENCODING); // if (args.length > 2) { // if (args[2].equals(REMOVE_ACTION)) { // processor = new LogsProcessor(Action.NoLogsCode); Modified: trunk/nuiton-processor/src/main/java/org/nuiton/processor/OptimisationProcessor.java =================================================================== --- trunk/nuiton-processor/src/main/java/org/nuiton/processor/OptimisationProcessor.java 2010-06-27 06:56:40 UTC (rev 337) +++ trunk/nuiton-processor/src/main/java/org/nuiton/processor/OptimisationProcessor.java 2010-06-29 10:44:52 UTC (rev 338) @@ -39,25 +39,43 @@ package org.nuiton.processor; +import org.nuiton.processor.filters.OptimisationFilter; + import java.io.IOException; -import org.nuiton.processor.filters.OptimisationFilter; - public class OptimisationProcessor extends Processor { // OptimisationProcessor - public OptimisationProcessor(){ + public OptimisationProcessor() { setInputFilter(new OptimisationFilter()); } - static public void process(String filein, String fileout) - throws IOException{ + /** + * @param filein source to process + * @param fileout result to write + * @param encoding encoding to use to read and write files + * @throws IOException if any io problem while processing + * @since 1.0.4 + */ + static public void process(String filein, String fileout, String encoding) throws IOException { Processor processor = new OptimisationProcessor(); - ProcessorUtil.doProcess(processor, filein, fileout); -// processor.process(new FileReader(filein), new FileWriter(fileout)); + ProcessorUtil.doProcess(processor, filein, fileout, encoding); } - public static void main(String [] args)throws IOException{ - if(args.length < 2) { + /** + * @param filein source to process + * @param fileout result to write + * @throws IOException if any io problem while processing + * @deprecated since 1.0.4, prefer use {@link #process(String, String, String)} + */ + @Deprecated + static public void process(String filein, String fileout) throws IOException { + process(filein, fileout, ProcessorUtil.DEFAULT_ENCODING); +// Processor processor = new OptimisationProcessor(); +// ProcessorUtil.doProcess(processor, filein, fileout); + } + + public static void main(String[] args) throws IOException { + if (args.length < 2) { System.out.println("Give source and destination file"); System.exit(1); } else { Modified: trunk/nuiton-processor/src/main/java/org/nuiton/processor/Processor.java =================================================================== --- trunk/nuiton-processor/src/main/java/org/nuiton/processor/Processor.java 2010-06-27 06:56:40 UTC (rev 337) +++ trunk/nuiton-processor/src/main/java/org/nuiton/processor/Processor.java 2010-06-29 10:44:52 UTC (rev 338) @@ -97,22 +97,26 @@ } BufferedReader input = getReader(externalInput); try { - ProcessorWriter output = new ProcessorWriter( - new BufferedWriter(externalOutput), outputFilter); - if (log.isTraceEnabled()) { - log.trace("input: " + input); - log.trace("output: " + output); - } - - String line = input.readLine(); - while (line != null) { + BufferedWriter writer = new BufferedWriter(externalOutput); + try { + ProcessorWriter output = new ProcessorWriter(writer, outputFilter); if (log.isTraceEnabled()) { - log.trace("Ligne lu: " + line); + log.trace("input: " + input); + log.trace("output: " + output); } - output.writeLine(line); - line = input.readLine(); + + String line = input.readLine(); + while (line != null) { + if (log.isTraceEnabled()) { + log.trace("Ligne lu: " + line); + } + output.writeLine(line); + line = input.readLine(); + } + output.flush(); + } finally { + writer.close(); } - output.flush(); } finally { input.close(); } Modified: trunk/nuiton-processor/src/main/java/org/nuiton/processor/ProcessorUtil.java =================================================================== --- trunk/nuiton-processor/src/main/java/org/nuiton/processor/ProcessorUtil.java 2010-06-27 06:56:40 UTC (rev 337) +++ trunk/nuiton-processor/src/main/java/org/nuiton/processor/ProcessorUtil.java 2010-06-29 10:44:52 UTC (rev 338) @@ -30,9 +30,11 @@ import org.nuiton.processor.filters.Filter; import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; /** * Utilities methods. @@ -44,12 +46,21 @@ /** Logger */ private static final Log log = LogFactory.getLog(ProcessorUtil.class); - + /** + * System encoding (use as fall back for deprecated method with no given + * encoding. + * + * @since 1.0.4 + */ + public static final String DEFAULT_ENCODING = + System.getProperty("file.encoding"); + + /** * Instanciate a new {@link Processor} given an array of filters given by * their FQN separated by the given separator. * - * @param filters the string representionf of the filters + * @param filters the string representionf of the filters * @param separator the separator of filter * @return the instanciated processor * @throws Exception if any pb @@ -60,15 +71,14 @@ Processor processor = new Processor(result); return processor; } - + /** * Instanciate a array of filters given by thier FQN separated by the * given separator. * - * @param filters the list of filters separated by the given separator + * @param filters the list of filters separated by the given separator * @param separator filter separator * @return the array of instanciated filters. - * * @throws Exception if any pb */ public static Filter[] getFilters(String filters, @@ -97,29 +107,49 @@ * @param processor the processor to launch * @param in the input file * @param out the output file + * @param encoding encoding to use to read and write files * @throws IOException if any problems while processing file + * @since 1.0.4 + */ + public static void doProcess(Processor processor, + String in, + String out, + String encoding) throws IOException { + doProcess(processor, new File(in), new File(out), encoding); + } + + /** + * Launch the process of the given {@code processor} to the given files. + * + * @param processor the processor to launch + * @param in the input file + * @param out the output file + * @throws IOException if any problems while processing file * @since 1.0.3 + * @deprecated since 1.0.4, prefer use the {@link #doProcess(Processor, String, String, String)}. */ public static void doProcess(Processor processor, String in, String out) throws IOException { - doProcess(processor, new File(in), new File(out)); + doProcess(processor, new File(in), new File(out), DEFAULT_ENCODING); } - /** * Launch the process of the given {@code processor} to the given files. * * @param processor the processor to launch * @param in the input file * @param out the output file + * @param encoding encoding to use to read and write files. * @throws IOException if any problems while processing file - * @since 1.0.3 + * @since 1.0.4 */ public static void doProcess(Processor processor, - File in, File out) throws IOException { - FileReader input = new FileReader(in); + File in, + File out, + String encoding) throws IOException { + InputStreamReader input = new InputStreamReader(new FileInputStream(in), encoding); try { - FileWriter output = new FileWriter(out); + OutputStreamWriter output = new OutputStreamWriter(new FileOutputStream(out), encoding); try { processor.process(input, output); } catch (IOException eee) { @@ -136,4 +166,23 @@ input.close(); } } + + + /** + * Launch the process of the given {@code processor} to the given files using + * the system default encoding. + * + * @param processor the processor to launch + * @param in the input file + * @param out the output file + * @throws IOException if any problems while processing file + * @since 1.0.3 + * @deprecated since 1.0.4, prefer use the {@link #doProcess(Processor, File, File, String)}. + */ + @Deprecated + public static void doProcess(Processor processor, + File in, File out) throws IOException { + doProcess(processor, in, out, DEFAULT_ENCODING); + } + } Modified: trunk/nuiton-processor/src/main/java/org/nuiton/processor/ProcessorWriter.java =================================================================== --- trunk/nuiton-processor/src/main/java/org/nuiton/processor/ProcessorWriter.java 2010-06-27 06:56:40 UTC (rev 337) +++ trunk/nuiton-processor/src/main/java/org/nuiton/processor/ProcessorWriter.java 2010-06-29 10:44:52 UTC (rev 338) @@ -25,26 +25,29 @@ /** -* ProcessorWriter.java -* -* Created: Wed Jan 14 2004 -* -* @author <poussin@codelutin.com> -* Copyright Code Lutin -* @version $Revision$ -* -* Mise a jour: $Date$ -* par : $Author$ -*/ + * ProcessorWriter.java + * + * Created: Wed Jan 14 2004 + * + * @author <poussin@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ package org.nuiton.processor; -import org.nuiton.processor.filters.*; -import java.io.*; +import org.nuiton.processor.filters.Filter; +import java.io.BufferedWriter; +import java.io.IOException; + public class ProcessorWriter { protected BufferedWriter output; + protected Filter filter; public ProcessorWriter(BufferedWriter output, Filter filter) { @@ -53,8 +56,8 @@ } public void writeLine(String line) throws IOException { - - // TODO Euh on se sert quand du filtre de sortie ???? :-) + + // TODO Euh on se sert quand du filtre de sortie ???? :-) output.write(line); } Modified: trunk/nuiton-processor/src/test/java/org/nuiton/processor/CommonTest.java =================================================================== --- trunk/nuiton-processor/src/test/java/org/nuiton/processor/CommonTest.java 2010-06-27 06:56:40 UTC (rev 337) +++ trunk/nuiton-processor/src/test/java/org/nuiton/processor/CommonTest.java 2010-06-29 10:44:52 UTC (rev 338) @@ -56,12 +56,16 @@ basedir = getBasedir(); testdir = getFile(basedir, "target", "test-classes", "org", "nuiton", "processor", "result"); - testdir.mkdirs(); + boolean b = testdir.exists() || testdir.mkdirs(); + if (!b) { + throw new IOException("Could not create directory : "+testdir); + } } protected void checkPattern(String pattern, boolean required, - File f) throws IOException { + File f, + String encoding) throws IOException { if (log.isDebugEnabled()) { log.debug("check generated file " + f); @@ -71,7 +75,7 @@ f.exists() ); - String content = readAsString(f, "utf-8"); + String content = readAsString(f, encoding); String errorMessage = required ? "could not find the pattern : " : "should not have found pattern :"; Modified: trunk/nuiton-processor/src/test/java/org/nuiton/processor/LicenseProcessorTest.java =================================================================== --- trunk/nuiton-processor/src/test/java/org/nuiton/processor/LicenseProcessorTest.java 2010-06-27 06:56:40 UTC (rev 337) +++ trunk/nuiton-processor/src/test/java/org/nuiton/processor/LicenseProcessorTest.java 2010-06-29 10:44:52 UTC (rev 338) @@ -51,13 +51,18 @@ static File basedir; static File testdir; + public static final String UTF_8 = "utf-8"; + @BeforeClass public static void initClass() throws Exception { basedir = getBasedir(); testdir = getFile(basedir, "target", "test-classes", "org", "nuiton", "processor", "result"); - testdir.mkdirs(); + boolean b = testdir.exists() || testdir.mkdirs(); + if (!b) { + throw new IOException("Could not create directory : "+testdir); + } } @Test @@ -68,8 +73,8 @@ "processor", "LicenseProcessorTest.java2"); File out = getFile(testdir, in.getName()); LicenseProcessor processor = new LicenseProcessor("my license"); - processor.process(in, out); - String content = readAsString(out, "utf-8"); + processor.process(in, out, UTF_8); + String content = readAsString(out, UTF_8); if (log.isDebugEnabled()) { log.debug("output : " + out); log.debug(content); @@ -85,8 +90,8 @@ "processor", "LicenseProcessorTest_1.java2"); File out = new File(testdir, in.getName()); LicenseProcessor processor = new LicenseProcessor("my license"); - processor.process(in, out); - String content = readAsString(out, "utf-8"); + processor.process(in, out,UTF_8); + String content = readAsString(out, UTF_8); if (log.isDebugEnabled()) { log.debug("output : " + out); log.debug(content); @@ -106,7 +111,7 @@ Assert.assertTrue("generated file " + f + " was not found...", f.exists() ); - String content = readAsString(f, "utf-8"); + String content = readAsString(f, UTF_8); String errorMessage = required ? "could not find the pattern : " : Modified: trunk/nuiton-processor/src/test/java/org/nuiton/processor/filters/StringFilterTest.java =================================================================== --- trunk/nuiton-processor/src/test/java/org/nuiton/processor/filters/StringFilterTest.java 2010-06-27 06:56:40 UTC (rev 337) +++ trunk/nuiton-processor/src/test/java/org/nuiton/processor/filters/StringFilterTest.java 2010-06-29 10:44:52 UTC (rev 338) @@ -25,18 +25,18 @@ package org.nuiton.processor.filters; -import org.nuiton.processor.*; -import java.io.File; -import java.io.IOException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.BeforeClass; import org.junit.Test; +import org.nuiton.processor.CommonTest; +import org.nuiton.processor.Processor; +import org.nuiton.processor.ProcessorUtil; -/** - * - * @author fdesbois - */ +import java.io.File; +import java.io.IOException; + +/** @author fdesbois */ public class StringFilterTest extends CommonTest { static private final Log log = LogFactory.getLog(StringFilterTest.class); @@ -53,28 +53,31 @@ File out = getFile(testdir, fileName); Processor processor = new Processor(); processor.setInputFilter(new GeneratorTemplatesFilter()); - String content = process(processor, in, out); + String encoding = ProcessorUtil.DEFAULT_ENCODING; + String content = process(processor, in, out, encoding); if (log.isDebugEnabled()) { log.debug("output : " + out); log.debug(content); } - + checkPattern("+\" int i = 0;\\n\"", true, out, encoding); fileName = "StringFilterTest_1.java2"; in = StringFilterTest.class.getResource(fileName).getFile(); out = getFile(testdir, fileName); - content = process(processor, in, out); + content = process(processor, in, out, encoding); if (log.isDebugEnabled()) { log.debug("output : " + out); log.debug(content); } - //checkPattern("+\" int i = 0;\n\"", true, out); + + checkPattern("troulala;", true, out, encoding); } protected String process(Processor processor, String in, - File out) throws IOException { - ProcessorUtil.doProcess(processor,new File(in),out); - String content = readAsString(out, "utf-8"); + File out, + String encoding) throws IOException { + ProcessorUtil.doProcess(processor, new File(in), out, encoding); + String content = readAsString(out, encoding); return content; } } Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2010-06-27 06:56:40 UTC (rev 337) +++ trunk/pom.xml 2010-06-29 10:44:52 UTC (rev 338) @@ -33,7 +33,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>mavenpom4redmine</artifactId> - <version>2.2.1</version> + <version>2.2.2-SNAPSHOT</version> </parent> <artifactId>processor</artifactId>
participants (1)
-
tchemit@users.nuiton.org