]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/tools/misc/src/com/ibm/icu/dev/tool/layout/ModuleWriter.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / tools / misc / src / com / ibm / icu / dev / tool / layout / ModuleWriter.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 1998-2008, International Business Machines Corporation and    *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  *\r
7  * Created on Dec 3, 2003\r
8  *\r
9  *******************************************************************************\r
10  */\r
11 \r
12 package com.ibm.icu.dev.tool.layout;\r
13 \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
21 \r
22 import com.ibm.icu.text.MessageFormat;\r
23 \r
24 public class ModuleWriter\r
25 {\r
26     private static final String BUILDER_FILE_PATH="src/com/ibm/icu/dev/tool/layout/"; \r
27         \r
28     public ModuleWriter()\r
29     {\r
30         wroteDefine = false;\r
31         output = null;\r
32     }\r
33 \r
34     public void openFile(String outputFileName) {\r
35         try\r
36         {\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
41             return;\r
42         }\r
43     \r
44         wroteDefine = false;\r
45         System.out.println("Writing module " + outputFileName + "...");\r
46     }\r
47 \r
48     public void writeHeader(String define, String[] includeFiles)\r
49     {\r
50         writeHeader(define, includeFiles, null);\r
51     }\r
52     \r
53     public void writeHeader(String define, String[] includeFiles, String brief)\r
54     {\r
55         MessageFormat format = new MessageFormat(moduleHeader);\r
56         Object args[] = {new Date(System.currentTimeMillis())};\r
57 \r
58         output.print(format.format(args));\r
59         \r
60         if (define != null) {\r
61             wroteDefine = true;\r
62             output.print("#ifndef ");\r
63             output.println(define);\r
64             \r
65             output.print("#define ");\r
66             output.println(define);\r
67             \r
68             output.println();\r
69         }\r
70         \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
76             }\r
77             \r
78             output.println();\r
79         }\r
80         \r
81         if (brief != null) {\r
82             output.print(brief);\r
83         }\r
84         \r
85         output.println(moduleBegin);\r
86     }\r
87 \r
88     public void writeTrailer() {\r
89         output.print(moduleTrailer);\r
90         \r
91         if (wroteDefine) {\r
92             output.println("#endif");\r
93             \r
94         }\r
95     }\r
96 \r
97     public void closeFile() {\r
98         System.out.println("Done.");\r
99         output.close();\r
100     }\r
101 \r
102     protected boolean wroteDefine;\r
103     \r
104     protected PrintStream output;\r
105     \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
112     \r
113     public void openScriptAndLanguages(String name){\r
114         try\r
115         {\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
119             return;\r
120         }\r
121     }\r
122     \r
123     public void readFile(String file, String what){\r
124         try\r
125         {\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
137                    }\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
141                    }\r
142                }\r
143            }\r
144            reader.close();\r
145            \r
146         } catch (IOException e) {\r
147             System.out.println("? Could not open " + file + " for reading.");\r
148             return;\r
149         }\r
150     }\r
151     \r
152     \r
153     \r
154     protected static final String moduleHeader =\r
155         "/*\n" +\r
156         " *\n" +\r
157         " * (C) Copyright IBM Corp. 1998-{0,date,yyyy}. All Rights Reserved.\n" +\r
158         " *\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
161         " *\n" +\r
162         " * Generated on: {0,date,MM/dd/yyyy hh:mm:ss a z}\n" +\r
163         " */\n" +\r
164         "\n";\r
165 \r
166     protected static final String moduleBegin = "U_NAMESPACE_BEGIN\n";\r
167 \r
168     protected static final String moduleTrailer = "U_NAMESPACE_END\n";\r
169 \r
170 }\r