2 *******************************************************************************
\r
3 * Copyright (C) 1998-2008, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
7 * Created on Dec 3, 2003
\r
9 *******************************************************************************
\r
12 package com.ibm.icu.dev.tool.layout;
\r
14 import java.io.BufferedReader;
\r
15 import java.io.FileOutputStream;
\r
16 import java.io.FileReader;
\r
17 import java.io.IOException;
\r
18 import java.io.PrintStream;
\r
19 import java.util.ArrayList;
\r
20 import java.util.Date;
\r
22 import com.ibm.icu.text.MessageFormat;
\r
24 public class ModuleWriter
\r
26 private static final String BUILDER_FILE_PATH="src/com/ibm/icu/dev/tool/layout/";
\r
28 public ModuleWriter()
\r
30 wroteDefine = false;
\r
34 public void openFile(String outputFileName) {
\r
37 output = new PrintStream(
\r
38 new FileOutputStream(BUILDER_FILE_PATH+outputFileName));
\r
39 } catch (IOException e) {
\r
40 System.out.println("? Could not open " + outputFileName + " for writing.");
\r
44 wroteDefine = false;
\r
45 System.out.println("Writing module " + outputFileName + "...");
\r
48 public void writeHeader(String define, String[] includeFiles)
\r
50 writeHeader(define, includeFiles, null);
\r
53 public void writeHeader(String define, String[] includeFiles, String brief)
\r
55 MessageFormat format = new MessageFormat(moduleHeader);
\r
56 Object args[] = {new Date(System.currentTimeMillis())};
\r
58 output.print(format.format(args));
\r
60 if (define != null) {
\r
62 output.print("#ifndef ");
\r
63 output.println(define);
\r
65 output.print("#define ");
\r
66 output.println(define);
\r
71 if (includeFiles != null) {
\r
72 for (int i = 0; i < includeFiles.length; i += 1) {
\r
73 output.print("#include \"");
\r
74 output.print(includeFiles[i]);
\r
75 output.println("\"");
\r
81 if (brief != null) {
\r
82 output.print(brief);
\r
85 output.println(moduleBegin);
\r
88 public void writeTrailer() {
\r
89 output.print(moduleTrailer);
\r
92 output.println("#endif");
\r
97 public void closeFile() {
\r
98 System.out.println("Done.");
\r
102 protected boolean wroteDefine;
\r
104 protected PrintStream output;
\r
106 protected BufferedReader reader;
\r
107 protected PrintStream updateFile;
\r
108 protected int previousTotalScripts;
\r
109 protected int previousTotalLanguages;
\r
110 protected ArrayList scriptVersionNumber = new ArrayList();
\r
111 protected ArrayList languageVersionNumber = new ArrayList();
\r
113 public void openScriptAndLanguages(String name){
\r
116 updateFile = new PrintStream(new FileOutputStream(BUILDER_FILE_PATH+name));
\r
117 } catch (IOException e) {
\r
118 System.out.println("? Could not open " + name + " for writing.");
\r
123 public void readFile(String file, String what){
\r
126 reader = new BufferedReader(new FileReader(BUILDER_FILE_PATH+file));
\r
127 String inputText = "";
\r
128 String versionToAdd = "";
\r
129 while((inputText=reader.readLine())!=null){
\r
130 if(what.equals("script") && inputText.indexOf("Script=") >= 0){
\r
131 previousTotalScripts = Integer.parseInt(inputText.substring(inputText.indexOf("=")+1));
\r
132 }else if(what.equals("languages") && inputText.indexOf("Language=") >= 0){
\r
133 previousTotalLanguages = Integer.parseInt(inputText.substring(inputText.indexOf("=")+1));
\r
134 }else if(what.equals("script") && inputText.indexOf("Scripts={") >= 0){
\r
135 while((versionToAdd=reader.readLine()).indexOf("}") == -1){
\r
136 scriptVersionNumber.add(versionToAdd);
\r
138 }else if(what.equals("languages") && inputText.indexOf("Languages={") >= 0){
\r
139 while((versionToAdd=reader.readLine()).indexOf("}") == -1){
\r
140 languageVersionNumber.add(versionToAdd);
\r
146 } catch (IOException e) {
\r
147 System.out.println("? Could not open " + file + " for reading.");
\r
154 protected static final String moduleHeader =
\r
157 " * (C) Copyright IBM Corp. 1998-{0,date,yyyy}. All Rights Reserved.\n" +
\r
159 " * WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS\n" +
\r
160 " * YOU REALLY KNOW WHAT YOU''RE DOING.\n" +
\r
162 " * Generated on: {0,date,MM/dd/yyyy hh:mm:ss a z}\n" +
\r
166 protected static final String moduleBegin = "U_NAMESPACE_BEGIN\n";
\r
168 protected static final String moduleTrailer = "U_NAMESPACE_END\n";
\r