17935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/* 27935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Copyright (C) 2008-2011, International Business Machines Corporation and * 47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * others. All Rights Reserved. * 57935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.impl.jdkadapter; 87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.math.RoundingMode; 107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.text.AttributedCharacterIterator; 117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.text.AttributedString; 127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.text.CharacterIterator; 137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.text.DecimalFormatSymbols; 147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.text.FieldPosition; 157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.text.ParsePosition; 167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Currency; 177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.HashMap; 187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Map; 197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Map.Entry; 207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.DecimalFormat; 227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.NumberFormat; 237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/** 257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * DecimalFormatICU is an adapter class which wraps ICU4J DecimalFormat and 267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * implements java.text.DecimalFormat APIs. 277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic class DecimalFormatICU extends java.text.DecimalFormat { 297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static final long serialVersionUID = 6441573352964019403L; 317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private DecimalFormat fIcuDecfmt; 337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private DecimalFormatICU(DecimalFormat icuDecfmt) { 357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt = icuDecfmt; 367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static java.text.DecimalFormat wrap(DecimalFormat icuDecfmt) { 397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return new DecimalFormatICU(icuDecfmt); 407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public DecimalFormat unwrap() { 437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt; 447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Methods overriding java.text.DecimalFormat 477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void applyLocalizedPattern(String pattern) { 497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.applyLocalizedPattern(pattern); 507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void applyPattern(String pattern) { 547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.applyPattern(pattern); 557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public Object clone() { 597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert DecimalFormatICU other = (DecimalFormatICU)super.clone(); 607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert other.fIcuDecfmt = (DecimalFormat)fIcuDecfmt.clone(); 617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return other; 627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public boolean equals(Object obj) { 667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (obj instanceof DecimalFormatICU) { 677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return ((DecimalFormatICU)obj).fIcuDecfmt.equals(fIcuDecfmt); 687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return false; 707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition) { 747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.format(number, result, fieldPosition); 757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public StringBuffer format(long number, StringBuffer result, FieldPosition fieldPosition) { 797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.format(number, result, fieldPosition); 807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public AttributedCharacterIterator formatToCharacterIterator(Object obj) { 847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert AttributedCharacterIterator aci = fIcuDecfmt.formatToCharacterIterator(obj); 857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Create a new AttributedString 877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringBuilder sb = new StringBuilder(aci.getEndIndex() - aci.getBeginIndex()); 887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert char c = aci.first(); 897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert while (true) { 907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sb.append(c); 917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert c = aci.next(); 927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (c == CharacterIterator.DONE) { 937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert break; 947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert AttributedString resstr = new AttributedString(sb.toString()); 977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Mapping attributes 997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Map<AttributedCharacterIterator.Attribute,Object> attributes = null; 1007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int index = aci.getBeginIndex(); 1017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int residx = 0; 1027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert while (true) { 1037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (aci.setIndex(index) == CharacterIterator.DONE) { 1047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert break; 1057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert attributes = aci.getAttributes(); 1077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (attributes != null) { 1087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int end = aci.getRunLimit(); 1097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Map<AttributedCharacterIterator.Attribute,Object> jdkAttributes = 1107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new HashMap<AttributedCharacterIterator.Attribute,Object>(); 1117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (Entry<AttributedCharacterIterator.Attribute, Object> entry 1127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert : attributes.entrySet()) { 1137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert AttributedCharacterIterator.Attribute key = entry.getKey(); 1147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert AttributedCharacterIterator.Attribute jdkKey = mapAttribute(key); 1157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Object jdkVal = entry.getValue(); 1167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (jdkVal instanceof AttributedCharacterIterator.Attribute) { 1177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert jdkVal = mapAttribute((AttributedCharacterIterator.Attribute)jdkVal); 1187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert jdkAttributes.put(jdkKey, jdkVal); 1207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int resend = residx + (end - index); 1227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert resstr.addAttributes(jdkAttributes, residx, resend); 1237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert index = end; 1257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert residx = resend; 1267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return resstr.getIterator(); 1297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 1327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public Currency getCurrency() { 1337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert com.ibm.icu.util.Currency icuCurrency = fIcuDecfmt.getCurrency(); 1347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (icuCurrency == null) { 1357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return null; 1367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return Currency.getInstance(icuCurrency.getCurrencyCode()); 1387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 1417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public DecimalFormatSymbols getDecimalFormatSymbols() { 1427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return DecimalFormatSymbolsICU.wrap(fIcuDecfmt.getDecimalFormatSymbols()); 1437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 1467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int getGroupingSize() { 1477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.getGroupingSize(); 1487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 1517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int getMaximumFractionDigits() { 1527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.getMaximumFractionDigits(); 1537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 1567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int getMaximumIntegerDigits() { 1577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.getMaximumIntegerDigits(); 1587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 1617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int getMinimumFractionDigits() { 1627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.getMinimumFractionDigits(); 1637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 1667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int getMinimumIntegerDigits() { 1677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.getMinimumIntegerDigits(); 1687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 1717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int getMultiplier() { 1727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.getMultiplier(); 1737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 1767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public String getNegativePrefix() { 1777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.getNegativePrefix(); 1787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 1817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public String getNegativeSuffix() { 1827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.getNegativeSuffix(); 1837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 1867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public String getPositivePrefix() { 1877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.getPositivePrefix(); 1887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 1917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public String getPositiveSuffix() { 1927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.getPositiveSuffix(); 1937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 1967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public RoundingMode getRoundingMode() { 1977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int icuMode = fIcuDecfmt.getRoundingMode(); 1987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RoundingMode mode = RoundingMode.UP; 1997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert switch (icuMode) { 2007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert case com.ibm.icu.math.BigDecimal.ROUND_CEILING: 2017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert mode = RoundingMode.CEILING; 2027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert break; 2037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert case com.ibm.icu.math.BigDecimal.ROUND_DOWN: 2047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert mode = RoundingMode.DOWN; 2057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert break; 2067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert case com.ibm.icu.math.BigDecimal.ROUND_FLOOR: 2077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert mode = RoundingMode.FLOOR; 2087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert break; 2097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert case com.ibm.icu.math.BigDecimal.ROUND_HALF_DOWN: 2107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert mode = RoundingMode.HALF_DOWN; 2117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert break; 2127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert case com.ibm.icu.math.BigDecimal.ROUND_HALF_EVEN: 2137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert mode = RoundingMode.HALF_EVEN; 2147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert break; 2157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert case com.ibm.icu.math.BigDecimal.ROUND_HALF_UP: 2167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert mode = RoundingMode.HALF_UP; 2177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert break; 2187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert case com.ibm.icu.math.BigDecimal.ROUND_UNNECESSARY: 2197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert mode = RoundingMode.UNNECESSARY; 2207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert break; 2217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert case com.ibm.icu.math.BigDecimal.ROUND_UP: 2227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert mode = RoundingMode.UP; 2237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert break; 2247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return mode; 2267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 2297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int hashCode() { 2307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.hashCode(); 2317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 2347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public boolean isDecimalSeparatorAlwaysShown() { 2357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.isDecimalSeparatorAlwaysShown(); 2367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 2397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public boolean isParseBigDecimal() { 2407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.isParseBigDecimal(); 2417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 2447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public Number parse(String text, ParsePosition pos) { 2457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.parse(text, pos); 2467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 2497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setCurrency(Currency currency) { 2507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (currency == null) { 2517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setCurrency(null); 2527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 2537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setCurrency(com.ibm.icu.util.Currency.getInstance(currency.getCurrencyCode())); 2547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 2587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols) { 2597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert com.ibm.icu.text.DecimalFormatSymbols icuDecfs = null; 2607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (newSymbols instanceof DecimalFormatSymbolsICU) { 2617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs = ((DecimalFormatSymbolsICU)newSymbols).unwrap(); 2627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 2637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs = fIcuDecfmt.getDecimalFormatSymbols(); 2647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Currency currency = newSymbols.getCurrency(); 2667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (currency == null) { 2677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs.setCurrency(null); 2687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 2697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs.setCurrency(com.ibm.icu.util.Currency.getInstance(currency.getCurrencyCode())); 2707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Copy symbols 2737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs.setCurrencySymbol(newSymbols.getCurrencySymbol()); 2747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs.setDecimalSeparator(newSymbols.getDecimalSeparator()); 2757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs.setDigit(newSymbols.getDigit()); 2767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs.setExponentSeparator(newSymbols.getExponentSeparator()); 2777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs.setGroupingSeparator(newSymbols.getGroupingSeparator()); 2787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs.setInfinity(newSymbols.getInfinity()); 2797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs.setInternationalCurrencySymbol(newSymbols.getInternationalCurrencySymbol()); 2807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs.setMinusSign(newSymbols.getMinusSign()); 2817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs.setMonetaryDecimalSeparator(newSymbols.getMonetaryDecimalSeparator()); 2827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs.setNaN(newSymbols.getNaN()); 2837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs.setPatternSeparator(newSymbols.getPatternSeparator()); 2847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs.setPercent(newSymbols.getPercent()); 2857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs.setPerMill(newSymbols.getPerMill()); 2867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert icuDecfs.setZeroDigit(newSymbols.getZeroDigit()); 2877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setDecimalFormatSymbols(icuDecfs); 2897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 2927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setDecimalSeparatorAlwaysShown(boolean newValue) { 2937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (fIcuDecfmt != null) { 2947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setDecimalSeparatorAlwaysShown(newValue); 2957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 2997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setGroupingSize(int newValue) { 3007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (fIcuDecfmt != null) { 3017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setGroupingSize(newValue); 3027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 3067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setMaximumFractionDigits(int newValue) { 3077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (fIcuDecfmt != null) { 3087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setMaximumFractionDigits(newValue); 3097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 3137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setMaximumIntegerDigits(int newValue) { 3147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (fIcuDecfmt != null) { 3157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setMaximumIntegerDigits(newValue); 3167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 3207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setMinimumFractionDigits(int newValue) { 3217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (fIcuDecfmt != null) { 3227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setMinimumFractionDigits(newValue); 3237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 3277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setMinimumIntegerDigits(int newValue) { 3287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (fIcuDecfmt != null) { 3297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setMinimumIntegerDigits(newValue); 3307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 3347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setMultiplier(int newValue) { 3357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setMultiplier(newValue); 3367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 3397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setNegativePrefix(String newValue) { 3407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setNegativePrefix(newValue); 3417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 3447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setNegativeSuffix(String newValue) { 3457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setNegativeSuffix(newValue); 3467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 3497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setParseBigDecimal(boolean newValue) { 3507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setParseBigDecimal(newValue); 3517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 3547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setPositivePrefix(String newValue) { 3557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setPositivePrefix(newValue); 3567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 3597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setPositiveSuffix(String newValue) { 3607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setPositiveSuffix(newValue); 3617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 3647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setRoundingMode(RoundingMode roundingMode) { 3657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (roundingMode.equals(RoundingMode.CEILING)) { 3667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_CEILING); 3677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (roundingMode.equals(RoundingMode.DOWN)) { 3687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_DOWN); 3697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (roundingMode.equals(RoundingMode.FLOOR)) { 3707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_FLOOR); 3717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (roundingMode.equals(RoundingMode.HALF_DOWN)) { 3727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_HALF_DOWN); 3737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (roundingMode.equals(RoundingMode.HALF_EVEN)) { 3747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_HALF_EVEN); 3757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (roundingMode.equals(RoundingMode.HALF_UP)) { 3767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_HALF_UP); 3777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (roundingMode.equals(RoundingMode.UNNECESSARY)) { 3787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_UNNECESSARY); 3797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (roundingMode.equals(RoundingMode.UP)) { 3807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_UP); 3817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 3827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert throw new IllegalArgumentException("Invalid rounding mode was specified."); 3837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 3877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public String toLocalizedPattern() { 3887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.toLocalizedPattern(); 3897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 3927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public String toPattern() { 3937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.toPattern(); 3947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Methods overriding java.text.NumberFormat 3977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 3997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public boolean isGroupingUsed() { 4007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.isGroupingUsed(); 4017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 4047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public boolean isParseIntegerOnly() { 4057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return fIcuDecfmt.isParseIntegerOnly(); 4067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 4097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setGroupingUsed(boolean newValue) { 4107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (fIcuDecfmt != null) { 4117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setGroupingUsed(newValue); 4127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert @Override 4167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void setParseIntegerOnly(boolean value) { 4177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fIcuDecfmt.setParseIntegerOnly(value); 4187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static AttributedCharacterIterator.Attribute mapAttribute(AttributedCharacterIterator.Attribute icuAttribute) { 4217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert AttributedCharacterIterator.Attribute jdkAttribute = icuAttribute; 4227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (icuAttribute == NumberFormat.Field.CURRENCY) { 4247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert jdkAttribute = java.text.NumberFormat.Field.CURRENCY; 4257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (icuAttribute == NumberFormat.Field.DECIMAL_SEPARATOR) { 4267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert jdkAttribute = java.text.NumberFormat.Field.DECIMAL_SEPARATOR; 4277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (icuAttribute == NumberFormat.Field.EXPONENT) { 4287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert jdkAttribute = java.text.NumberFormat.Field.EXPONENT; 4297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (icuAttribute == NumberFormat.Field.EXPONENT_SIGN) { 4307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert jdkAttribute = java.text.NumberFormat.Field.EXPONENT_SIGN; 4317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (icuAttribute == NumberFormat.Field.EXPONENT_SYMBOL) { 4327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert jdkAttribute = java.text.NumberFormat.Field.EXPONENT_SYMBOL; 4337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (icuAttribute == NumberFormat.Field.FRACTION) { 4347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert jdkAttribute = java.text.NumberFormat.Field.FRACTION; 4357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (icuAttribute == NumberFormat.Field.GROUPING_SEPARATOR) { 4367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert jdkAttribute = java.text.NumberFormat.Field.GROUPING_SEPARATOR; 4377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (icuAttribute == NumberFormat.Field.INTEGER) { 4387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert jdkAttribute = java.text.NumberFormat.Field.INTEGER; 4397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (icuAttribute == NumberFormat.Field.PERCENT) { 4407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert jdkAttribute = java.text.NumberFormat.Field.PERCENT; 4417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (icuAttribute == NumberFormat.Field.PERMILLE) { 4427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert jdkAttribute = java.text.NumberFormat.Field.PERMILLE; 4437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (icuAttribute == NumberFormat.Field.SIGN) { 4447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert jdkAttribute = java.text.NumberFormat.Field.SIGN; 4457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return jdkAttribute; 4487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert} 451