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