Index: lutinprocessor/src/java/org/codelutin/processor/I18nExtractor.java diff -u lutinprocessor/src/java/org/codelutin/processor/I18nExtractor.java:1.1 lutinprocessor/src/java/org/codelutin/processor/I18nExtractor.java:1.2 --- lutinprocessor/src/java/org/codelutin/processor/I18nExtractor.java:1.1 Mon Aug 16 20:47:12 2004 +++ lutinprocessor/src/java/org/codelutin/processor/I18nExtractor.java Tue Dec 7 17:16:59 2004 @@ -23,19 +23,22 @@ * Created: Aug 16, 2004 * * @author Cédric Pineau - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ * - * Last update : $Date: 2004/08/16 20:47:12 $ + * Last update : $Date: 2004/12/07 17:16:59 $ * by : $Author: pineau $ */ package org.codelutin.processor; import java.io.BufferedWriter; -import java.io.FileReader; -import java.io.FileWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStreamReader; import java.io.LineNumberReader; +import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; @@ -53,63 +56,65 @@ protected HashMap i18nStringsMap = new HashMap(); - public void extract(String[] srcFileNames, String outputFileName) throws IOException { - PrintWriter output = new PrintWriter(new BufferedWriter(new FileWriter(outputFileName))); - for (int i = 0; i < srcFileNames.length; i++) { - processFile(srcFileNames[i]); + public void extract(File[] srcFiles, File outputFile) throws IOException { + PrintWriter writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile), "UTF-8"))); + for (int i = 0; i < srcFiles.length; i++) { + processFile(srcFiles[i]); } for (Iterator iter = i18nStringsMap.keySet().iterator(); iter.hasNext();) { String i18nString = (String) iter.next(); List locations = (List) i18nStringsMap.get(i18nString); for (Iterator iterator = locations.iterator(); iterator.hasNext();) { String location = (String) iterator.next(); - output.println("# "+location); + writer.println("# "+location); } - output.println(i18nString+"="); + writer.println(i18nString+"="); } - output.close(); + writer.close(); } - protected void processFile(String srcFileName) throws IOException { - LineNumberReader lnr = new LineNumberReader(new FileReader(srcFileName)); + protected void processFile(File srcFile) throws IOException { + LineNumberReader lnr = new LineNumberReader(new InputStreamReader(new FileInputStream(srcFile), "UTF-8")); while (lnr.ready()) { String line = lnr.readLine(); int lineNumber = lnr.getLineNumber(); - processLine(line, srcFileName, lineNumber); + processLine(line, srcFile, lineNumber); } } - protected void processLine(String line, String srcFileName, int lineNumber) { + protected void processLine(String line, File srcFile, int lineNumber) { String i18nStringsSet = filter.parse(line); if (i18nStringsSet != I18nFilter.EMPTY_STRING) { // Found a set of i18n Strings, split it. String[] i18nStrings = i18nStringsSet.split("="); for (int i = 0; i < i18nStrings.length; i++) { String i18nString = i18nStrings[i]; + List locations = (List) i18nStringsMap.get(i18nString); if (locations == null) { locations = new ArrayList(); i18nStringsMap.put(i18nString, locations); } - locations.add(srcFileName+"("+lineNumber+")"); + locations.add(srcFile.getPath()+"("+lineNumber+")"); } } } public static void main(String[] args) { if(args.length < 2) { - System.out.println("Give sources and destination file"); + System.out.println("Please give at least sources and destination file"); System.exit(0); } else if (args.length > 2) { - String[] sources = new String[args.length-1]; + File[] sources = new File[args.length-1]; for (int i = 0; i < args.length-1; i++) { - sources[i] = args[i]; + sources[i] =new File(args[i]); } - String destination = args[args.length-1]; + File destination = new File(args[args.length-1]); try { new I18nExtractor().extract(sources, destination); } catch (IOException eee) { java.util.logging.Logger.getLogger("org.codelutin.processor.I18nExtractor.").severe("Error during i18n extraction : "+eee); + System.out.println("!!! "+eee); // TODO remove this } }