com.ibm.icu.impl.CurrencyData Maven / Gradle / Ivy
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
/*
*******************************************************************************
* Copyright (C) 2009-2016, International Business Machines Corporation and
* others. All Rights Reserved.
*******************************************************************************
*/
package com.ibm.icu.impl;
import java.util.Collections;
import java.util.Map;
import com.ibm.icu.text.CurrencyDisplayNames;
import com.ibm.icu.text.DecimalFormatSymbols;
import com.ibm.icu.util.ULocale;
public class CurrencyData {
public static final CurrencyDisplayInfoProvider provider;
private CurrencyData() {}
public static interface CurrencyDisplayInfoProvider {
CurrencyDisplayInfo getInstance(ULocale locale, boolean withFallback);
boolean hasData();
}
public static abstract class CurrencyDisplayInfo extends CurrencyDisplayNames {
public abstract Map getUnitPatterns();
public abstract CurrencyFormatInfo getFormatInfo(String isoCode);
public abstract CurrencySpacingInfo getSpacingInfo();
public abstract String getNarrowSymbol(String isoCode);
}
public static final class CurrencyFormatInfo {
public final String isoCode;
public final String currencyPattern;
public final String monetaryDecimalSeparator;
public final String monetaryGroupingSeparator;
public CurrencyFormatInfo(String isoCode, String currencyPattern, String monetarySeparator,
String monetaryGroupingSeparator) {
this.isoCode = isoCode;
this.currencyPattern = currencyPattern;
this.monetaryDecimalSeparator = monetarySeparator;
this.monetaryGroupingSeparator = monetaryGroupingSeparator;
}
}
public static final class CurrencySpacingInfo {
private final String[][] symbols = new String[SpacingType.COUNT.ordinal()][SpacingPattern.COUNT.ordinal()];
public boolean hasBeforeCurrency = false;
public boolean hasAfterCurrency = false;
public static enum SpacingType { BEFORE, AFTER, COUNT };
public static enum SpacingPattern {
CURRENCY_MATCH(DecimalFormatSymbols.CURRENCY_SPC_CURRENCY_MATCH),
SURROUNDING_MATCH(DecimalFormatSymbols.CURRENCY_SPC_SURROUNDING_MATCH),
INSERT_BETWEEN(DecimalFormatSymbols.CURRENCY_SPC_INSERT),
COUNT;
SpacingPattern() {}
SpacingPattern(int value) { assert value == ordinal(); }
};
public CurrencySpacingInfo() {}
public CurrencySpacingInfo(String... strings) {
assert strings.length == 6;
int k = 0;
for (int i=0; i clzz = Class.forName("com.ibm.icu.impl.ICUCurrencyDisplayInfoProvider");
temp = (CurrencyDisplayInfoProvider) clzz.newInstance();
} catch (Throwable t) {
temp = new CurrencyDisplayInfoProvider() {
@Override
public CurrencyDisplayInfo getInstance(ULocale locale, boolean withFallback) {
return DefaultInfo.getWithFallback(withFallback);
}
@Override
public boolean hasData() {
return false;
}
};
}
provider = temp;
}
public static class DefaultInfo extends CurrencyDisplayInfo {
private final boolean fallback;
private DefaultInfo(boolean fallback) {
this.fallback = fallback;
}
public static final CurrencyDisplayInfo getWithFallback(boolean fallback) {
return fallback ? FALLBACK_INSTANCE : NO_FALLBACK_INSTANCE;
}
@Override
public String getName(String isoCode) {
return fallback ? isoCode : null;
}
@Override
public String getPluralName(String isoCode, String pluralType) {
return fallback ? isoCode : null;
}
@Override
public String getSymbol(String isoCode) {
return fallback ? isoCode : null;
}
@Override
public String getNarrowSymbol(String isoCode) {
return fallback ? isoCode : null;
}
@Override
public Map symbolMap() {
return Collections.emptyMap();
}
@Override
public Map nameMap() {
return Collections.emptyMap();
}
@Override
public ULocale getULocale() {
return ULocale.ROOT;
}
@Override
public Map getUnitPatterns() {
if (fallback) {
return Collections.emptyMap();
}
return null;
}
@Override
public CurrencyFormatInfo getFormatInfo(String isoCode) {
return null;
}
@Override
public CurrencySpacingInfo getSpacingInfo() {
return fallback ? CurrencySpacingInfo.DEFAULT : null;
}
private static final CurrencyDisplayInfo FALLBACK_INSTANCE = new DefaultInfo(true);
private static final CurrencyDisplayInfo NO_FALLBACK_INSTANCE = new DefaultInfo(false);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy