@Override public String print(CurrencyUnit object, Locale locale) { return object.getCurrencyCode(); }
@Override public Long toNonNullValue(MonetaryAmount value) { if (!currencyUnit.equals(value.getCurrency())) { throw new IllegalStateException("Expected currency " + currencyUnit.getCurrencyCode() + " but was " + value.getCurrency()); } BigDecimal val = value.getNumber().numberValue(BigDecimal.class); return val.movePointRight(currencyUnit.getDefaultFractionDigits()).longValue(); }
public static void printDetails(CurrencyUnit cu) { if (cu == null) { System.out.println("N/A"); } else { System.out.println("CurrencyUnit '" + cu.toString() + "':\n" + " Class : " + cu.getClass().getName() + "\n" + " Currency Code : " + cu.getCurrencyCode() + "\n" + " Num.Code : " + cu.getNumericCode() + "\n" + " DefaultFraction Digits: " + cu.getDefaultFractionDigits() + "\n" + " Context : " + cu.getContext()); } }
/** * Test that JDK currencies returned match the values of corresponding JDK Currency (code, numeric code, * default fraction digits). */ @SpecAssertion(section = "4.2.1", id = "421-A4") @Test(description = "4.2.1 Test currencies provided have correct default fraction digits and numeric code.") public void testISOCodes() { for (Currency currency : Currency.getAvailableCurrencies()) { CurrencyUnit unit = Monetary.getCurrency(currency.getCurrencyCode()); AssertJUnit.assertEquals(currency.getCurrencyCode(), unit.getCurrencyCode()); AssertJUnit.assertEquals(currency.getDefaultFractionDigits(), unit.getDefaultFractionDigits()); AssertJUnit.assertEquals(currency.getNumericCode(), unit.getNumericCode()); } }
/** * Creates an {@link DefaultCashRounding} for rounding * {@link MonetaryAmount} instances given a currency. * * @param currency The currency, which determines the required precision. As * {@link RoundingMode}, by default, {@link RoundingMode#HALF_UP} * is used. */ DefaultCashRounding(CurrencyUnit currency, RoundingMode roundingMode, int minimalMinors) { this(currency.getDefaultFractionDigits(), roundingMode, minimalMinors); }
@Override public Long toNonNullValue(MonetaryAmount value) { if (!currencyUnit.equals(value.getCurrency())) { throw new IllegalStateException("Expected currency " + currencyUnit.getCurrencyCode() + " but was " + value.getCurrency()); } BigDecimal val = value.getNumber().numberValue(BigDecimal.class); return val.movePointRight(currencyUnit.getDefaultFractionDigits()).longValue(); }
public static void printDetails(String title, CurrencyUnit cu) { if (cu == null) { System.out.println(title + " -> N/A"); } else { System.out.println(title + " -> CurrencyUnit '" + cu.toString() + "':\n" + " Class : " + cu.getClass().getName() + "\n" + " Currency Code : " + cu.getCurrencyCode() + "\n" + " Num.Code : " + cu.getNumericCode() + "\n" + " DefaultFraction Digits: " + cu.getDefaultFractionDigits() + "\n" + " Context : " + cu.getContext()); } }
/** * Creates an {@link DefaultRounding} for rounding {@link MonetaryAmount} * instances given a currency. * * @param currency The currency, which determines the required precision. As * {@link RoundingMode}, by default, {@link RoundingMode#HALF_UP} * is used. */ DefaultRounding(CurrencyUnit currency, RoundingMode roundingMode) { this(currency.getDefaultFractionDigits(), roundingMode); }
@Override public String print(CurrencyUnit object, Locale locale) { return object.getCurrencyCode(); }
@Override public Long toNonNullValue(MonetaryAmount value) { if (!currencyUnit.equals(value.getCurrency())) { throw new IllegalStateException("Expected currency " + currencyUnit.getCurrencyCode() + " but was " + value.getCurrency()); } BigDecimal val = value.getNumber().numberValue(BigDecimal.class); return val.movePointRight(currencyUnit.getDefaultFractionDigits()).longValue(); }
@Override public FastMoney fromNonNullValue(Long val) { BigDecimal minorVal = BigDecimal.valueOf(val, currencyUnit.getDefaultFractionDigits()); return FastMoney.of(minorVal, currencyUnit); }
@Override public String print(MonetaryAmount object, Locale locale) { CurrencyStyleFormatter formatter = new CurrencyStyleFormatter(); formatter.setCurrency(Currency.getInstance(object.getCurrency().getCurrencyCode())); formatter.setPattern(this.pattern); return formatter.print(object.getNumber(), locale); }
@Override public Long toNonNullValue(MonetaryAmount value) { if (!currencyUnit.equals(value.getCurrency())) { throw new IllegalStateException("Expected currency " + currencyUnit.getCurrencyCode() + " but was " + value.getCurrency()); } BigDecimal val = value.getNumber().numberValue(BigDecimal.class); return val.movePointRight(currencyUnit.getDefaultFractionDigits()).longValue(); }
@Override public Money fromNonNullValue(Long val) { BigDecimal minorVal = BigDecimal.valueOf(val, currencyUnit.getDefaultFractionDigits()); return Money.of(minorVal, currencyUnit); }
@Override public String print(MonetaryAmount object, Locale locale) { CurrencyStyleFormatter formatter = new CurrencyStyleFormatter(); formatter.setCurrency(Currency.getInstance(object.getCurrency().getCurrencyCode())); formatter.setPattern(this.pattern); return formatter.print(object.getNumber(), locale); }
@Override public Money fromNonNullValue(Long val) { BigDecimal minorVal = BigDecimal.valueOf(val, currencyUnit.getDefaultFractionDigits()); return Money.of(minorVal, currencyUnit); }
@Test public void testAmountWithNumberFormat2() { FormattedMoneyHolder2 bean = new FormattedMoneyHolder2(); DataBinder binder = new DataBinder(bean); binder.setConversionService(conversionService); MutablePropertyValues propertyValues = new MutablePropertyValues(); propertyValues.add("amount", "10.50"); binder.bind(propertyValues); assertEquals(0, binder.getBindingResult().getErrorCount()); assertEquals("10.5", binder.getBindingResult().getFieldValue("amount")); assertTrue(bean.getAmount().getNumber().doubleValue() == 10.5d); assertEquals("USD", bean.getAmount().getCurrency().getCurrencyCode()); }
@Override protected FastMoney fromConvertedColumns(Object[] convertedColumns) { CurrencyUnit currencyUnitPart = (CurrencyUnit) convertedColumns[0]; Long amountMinorPart = (Long) convertedColumns[1]; BigDecimal majorVal = BigDecimal.valueOf(amountMinorPart, currencyUnitPart.getDefaultFractionDigits()); return FastMoney.of(majorVal, currencyUnitPart); }
@Test public void testAmountWithNumberFormat3() { FormattedMoneyHolder3 bean = new FormattedMoneyHolder3(); DataBinder binder = new DataBinder(bean); binder.setConversionService(conversionService); MutablePropertyValues propertyValues = new MutablePropertyValues(); propertyValues.add("amount", "10%"); binder.bind(propertyValues); assertEquals(0, binder.getBindingResult().getErrorCount()); assertEquals("10%", binder.getBindingResult().getFieldValue("amount")); assertTrue(bean.getAmount().getNumber().doubleValue() == 0.1d); assertEquals("USD", bean.getAmount().getCurrency().getCurrencyCode()); }
@Override public FastMoney fromNonNullValue(Long val) { BigDecimal minorVal = BigDecimal.valueOf(val, currencyUnit.getDefaultFractionDigits()); return FastMoney.of(minorVal, currencyUnit); }