src/share/classes/sun/util/locale/provider/CalendarDataUtility.java
Print this page
@@ -64,21 +64,47 @@
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, normalizeCalendarType(id),
- field, value, style);
+ field, value, style, false);
+ }
+
+ public static String retrieveCldrFieldValueName(String id, int field, int value, int style, Locale locale) {
+ LocaleServiceProviderPool pool =
+ LocaleServiceProviderPool.getPool(CalendarNameProvider.class);
+ String name;
+ name = pool.getLocalizedObject(CalendarFieldValueNameGetter.INSTANCE, locale, normalizeCalendarType(id),
+ field, value, style, true);
+ if (name == null) {
+ name = pool.getLocalizedObject(CalendarFieldValueNameGetter.INSTANCE, locale, normalizeCalendarType(id),
+ field, value, style, false);
+ }
+ return name;
}
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,
- normalizeCalendarType(id), field, style);
+ normalizeCalendarType(id), field, style, false);
+ }
+
+ public static Map<String, Integer> retrieveCldrFieldValueNames(String id, int field, int style, Locale locale) {
+ LocaleServiceProviderPool pool =
+ LocaleServiceProviderPool.getPool(CalendarNameProvider.class);
+ Map<String, Integer> map;
+ map = pool.getLocalizedObject(CalendarFieldValueNamesMapGetter.INSTANCE, locale,
+ normalizeCalendarType(id), field, style, true);
+ if (map == null) {
+ map = pool.getLocalizedObject(CalendarFieldValueNamesMapGetter.INSTANCE, locale,
+ normalizeCalendarType(id), field, style, false);
+ }
+ return map;
}
- private static String normalizeCalendarType(String requestID) {
+ static String normalizeCalendarType(String requestID) {
String type;
if (requestID.equals("gregorian") || requestID.equals("iso8601")) {
type = "gregory";
} else if (requestID.startsWith("islamic")) {
type = "islamic";
@@ -101,14 +127,24 @@
@Override
public String getObject(CalendarNameProvider calendarNameProvider,
Locale locale,
String requestID, // calendarType
Object... params) {
- assert params.length == 3;
+ assert params.length == 4;
int field = (int) params[0];
int value = (int) params[1];
int style = (int) params[2];
+ boolean cldr = (boolean) params[3];
+
+ // If cldr is true, resources from CLDR have precedence over JRE
+ // native resources.
+ if (cldr && calendarNameProvider instanceof CalendarNameProviderImpl) {
+ String name;
+ name = ((CalendarNameProviderImpl)calendarNameProvider)
+ .getCldrDisplayName(requestID, field, value, style, locale);
+ return name;
+ }
return calendarNameProvider.getDisplayName(requestID, field, value, style, locale);
}
}
/**
@@ -124,13 +160,23 @@
@Override
public Map<String, Integer> getObject(CalendarNameProvider calendarNameProvider,
Locale locale,
String requestID, // calendarType
Object... params) {
- assert params.length == 2;
+ assert params.length == 3;
int field = (int) params[0];
int style = (int) params[1];
+ boolean cldr = (boolean) params[2];
+
+ // If cldr is true, resources from CLDR have precedence over JRE
+ // native resources.
+ if (cldr && calendarNameProvider instanceof CalendarNameProviderImpl) {
+ Map<String, Integer> map;
+ map = ((CalendarNameProviderImpl)calendarNameProvider)
+ .getCldrDisplayNames(requestID, field, style, locale);
+ return map;
+ }
return calendarNameProvider.getDisplayNames(requestID, field, style, locale);
}
}
private static class CalendarWeekParameterGetter