• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.unicode.cldr.tool;
2 
3 import static org.unicode.cldr.util.PathUtilities.getNormalizedPathString;
4 
5 import java.io.BufferedReader;
6 import java.io.File;
7 import java.io.IOException;
8 import java.io.PrintWriter;
9 
10 import org.unicode.cldr.draft.FileUtilities;
11 import org.unicode.cldr.util.CLDRPaths;
12 import org.unicode.cldr.util.CldrUtility;
13 import org.unicode.cldr.util.CldrUtility.LineComparer;
14 import org.unicode.cldr.util.FileReaders;
15 
16 /**
17  * Utilities for CLDR tools.
18  * Not used in Survey Tool.
19  * Moved here from CldrUtilities
20  * @author srl
21  *
22  */
23 public class ToolUtilities {
24 
registerExtraTransliterators()25     public static void registerExtraTransliterators() {
26         // NOTE: UTIL_DATA_DIR is required here only because TransliteratorUtilities
27         // requires a file path.
28 //        String tzadir = CLDRPaths.UTIL_DATA_DIR + File.separatorChar; // work around bad pattern (dir+filename)
29 //        // HACK around lack of Armenian, Ethiopic
30 //        TransliteratorUtilities.registerTransliteratorFromFile(tzadir, "Latin-Armenian");
31 //        // TransliteratorUtilities.registerTransliteratorFromFile(tzadir, "Latin-Ethiopic");
32 //        TransliteratorUtilities.registerTransliteratorFromFile(tzadir, "Cyrillic-Latin");
33 //        TransliteratorUtilities.registerTransliteratorFromFile(tzadir, "Arabic-Latin");
34 //        // needed
35 //        TransliteratorUtilities.registerTransliteratorFromFile(tzadir, "Thaana-Latin");
36 //        TransliteratorUtilities.registerTransliteratorFromFile(tzadir, "Syriac-Latin");
37 //        TransliteratorUtilities.registerTransliteratorFromFile(tzadir, "Canadian_Aboriginal-Latin");
38 //        TransliteratorUtilities.registerTransliteratorFromFile(tzadir, "Georgian-Latin");
39 //
40 //        // do nothing, too complicated to do quickly
41 //        TransliteratorUtilities.registerTransliteratorFromFile(tzadir, "Tibetan-Latin"); // needed
42 //        TransliteratorUtilities.registerTransliteratorFromFile(tzadir, "Khmer-Latin"); // needed
43 //        TransliteratorUtilities.registerTransliteratorFromFile(tzadir, "Lao-Latin");
44     }
45 
generateBat(String sourceDir, String sourceFile, String targetDir, String targetFile)46     static public void generateBat(String sourceDir, String sourceFile, String targetDir, String targetFile) {
47         generateBat(sourceDir, sourceFile, targetDir, targetFile, new CldrUtility.SimpleLineComparator(0));
48     }
49 
generateBat(String sourceDir, String sourceFile, String targetDir, String targetFile, LineComparer lineComparer)50     static public void generateBat(String sourceDir, String sourceFile, String targetDir, String targetFile,
51         LineComparer lineComparer) {
52         try {
53             String batDir = targetDir + "diff" + File.separator;
54             String batName = targetFile + ".bat";
55             String[] failureLines = new String[2];
56 
57             String fullSource = sourceDir + File.separator + sourceFile;
58             String fullTarget = targetDir + File.separator + targetFile;
59 
60             if (!new File(sourceDir, sourceFile).exists()) {
61                 File f = new File(batDir, batName);
62                 if (f.exists()) {
63                     if (DEBUG_SHOW_BAT) System.out.println("*Deleting old " + getNormalizedPathString(f));
64                     f.delete();
65                 }
66             } else if (!CldrUtility.areFileIdentical(fullSource, fullTarget, failureLines, lineComparer)) {
67                 PrintWriter bat = FileUtilities.openUTF8Writer(batDir, batName);
68                 try {
69                     bat.println(CLDRPaths.COMPARE_PROGRAM + " " +
70                             getNormalizedPathString(fullSource) + " " + getNormalizedPathString(fullTarget));
71                 } finally {
72                     bat.close();
73                 }
74             } else {
75                 File f = new File(batDir, batName);
76                 if (f.exists()) {
77                     if (DEBUG_SHOW_BAT) System.out.println("*Deleting old:\t" + getNormalizedPathString(f));
78                     f.delete();
79                 }
80                 f = new File(fullTarget);
81                 if (FileUtilities.SHOW_FILES) System.out.println("*Deleting old:\t" + getNormalizedPathString(f));
82                 f.delete();
83             }
84         } catch (IOException e) {
85             // TODO Auto-generated catch block
86             e.printStackTrace();
87         }
88     }
89 
90     /**
91      * Fetch data from jar
92      *
93      * @param name
94      *            a name residing in the org/unicode/cldr/tool/ directory, or loading from a jar will break.
95      */
getUTF8Data(String name)96     public static BufferedReader getUTF8Data(String name) {
97         if (new File(name).isAbsolute()) {
98             throw new IllegalArgumentException(
99                 "Path must be relative to org/unicode/cldr/tool  such as 'file.txt' or 'casing/file.txt', but got '"
100                     + name + "'.");
101         }
102 
103         return FileReaders.openFile(ToolUtilities.class, name);
104     }
105 
106     static final boolean DEBUG_SHOW_BAT = false;
107 
108 }
109