1 /* 2 ******************************************************************************* 3 * Copyright (C) 2008-2012, International Business Machines Corporation and * 4 * others. All Rights Reserved. * 5 ******************************************************************************* 6 */ 7 package com.ibm.icu.impl.javaspi.text; 8 9 import java.text.DateFormat; 10 import java.text.spi.DateFormatProvider; 11 import java.util.Locale; 12 13 import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider; 14 import com.ibm.icu.impl.jdkadapter.SimpleDateFormatICU; 15 import com.ibm.icu.util.ULocale; 16 17 public class DateFormatProviderICU extends DateFormatProvider { 18 19 private static final int NONE = -1; 20 21 @Override getDateInstance(int style, Locale locale)22 public DateFormat getDateInstance(int style, Locale locale) { 23 return getInstance(style, NONE, locale); 24 } 25 26 @Override getDateTimeInstance(int dateStyle, int timeStyle, Locale locale)27 public DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale locale) { 28 return getInstance(dateStyle, timeStyle, locale); 29 } 30 31 @Override getTimeInstance(int style, Locale locale)32 public DateFormat getTimeInstance(int style, Locale locale) { 33 return getInstance(NONE, style, locale); 34 } 35 36 @Override getAvailableLocales()37 public Locale[] getAvailableLocales() { 38 return ICULocaleServiceProvider.getAvailableLocales(); 39 } 40 getInstance(int dstyle, int tstyle, Locale locale)41 private DateFormat getInstance(int dstyle, int tstyle, Locale locale) { 42 com.ibm.icu.text.DateFormat icuDfmt; 43 ULocale actual = ICULocaleServiceProvider.toULocaleNoSpecialVariant(locale); 44 if (dstyle == NONE) { 45 icuDfmt = com.ibm.icu.text.DateFormat.getTimeInstance(tstyle, actual); 46 } else if (tstyle == NONE) { 47 icuDfmt = com.ibm.icu.text.DateFormat.getDateInstance(dstyle, actual); 48 } else { 49 icuDfmt = com.ibm.icu.text.DateFormat.getDateTimeInstance(dstyle, tstyle, actual); 50 } 51 if (!(icuDfmt instanceof com.ibm.icu.text.SimpleDateFormat)) { 52 // icuDfmt must be always SimpleDateFormat 53 return null; 54 } 55 56 return SimpleDateFormatICU.wrap((com.ibm.icu.text.SimpleDateFormat)icuDfmt); 57 } 58 } 59