]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatProviderICU.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / classes / localespi / src / com / ibm / icu / impl / javaspi / text / DateFormatProviderICU.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.DateFormat;\r
10 import java.text.spi.DateFormatProvider;\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.SimpleDateFormatICU;\r
15 \r
16 public class DateFormatProviderICU extends DateFormatProvider {\r
17 \r
18     private static final int NONE = -1;\r
19 \r
20     @Override\r
21     public DateFormat getDateInstance(int style, Locale locale) {\r
22         return getInstance(style, NONE, locale);\r
23     }\r
24 \r
25     @Override\r
26     public DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale locale) {\r
27         return getInstance(dateStyle, timeStyle, locale);\r
28     }\r
29 \r
30     @Override\r
31     public DateFormat getTimeInstance(int style, Locale locale) {\r
32         return getInstance(NONE, style, locale);\r
33     }\r
34 \r
35     @Override\r
36     public Locale[] getAvailableLocales() {\r
37         return ICULocaleServiceProvider.getAvailableLocales();\r
38     }\r
39 \r
40     private DateFormat getInstance(int dstyle, int tstyle, Locale locale) {\r
41         com.ibm.icu.text.DateFormat icuDfmt;\r
42         Locale actual = ICULocaleServiceProvider.canonicalize(locale);\r
43         if (dstyle == NONE) {\r
44             icuDfmt = com.ibm.icu.text.DateFormat.getTimeInstance(tstyle, actual);\r
45         } else if (tstyle == NONE) {\r
46             icuDfmt = com.ibm.icu.text.DateFormat.getDateInstance(dstyle, actual);\r
47         } else {\r
48             icuDfmt = com.ibm.icu.text.DateFormat.getDateTimeInstance(dstyle, tstyle, actual);\r
49         }\r
50         if (!(icuDfmt instanceof com.ibm.icu.text.SimpleDateFormat)) {\r
51             // icuDfmt must be always SimpleDateFormat\r
52             return null;\r
53         }\r
54 \r
55         com.ibm.icu.text.DecimalFormatSymbols decfs = ICULocaleServiceProvider.getDecimalFormatSymbolsForLocale(actual);\r
56         if (decfs != null) {\r
57             com.ibm.icu.text.NumberFormat icuNfmt = icuDfmt.getNumberFormat();\r
58             if (icuNfmt instanceof com.ibm.icu.text.DecimalFormat) {\r
59                 ((com.ibm.icu.text.DecimalFormat)icuNfmt).setDecimalFormatSymbols(decfs);\r
60             } else if (icuNfmt instanceof com.ibm.icu.impl.DateNumberFormat) {\r
61                 ((com.ibm.icu.impl.DateNumberFormat)icuNfmt).setZeroDigit(decfs.getDigit());\r
62             }\r
63             icuDfmt.setNumberFormat(icuNfmt);\r
64         }\r
65 \r
66         return SimpleDateFormatICU.wrap((com.ibm.icu.text.SimpleDateFormat)icuDfmt);\r
67     }\r
68 }\r