2 *******************************************************************************
\r
3 * Copyright (C) 2009-2010, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
7 package com.ibm.icu.impl;
\r
9 import java.util.Collections;
\r
10 import java.util.Map;
\r
12 import com.ibm.icu.text.CurrencyDisplayNames;
\r
13 import com.ibm.icu.util.ULocale;
\r
15 public class CurrencyData {
\r
16 public static final CurrencyDisplayInfoProvider provider;
\r
18 public static interface CurrencyDisplayInfoProvider {
\r
19 CurrencyDisplayInfo getInstance(ULocale locale, boolean withFallback);
\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
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
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
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
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
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
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
72 CurrencyDisplayInfoProvider temp = null;
\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
82 public boolean hasData() {
\r
90 public static class DefaultInfo extends CurrencyDisplayInfo {
\r
91 private final boolean fallback;
\r
93 private DefaultInfo(boolean fallback) {
\r
94 this.fallback = fallback;
\r
97 public static final CurrencyDisplayInfo getWithFallback(boolean fallback) {
\r
98 return fallback ? FALLBACK_INSTANCE : NO_FALLBACK_INSTANCE;
\r
102 public String getName(String isoCode) {
\r
103 return fallback ? isoCode : null;
\r
107 public String getPluralName(String isoCode, String pluralType) {
\r
108 return fallback ? isoCode : null;
\r
112 public String getSymbol(String isoCode) {
\r
113 return fallback ? isoCode : null;
\r
117 public Map<String, String> symbolMap() {
\r
118 return Collections.emptyMap();
\r
122 public Map<String, String> nameMap() {
\r
123 return Collections.emptyMap();
\r
127 public ULocale getLocale() {
\r
128 return ULocale.ROOT;
\r
132 public Map<String, String> getUnitPatterns() {
\r
134 return Collections.emptyMap();
\r
140 public CurrencyFormatInfo getFormatInfo(String isoCode) {
\r
145 public CurrencySpacingInfo getSpacingInfo() {
\r
146 return fallback ? CurrencySpacingInfo.DEFAULT : null;
\r
149 private static final CurrencyDisplayInfo FALLBACK_INSTANCE = new DefaultInfo(true);
\r
150 private static final CurrencyDisplayInfo NO_FALLBACK_INSTANCE = new DefaultInfo(false);
\r