/*
* $Id: FileLocalizer.java,v 1.2.6.1 2007/01/12 19:31:37 idegaweb 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.*;
import java.util.*;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
/**
* 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){
try{
if(fileToRead.isFile()){
BufferedReader 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();
}
}
}