12ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/* GENERATED SOURCE. DO NOT MODIFY. */ 2f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// © 2016 and later: Unicode, Inc. and others. 3f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License 42ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/* 52ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller ******************************************************************************* 6f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert * Copyright (C) 2009-2016, International Business Machines Corporation and 7f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert * others. All Rights Reserved. 82ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller ******************************************************************************* 92ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerpackage android.icu.impl; 112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport java.util.Collections; 132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport java.util.Map; 142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.text.CurrencyDisplayNames; 16f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubertimport android.icu.text.DecimalFormatSymbols; 172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.util.ULocale; 182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 191537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller/** 201537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller * @hide Only a subset of ICU is exposed in Android 21836e6b40a94ec3fb7545a76cb072960442b7eee9Neil Fuller */ 222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerpublic class CurrencyData { 232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public static final CurrencyDisplayInfoProvider provider; 242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 25f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert private CurrencyData() {} 26f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public static interface CurrencyDisplayInfoProvider { 282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller CurrencyDisplayInfo getInstance(ULocale locale, boolean withFallback); 292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller boolean hasData(); 302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public static abstract class CurrencyDisplayInfo extends CurrencyDisplayNames { 332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public abstract Map<String, String> getUnitPatterns(); 342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public abstract CurrencyFormatInfo getFormatInfo(String isoCode); 352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public abstract CurrencySpacingInfo getSpacingInfo(); 3605fa7802d0874812c234a29745586677ee5837eaFredrik Roubert public abstract String getNarrowSymbol(String isoCode); 372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public static final class CurrencyFormatInfo { 4005fa7802d0874812c234a29745586677ee5837eaFredrik Roubert public final String isoCode; 412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public final String currencyPattern; 4205fa7802d0874812c234a29745586677ee5837eaFredrik Roubert public final String monetaryDecimalSeparator; 43f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert public final String monetaryGroupingSeparator; 442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 4505fa7802d0874812c234a29745586677ee5837eaFredrik Roubert public CurrencyFormatInfo(String isoCode, String currencyPattern, String monetarySeparator, 46f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert String monetaryGroupingSeparator) { 4705fa7802d0874812c234a29745586677ee5837eaFredrik Roubert this.isoCode = isoCode; 482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.currencyPattern = currencyPattern; 4905fa7802d0874812c234a29745586677ee5837eaFredrik Roubert this.monetaryDecimalSeparator = monetarySeparator; 502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.monetaryGroupingSeparator = monetaryGroupingSeparator; 512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public static final class CurrencySpacingInfo { 55f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert private final String[][] symbols = new String[SpacingType.COUNT.ordinal()][SpacingPattern.COUNT.ordinal()]; 56f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 5705fa7802d0874812c234a29745586677ee5837eaFredrik Roubert public boolean hasBeforeCurrency = false; 5805fa7802d0874812c234a29745586677ee5837eaFredrik Roubert public boolean hasAfterCurrency = false; 5905fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 60f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert public static enum SpacingType { BEFORE, AFTER, COUNT }; 61f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert public static enum SpacingPattern { 62f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert CURRENCY_MATCH(DecimalFormatSymbols.CURRENCY_SPC_CURRENCY_MATCH), 63f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert SURROUNDING_MATCH(DecimalFormatSymbols.CURRENCY_SPC_SURROUNDING_MATCH), 64f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert INSERT_BETWEEN(DecimalFormatSymbols.CURRENCY_SPC_INSERT), 65f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert COUNT; 66f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 67f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert SpacingPattern() {} 68f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert SpacingPattern(int value) { assert value == ordinal(); } 69f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert }; 70f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 71f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert public CurrencySpacingInfo() {} 72f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 73f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert public CurrencySpacingInfo(String... strings) { 74f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert assert strings.length == 6; 75f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 76f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert int k = 0; 77f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert for (int i=0; i<SpacingType.COUNT.ordinal(); i++) { 78f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert for (int j=0; j<SpacingPattern.COUNT.ordinal(); j++) { 79f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert symbols[i][j] = strings[k]; 80f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert k++; 81f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert } 82f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert } 83f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert } 84f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 85f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert public void setSymbolIfNull(SpacingType type, SpacingPattern pattern, String value) { 86f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert int i = type.ordinal(); 87f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert int j = pattern.ordinal(); 88f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert if (symbols[i][j] == null) { 89f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert symbols[i][j] = value; 90f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert } 912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 93f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert public String[] getBeforeSymbols() { 94f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert return symbols[SpacingType.BEFORE.ordinal()]; 95f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert } 96f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 97f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert public String[] getAfterSymbols() { 98f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert return symbols[SpacingType.AFTER.ordinal()]; 99f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert } 1002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller private static final String DEFAULT_CUR_MATCH = "[:letter:]"; 1022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller private static final String DEFAULT_CTX_MATCH = "[:digit:]"; 1032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller private static final String DEFAULT_INSERT = " "; 1042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public static final CurrencySpacingInfo DEFAULT = new CurrencySpacingInfo( 1062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller DEFAULT_CUR_MATCH, DEFAULT_CTX_MATCH, DEFAULT_INSERT, 1072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller DEFAULT_CUR_MATCH, DEFAULT_CTX_MATCH, DEFAULT_INSERT); 1082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller static { 1112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller CurrencyDisplayInfoProvider temp = null; 1122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller try { 1132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller Class<?> clzz = Class.forName("android.icu.impl.ICUCurrencyDisplayInfoProvider"); 1142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller temp = (CurrencyDisplayInfoProvider) clzz.newInstance(); 1152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } catch (Throwable t) { 1162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller temp = new CurrencyDisplayInfoProvider() { 117f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Override 1182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public CurrencyDisplayInfo getInstance(ULocale locale, boolean withFallback) { 1192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return DefaultInfo.getWithFallback(withFallback); 1202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 122f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Override 1232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public boolean hasData() { 1242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return false; 1252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller }; 1272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller provider = temp; 1292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public static class DefaultInfo extends CurrencyDisplayInfo { 1322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller private final boolean fallback; 1332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller private DefaultInfo(boolean fallback) { 1352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.fallback = fallback; 1362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public static final CurrencyDisplayInfo getWithFallback(boolean fallback) { 1392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return fallback ? FALLBACK_INSTANCE : NO_FALLBACK_INSTANCE; 1402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller @Override 1432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public String getName(String isoCode) { 1442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return fallback ? isoCode : null; 1452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller @Override 1482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public String getPluralName(String isoCode, String pluralType) { 1492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return fallback ? isoCode : null; 1502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller @Override 1532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public String getSymbol(String isoCode) { 1542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return fallback ? isoCode : null; 15505fa7802d0874812c234a29745586677ee5837eaFredrik Roubert } 15605fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 15705fa7802d0874812c234a29745586677ee5837eaFredrik Roubert @Override 15805fa7802d0874812c234a29745586677ee5837eaFredrik Roubert public String getNarrowSymbol(String isoCode) { 15905fa7802d0874812c234a29745586677ee5837eaFredrik Roubert return fallback ? isoCode : null; 1602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller @Override 1632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public Map<String, String> symbolMap() { 1642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return Collections.emptyMap(); 1652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller @Override 1682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public Map<String, String> nameMap() { 1692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return Collections.emptyMap(); 1702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller @Override 1732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public ULocale getULocale() { 1742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return ULocale.ROOT; 1752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller @Override 1782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public Map<String, String> getUnitPatterns() { 1792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller if (fallback) { 1802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return Collections.emptyMap(); 1812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return null; 1832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller @Override 1862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public CurrencyFormatInfo getFormatInfo(String isoCode) { 1872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return null; 1882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller @Override 1912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public CurrencySpacingInfo getSpacingInfo() { 1922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return fallback ? CurrencySpacingInfo.DEFAULT : null; 1932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller private static final CurrencyDisplayInfo FALLBACK_INSTANCE = new DefaultInfo(true); 1962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller private static final CurrencyDisplayInfo NO_FALLBACK_INSTANCE = new DefaultInfo(false); 1972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller} 199