• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html#License
3 /*
4  *******************************************************************************
5  * Copyright (C) 1998-2008, International Business Machines Corporation and    *
6  * others. All Rights Reserved.                                                *
7  *******************************************************************************
8  *
9  * Created on Dec 3, 2003
10  *
11  *******************************************************************************
12  */
13 
14 package com.ibm.icu.dev.tool.layout;
15 
16 import java.io.BufferedReader;
17 import java.io.FileOutputStream;
18 import java.io.FileReader;
19 import java.io.IOException;
20 import java.io.PrintStream;
21 import java.util.ArrayList;
22 import java.util.Date;
23 
24 import com.ibm.icu.text.MessageFormat;
25 
26 public class ModuleWriter
27 {
28     private static final String BUILDER_FILE_PATH="src/com/ibm/icu/dev/tool/layout/";
29 
ModuleWriter()30     public ModuleWriter()
31     {
32         wroteDefine = false;
33         output = null;
34     }
35 
openFile(String outputFileName)36     public void openFile(String outputFileName) {
37         try
38         {
39             output = new PrintStream(
40                 new FileOutputStream(BUILDER_FILE_PATH+outputFileName));
41         } catch (IOException e) {
42             System.out.println("? Could not open " + outputFileName + " for writing.");
43             return;
44         }
45 
46         wroteDefine = false;
47         System.out.println("Writing module " + outputFileName + "...");
48     }
49 
writeHeader(String define, String[] includeFiles)50     public void writeHeader(String define, String[] includeFiles)
51     {
52         writeHeader(define, includeFiles, null);
53     }
54 
writeHeader(String define, String[] includeFiles, String brief)55     public void writeHeader(String define, String[] includeFiles, String brief)
56     {
57         MessageFormat format = new MessageFormat(moduleHeader);
58         Object args[] = {new Date(System.currentTimeMillis())};
59 
60         output.print(format.format(args));
61 
62         if (define != null) {
63             wroteDefine = true;
64             output.print("#ifndef ");
65             output.println(define);
66 
67             output.print("#define ");
68             output.println(define);
69 
70             output.println();
71         }
72 
73         if (includeFiles != null) {
74             for (int i = 0; i < includeFiles.length; i += 1) {
75                 output.print("#include \"");
76                 output.print(includeFiles[i]);
77                 output.println("\"");
78             }
79 
80             output.println();
81         }
82 
83         if (brief != null) {
84             output.print(brief);
85         }
86 
87         output.println(moduleBegin);
88     }
89 
writeTrailer()90     public void writeTrailer() {
91         output.print(moduleTrailer);
92 
93         if (wroteDefine) {
94             output.println("#endif");
95 
96         }
97     }
98 
closeFile()99     public void closeFile() {
100         System.out.println("Done.");
101         output.close();
102     }
103 
104     protected boolean wroteDefine;
105 
106     protected PrintStream output;
107 
108     protected BufferedReader reader;
109     protected PrintStream updateFile;
110     protected int previousTotalScripts;
111     protected int previousTotalLanguages;
112     protected ArrayList scriptVersionNumber = new ArrayList();
113     protected ArrayList languageVersionNumber = new ArrayList();
114 
openScriptAndLanguages(String name)115     public void openScriptAndLanguages(String name){
116         try
117         {
118             updateFile = new PrintStream(new FileOutputStream(BUILDER_FILE_PATH+name));
119         } catch (IOException e) {
120             System.out.println("? Could not open " + name + " for writing.");
121             return;
122         }
123     }
124 
readFile(String file, String what)125     public void readFile(String file, String what){
126         try
127         {
128            reader = new BufferedReader(new FileReader(BUILDER_FILE_PATH+file));
129            String inputText = "";
130            String versionToAdd = "";
131            while((inputText=reader.readLine())!=null){
132                if(what.equals("script") && inputText.indexOf("Script=") >= 0){
133                    previousTotalScripts = Integer.parseInt(inputText.substring(inputText.indexOf("=")+1));
134                }else if(what.equals("languages") && inputText.indexOf("Language=") >= 0){
135                    previousTotalLanguages = Integer.parseInt(inputText.substring(inputText.indexOf("=")+1));
136                }else if(what.equals("script") && inputText.indexOf("Scripts={") >= 0){
137                    while((versionToAdd=reader.readLine()).indexOf("}") == -1){
138                        scriptVersionNumber.add(versionToAdd);
139                    }
140                }else if(what.equals("languages") && inputText.indexOf("Languages={") >= 0){
141                    while((versionToAdd=reader.readLine()).indexOf("}") == -1){
142                        languageVersionNumber.add(versionToAdd);
143                    }
144                }
145            }
146            reader.close();
147 
148         } catch (IOException e) {
149             System.out.println("? Could not open " + file + " for reading.");
150             return;
151         }
152     }
153 
154 
155 
156     protected static final String moduleHeader =
157         "/*\n" +
158         " *\n" +
159         " * (C) Copyright IBM Corp. 1998-{0,date,yyyy}. All Rights Reserved.\n" +
160         " *\n" +
161         " * WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS\n" +
162         " * YOU REALLY KNOW WHAT YOU''RE DOING.\n" +
163         " *\n" +
164         " * Generated on: {0,date,MM/dd/yyyy hh:mm:ss a z}\n" +
165         " */\n" +
166         "\n";
167 
168     protected static final String moduleBegin = "U_NAMESPACE_BEGIN\n";
169 
170     protected static final String moduleTrailer = "U_NAMESPACE_END\n";
171 
172 }
173