private static NumberFormat getInstance(LocaleProviderAdapter adapter, Locale locale, int choice) { NumberFormatProvider provider = adapter.getNumberFormatProvider(); NumberFormat numberFormat = null; switch (choice) { case NUMBERSTYLE: numberFormat = provider.getNumberInstance(locale); break; case PERCENTSTYLE: numberFormat = provider.getPercentInstance(locale); break; case CURRENCYSTYLE: numberFormat = provider.getCurrencyInstance(locale); break; case INTEGERSTYLE: numberFormat = provider.getIntegerInstance(locale); break; } return numberFormat; }
@Override public NumberFormatProvider getNumberFormatProvider() { if (numberFormatProvider == null) { NumberFormatProvider provider = AccessController.doPrivileged( (PrivilegedAction<NumberFormatProvider>) () -> new NumberFormatProviderImpl( getAdapterType(), getLanguageTagSet("FormatData"))); synchronized (this) { if (numberFormatProvider == null) { numberFormatProvider = provider; } } } return numberFormatProvider; }
/** * This method returns a general purpose number formatting and parsing * class for the default locale. This will be a concrete subclass of * <code>NumberFormat</code>, but the actual class returned is dependent * on the locale. * * @return An instance of a generic number formatter for the default locale. */ public static NumberFormat getNumberInstance (Locale loc) { try { return computeInstance (loc, "numberFormat", "#,##0.###"); } catch (MissingResourceException e) { for (NumberFormatProvider p : ServiceLoader.load(NumberFormatProvider.class)) { for (Locale l : p.getAvailableLocales()) { if (l.equals(loc)) { NumberFormat nf = p.getNumberInstance(loc); if (nf != null) return nf; break; } } } return getNumberInstance(LocaleHelper.getFallbackLocale(loc)); } }
/** * This method returns an instance of <code>NumberFormat</code> suitable * for formatting and parsing percentage values in the specified locale. * * @param loc The desired locale. * * @return An instance of <code>NumberFormat</code> for handling percentages. */ public static NumberFormat getPercentInstance (Locale loc) { try { return computeInstance (loc, "percentFormat", "#,##0%"); } catch (MissingResourceException e) { for (NumberFormatProvider p : ServiceLoader.load(NumberFormatProvider.class)) { for (Locale l : p.getAvailableLocales()) { if (l.equals(loc)) { NumberFormat nf = p.getPercentInstance(loc); if (nf != null) return nf; break; } } } return getPercentInstance(LocaleHelper.getFallbackLocale(loc)); } }
public NumberFormat getObject(NumberFormatProvider numberFormatProvider, Locale locale, String key, Object... params) { assert params.length == 1; int choice = (Integer)params[0]; switch (choice) { case NUMBERSTYLE: return numberFormatProvider.getNumberInstance(locale); case PERCENTSTYLE: return numberFormatProvider.getPercentInstance(locale); case CURRENCYSTYLE: return numberFormatProvider.getCurrencyInstance(locale); case INTEGERSTYLE: return numberFormatProvider.getIntegerInstance(locale); default: assert false : choice; } return null; }
private static NumberFormat getInstance(Locale desiredLocale, int choice) { LocaleProviderAdapter adapter; adapter = LocaleProviderAdapter.getAdapter(NumberFormatProvider.class, desiredLocale); NumberFormat numberFormat = getInstance(adapter, desiredLocale, choice); if (numberFormat == null) { numberFormat = getInstance(LocaleProviderAdapter.forJRE(), desiredLocale, choice); } return numberFormat; }
@Override public NumberFormatProvider getNumberFormatProvider() { if (numberFormatProvider == null) { NumberFormatProvider provider = new NumberFormatProviderImpl(getAdapterType(), getLanguageTagSet("FormatData")); synchronized (this) { if (numberFormatProvider == null) { numberFormatProvider = provider; } } } return numberFormatProvider; }
private static String getDefaultPattern(Locale locale) { // Get the pattern for the default locale. LocaleProviderAdapter adapter; adapter = LocaleProviderAdapter.getAdapter(NumberFormatProvider.class, locale); LocaleResources lr = adapter.getLocaleResources(locale); if (lr == null) { lr = LocaleProviderAdapter.forJRE().getLocaleResources(locale); } String[] all = lr.getNumberPatterns(); return all[0]; }