/*
* $Id: FileLocalizer.java,v 1.3 2006/04/09 12:13:13 laddi Exp $
*
* Copyright (C) 2001 Idega hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf.
* Use is subject to license terms.
*
*/
package com.idega.util;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Properties;
import java.util.StringTokenizer;
import org.apache.commons.io.IOUtils;
/**
* A class to find getLocalizedString method in source file and save keys and
* values to file in a propiate way
*/
public class FileLocalizer {
public static String stringToFind = "getLocalizedString(";
public static void main(String[] args) {
if (args.length != 2) {
System.err.println("Wimp. I need two parameters, input file og directory and output file");
System.err.println("Usage java FileLocalizer input output");
return;
}
File in = null;
BufferedWriter out = null;
Properties props = new Properties();
try {
in = new File(args[0]);
}
catch (Exception e) {
System.err.println("Auli. Error : " + e.toString());
return;
}
try {
out = new BufferedWriter(new FileWriter(args[1]));
}
catch (java.io.IOException e) {
System.err.println("Auli. Error : " + e.toString());
return;
}
try {
findRecursive(in, props);
props.list(new PrintWriter(out));
}
catch (Exception e) {
System.err.println("Error reading or writing file : " + e.toString());
}
try {
out.close();
}
catch (java.io.IOException e) {
System.err.println("Error closing files : " + e.toString());
}
}
public static void findRecursive(File fileToRead, Properties props) {
if (fileToRead.isDirectory()) {
int index = fileToRead.getName().toUpperCase().indexOf("CVS");
File[] F = fileToRead.listFiles();
if (index == -1) {
for (int i = 0; i < F.length; i++) {
findRecursive(F[i], props);
}
}
}
else if (fileToRead.isFile()) {
int index = fileToRead.getName().toUpperCase().indexOf(".JAVA");
if (index != -1) {
readFile(fileToRead, props);
}
}
else {
return;
}
}
public static void readFile(File fileToRead, Properties props) {
BufferedReader in = null;
try {
if (fileToRead.isFile()) {
in = new BufferedReader(new FileReader(fileToRead));
String input = in.readLine();
StringTokenizer st;
String a, b;
while (input != null) {
int index = input.indexOf(stringToFind);
if (index > -1) {
int i1 = input.indexOf("(", index);
int i2 = input.indexOf(")", index);
if (i2 > -1) {
a = input.substring(i1 + 2, i2 - 1);
b = "";
st = new StringTokenizer(a, "\",");
if (st.hasMoreTokens()) {
a = st.nextToken();
if (st.hasMoreTokens()) {
b = st.nextToken();
}
if (!props.containsKey(a)) {
props.setProperty(a, b);
// System.err.println(a+"="+b);
}
}
}
}
input = in.readLine();
}// while ends
}
else {
return;
}
}
catch (Exception ex) {
ex.printStackTrace();
}
finally {
IOUtils.closeQuietly(in);
}
}
}