make/jdk/src/classes/build/tools/generatelsrequivmaps/EquivMapsGenerator.java
author tschatzl
Fri, 22 Nov 2019 10:03:38 +0100
changeset 59219 01cc6bb2a090
parent 48373 f9152f462cbc
permissions -rw-r--r--
8233997: Some members of HeapRegion are not cleared in HeapRegion::hr_clear() Reviewed-by: sjohanss, sangheki
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46042
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
     1
/*
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
     2
 * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
     4
 *
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
48373
f9152f462cbc 8193758: Update copyright headers of files in src tree that are missing Classpath exception
alanb
parents: 47216
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
f9152f462cbc 8193758: Update copyright headers of files in src tree that are missing Classpath exception
alanb
parents: 47216
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
f9152f462cbc 8193758: Update copyright headers of files in src tree that are missing Classpath exception
alanb
parents: 47216
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
46042
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    10
 *
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    15
 * accompanied this code).
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    16
 *
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    20
 *
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    23
 * questions.
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    24
 */
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    25
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    26
package build.tools.generatelsrequivmaps;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    27
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    28
import java.io.BufferedWriter;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    29
import java.io.IOException;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    30
import java.nio.charset.Charset;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    31
import java.nio.file.Files;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    32
import java.nio.file.Paths;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    33
import java.time.ZoneId;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    34
import java.time.ZonedDateTime;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    35
import java.util.ArrayList;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    36
import java.util.List;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    37
import java.util.Locale;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    38
import java.util.Map;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    39
import java.util.TreeMap;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    40
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    41
/**
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    42
 * This tool reads the IANA Language Subtag Registry data file downloaded from
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    43
 * http://www.iana.org/assignments/language-subtag-registry, which is specified
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    44
 * in the command line and generates a .java source file as specified in
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    45
 * command line. The generated .java source file contains equivalent language
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    46
 * maps. These equivalent language maps are used by LocaleMatcher.java
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    47
 * for the locale matching mechanism specified in RFC 4647 "Matching of Language
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    48
 * Tags".
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    49
 */
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    50
public class EquivMapsGenerator {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    51
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    52
    public static void main(String[] args) throws Exception {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    53
        if (args.length != 2) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    54
            System.err.println("Usage: java EquivMapsGenerator"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    55
                    + " language-subtag-registry.txt LocaleEquivalentMaps.java");
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    56
            System.exit(1);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    57
        }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    58
        readLSRfile(args[0]);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    59
        generateEquivalentMap();
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    60
        generateSourceCode(args[1]);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    61
    }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    62
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    63
    private static String LSRrevisionDate;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    64
    private static Map<String, StringBuilder> initialLanguageMap =
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    65
        new TreeMap<>();
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    66
    private static Map<String, StringBuilder> initialRegionVariantMap =
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    67
        new TreeMap<>();
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    68
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    69
    private static Map<String, String> sortedLanguageMap1 = new TreeMap<>();
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    70
    private static Map<String, String[]> sortedLanguageMap2 = new TreeMap<>();
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    71
    private static Map<String, String> sortedRegionVariantMap =
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    72
        new TreeMap<>();
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    73
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    74
    private static void readLSRfile(String filename) throws Exception {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    75
        String type = null;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    76
        String tag = null;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    77
        String preferred = null;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    78
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    79
        for (String line : Files.readAllLines(Paths.get(filename),
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    80
                                              Charset.forName("UTF-8"))) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    81
            line = line.toLowerCase(Locale.ROOT);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    82
            int index = line.indexOf(' ')+1;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    83
            if (line.startsWith("file-date:")) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    84
                LSRrevisionDate = line.substring(index);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    85
            } else if (line.startsWith("type:")) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    86
                type = line.substring(index);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    87
            } else if (line.startsWith("tag:") || line.startsWith("subtag:")) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    88
                tag = line.substring(index);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    89
            } else if (line.startsWith("preferred-value:")
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    90
                       && !type.equals("extlang")) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    91
                preferred = line.substring(index);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    92
                processDeprecatedData(type, tag, preferred);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    93
            } else if (line.equals("%%")) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    94
                type = null;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    95
                tag = null;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    96
            }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    97
        }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    98
    }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
    99
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   100
    private static void processDeprecatedData(String type,
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   101
                                              String tag,
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   102
                                              String preferred) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   103
        StringBuilder sb;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   104
        if (type.equals("region") || type.equals("variant")) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   105
            if (!initialRegionVariantMap.containsKey(preferred)) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   106
                sb = new StringBuilder("-");
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   107
                sb.append(preferred);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   108
                sb.append(",-");
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   109
                sb.append(tag);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   110
                initialRegionVariantMap.put("-"+preferred, sb);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   111
            } else {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   112
                throw new RuntimeException("New case, need implementation."
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   113
                    + " A region/variant subtag \"" + preferred
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   114
                    + "\" is registered for more than one subtags.");
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   115
            }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   116
        } else { // language, grandfahered, and redundant
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   117
            if (!initialLanguageMap.containsKey(preferred)) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   118
                sb = new StringBuilder(preferred);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   119
                sb.append(',');
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   120
                sb.append(tag);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   121
                initialLanguageMap.put(preferred, sb);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   122
            } else {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   123
                sb = initialLanguageMap.get(preferred);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   124
                sb.append(',');
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   125
                sb.append(tag);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   126
                initialLanguageMap.put(preferred, sb);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   127
            }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   128
        }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   129
    }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   130
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   131
    private static void generateEquivalentMap() {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   132
        String[] subtags;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   133
        for (String preferred : initialLanguageMap.keySet()) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   134
            subtags = initialLanguageMap.get(preferred).toString().split(",");
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   135
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   136
            if (subtags.length == 2) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   137
                sortedLanguageMap1.put(subtags[0], subtags[1]);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   138
                sortedLanguageMap1.put(subtags[1], subtags[0]);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   139
            } else if (subtags.length > 2) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   140
                for (int i = 0; i < subtags.length; i++) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   141
                    sortedLanguageMap2.put(subtags[i], createLangArray(i, subtags));
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   142
                }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   143
            } else {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   144
                    throw new RuntimeException("New case, need implementation."
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   145
                        + " A language subtag \"" + preferred
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   146
                        + "\" is registered for more than two subtags. ");
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   147
            }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   148
        }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   149
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   150
        for (String preferred : initialRegionVariantMap.keySet()) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   151
            subtags =
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   152
                initialRegionVariantMap.get(preferred).toString().split(",");
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   153
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   154
            sortedRegionVariantMap.put(subtags[0], subtags[1]);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   155
            sortedRegionVariantMap.put(subtags[1], subtags[0]);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   156
        }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   157
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   158
    }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   159
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   160
    /* create the array of subtags excluding the subtag at index location */
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   161
    private static String[] createLangArray(int index, String[] subtags) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   162
        List<String> list = new ArrayList<>();
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   163
        for (int i = 0; i < subtags.length; i++) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   164
            if (i != index) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   165
                list.add(subtags[i]);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   166
            }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   167
        }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   168
        return list.toArray(new String[list.size()]);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   169
    }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   170
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   171
    private static String generateValuesString(String[] values) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   172
        String outputStr = "";
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   173
        for (int i = 0; i < values.length; i++) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   174
            if (i != values.length - 1) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   175
                outputStr = outputStr + "\"" + values[i] + "\", ";
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   176
            } else {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   177
                outputStr = outputStr + "\"" + values[i] + "\"";
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   178
            }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   179
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   180
        }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   181
        return outputStr;
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   182
    }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   183
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   184
    private static final String COPYRIGHT = "/*\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   185
        + " * Copyright (c) 2012, %d, Oracle and/or its affiliates. All rights reserved.\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   186
        + " * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   187
        + " *\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   188
        + " * This code is free software; you can redistribute it and/or modify it\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   189
        + " * under the terms of the GNU General Public License version 2 only, as\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   190
        + " * published by the Free Software Foundation.  Oracle designates this\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   191
        + " * particular file as subject to the \"Classpath\" exception as provided\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   192
        + " * by Oracle in the LICENSE file that accompanied this code.\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   193
        + " *\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   194
        + " * This code is distributed in the hope that it will be useful, but WITHOUT\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   195
        + " * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   196
        + " * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   197
        + " * version 2 for more details (a copy is included in the LICENSE file that\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   198
        + " * accompanied this code).\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   199
        + " *\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   200
        + " * You should have received a copy of the GNU General Public License version\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   201
        + " * 2 along with this work; if not, write to the Free Software Foundation,\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   202
        + " * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   203
        + " *\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   204
        + " * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   205
        + " * or visit www.oracle.com if you need additional information or have any\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   206
        + " * questions.\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   207
        + "*/\n\n";
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   208
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   209
    private static final String headerText =
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   210
        "package sun.util.locale;\n\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   211
        + "import java.util.HashMap;\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   212
        + "import java.util.Map;\n\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   213
        + "final class LocaleEquivalentMaps {\n\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   214
        + "    static final Map<String, String> singleEquivMap;\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   215
        + "    static final Map<String, String[]> multiEquivsMap;\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   216
        + "    static final Map<String, String> regionVariantEquivMap;\n\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   217
        + "    static {\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   218
        + "        singleEquivMap = new HashMap<>();\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   219
        + "        multiEquivsMap = new HashMap<>();\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   220
        + "        regionVariantEquivMap = new HashMap<>();\n\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   221
        + "        // This is an auto-generated file and should not be manually edited.\n";
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   222
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   223
    private static final String footerText =
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   224
        "    }\n\n"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   225
        + "}";
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   226
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   227
    private static String getOpenJDKCopyright() {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   228
        int year = ZonedDateTime.now(ZoneId
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   229
                .of("America/Los_Angeles")).getYear();
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   230
        return String.format(Locale.US, COPYRIGHT, year);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   231
    }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   232
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   233
    /**
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   234
     * The input lsr data file is in UTF-8, so theoretically for the characters
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   235
     * beyond US-ASCII, the generated Java String literals need to be Unicode
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   236
     * escaped (\\uXXXX) while writing to a file. But as of now, there is not
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   237
     * the case since we don't use "description", "comment" or alike.
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   238
     */
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   239
    private static void generateSourceCode(String fileName) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   240
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   241
        try (BufferedWriter writer = Files.newBufferedWriter(
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   242
                Paths.get(fileName))) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   243
            writer.write(getOpenJDKCopyright());
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   244
            writer.write(headerText
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   245
                + "        //   LSR Revision: " + LSRrevisionDate);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   246
            writer.newLine();
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   247
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   248
            for (String key : sortedLanguageMap1.keySet()) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   249
                String value = sortedLanguageMap1.get(key);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   250
                writer.write("        singleEquivMap.put(\""
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   251
                    + key + "\", \"" + value + "\");");
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   252
                writer.newLine();
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   253
            }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   254
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   255
            writer.newLine();
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   256
            for (String key : sortedLanguageMap2.keySet()) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   257
                String[] values = sortedLanguageMap2.get(key);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   258
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   259
                if (values.length >= 2) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   260
                    writer.write("        multiEquivsMap.put(\""
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   261
                        + key + "\", new String[] {"
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   262
                        + generateValuesString(values) + "});");
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   263
                    writer.newLine();
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   264
                }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   265
            }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   266
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   267
            writer.newLine();
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   268
            for (String key : sortedRegionVariantMap.keySet()) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   269
                String value = sortedRegionVariantMap.get(key);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   270
                writer.write("        regionVariantEquivMap.put(\""
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   271
                    + key + "\", \"" + value + "\");");
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   272
                writer.newLine();
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   273
            }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   274
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   275
            writer.write(footerText);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   276
        } catch (IOException ex) {
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   277
            ex.printStackTrace(System.err);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   278
            System.exit(1);
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   279
        }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   280
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   281
    }
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   282
a614479300d8 8177472: Remove hard-coded IANA Subtag Registry map in LocaleEquivalentMap.java
nishjain
parents:
diff changeset
   283
}