make/tools/src/build/tools/cldrconverter/ResourceBundleGenerator.java

Print this page

        

*** 26,43 **** package build.tools.cldrconverter; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Map; import java.util.SortedSet; class ResourceBundleGenerator implements BundleGenerator { - @Override public void generateBundle(String packageName, String baseName, String localeID, boolean useJava, ! Map<String, ?> map, boolean open) throws IOException { String suffix = useJava ? ".java" : ".properties"; String lang = CLDRConverter.getLanguageCode(localeID); String dirName = CLDRConverter.DESTINATION_DIR + File.separator + "sun" + File.separator + packageName + File.separator + "resources" + File.separator + "cldr"; if (lang.length() > 0) { --- 26,45 ---- package build.tools.cldrconverter; import java.io.File; import java.io.IOException; import java.io.PrintWriter; + import java.util.Formatter; + import java.util.HashSet; import java.util.Map; + import java.util.Set; import java.util.SortedSet; class ResourceBundleGenerator implements BundleGenerator { @Override public void generateBundle(String packageName, String baseName, String localeID, boolean useJava, ! Map<String, ?> map, BundleType type) throws IOException { String suffix = useJava ? ".java" : ".properties"; String lang = CLDRConverter.getLanguageCode(localeID); String dirName = CLDRConverter.DESTINATION_DIR + File.separator + "sun" + File.separator + packageName + File.separator + "resources" + File.separator + "cldr"; if (lang.length() > 0) {
*** 65,99 **** } } else { encoding = "iso-8859-1"; } try (PrintWriter out = new PrintWriter(file, encoding)) { // Output copyright headers out.println(CopyrightHeaders.getOpenJDKCopyright()); out.println(CopyrightHeaders.getUnicodeCopyright()); if (useJava) { out.println("package sun." + packageName + ";\n"); ! if (open) { ! out.println("import sun.util.resources.OpenListResourceBundle;\n"); ! out.println("public class " + baseName + ("root".equals(localeID) ? "" : "_" + localeID) + " extends OpenListResourceBundle {"); ! } else { ! out.println("import java.util.ListResourceBundle;\n"); ! out.println("public class " + baseName + ("root".equals(localeID) ? "" : "_" + localeID) + " extends ListResourceBundle {"); ! } out.println(" @Override\n" + ! " protected final Object[][] getContents() {\n" + ! " final Object[][] data = new Object[][] {"); } for (String key : map.keySet()) { if (useJava) { Object value = map.get(key); if (value == null) { CLDRConverter.warning("null value for " + key); } else if (value instanceof String) { ! out.println(" { \"" + key + "\", \"" + CLDRConverter.saveConvert((String) value, useJava) + "\" },"); } else if (value instanceof String[]) { String[] values = (String[]) value; out.println(" { \"" + key + "\",\n new String[] {"); for (String s : values) { out.println(" \"" + CLDRConverter.saveConvert(s, useJava) + "\","); --- 67,126 ---- } } else { encoding = "iso-8859-1"; } + Formatter fmt = null; + if (type == BundleType.TIMEZONE) { + fmt = new Formatter(); + Set<String> metaKeys = new HashSet<>(); + for (String key : map.keySet()) { + if (key.startsWith(CLDRConverter.METAZONE_ID_PREFIX)) { + String meta = key.substring(CLDRConverter.METAZONE_ID_PREFIX.length()); + String[] value; + value = (String[]) map.get(key); + fmt.format(" final String[] %s = new String[] {\n", meta); + for (String s : value) { + fmt.format(" \"%s\",\n", CLDRConverter.saveConvert(s, useJava)); + } + fmt.format(" };\n"); + metaKeys.add(key); + } + } + for (String key : metaKeys) { + map.remove(key); + } + } + try (PrintWriter out = new PrintWriter(file, encoding)) { // Output copyright headers out.println(CopyrightHeaders.getOpenJDKCopyright()); out.println(CopyrightHeaders.getUnicodeCopyright()); if (useJava) { out.println("package sun." + packageName + ";\n"); ! out.printf("import %s;\n\n", type.getPathName()); ! out.printf("public class %s%s extends %s {\n", baseName, "root".equals(localeID) ? "" : "_" + localeID, type.getClassName()); ! out.println(" @Override\n" + ! " protected final Object[][] getContents() {"); ! if (fmt != null) { ! out.print(fmt.toString()); ! } ! out.println(" final Object[][] data = new Object[][] {"); } for (String key : map.keySet()) { if (useJava) { Object value = map.get(key); if (value == null) { CLDRConverter.warning("null value for " + key); } else if (value instanceof String) { ! if (type == BundleType.TIMEZONE) { ! out.printf(" { \"%s\", %s },\n", key, CLDRConverter.saveConvert((String) value, useJava)); ! } else { ! out.printf(" { \"%s\", \"%s\" },\n", key, CLDRConverter.saveConvert((String) value, useJava)); ! } } else if (value instanceof String[]) { String[] values = (String[]) value; out.println(" { \"" + key + "\",\n new String[] {"); for (String s : values) { out.println(" \"" + CLDRConverter.saveConvert(s, useJava) + "\",");