blob: 476e07685ea19be6ec0f8eaf94721d6bf632fa02 [file] [log] [blame]
/*
*******************************************************************************
* Copyright (C) 1998-2008, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*
* Created on Dec 3, 2003
*
*******************************************************************************
*/
package com.ibm.icu.dev.tool.layout;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Date;
import com.ibm.icu.text.MessageFormat;
public class ModuleWriter
{
private static final String BUILDER_FILE_PATH="src/com/ibm/icu/dev/tool/layout/";
public ModuleWriter()
{
wroteDefine = false;
output = null;
}
public void openFile(String outputFileName) {
try
{
output = new PrintStream(
new FileOutputStream(BUILDER_FILE_PATH+outputFileName));
} catch (IOException e) {
System.out.println("? Could not open " + outputFileName + " for writing.");
return;
}
wroteDefine = false;
System.out.println("Writing module " + outputFileName + "...");
}
public void writeHeader(String define, String[] includeFiles)
{
writeHeader(define, includeFiles, null);
}
public void writeHeader(String define, String[] includeFiles, String brief)
{
MessageFormat format = new MessageFormat(moduleHeader);
Object args[] = {new Date(System.currentTimeMillis())};
output.print(format.format(args));
if (define != null) {
wroteDefine = true;
output.print("#ifndef ");
output.println(define);
output.print("#define ");
output.println(define);
output.println();
}
if (includeFiles != null) {
for (int i = 0; i < includeFiles.length; i += 1) {
output.print("#include \"");
output.print(includeFiles[i]);
output.println("\"");
}
output.println();
}
if (brief != null) {
output.print(brief);
}
output.println(moduleBegin);
}
public void writeTrailer() {
output.print(moduleTrailer);
if (wroteDefine) {
output.println("#endif");
}
}
public void closeFile() {
System.out.println("Done.");
output.close();
}
protected boolean wroteDefine;
protected PrintStream output;
protected BufferedReader reader;
protected PrintStream updateFile;
protected int previousTotalScripts;
protected int previousTotalLanguages;
protected ArrayList scriptVersionNumber = new ArrayList();
protected ArrayList languageVersionNumber = new ArrayList();
public void openScriptAndLanguages(String name){
try
{
updateFile = new PrintStream(new FileOutputStream(BUILDER_FILE_PATH+name));
} catch (IOException e) {
System.out.println("? Could not open " + name + " for writing.");
return;
}
}
public void readFile(String file, String what){
try
{
reader = new BufferedReader(new FileReader(BUILDER_FILE_PATH+file));
String inputText = "";
String versionToAdd = "";
while((inputText=reader.readLine())!=null){
if(what.equals("script") && inputText.indexOf("Script=") >= 0){
previousTotalScripts = Integer.parseInt(inputText.substring(inputText.indexOf("=")+1));
}else if(what.equals("languages") && inputText.indexOf("Language=") >= 0){
previousTotalLanguages = Integer.parseInt(inputText.substring(inputText.indexOf("=")+1));
}else if(what.equals("script") && inputText.indexOf("Scripts={") >= 0){
while((versionToAdd=reader.readLine()).indexOf("}") == -1){
scriptVersionNumber.add(versionToAdd);
}
}else if(what.equals("languages") && inputText.indexOf("Languages={") >= 0){
while((versionToAdd=reader.readLine()).indexOf("}") == -1){
languageVersionNumber.add(versionToAdd);
}
}
}
reader.close();
} catch (IOException e) {
System.out.println("? Could not open " + file + " for reading.");
return;
}
}
protected static final String moduleHeader =
"/*\n" +
" *\n" +
" * (C) Copyright IBM Corp. 1998-{0,date,yyyy}. All Rights Reserved.\n" +
" *\n" +
" * WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS\n" +
" * YOU REALLY KNOW WHAT YOU''RE DOING.\n" +
" *\n" +
" * Generated on: {0,date,MM/dd/yyyy hh:mm:ss a z}\n" +
" */\n" +
"\n";
protected static final String moduleBegin = "U_NAMESPACE_BEGIN\n";
protected static final String moduleTrailer = "U_NAMESPACE_END\n";
}