src/share/classes/sun/util/locale/provider/CalendarDataUtility.java

Print this page

        

*** 23,35 **** --- 23,38 ---- * questions. */ package sun.util.locale.provider; + import java.util.Calendar; + import static java.util.Calendar.*; import java.util.Locale; import java.util.Map; import java.util.spi.CalendarDataProvider; + import java.util.spi.CalendarNameProvider; /** * {@code CalendarDataUtility} is a utility class for calling the * {@link CalendarDataProvider} methods. *
*** 42,104 **** // No instantiation private CalendarDataUtility() { } ! public static String retrieveFieldValueName(String id, int field, int value, int style, Locale locale) { LocaleServiceProviderPool pool = LocaleServiceProviderPool.getPool(CalendarDataProvider.class); return pool.getLocalizedObject(CalendarFieldValueNameGetter.INSTANCE, locale, id, field, value, style); } public static Map<String, Integer> retrieveFieldValueNames(String id, int field, int style, Locale locale) { LocaleServiceProviderPool pool = ! LocaleServiceProviderPool.getPool(CalendarDataProvider.class); return pool.getLocalizedObject(CalendarFieldValueNamesMapGetter.INSTANCE, locale, id, field, style); } /** * Obtains a localized field value string from a CalendarDataProvider * implementation. */ private static class CalendarFieldValueNameGetter ! implements LocaleServiceProviderPool.LocalizedObjectGetter<CalendarDataProvider, String> { private static final CalendarFieldValueNameGetter INSTANCE = new CalendarFieldValueNameGetter(); @Override ! public String getObject(CalendarDataProvider calendarDataProvider, Locale locale, String requestID, // calendarType Object... params) { assert params.length == 3; int field = (int) params[0]; int value = (int) params[1]; int style = (int) params[2]; ! return calendarDataProvider.getDisplayName(requestID, field, value, style, locale); } } /** * Obtains a localized field-value pairs from a CalendarDataProvider * implementation. */ private static class CalendarFieldValueNamesMapGetter ! implements LocaleServiceProviderPool.LocalizedObjectGetter<CalendarDataProvider, Map<String, Integer>> { private static final CalendarFieldValueNamesMapGetter INSTANCE = new CalendarFieldValueNamesMapGetter(); @Override ! public Map<String, Integer> getObject(CalendarDataProvider calendarDataProvider, Locale locale, String requestID, // calendarType Object... params) { assert params.length == 2; int field = (int) params[0]; int style = (int) params[1]; ! return calendarDataProvider.getDisplayNames(requestID, field, style, locale); } } } --- 45,150 ---- // No instantiation private CalendarDataUtility() { } ! public static int retrieveFirstDayOfWeek(Locale locale) { ! LocaleServiceProviderPool pool = ! LocaleServiceProviderPool.getPool(CalendarDataProvider.class); ! Integer value = pool.getLocalizedObject(CalendarWeekParameterGetter.INSTANCE, ! locale, FIRST_DAY_OF_WEEK); ! return (value != null && (value >= SUNDAY && value <= SATURDAY)) ? value : SUNDAY; ! } ! ! public static int retrieveMinimalDaysInFirstWeek(Locale locale) { LocaleServiceProviderPool pool = LocaleServiceProviderPool.getPool(CalendarDataProvider.class); + Integer value = pool.getLocalizedObject(CalendarWeekParameterGetter.INSTANCE, + locale, MINIMAL_DAYS_IN_FIRST_WEEK); + return (value != null && (value >= 1 && value <= 7)) ? value : 1; + } + + public static String retrieveFieldValueName(String id, int field, int value, int style, Locale locale) { + LocaleServiceProviderPool pool = + LocaleServiceProviderPool.getPool(CalendarNameProvider.class); return pool.getLocalizedObject(CalendarFieldValueNameGetter.INSTANCE, locale, id, field, value, style); } public static Map<String, Integer> retrieveFieldValueNames(String id, int field, int style, Locale locale) { LocaleServiceProviderPool pool = ! LocaleServiceProviderPool.getPool(CalendarNameProvider.class); return pool.getLocalizedObject(CalendarFieldValueNamesMapGetter.INSTANCE, locale, id, field, style); } /** * Obtains a localized field value string from a CalendarDataProvider * implementation. */ private static class CalendarFieldValueNameGetter ! implements LocaleServiceProviderPool.LocalizedObjectGetter<CalendarNameProvider, String> { private static final CalendarFieldValueNameGetter INSTANCE = new CalendarFieldValueNameGetter(); @Override ! public String getObject(CalendarNameProvider calendarNameProvider, Locale locale, String requestID, // calendarType Object... params) { assert params.length == 3; int field = (int) params[0]; int value = (int) params[1]; int style = (int) params[2]; ! return calendarNameProvider.getDisplayName(requestID, field, value, style, locale); } } /** * Obtains a localized field-value pairs from a CalendarDataProvider * implementation. */ private static class CalendarFieldValueNamesMapGetter ! implements LocaleServiceProviderPool.LocalizedObjectGetter<CalendarNameProvider, Map<String, Integer>> { private static final CalendarFieldValueNamesMapGetter INSTANCE = new CalendarFieldValueNamesMapGetter(); @Override ! public Map<String, Integer> getObject(CalendarNameProvider calendarNameProvider, Locale locale, String requestID, // calendarType Object... params) { assert params.length == 2; int field = (int) params[0]; int style = (int) params[1]; ! return calendarNameProvider.getDisplayNames(requestID, field, style, locale); ! } ! } ! ! private static class CalendarWeekParameterGetter ! implements LocaleServiceProviderPool.LocalizedObjectGetter<CalendarDataProvider, ! Integer> { ! private static final CalendarWeekParameterGetter INSTANCE = ! new CalendarWeekParameterGetter(); ! ! @Override ! public Integer getObject(CalendarDataProvider calendarDataProvider, ! Locale locale, ! String requestID, // resource key ! Object... params) { ! assert params.length == 0; ! int value; ! switch (requestID) { ! case FIRST_DAY_OF_WEEK: ! value = calendarDataProvider.getFirstDayOfWeek(locale); ! break; ! case MINIMAL_DAYS_IN_FIRST_WEEK: ! value = calendarDataProvider.getMinimalDaysInFirstWeek(locale); ! break; ! default: ! throw new InternalError("invalid requestID: " + requestID); ! } ! return (value != 0) ? value : null; } } }