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

Print this page




 470                 if (!key.equals(realKey)) {
 471                     map.put(realKey, value);
 472                 }
 473             }
 474             realKeys[index] = realKey;
 475             eraNames[index++] = value;
 476         }
 477         for (int i = 0; i < eraNames.length; i++) {
 478             if (eraNames[i] == null) {
 479                 map.put(realKeys[i], null);
 480             }
 481         }
 482     }
 483 
 484     private void handleDateTimeFormatPatterns(String[] patternKeys, Map<String, Object> myMap, Map<String, Object> parentsMap,
 485                                               CalendarType calendarType, String name) {
 486         String calendarPrefix = calendarType.keyElementName();
 487         for (String k : patternKeys) {
 488             if (myMap.containsKey(calendarPrefix + k)) {
 489                 int len = patternKeys.length;
 490                 List<String> rawPatterns = new ArrayList<>();
 491                 List<String> patterns = new ArrayList<>();
 492                 for (int i = 0; i < len; i++) {
 493                     String key = calendarPrefix + patternKeys[i];
 494                     String pattern = (String) myMap.remove(key);
 495                     if (pattern == null) {
 496                         pattern = (String) parentsMap.remove(key);
 497                     }
 498                     if (pattern != null) {
 499                         rawPatterns.add(i, pattern);

 500                         patterns.add(i, translateDateFormatLetters(calendarType, pattern));


 501                     }
 502                 }

 503                 if (patterns.isEmpty()) {
 504                     return;
 505                 }





 506                 String key = calendarPrefix + name;
 507                 if (!rawPatterns.equals(patterns)) {
 508                     myMap.put("cldr." + key, rawPatterns.toArray(new String[len]));
 509                 }
 510                 myMap.put(key, patterns.toArray(new String[len]));
 511                 break;
 512             }
 513         }
 514     }
 515 
 516     private String translateDateFormatLetters(CalendarType calendarType, String cldrFormat) {
 517         String pattern = cldrFormat;
 518         int length = pattern.length();
 519         boolean inQuote = false;
 520         StringBuilder jrePattern = new StringBuilder(length);
 521         int count = 0;
 522         char lastLetter = 0;
 523 
 524         for (int i = 0; i < length; i++) {
 525             char c = pattern.charAt(i);
 526 
 527             if (c == '\'') {
 528                 // '' is treated as a single quote regardless of being




 470                 if (!key.equals(realKey)) {
 471                     map.put(realKey, value);
 472                 }
 473             }
 474             realKeys[index] = realKey;
 475             eraNames[index++] = value;
 476         }
 477         for (int i = 0; i < eraNames.length; i++) {
 478             if (eraNames[i] == null) {
 479                 map.put(realKeys[i], null);
 480             }
 481         }
 482     }
 483 
 484     private void handleDateTimeFormatPatterns(String[] patternKeys, Map<String, Object> myMap, Map<String, Object> parentsMap,
 485                                               CalendarType calendarType, String name) {
 486         String calendarPrefix = calendarType.keyElementName();
 487         for (String k : patternKeys) {
 488             if (myMap.containsKey(calendarPrefix + k)) {
 489                 int len = patternKeys.length;
 490                 List<String> rawPatterns = new ArrayList<>(len);
 491                 List<String> patterns = new ArrayList<>(len);
 492                 for (int i = 0; i < len; i++) {
 493                     String key = calendarPrefix + patternKeys[i];
 494                     String pattern = (String) myMap.remove(key);
 495                     if (pattern == null) {
 496                         pattern = (String) parentsMap.remove(key);
 497                     }

 498                     rawPatterns.add(i, pattern);
 499                     if (pattern != null) {
 500                         patterns.add(i, translateDateFormatLetters(calendarType, pattern));
 501                     } else {
 502                         patterns.add(i, null);
 503                     }
 504                 }
 505                 // If patterns is empty or has any nulls, discard patterns.
 506                 if (patterns.isEmpty()) {
 507                     return;
 508                 }
 509                 for (String p : patterns) {
 510                     if (p == null) {
 511                         return;
 512                     }
 513                 }
 514                 String key = calendarPrefix + name;
 515                 if (!rawPatterns.equals(patterns)) {
 516                     myMap.put("java.time." + key, rawPatterns.toArray(new String[len]));
 517                 }
 518                 myMap.put(key, patterns.toArray(new String[len]));
 519                 break;
 520             }
 521         }
 522     }
 523 
 524     private String translateDateFormatLetters(CalendarType calendarType, String cldrFormat) {
 525         String pattern = cldrFormat;
 526         int length = pattern.length();
 527         boolean inQuote = false;
 528         StringBuilder jrePattern = new StringBuilder(length);
 529         int count = 0;
 530         char lastLetter = 0;
 531 
 532         for (int i = 0; i < length; i++) {
 533             char c = pattern.charAt(i);
 534 
 535             if (c == '\'') {
 536                 // '' is treated as a single quote regardless of being