• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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