]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/NumberFormatProviderICU.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / classes / localespi / src / com / ibm / icu / impl / javaspi / text / NumberFormatProviderICU.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 2008, International Business Machines Corporation and         *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  */\r
7 package com.ibm.icu.impl.javaspi.text;\r
8 \r
9 import java.text.NumberFormat;\r
10 import java.text.spi.NumberFormatProvider;\r
11 import java.util.Locale;\r
12 \r
13 import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;\r
14 import com.ibm.icu.impl.jdkadapter.DecimalFormatICU;\r
15 import com.ibm.icu.impl.jdkadapter.NumberFormatICU;\r
16 \r
17 public class NumberFormatProviderICU extends NumberFormatProvider {\r
18 \r
19     private final int NUMBER = 0;\r
20     private final int INTEGER = 1;\r
21     private final int CURRENCY = 2;\r
22     private final int PERCENT = 3;\r
23 \r
24     @Override\r
25     public NumberFormat getCurrencyInstance(Locale locale) {\r
26         return getInstance(CURRENCY, locale);\r
27     }\r
28 \r
29     @Override\r
30     public NumberFormat getIntegerInstance(Locale locale) {\r
31         return getInstance(INTEGER, locale);\r
32     }\r
33 \r
34     @Override\r
35     public NumberFormat getNumberInstance(Locale locale) {\r
36         return getInstance(NUMBER, locale);\r
37     }\r
38 \r
39     @Override\r
40     public NumberFormat getPercentInstance(Locale locale) {\r
41         return getInstance(PERCENT, locale);\r
42     }\r
43 \r
44     @Override\r
45     public Locale[] getAvailableLocales() {\r
46         return ICULocaleServiceProvider.getAvailableLocales();\r
47     }\r
48 \r
49     private NumberFormat getInstance(int type, Locale locale) {\r
50         com.ibm.icu.text.NumberFormat icuNfmt;\r
51         Locale actual = ICULocaleServiceProvider.canonicalize(locale);\r
52         switch (type) {\r
53         case NUMBER:\r
54             icuNfmt = com.ibm.icu.text.NumberFormat.getNumberInstance(actual);\r
55             break;\r
56         case INTEGER:\r
57             icuNfmt = com.ibm.icu.text.NumberFormat.getIntegerInstance(actual);\r
58             break;\r
59         case CURRENCY:\r
60             icuNfmt = com.ibm.icu.text.NumberFormat.getCurrencyInstance(actual);\r
61             break;\r
62         case PERCENT:\r
63             icuNfmt = com.ibm.icu.text.NumberFormat.getPercentInstance(actual);\r
64             break;\r
65         default:\r
66             return null;\r
67         }\r
68 \r
69         if (!(icuNfmt instanceof com.ibm.icu.text.DecimalFormat)) {\r
70             // icuNfmt must be always DecimalFormat\r
71             return null;\r
72         }\r
73 \r
74         NumberFormat nf = null;\r
75         if (ICULocaleServiceProvider.useDecimalFormat()) {\r
76             nf = DecimalFormatICU.wrap((com.ibm.icu.text.DecimalFormat)icuNfmt);\r
77         } else {\r
78             nf = NumberFormatICU.wrap(icuNfmt);\r
79         }\r
80 \r
81         com.ibm.icu.text.DecimalFormatSymbols decfs = ICULocaleServiceProvider.getDecimalFormatSymbolsForLocale(actual);\r
82         if (decfs != null) {\r
83             ((com.ibm.icu.text.DecimalFormat)icuNfmt).setDecimalFormatSymbols(decfs);\r
84         }\r
85 \r
86         return nf;\r
87     }\r
88 }\r