]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/classes/core/src/com/ibm/icu/impl/CurrencyData.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / classes / core / src / com / ibm / icu / impl / CurrencyData.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 2009-2010, International Business Machines Corporation and    *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  */\r
7 package com.ibm.icu.impl;\r
8 \r
9 import java.util.Collections;\r
10 import java.util.Map;\r
11 \r
12 import com.ibm.icu.text.CurrencyDisplayNames;\r
13 import com.ibm.icu.util.ULocale;\r
14 \r
15 public class CurrencyData {\r
16     public static final CurrencyDisplayInfoProvider provider;\r
17 \r
18     public static interface CurrencyDisplayInfoProvider {\r
19         CurrencyDisplayInfo getInstance(ULocale locale, boolean withFallback);\r
20         boolean hasData();\r
21     }\r
22 \r
23     public static abstract class CurrencyDisplayInfo extends CurrencyDisplayNames {\r
24         public abstract Map<String, String> getUnitPatterns();\r
25         public abstract CurrencyFormatInfo getFormatInfo(String isoCode);\r
26         public abstract CurrencySpacingInfo getSpacingInfo();\r
27     }\r
28 \r
29     public static final class CurrencyFormatInfo {\r
30         public final String currencyPattern;\r
31         public final char monetarySeparator;\r
32         public final char monetaryGroupingSeparator;\r
33 \r
34         public CurrencyFormatInfo(String currencyPattern, char monetarySeparator,\r
35                 char monetaryGroupingSeparator) {\r
36             this.currencyPattern = currencyPattern;\r
37             this.monetarySeparator = monetarySeparator;\r
38             this.monetaryGroupingSeparator = monetaryGroupingSeparator;\r
39         }\r
40     }\r
41 \r
42     public static final class CurrencySpacingInfo {\r
43         public final String beforeCurrencyMatch;\r
44         public final String beforeContextMatch;\r
45         public final String beforeInsert;\r
46         public final String afterCurrencyMatch;\r
47         public final String afterContextMatch;\r
48         public final String afterInsert;\r
49 \r
50         public CurrencySpacingInfo(\r
51                 String beforeCurrencyMatch, String beforeContextMatch, String beforeInsert,\r
52                 String afterCurrencyMatch, String afterContextMatch, String afterInsert) {\r
53             this.beforeCurrencyMatch = beforeCurrencyMatch;\r
54             this.beforeContextMatch = beforeContextMatch;\r
55             this.beforeInsert = beforeInsert;\r
56             this.afterCurrencyMatch = afterCurrencyMatch;\r
57             this.afterContextMatch = afterContextMatch;\r
58             this.afterInsert = afterInsert;\r
59         }\r
60 \r
61 \r
62         private static final String DEFAULT_CUR_MATCH = "[:letter:]";\r
63         private static final String DEFAULT_CTX_MATCH = "[:digit:]";\r
64         private static final String DEFAULT_INSERT = " ";\r
65 \r
66         public static final CurrencySpacingInfo DEFAULT = new CurrencySpacingInfo(\r
67                 DEFAULT_CUR_MATCH, DEFAULT_CTX_MATCH, DEFAULT_INSERT,\r
68                 DEFAULT_CUR_MATCH, DEFAULT_CTX_MATCH, DEFAULT_INSERT);\r
69     }\r
70 \r
71     static {\r
72         CurrencyDisplayInfoProvider temp = null;\r
73         try {\r
74             Class<?> clzz = Class.forName("com.ibm.icu.impl.ICUCurrencyDisplayInfoProvider");\r
75             temp = (CurrencyDisplayInfoProvider) clzz.newInstance();\r
76         } catch (Throwable t) {\r
77             temp = new CurrencyDisplayInfoProvider() {\r
78                 public CurrencyDisplayInfo getInstance(ULocale locale, boolean withFallback) {\r
79                     return DefaultInfo.getWithFallback(withFallback);\r
80                 }\r
81 \r
82                 public boolean hasData() {\r
83                     return false;\r
84                 }\r
85             };\r
86         }\r
87         provider = temp;\r
88     }\r
89 \r
90     public static class DefaultInfo extends CurrencyDisplayInfo {\r
91         private final boolean fallback;\r
92 \r
93         private DefaultInfo(boolean fallback) {\r
94             this.fallback = fallback;\r
95         }\r
96 \r
97         public static final CurrencyDisplayInfo getWithFallback(boolean fallback) {\r
98             return fallback ? FALLBACK_INSTANCE : NO_FALLBACK_INSTANCE;\r
99         }\r
100 \r
101         @Override\r
102         public String getName(String isoCode) {\r
103             return fallback ? isoCode : null;\r
104         }\r
105 \r
106         @Override\r
107         public String getPluralName(String isoCode, String pluralType) {\r
108             return fallback ? isoCode : null;\r
109         }\r
110 \r
111         @Override\r
112         public String getSymbol(String isoCode) {\r
113             return fallback ? isoCode : null;\r
114         }\r
115 \r
116         @Override\r
117         public Map<String, String> symbolMap() {\r
118             return Collections.emptyMap();\r
119         }\r
120 \r
121         @Override\r
122         public Map<String, String> nameMap() {\r
123             return Collections.emptyMap();\r
124         }\r
125 \r
126         @Override\r
127         public ULocale getLocale() {\r
128             return ULocale.ROOT;\r
129         }\r
130 \r
131         @Override\r
132         public Map<String, String> getUnitPatterns() {\r
133             if (fallback) {\r
134                 return Collections.emptyMap();\r
135             }\r
136             return null;\r
137         }\r
138 \r
139         @Override\r
140         public CurrencyFormatInfo getFormatInfo(String isoCode) {\r
141             return null;\r
142         }\r
143 \r
144         @Override\r
145         public CurrencySpacingInfo getSpacingInfo() {\r
146             return fallback ? CurrencySpacingInfo.DEFAULT : null;\r
147         }\r
148 \r
149         private static final CurrencyDisplayInfo FALLBACK_INSTANCE = new DefaultInfo(true);\r
150         private static final CurrencyDisplayInfo NO_FALLBACK_INSTANCE = new DefaultInfo(false);\r
151     }\r
152 }\r