blob: b8b5fed77e762a87518a50a024ff3014150e24be [file] [log] [blame]
/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package libcore.icu;
import com.android.tools.layoutlib.annotations.LayoutlibDelegate;
import com.ibm.icu.text.DateTimePatternGenerator;
import com.ibm.icu.util.Currency;
import com.ibm.icu.util.ULocale;
import java.util.Locale;
/**
* Delegate implementing the native methods of libcore.icu.ICU
*
* Through the layoutlib_create tool, the original native methods of ICU have been replaced
* by calls to methods of the same name in this delegate class.
*
*/
public class ICU_Delegate {
// --- Java delegates
@LayoutlibDelegate
/*package*/ static String toLowerCase(String s, String localeName) {
return s.toLowerCase();
}
@LayoutlibDelegate
/*package*/ static String toUpperCase(String s, String localeName) {
return s.toUpperCase();
}
// --- Native methods accessing ICU's database.
@LayoutlibDelegate
/*package*/ static String getBestDateTimePatternNative(String skeleton, String localeName) {
return DateTimePatternGenerator.getInstance(new ULocale(localeName))
.getBestPattern(skeleton);
}
@LayoutlibDelegate
/*package*/ static String getCldrVersion() {
return "22.1.1"; // TODO: check what the right value should be.
}
@LayoutlibDelegate
/*package*/ static String getIcuVersion() {
return "unknown_layoutlib";
}
@LayoutlibDelegate
/*package*/ static String getUnicodeVersion() {
return "5.2";
}
@LayoutlibDelegate
/*package*/ static String[] getAvailableBreakIteratorLocalesNative() {
return new String[0];
}
@LayoutlibDelegate
/*package*/ static String[] getAvailableCalendarLocalesNative() {
return new String[0];
}
@LayoutlibDelegate
/*package*/ static String[] getAvailableCollatorLocalesNative() {
return new String[0];
}
@LayoutlibDelegate
/*package*/ static String[] getAvailableDateFormatLocalesNative() {
return new String[0];
}
@LayoutlibDelegate
/*package*/ static String[] getAvailableLocalesNative() {
return new String[0];
}
@LayoutlibDelegate
/*package*/ static String[] getAvailableNumberFormatLocalesNative() {
return new String[0];
}
@LayoutlibDelegate
/*package*/ static String[] getAvailableCurrencyCodes() {
return new String[0];
}
@LayoutlibDelegate
/*package*/ static String getCurrencyCode(String locale) {
return "";
}
@LayoutlibDelegate
/*package*/ static String getCurrencyDisplayName(String locale, String currencyCode) {
return "";
}
@LayoutlibDelegate
/*package*/ static int getCurrencyFractionDigits(String currencyCode) {
return 0;
}
@LayoutlibDelegate
/*package*/ static int getCurrencyNumericCode(String currencyCode) {
return Currency.getInstance(currencyCode).getNumericCode();
}
@LayoutlibDelegate
/*package*/ static String getCurrencySymbol(String locale, String currencyCode) {
return "";
}
@LayoutlibDelegate
/*package*/ static String getDisplayCountryNative(String countryCode, String locale) {
return "";
}
@LayoutlibDelegate
/*package*/ static String getDisplayLanguageNative(String languageCode, String locale) {
return "";
}
@LayoutlibDelegate
/*package*/ static String getDisplayVariantNative(String variantCode, String locale) {
return "";
}
@LayoutlibDelegate
/*package*/ static String getDisplayScriptNative(String variantCode, String locale) {
return "";
}
@LayoutlibDelegate
/*package*/ static String getISO3Country(String locale) {
return "";
}
@LayoutlibDelegate
/*package*/ static String getISO3Language(String locale) {
return "";
}
@LayoutlibDelegate
/*package*/ static String addLikelySubtags(String locale) {
return "";
}
@LayoutlibDelegate
/*package*/ static String getScript(String locale) {
return "";
}
@LayoutlibDelegate
/*package*/ static String[] getISOLanguagesNative() {
return Locale.getISOLanguages();
}
@LayoutlibDelegate
/*package*/ static String[] getISOCountriesNative() {
return Locale.getISOCountries();
}
@LayoutlibDelegate
/*package*/ static boolean initLocaleDataNative(String locale, LocaleData result) {
// Used by Calendar.
result.firstDayOfWeek = Integer.valueOf(1);
result.minimalDaysInFirstWeek = Integer.valueOf(1);
// Used by DateFormatSymbols.
result.amPm = new String[] { "AM", "PM" };
result.eras = new String[] { "BC", "AD" };
result.longMonthNames = new String[] { "January", "February", "March", "April", "May",
"June", "July", "August", "September", "October", "November", "December" };
result.shortMonthNames = new String[] { "Jan", "Feb", "Mar", "Apr", "May",
"Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
result.longStandAloneMonthNames = result.longMonthNames;
result.shortStandAloneMonthNames = result.shortMonthNames;
// The platform code expects this to begin at index 1, rather than 0. It maps it directly to
// the constants from java.util.Calendar.<weekday>
result.longWeekdayNames = new String[] {
"", "Sunday", "Monday" ,"Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
result.shortWeekdayNames = new String[] {
"", "Sun", "Mon" ,"Tue", "Wed", "Thu", "Fri", "Sat" };
result.tinyWeekdayNames = new String[] {
"", "S", "M", "T", "W", "T", "F", "S" };
result.longStandAloneWeekdayNames = result.longWeekdayNames;
result.shortStandAloneWeekdayNames = result.shortWeekdayNames;
result.tinyStandAloneWeekdayNames = result.tinyWeekdayNames;
result.fullTimeFormat = "";
result.longTimeFormat = "";
result.mediumTimeFormat = "";
result.shortTimeFormat = "";
result.fullDateFormat = "";
result.longDateFormat = "";
result.mediumDateFormat = "";
result.shortDateFormat = "";
// Used by DecimalFormatSymbols.
result.zeroDigit = '0';
result.decimalSeparator = '.';
result.groupingSeparator = ',';
result.patternSeparator = ' ';
result.percent = "%";
result.perMill = '\u2030';
result.monetarySeparator = ' ';
result.minusSign = "-";
result.exponentSeparator = "e";
result.infinity = "\u221E";
result.NaN = "NaN";
// Also used by Currency.
result.currencySymbol = "$";
result.internationalCurrencySymbol = "USD";
// Used by DecimalFormat and NumberFormat.
result.numberPattern = "%f";
result.integerPattern = "%d";
result.currencyPattern = "%s";
result.percentPattern = "%f";
return true;
}
@LayoutlibDelegate
/*package*/ static void setDefaultLocale(String locale) {
ICU.setDefaultLocale(locale);
}
@LayoutlibDelegate
/*package*/ static String getDefaultLocale() {
return ICU.getDefaultLocale();
}
}