1
2
3
4 package org.rcfaces.core.internal.tools;
5
6 import java.text.DecimalFormat;
7 import java.text.DecimalFormatSymbols;
8 import java.text.NumberFormat;
9 import java.util.Collections;
10 import java.util.HashMap;
11 import java.util.Locale;
12 import java.util.Map;
13
14 import org.rcfaces.core.internal.Constants;
15 import org.rcfaces.core.internal.renderkit.IComponentRenderContext;
16
17
18
19
20
21
22 public class NumberTools {
23 private static final String REVISION = "$Revision: 1.3 $";
24
25 private static final Map decimalFormatSymbolsByLocale;
26 static {
27 if (Constants.CACHED_LOCALE_FORMATS) {
28 decimalFormatSymbolsByLocale = new HashMap(32);
29 }
30 }
31
32 public static String getDefaultNumberFormatPattern(Locale locale) {
33 return LocaleTools.getDefaultPattern(locale, LocaleTools.NUMBER_TYPE);
34 }
35
36 public static String getDefaultIntegerFormatPattern(Locale locale) {
37 return LocaleTools.getDefaultPattern(locale, LocaleTools.INTEGER_TYPE);
38 }
39
40 public static String getDefaultPercentFormatPattern(Locale locale) {
41 return LocaleTools.getDefaultPattern(locale, LocaleTools.PERCENT_TYPE);
42 }
43
44 public static String getDefaultCurrencyFormatPattern(Locale locale) {
45 return LocaleTools.getDefaultPattern(locale, LocaleTools.CURRENCY_TYPE);
46 }
47
48 public static String normalizeNumberFormat(
49 IComponentRenderContext componentRenderContext, String format) {
50 return LocaleTools.normalizeFormat(componentRenderContext, format,
51 LocaleTools.NUMBER_TYPE, Collections.EMPTY_MAP);
52 }
53
54 public static DecimalFormatSymbols getDefaultDecimalFormatSymbols() {
55 return getDecimalFormatSymbols(Locale.ENGLISH);
56 }
57
58 public static DecimalFormatSymbols getDecimalFormatSymbols(Locale locale) {
59 if (Constants.CACHED_LOCALE_FORMATS == false) {
60 NumberFormat decimalFormat = NumberFormat.getInstance(locale);
61
62 if ((decimalFormat instanceof DecimalFormat) == false) {
63 decimalFormat = NumberFormat.getInstance(Locale.ENGLISH);
64 }
65
66 return ((DecimalFormat) decimalFormat).getDecimalFormatSymbols();
67 }
68
69 DecimalFormatSymbols symbols;
70 synchronized (decimalFormatSymbolsByLocale) {
71 symbols = (DecimalFormatSymbols) decimalFormatSymbolsByLocale
72 .get(locale);
73
74 if (symbols != null) {
75 return symbols;
76 }
77
78 NumberFormat decimalFormat = NumberFormat.getInstance(locale);
79
80 if ((decimalFormat instanceof DecimalFormat) == false) {
81 decimalFormat = NumberFormat.getInstance(Locale.ENGLISH);
82 }
83
84 symbols = ((DecimalFormat) decimalFormat).getDecimalFormatSymbols();
85
86 decimalFormatSymbolsByLocale.put(locale, symbols);
87 }
88
89 return symbols;
90 }
91
92 }