Map<String, String> defaultMap = null;
if (!locale.isDefault()) {
defaultMap = getMap(category, localeFactory.getDefault());
}
Map<String, Currency> tempMap = new HashMap<String, Currency>();
CLDRFile cldr = cldrFactory.make(allLocales.get(locale), true);
XPathParts parts = new XPathParts();
Iterator<String> iterator = cldr.iterator("//ldml/numbers/currencies");
while (iterator.hasNext()) {
String path = iterator.next();
String fullPath = cldr.getFullXPath(path);
if (fullPath == null) {
fullPath = path;
}
parts.set(fullPath);
Map<String, String> attr = parts.findAttributes("currency");
if (attr == null) {
continue;
}
String currencyCode = attr.get("type");
Currency currency = tempMap.get(currencyCode);
if (currency == null) {
currency = new Currency(currencyCode);
if (currencyFractions.containsKey(currencyCode)) {
currency.setDecimalDigits(currencyFractions.get(currencyCode));
} else {
currency.setDecimalDigits(defaultCurrencyFraction);
}
currency.setInUse(stillInUse.contains(currencyCode));
tempMap.put(currencyCode, currency);
Integer roundingMult = rounding.get(currencyCode);
if (roundingMult != null) {
currency.setRounding(roundingMult);
}
}
String field = parts.getElement(4);
String value = cldr.getStringValue(fullPath);
attr = parts.findAttributes(field);
if (attr == null) {
attr = Collections.emptyMap();
}
String draft = attr.get("draft");