]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-52_1/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptIDModuleWriter.java
Clean up imports.
[Dictionary.git] / jars / icu4j-52_1 / tools / misc / src / com / ibm / icu / dev / tool / layout / ScriptIDModuleWriter.java
1 /*
2  *******************************************************************************
3  * Copyright (C) 1998-2008, International Business Machines Corporation and    *
4  * others. All Rights Reserved.                                                *
5  *******************************************************************************
6  */
7 package com.ibm.icu.dev.tool.layout;
8
9 import java.util.Date;
10
11 import com.ibm.icu.text.MessageFormat;
12 import com.ibm.icu.util.VersionInfo;
13
14 public class ScriptIDModuleWriter extends ScriptModuleWriter
15 {
16     public ScriptIDModuleWriter(ScriptData scriptData, LanguageData languageData)
17     {
18         super(scriptData, languageData);
19     }
20
21     public void writeScriptHeader(String fileName)
22     {
23         int minScript = scriptData.getMinValue();
24         int maxScript = scriptData.getMaxValue();
25         int verMajor  = VersionInfo.ICU_VERSION.getMajor();
26         int verMinor  = VersionInfo.ICU_VERSION.getMinor();
27         
28         openFile(fileName);
29         writeHeader("__LESCRIPTS_H", includeFiles, scriptBrief);
30         
31         totalScript = maxScript;
32         what = "script";
33         readFile(ScriptAndLanguages, what);
34         String checkICUVersion, previousVersion;
35         int previousMajor, previousMinor, arrayListIndex=0, numberOfScripts;
36         boolean initialheader = false;
37         boolean newScripts = false;
38         
39         if(totalScript>previousTotalScripts){
40             newScripts = true;
41         }
42         //Processing old scripts
43         MessageFormat format = new MessageFormat(scriptPreamble); 
44         for(int script=minScript;script<=previousTotalScripts;){
45              checkICUVersion = (String)scriptVersionNumber.get(arrayListIndex);
46              checkICUVersion = checkICUVersion.substring(checkICUVersion.indexOf("_")+1);
47              previousVersion = checkICUVersion.substring(0, checkICUVersion.indexOf("="));
48              previousMajor = Integer.parseInt(previousVersion.substring(0,previousVersion.indexOf(".")));
49              previousMinor = Integer.parseInt(previousVersion.substring(previousVersion.indexOf(".")+1));
50              numberOfScripts = Integer.parseInt(checkICUVersion.substring(checkICUVersion.indexOf("=")+1));
51              
52              Object args[] = {new Integer(previousMajor), new Integer(previousMinor)};
53              //Check for the initial header. It should be written only one time
54              if(!initialheader){
55                  output.println(format.format(args));
56                  initialheader = true;
57              }else{
58                  if((verMajor-previousMajor)>=1){
59                      format = new MessageFormat(scriptPreambleStable); 
60                      output.println(format.format(args));
61                  }else{
62                      format = new MessageFormat(scriptPreambleDraft); 
63                      output.println(format.format(args));
64                  }
65              }
66              
67              for(int i=0;i<numberOfScripts;i++){
68                  output.print("    ");
69                  output.print(scriptData.getTagLabel(script));
70                  output.print("ScriptCode = ");
71                  
72                  if (script < 10) {
73                      output.print(" ");
74                  }
75                  
76                  output.print(script);
77                  output.println(",");
78                  script++;
79              }
80              arrayListIndex++;
81         }
82         
83         if(newScripts){//Processing newly added scripts
84             format = new MessageFormat(scriptPreambleDraft); 
85             Object args[] = {new Integer(verMajor), new Integer(verMinor)};
86             output.println(format.format(args));
87             
88             for (int script = previousTotalScripts+1; script <= totalScript; script += 1) {
89                 output.print("    ");
90                 output.print(scriptData.getTagLabel(script));
91                 output.print("ScriptCode = ");
92                 
93                 if (script < 10) {
94                     output.print(" ");
95                 }
96                 
97                 output.print(script);
98                 output.println(",");
99             }
100         }
101         output.println();
102         output.print("    scriptCodeCount = ");
103         output.println(maxScript - minScript + 1);
104         output.println(postamble);
105         
106         writeTrailer();
107         closeFile();
108         
109     }
110     
111     public void writeLanguageHeader(String fileName)
112     {
113         int minLanguage = languageData.getMinValue();
114         int maxLanguage = languageData.getMaxValue();
115         int verMajor    = VersionInfo.ICU_VERSION.getMajor();
116         int verMinor    = VersionInfo.ICU_VERSION.getMinor();
117         
118         openFile(fileName);
119         writeHeader("__LELANGUAGES_H", includeFiles, languageBrief);
120
121         totalLanguage = maxLanguage;
122         what = "languages";
123         readFile(ScriptAndLanguages, what);
124         String checkICUVersion, previousVersion;
125         int previousMajor, previousMinor, arrayListIndex=0, numberOfLanguages;
126         boolean initialheader = false;
127         boolean newLanguage = false;
128         
129         if(totalLanguage>previousTotalLanguages){
130             newLanguage = true;
131         }
132         //Processing old languages
133         MessageFormat format = new MessageFormat(languagePreamble); 
134         for(int language=minLanguage;language<=previousTotalLanguages;){
135              checkICUVersion = (String)languageVersionNumber.get(arrayListIndex);
136              checkICUVersion = checkICUVersion.substring(checkICUVersion.indexOf("_")+1);
137              previousVersion = checkICUVersion.substring(0, checkICUVersion.indexOf("="));
138              previousMajor = Integer.parseInt(previousVersion.substring(0,previousVersion.indexOf(".")));
139              previousMinor = Integer.parseInt(previousVersion.substring(previousVersion.indexOf(".")+1));
140              numberOfLanguages = Integer.parseInt(checkICUVersion.substring(checkICUVersion.indexOf("=")+1));
141              
142              Object args[] = {new Integer(previousMajor), new Integer(previousMinor)};
143             
144              //Check for the initial header. It should be written only one time
145              if(!initialheader){
146                  output.println(format.format(args));
147                  initialheader = true;
148              }else{
149                  if((verMajor-previousMajor)>=1){
150                      format = new MessageFormat(languagePreambleStable); 
151                      output.println(format.format(args));
152                  }else{
153                      format = new MessageFormat(languagePreambleDraft); 
154                      output.println(format.format(args));
155                  }
156              }
157              
158              for(int i=0;i<numberOfLanguages;i++){
159                  output.print("    ");
160                  output.print(languageData.getTagLabel(language).toLowerCase());
161                  output.print("LanguageCode = ");
162                  
163                  if (language < 10) {
164                      output.print(" ");
165                  }
166                  
167                  output.print(language);
168                  output.println(",");
169                  language++;
170              }
171              arrayListIndex++;
172         }
173         if(newLanguage){
174             //Processing newly added languages
175             format = new MessageFormat(languagePreambleDraft); 
176             Object args[] = {new Integer(verMajor), new Integer(verMinor)};
177             output.println(format.format(args));
178             
179             for (int langauge = previousTotalLanguages+1; langauge <= totalLanguage; langauge += 1) {
180                 output.print("    ");
181                 output.print(languageData.getTagLabel(langauge).toLowerCase());
182                 output.print("ScriptCode = ");
183                 
184                 if (langauge < 10) {
185                     output.print(" ");
186                 }
187                 
188                 output.print(langauge);
189                 output.println(",");
190             }  
191         }
192         output.println();
193         output.print("    languageCodeCount = ");
194         output.println(maxLanguage - minLanguage + 1);
195         
196         output.println(postamble);
197         
198         writeTrailer();
199         closeFile();
200     }
201     
202     private static final String[] includeFiles = {"LETypes.h"};
203     
204     private static final String scriptPreamble = 
205     "/**\n" +
206     " * Constants for Unicode script values, generated using\n" +
207     " * ICU4J''s <code>UScript</code> class.\n" +
208     " *\n" +
209     " * @stable ICU {0}.{1}\n" +
210     " */\n" +
211     "\n" +
212     "enum ScriptCodes '{'";
213     
214     private static final String scriptBrief =
215     "/**\n" +
216     " * \\file\n" + 
217     " * \\brief C++ API: Constants for Unicode script values\n" +
218     " */\n" +
219     "\n";
220
221     
222     private static final String languagePreamble = 
223     "/**\n" +
224     " * A provisional list of language codes. For now,\n" +
225     " * this is just a list of languages which the LayoutEngine\n" +
226     " * supports.\n" +
227     " *\n" +
228     " * @stable ICU {0}.{1}\n" +
229     " */\n" +
230     "\n" +
231     "enum LanguageCodes '{'";
232     
233     private static final String languageBrief =
234         "/**\n" +
235         " * \\file\n" + 
236         " * \\brief C++ API: List of language codes for LayoutEngine\n" +
237         " */\n" +
238         "\n";
239
240     private static final String postamble =
241     "};\n";
242     
243     private static final String ScriptAndLanguages = "ScriptAndLanguages";
244     private static String ICUVersion = "ICU Version="+VersionInfo.ICU_VERSION.getMajor()+"."+VersionInfo.ICU_VERSION.getMinor();
245     private static int totalScript;
246     private static int totalLanguage;
247     private static String what;
248     
249     public void updateScriptAndLanguages(){
250         openScriptAndLanguages(ScriptAndLanguages);
251         MessageFormat format = new MessageFormat(moduleHeader);
252         Object args[] = {new Date(System.currentTimeMillis())};
253
254         System.out.print("Updating file "+ScriptAndLanguages);
255         
256         updateFile.print(format.format(args));
257         updateFile.println(ICUVersion);
258         updateFile.println("Total Script="+totalScript);
259         updateFile.println("Total Language="+totalLanguage);
260         updateFile.println("Scripts={");
261         for(int i=0;i<scriptVersionNumber.size();i++){
262             updateFile.println(scriptVersionNumber.get(i));
263         }
264         if(totalScript>previousTotalScripts){
265             updateFile.println("         ICU_"+VersionInfo.ICU_VERSION.getMajor()+"."+VersionInfo.ICU_VERSION.getMinor()+"="+(totalScript-previousTotalScripts));
266             
267         }
268         updateFile.println("        }");
269         updateFile.println("Languages={");
270         for(int i=0;i<languageVersionNumber.size();i++){
271             updateFile.println(languageVersionNumber.get(i));
272         }
273         if(totalLanguage>previousTotalLanguages){
274             updateFile.println("           ICU_"+VersionInfo.ICU_VERSION.getMajor()+"."+VersionInfo.ICU_VERSION.getMinor()+"="+(totalLanguage-previousTotalLanguages));
275         }
276         updateFile.println("          }");
277         scriptVersionNumber.clear();
278         languageVersionNumber.clear();
279         updateFile.close();
280         
281         System.out.println("Done");
282     }
283     
284     private static final String scriptPreambleDraft = 
285         "/**\n" +
286         " * @draft ICU {0}.{1}\n" +
287         " */\n";// +
288         
289     private static final String scriptPreambleStable = 
290         "/**\n" +
291         " * @stable ICU {0}.{1}\n" +
292         " */\n";// +
293         
294     private static final String languagePreambleDraft = 
295         "/**\n" +
296         " * @draft ICU {0}.{1}\n" +
297         " */\n";// +
298         
299     private static final String languagePreambleStable = 
300         "/**\n" +
301         " * @stable ICU {0}.{1}\n" +
302         " */\n";// +
303         
304 }