1 /* GENERATED SOURCE. DO NOT MODIFY. */ 2 // © 2016 and later: Unicode, Inc. and others. 3 // License & terms of use: http://www.unicode.org/copyright.html#License 4 /* 5 ******************************************************************************* 6 * Copyright (C) 2009-2016, International Business Machines Corporation and 7 * others. All Rights Reserved. 8 ******************************************************************************* 9 */ 10 package ohos.global.icu.impl; 11 12 import java.util.Collections; 13 import java.util.Map; 14 15 import ohos.global.icu.text.CurrencyDisplayNames; 16 import ohos.global.icu.text.DecimalFormatSymbols; 17 import ohos.global.icu.util.ULocale; 18 19 /** 20 * @hide exposed on OHOS 21 */ 22 public class CurrencyData { 23 public static final CurrencyDisplayInfoProvider provider; 24 CurrencyData()25 private CurrencyData() {} 26 27 /** 28 * @hide exposed on OHOS 29 */ 30 public static interface CurrencyDisplayInfoProvider { getInstance(ULocale locale, boolean withFallback)31 CurrencyDisplayInfo getInstance(ULocale locale, boolean withFallback); hasData()32 boolean hasData(); 33 } 34 35 /** 36 * @hide exposed on OHOS 37 */ 38 public static abstract class CurrencyDisplayInfo extends CurrencyDisplayNames { getUnitPatterns()39 public abstract Map<String, String> getUnitPatterns(); getFormatInfo(String isoCode)40 public abstract CurrencyFormatInfo getFormatInfo(String isoCode); getSpacingInfo()41 public abstract CurrencySpacingInfo getSpacingInfo(); 42 } 43 44 /** 45 * @hide exposed on OHOS 46 */ 47 public static final class CurrencyFormatInfo { 48 public final String isoCode; 49 public final String currencyPattern; 50 public final String monetaryDecimalSeparator; 51 public final String monetaryGroupingSeparator; 52 CurrencyFormatInfo(String isoCode, String currencyPattern, String monetarySeparator, String monetaryGroupingSeparator)53 public CurrencyFormatInfo(String isoCode, String currencyPattern, String monetarySeparator, 54 String monetaryGroupingSeparator) { 55 this.isoCode = isoCode; 56 this.currencyPattern = currencyPattern; 57 this.monetaryDecimalSeparator = monetarySeparator; 58 this.monetaryGroupingSeparator = monetaryGroupingSeparator; 59 } 60 } 61 62 /** 63 * @hide exposed on OHOS 64 */ 65 public static final class CurrencySpacingInfo { 66 private final String[][] symbols = new String[SpacingType.COUNT.ordinal()][SpacingPattern.COUNT.ordinal()]; 67 68 public boolean hasBeforeCurrency = false; 69 public boolean hasAfterCurrency = false; 70 71 /** 72 * @hide exposed on OHOS 73 */ 74 public static enum SpacingType { BEFORE, AFTER, COUNT }; 75 /** 76 * @hide exposed on OHOS 77 */ 78 public static enum SpacingPattern { 79 CURRENCY_MATCH(DecimalFormatSymbols.CURRENCY_SPC_CURRENCY_MATCH), 80 SURROUNDING_MATCH(DecimalFormatSymbols.CURRENCY_SPC_SURROUNDING_MATCH), 81 INSERT_BETWEEN(DecimalFormatSymbols.CURRENCY_SPC_INSERT), 82 COUNT; 83 SpacingPattern()84 SpacingPattern() {} SpacingPattern(int value)85 SpacingPattern(int value) { assert value == ordinal(); } 86 }; 87 CurrencySpacingInfo()88 public CurrencySpacingInfo() {} 89 CurrencySpacingInfo(String... strings)90 public CurrencySpacingInfo(String... strings) { 91 assert strings.length == 6; 92 93 int k = 0; 94 for (int i=0; i<SpacingType.COUNT.ordinal(); i++) { 95 for (int j=0; j<SpacingPattern.COUNT.ordinal(); j++) { 96 symbols[i][j] = strings[k]; 97 k++; 98 } 99 } 100 } 101 setSymbolIfNull(SpacingType type, SpacingPattern pattern, String value)102 public void setSymbolIfNull(SpacingType type, SpacingPattern pattern, String value) { 103 int i = type.ordinal(); 104 int j = pattern.ordinal(); 105 if (symbols[i][j] == null) { 106 symbols[i][j] = value; 107 } 108 } 109 getBeforeSymbols()110 public String[] getBeforeSymbols() { 111 return symbols[SpacingType.BEFORE.ordinal()]; 112 } 113 getAfterSymbols()114 public String[] getAfterSymbols() { 115 return symbols[SpacingType.AFTER.ordinal()]; 116 } 117 118 private static final String DEFAULT_CUR_MATCH = "[:letter:]"; 119 private static final String DEFAULT_CTX_MATCH = "[:digit:]"; 120 private static final String DEFAULT_INSERT = " "; 121 122 public static final CurrencySpacingInfo DEFAULT = new CurrencySpacingInfo( 123 DEFAULT_CUR_MATCH, DEFAULT_CTX_MATCH, DEFAULT_INSERT, 124 DEFAULT_CUR_MATCH, DEFAULT_CTX_MATCH, DEFAULT_INSERT); 125 } 126 127 static { 128 CurrencyDisplayInfoProvider temp = null; 129 try { 130 Class<?> clzz = Class.forName("ohos.global.icu.impl.ICUCurrencyDisplayInfoProvider"); 131 temp = (CurrencyDisplayInfoProvider) clzz.newInstance(); 132 } catch (Throwable t) { 133 temp = new CurrencyDisplayInfoProvider() { 134 @Override 135 public CurrencyDisplayInfo getInstance(ULocale locale, boolean withFallback) { 136 return DefaultInfo.getWithFallback(withFallback); 137 } 138 139 @Override 140 public boolean hasData() { 141 return false; 142 } 143 }; 144 } 145 provider = temp; 146 } 147 148 /** 149 * @hide exposed on OHOS 150 */ 151 public static class DefaultInfo extends CurrencyDisplayInfo { 152 private final boolean fallback; 153 DefaultInfo(boolean fallback)154 private DefaultInfo(boolean fallback) { 155 this.fallback = fallback; 156 } 157 getWithFallback(boolean fallback)158 public static final CurrencyDisplayInfo getWithFallback(boolean fallback) { 159 return fallback ? FALLBACK_INSTANCE : NO_FALLBACK_INSTANCE; 160 } 161 162 @Override getName(String isoCode)163 public String getName(String isoCode) { 164 return fallback ? isoCode : null; 165 } 166 167 @Override getPluralName(String isoCode, String pluralType)168 public String getPluralName(String isoCode, String pluralType) { 169 return fallback ? isoCode : null; 170 } 171 172 @Override getSymbol(String isoCode)173 public String getSymbol(String isoCode) { 174 return fallback ? isoCode : null; 175 } 176 177 @Override getNarrowSymbol(String isoCode)178 public String getNarrowSymbol(String isoCode) { 179 return fallback ? isoCode : null; 180 } 181 182 @Override getFormalSymbol(String isoCode)183 public String getFormalSymbol(String isoCode) { 184 return fallback ? isoCode : null; 185 } 186 187 @Override getVariantSymbol(String isoCode)188 public String getVariantSymbol(String isoCode) { 189 return fallback ? isoCode : null; 190 } 191 192 @Override symbolMap()193 public Map<String, String> symbolMap() { 194 return Collections.emptyMap(); 195 } 196 197 @Override nameMap()198 public Map<String, String> nameMap() { 199 return Collections.emptyMap(); 200 } 201 202 @Override getULocale()203 public ULocale getULocale() { 204 return ULocale.ROOT; 205 } 206 207 @Override getUnitPatterns()208 public Map<String, String> getUnitPatterns() { 209 if (fallback) { 210 return Collections.emptyMap(); 211 } 212 return null; 213 } 214 215 @Override getFormatInfo(String isoCode)216 public CurrencyFormatInfo getFormatInfo(String isoCode) { 217 return null; 218 } 219 220 @Override getSpacingInfo()221 public CurrencySpacingInfo getSpacingInfo() { 222 return fallback ? CurrencySpacingInfo.DEFAULT : null; 223 } 224 225 private static final CurrencyDisplayInfo FALLBACK_INSTANCE = new DefaultInfo(true); 226 private static final CurrencyDisplayInfo NO_FALLBACK_INSTANCE = new DefaultInfo(false); 227 } 228 } 229