mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 23:34:52 +02:00
8187443: Forest Consolidation: Move files to unified layout
Reviewed-by: darcy, ihse
This commit is contained in:
parent
270fe13182
commit
3789983e89
56923 changed files with 3 additions and 15727 deletions
|
@ -0,0 +1,208 @@
|
|||
/*
|
||||
* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package sun.util.locale.provider;
|
||||
|
||||
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.
|
||||
*
|
||||
* @author Masayoshi Okutsu
|
||||
* @author Naoto Sato
|
||||
*/
|
||||
public class CalendarDataUtility {
|
||||
public static final String FIRST_DAY_OF_WEEK = "firstDayOfWeek";
|
||||
public static final String MINIMAL_DAYS_IN_FIRST_WEEK = "minimalDaysInFirstWeek";
|
||||
|
||||
// No instantiation
|
||||
private CalendarDataUtility() {
|
||||
}
|
||||
|
||||
public static int retrieveFirstDayOfWeek(Locale locale) {
|
||||
LocaleServiceProviderPool pool =
|
||||
LocaleServiceProviderPool.getPool(CalendarDataProvider.class);
|
||||
Integer value = pool.getLocalizedObject(CalendarWeekParameterGetter.INSTANCE,
|
||||
locale, true, 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, true, 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, normalizeCalendarType(id),
|
||||
field, value, style, false);
|
||||
}
|
||||
|
||||
public static String retrieveJavaTimeFieldValueName(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, false);
|
||||
}
|
||||
|
||||
public static Map<String, Integer> retrieveJavaTimeFieldValueNames(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;
|
||||
}
|
||||
|
||||
static String normalizeCalendarType(String requestID) {
|
||||
String type;
|
||||
if (requestID.equals("gregorian") || requestID.equals("iso8601")) {
|
||||
type = "gregory";
|
||||
} else if (requestID.startsWith("islamic")) {
|
||||
type = "islamic";
|
||||
} else {
|
||||
type = requestID;
|
||||
}
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 == 4;
|
||||
int field = (int) params[0];
|
||||
int value = (int) params[1];
|
||||
int style = (int) params[2];
|
||||
boolean javatime = (boolean) params[3];
|
||||
|
||||
// If javatime is true, resources from CLDR have precedence over JRE
|
||||
// native resources.
|
||||
if (javatime && calendarNameProvider instanceof CalendarNameProviderImpl) {
|
||||
String name;
|
||||
name = ((CalendarNameProviderImpl)calendarNameProvider)
|
||||
.getJavaTimeDisplayName(requestID, field, value, style, locale);
|
||||
return name;
|
||||
}
|
||||
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 == 3;
|
||||
int field = (int) params[0];
|
||||
int style = (int) params[1];
|
||||
boolean javatime = (boolean) params[2];
|
||||
|
||||
// If javatime is true, resources from CLDR have precedence over JRE
|
||||
// native resources.
|
||||
if (javatime && calendarNameProvider instanceof CalendarNameProviderImpl) {
|
||||
Map<String, Integer> map;
|
||||
map = ((CalendarNameProviderImpl)calendarNameProvider)
|
||||
.getJavaTimeDisplayNames(requestID, field, style, locale);
|
||||
return map;
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue