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;
}
}
}