31 import java.text.DecimalFormatSymbols;
32 import java.text.NumberFormat;
33 import java.text.SimpleDateFormat;
34 import java.text.spi.DateFormatProvider;
35 import java.text.spi.DateFormatSymbolsProvider;
36 import java.text.spi.DecimalFormatSymbolsProvider;
37 import java.text.spi.NumberFormatProvider;
38 import java.util.Calendar;
39 import java.util.Collections;
40 import java.util.Currency;
41 import java.util.HashSet;
42 import java.util.Locale;
43 import java.util.Map;
44 import java.util.ResourceBundle.Control;
45 import java.util.Set;
46 import java.util.TimeZone;
47 import java.util.concurrent.ConcurrentHashMap;
48 import java.util.concurrent.ConcurrentMap;
49 import java.util.concurrent.atomic.AtomicReferenceArray;
50 import java.util.spi.CalendarDataProvider;
51 import java.util.spi.CalendarNameProvider;
52 import java.util.spi.CurrencyNameProvider;
53 import java.util.spi.LocaleNameProvider;
54 import sun.util.spi.CalendarProvider;
55
56 /**
57 * LocaleProviderdapter implementation for the Windows locale data.
58 *
59 * @author Naoto Sato
60 */
61 public class HostLocaleProviderAdapterImpl {
62
63 // locale categories
64 private static final int CAT_DISPLAY = 0;
65 private static final int CAT_FORMAT = 1;
66
67 // NumberFormat styles
68 private static final int NF_NUMBER = 0;
69 private static final int NF_CURRENCY = 1;
70 private static final int NF_PERCENT = 2;
71 private static final int NF_INTEGER = 3;
345 return isSupportedCalendarLocale(locale);
346 }
347
348 @Override
349 public int getFirstDayOfWeek(Locale locale) {
350 int first = getCalendarDataValue(
351 removeExtensions(locale).toLanguageTag(),
352 CD_FIRSTDAYOFWEEK);
353 if (first != -1) {
354 return (first + 1) % 7 + 1;
355 } else {
356 return 0;
357 }
358 }
359
360 @Override
361 public int getMinimalDaysInFirstWeek(Locale locale) {
362 return 0;
363 }
364 };
365 }
366
367 public static CalendarNameProvider getCalendarNameProvider() {
368 return new CalendarNameProvider() {
369 @Override
370 public Locale[] getAvailableLocales() {
371 return getSupportedCalendarLocales();
372 }
373
374 @Override
375 public boolean isSupportedLocale(Locale locale) {
376 return isSupportedCalendarLocale(locale);
377 }
378
379 @Override
380 public String getDisplayName(String calType, int field, int value,
381 int style, Locale locale) {
382 return null;
383 }
384
385 @Override
386 public Map<String, Integer> getDisplayNames(String calType,
387 int field, int style, Locale locale) {
388 return null;
389 }
390 };
391 }
392
393 public static CalendarProvider getCalendarProvider() {
394 return new CalendarProvider() {
395 @Override
396 public Locale[] getAvailableLocales() {
397 return getSupportedCalendarLocales();
398 }
399
400 @Override
401 public boolean isSupportedLocale(Locale locale) {
402 return isSupportedCalendarLocale(locale);
403 }
404
405 @Override
406 public Calendar getInstance(TimeZone zone, Locale locale) {
407 return new Calendar.Builder()
408 .setLocale(getCalendarLocale(locale))
409 .setTimeZone(zone)
410 .setInstant(System.currentTimeMillis())
|
31 import java.text.DecimalFormatSymbols;
32 import java.text.NumberFormat;
33 import java.text.SimpleDateFormat;
34 import java.text.spi.DateFormatProvider;
35 import java.text.spi.DateFormatSymbolsProvider;
36 import java.text.spi.DecimalFormatSymbolsProvider;
37 import java.text.spi.NumberFormatProvider;
38 import java.util.Calendar;
39 import java.util.Collections;
40 import java.util.Currency;
41 import java.util.HashSet;
42 import java.util.Locale;
43 import java.util.Map;
44 import java.util.ResourceBundle.Control;
45 import java.util.Set;
46 import java.util.TimeZone;
47 import java.util.concurrent.ConcurrentHashMap;
48 import java.util.concurrent.ConcurrentMap;
49 import java.util.concurrent.atomic.AtomicReferenceArray;
50 import java.util.spi.CalendarDataProvider;
51 import java.util.spi.CurrencyNameProvider;
52 import java.util.spi.LocaleNameProvider;
53 import sun.util.spi.CalendarProvider;
54
55 /**
56 * LocaleProviderdapter implementation for the Windows locale data.
57 *
58 * @author Naoto Sato
59 */
60 public class HostLocaleProviderAdapterImpl {
61
62 // locale categories
63 private static final int CAT_DISPLAY = 0;
64 private static final int CAT_FORMAT = 1;
65
66 // NumberFormat styles
67 private static final int NF_NUMBER = 0;
68 private static final int NF_CURRENCY = 1;
69 private static final int NF_PERCENT = 2;
70 private static final int NF_INTEGER = 3;
344 return isSupportedCalendarLocale(locale);
345 }
346
347 @Override
348 public int getFirstDayOfWeek(Locale locale) {
349 int first = getCalendarDataValue(
350 removeExtensions(locale).toLanguageTag(),
351 CD_FIRSTDAYOFWEEK);
352 if (first != -1) {
353 return (first + 1) % 7 + 1;
354 } else {
355 return 0;
356 }
357 }
358
359 @Override
360 public int getMinimalDaysInFirstWeek(Locale locale) {
361 return 0;
362 }
363 };
364 }
365
366 public static CalendarProvider getCalendarProvider() {
367 return new CalendarProvider() {
368 @Override
369 public Locale[] getAvailableLocales() {
370 return getSupportedCalendarLocales();
371 }
372
373 @Override
374 public boolean isSupportedLocale(Locale locale) {
375 return isSupportedCalendarLocale(locale);
376 }
377
378 @Override
379 public Calendar getInstance(TimeZone zone, Locale locale) {
380 return new Calendar.Builder()
381 .setLocale(getCalendarLocale(locale))
382 .setTimeZone(zone)
383 .setInstant(System.currentTimeMillis())
|