jdk/make/src/classes/build/tools/charsetmapping/Main.java
changeset 29119 f680ba340556
parent 29016 f14b019bfdfa
equal deleted inserted replaced
29118:8782a8e91d4c 29119:f680ba340556
    39         int TYPE     = 2;
    39         int TYPE     = 2;
    40         int CHARSETS = 3;
    40         int CHARSETS = 3;
    41         int OS       = 4;
    41         int OS       = 4;
    42         int TEMPLATE = 5;
    42         int TEMPLATE = 5;
    43         int EXT_SRC  = 6;
    43         int EXT_SRC  = 6;
       
    44         int COPYRIGHT_SRC  = 7;
    44 
    45 
    45         if (args.length < 3 ) {
    46         if (args.length < 3 ) {
    46             System.out.println("Usage: java -jar charsetmapping.jar src dst spiType charsets os [template]");
    47             System.out.println("Usage: java -jar charsetmapping.jar src dst spiType charsets os [template]");
    47             System.exit(1);
    48             System.exit(1);
    48         }
    49         }
    52             LinkedHashMap<String, Charset> charsets = getCharsets(
    53             LinkedHashMap<String, Charset> charsets = getCharsets(
    53                 new File(args[SRC_DIR], args[CHARSETS]));
    54                 new File(args[SRC_DIR], args[CHARSETS]));
    54             String[] osStdcs = getOSStdCSList(new File(args[SRC_DIR], args[OS]));
    55             String[] osStdcs = getOSStdCSList(new File(args[SRC_DIR], args[OS]));
    55             boolean hasBig5_HKSCS = false;
    56             boolean hasBig5_HKSCS = false;
    56             boolean hasMS950_HKSCS_XP = false;
    57             boolean hasMS950_HKSCS_XP = false;
       
    58             boolean hasEUC_TW = false;
    57             for (String name : osStdcs) {
    59             for (String name : osStdcs) {
    58                 Charset cs = charsets.get(name);
    60                 Charset cs = charsets.get(name);
    59                 if (cs != null) {
    61                 if (cs != null) {
    60                     cs.pkgName = "sun.nio.cs";
    62                     cs.pkgName = "sun.nio.cs";
    61                 }
    63                 }
    62                 if (name.equals("Big5_HKSCS")) {
    64                 if (name.equals("Big5_HKSCS")) {
    63                     hasBig5_HKSCS = true;
    65                     hasBig5_HKSCS = true;
    64                 } else if (name.equals("MS950_HKSCS_XP")) {
    66                 } else if (name.equals("MS950_HKSCS_XP")) {
    65                     hasMS950_HKSCS_XP = true;
    67                     hasMS950_HKSCS_XP = true;
       
    68                 } else if (name.equals("EUC_TW")) {
       
    69                     hasEUC_TW = true;
    66                 }
    70                 }
    67             }
    71             }
    68             for (Charset cs : charsets.values()) {
    72             for (Charset cs : charsets.values()) {
    69                 if (isStandard && cs.pkgName.equals("sun.nio.cs.ext") ||
    73                 if (isStandard && cs.pkgName.equals("sun.nio.cs.ext") ||
    70                     isExtended && cs.pkgName.equals("sun.nio.cs")) {
    74                     isExtended && cs.pkgName.equals("sun.nio.cs")) {
    87                                   cs, args[SRC_DIR], args[DST_DIR],
    91                                   cs, args[SRC_DIR], args[DST_DIR],
    88                                   "DoubleByte-X.java.template");
    92                                   "DoubleByte-X.java.template");
    89                 }
    93                 }
    90             }
    94             }
    91             // provider StandardCharsets.java / ExtendedCharsets.java
    95             // provider StandardCharsets.java / ExtendedCharsets.java
    92             SPI.genClass(args[TYPE], charsets, args[SRC_DIR], args[DST_DIR], args[TEMPLATE]);
    96             SPI.genClass(args[TYPE], charsets,
       
    97                          args[SRC_DIR], args[DST_DIR],
       
    98                          args[TEMPLATE],
       
    99                          args[OS].endsWith("windows") ? "windows" : "unix");
    93 
   100 
    94             // HKSCSMapping2008/XP.java goes together with Big5/MS950XP_HKSCS
   101             // HKSCSMapping2008/XP.java goes together with Big5/MS950XP_HKSCS
    95             if (isStandard && hasBig5_HKSCS || isExtended && !hasBig5_HKSCS) {
   102             if (isStandard && hasBig5_HKSCS || isExtended && !hasBig5_HKSCS) {
    96                 HKSCS.genClass2008(args[SRC_DIR], args[DST_DIR],
   103                 HKSCS.genClass2008(args[SRC_DIR], args[DST_DIR],
    97                                    isStandard ? "sun.nio.cs" : "sun.nio.cs.ext");
   104                                    isStandard ? "sun.nio.cs" : "sun.nio.cs.ext",
       
   105                                    new File(args[COPYRIGHT_SRC], "HKSCS.java"));
    98             }
   106             }
    99             if (isStandard && hasMS950_HKSCS_XP || isExtended && !hasMS950_HKSCS_XP) {
   107             if (isStandard && hasMS950_HKSCS_XP || isExtended && !hasMS950_HKSCS_XP) {
   100                 HKSCS.genClassXP(args[SRC_DIR], args[DST_DIR],
   108                 HKSCS.genClassXP(args[SRC_DIR], args[DST_DIR],
   101                                  isStandard ? "sun.nio.cs" : "sun.nio.cs.ext");
   109                                  isStandard ? "sun.nio.cs" : "sun.nio.cs.ext",
   102             }
   110                                  new File(args[COPYRIGHT_SRC], "HKSCS.java"));
   103         } else if ("euctw".equals(args[TYPE])) {
   111             }
   104             EUC_TW.genClass(args);
   112             if (isStandard && hasEUC_TW) {
       
   113                 EUC_TW.genClass("sun.nio.cs", args);
       
   114             }
       
   115             if (!isStandard && !hasEUC_TW) {
       
   116                 EUC_TW.genClass("sun.nio.cs.ext", args);
       
   117             }
   105         } else if ("sjis0213".equals(args[TYPE])) {
   118         } else if ("sjis0213".equals(args[TYPE])) {
   106             JIS0213.genClass(args);
   119             JIS0213.genClass(args);
   107         } else if ("hkscs".equals(args[TYPE])) {
   120         } else if ("hkscs".equals(args[TYPE])) {
   108             HKSCS.genClass2001(args);
   121             HKSCS.genClass2001(args);
   109         }
   122         }
   155                         cs.pkgName = tokens[2];
   168                         cs.pkgName = tokens[2];
   156                         break;
   169                         break;
   157                     case "type":
   170                     case "type":
   158                         cs.type = tokens[2];
   171                         cs.type = tokens[2];
   159                         break;
   172                         break;
       
   173                     case "os":
       
   174                         cs.os = tokens[2];
       
   175                         break;
   160                     case "hisname":
   176                     case "hisname":
   161                         cs.hisName = tokens[2];
   177                         cs.hisName = tokens[2];
   162                         break;
   178                         break;
   163                     case "ascii":
   179                     case "ascii":
   164                         cs.isASCII = Boolean.parseBoolean(tokens[2]);
   180                         cs.isASCII = Boolean.parseBoolean(tokens[2]);