/* */ package com.ibm.icu.impl;
/* */
/* */ import com.ibm.icu.text.PluralRules;
/* */ import com.ibm.icu.util.ULocale;
/* */ import com.ibm.icu.util.UResourceBundle;
/* */ import java.text.ParseException;
/* */ import java.util.Collections;
/* */ import java.util.HashMap;
/* */ import java.util.Iterator;
/* */ import java.util.Map;
/* */ import java.util.MissingResourceException;
/* */ import java.util.Set;
/* */ import java.util.TreeMap;
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public class PluralRulesLoader
/* */ {
/* */ private final Map<String, PluralRules> rulesIdToRules;
/* */ private Map<String, String> localeIdToRulesId;
/* */ private Map<String, ULocale> rulesIdToEquivalentULocale;
/* */
/* */ private PluralRulesLoader()
/* */ {
/* 38 */ this.rulesIdToRules = new HashMap();
/* */ }
/* */
/* */
/* */
/* */ public ULocale[] getAvailableULocales()
/* */ {
/* 45 */ Set<String> keys = getLocaleIdToRulesIdMap().keySet();
/* 46 */ ULocale[] locales = new ULocale[keys.size()];
/* 47 */ int n = 0;
/* 48 */ for (Iterator<String> iter = keys.iterator(); iter.hasNext();) {
/* 49 */ locales[(n++)] = ULocale.createCanonical((String)iter.next());
/* */ }
/* 51 */ return locales;
/* */ }
/* */
/* */
/* */
/* */ public ULocale getFunctionalEquivalent(ULocale locale, boolean[] isAvailable)
/* */ {
/* 58 */ if ((isAvailable != null) && (isAvailable.length > 0)) {
/* 59 */ String localeId = ULocale.canonicalize(locale.getBaseName());
/* 60 */ Map<String, String> idMap = getLocaleIdToRulesIdMap();
/* 61 */ isAvailable[0] = idMap.containsKey(localeId);
/* */ }
/* */
/* 64 */ String rulesId = getRulesIdForLocale(locale);
/* 65 */ if ((rulesId == null) || (rulesId.trim().length() == 0)) {
/* 66 */ return ULocale.ROOT;
/* */ }
/* */
/* 69 */ ULocale result = (ULocale)getRulesIdToEquivalentULocaleMap().get(rulesId);
/* */
/* 71 */ if (result == null) {
/* 72 */ return ULocale.ROOT;
/* */ }
/* */
/* 75 */ return result;
/* */ }
/* */
/* */
/* */
/* */ private Map<String, String> getLocaleIdToRulesIdMap()
/* */ {
/* 82 */ checkBuildRulesIdMaps();
/* 83 */ return this.localeIdToRulesId;
/* */ }
/* */
/* */
/* */
/* */ private Map<String, ULocale> getRulesIdToEquivalentULocaleMap()
/* */ {
/* 90 */ checkBuildRulesIdMaps();
/* 91 */ return this.rulesIdToEquivalentULocale;
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */ private void checkBuildRulesIdMaps()
/* */ {
/* 100 */ if (this.localeIdToRulesId == null) {
/* */ try {
/* 102 */ UResourceBundle pluralb = getPluralBundle();
/* 103 */ UResourceBundle localeb = pluralb.get("locales");
/* 104 */ this.localeIdToRulesId = new TreeMap();
/* */
/* */
/* */
/* 108 */ this.rulesIdToEquivalentULocale = new HashMap();
/* */
/* 110 */ for (int i = 0; i < localeb.getSize(); i++) {
/* 111 */ UResourceBundle b = localeb.get(i);
/* 112 */ String id = b.getKey();
/* 113 */ String value = b.getString().intern();
/* 114 */ this.localeIdToRulesId.put(id, value);
/* */
/* 116 */ if (!this.rulesIdToEquivalentULocale.containsKey(value)) {
/* 117 */ this.rulesIdToEquivalentULocale.put(value, new ULocale(id));
/* */ }
/* */ }
/* */ } catch (MissingResourceException e) {
/* 121 */ this.localeIdToRulesId = Collections.emptyMap();
/* */
/* */
/* 124 */ this.rulesIdToEquivalentULocale = Collections.emptyMap();
/* */ }
/* */ }
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */ public String getRulesIdForLocale(ULocale locale)
/* */ {
/* 135 */ Map<String, String> idMap = getLocaleIdToRulesIdMap();
/* 136 */ String localeId = ULocale.canonicalize(locale.getBaseName());
/* 137 */ String rulesId = null;
/* 138 */ while (null == (rulesId = (String)idMap.get(localeId))) {
/* 139 */ int ix = localeId.lastIndexOf("_");
/* 140 */ if (ix == -1) {
/* */ break;
/* */ }
/* 143 */ localeId = localeId.substring(0, ix);
/* */ }
/* 145 */ return rulesId;
/* */ }
/* */
/* */
/* */
/* */
/* */ public PluralRules getRulesForRulesId(String rulesId)
/* */ {
/* 153 */ PluralRules rules = (PluralRules)this.rulesIdToRules.get(rulesId);
/* 154 */ if (rules == null) {
/* */ try {
/* 156 */ UResourceBundle pluralb = getPluralBundle();
/* 157 */ UResourceBundle rulesb = pluralb.get("rules");
/* 158 */ UResourceBundle setb = rulesb.get(rulesId);
/* */
/* 160 */ StringBuilder sb = new StringBuilder();
/* 161 */ for (int i = 0; i < setb.getSize(); i++) {
/* 162 */ UResourceBundle b = setb.get(i);
/* 163 */ if (i > 0) {
/* 164 */ sb.append("; ");
/* */ }
/* 166 */ sb.append(b.getKey());
/* 167 */ sb.append(": ");
/* 168 */ sb.append(b.getString());
/* */ }
/* 170 */ rules = PluralRules.parseDescription(sb.toString());
/* */ }
/* */ catch (ParseException e) {}catch (MissingResourceException e) {}
/* */
/* 174 */ this.rulesIdToRules.put(rulesId, rules);
/* */ }
/* 176 */ return rules;
/* */ }
/* */
/* */
/* */
/* */ public UResourceBundle getPluralBundle()
/* */ throws MissingResourceException
/* */ {
/* 184 */ return ICUResourceBundle.getBundleInstance("com/ibm/icu/impl/data/icudt48b", "plurals", ICUResourceBundle.ICU_DATA_CLASS_LOADER, true);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public PluralRules forLocale(ULocale locale)
/* */ {
/* 194 */ String rulesId = getRulesIdForLocale(locale);
/* 195 */ if ((rulesId == null) || (rulesId.trim().length() == 0)) {
/* 196 */ return PluralRules.DEFAULT;
/* */ }
/* 198 */ PluralRules rules = getRulesForRulesId(rulesId);
/* 199 */ if (rules == null) {
/* 200 */ rules = PluralRules.DEFAULT;
/* */ }
/* 202 */ return rules;
/* */ }
/* */
/* */
/* */
/* */
/* 208 */ public static final PluralRulesLoader loader = new PluralRulesLoader();
/* */ }
/* Location: C:\Users\Ethan\Desktop\FontZip\FontTool\sfnttool.jar!\com\ibm\icu\impl\PluralRulesLoader.class
* Java compiler version: 5 (49.0)
* JD-Core Version: 0.7.1
*/