diff --git a/depmgmt/pom.xml b/depmgmt/pom.xml index 1e224105..841609ee 100644 --- a/depmgmt/pom.xml +++ b/depmgmt/pom.xml @@ -274,7 +274,7 @@ org.joda joda-money - 0.12 + 1.0.1 true diff --git a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/PersistentMoneyAmountAndCurrency.java b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/PersistentMoneyAmountAndCurrency.java index 3bb93e59..5545fff6 100644 --- a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/PersistentMoneyAmountAndCurrency.java +++ b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/PersistentMoneyAmountAndCurrency.java @@ -16,6 +16,7 @@ package org.jadira.usertype.moneyandcurrency.joda; import java.math.BigDecimal; +import java.math.RoundingMode; import org.jadira.usertype.moneyandcurrency.joda.columnmapper.StringColumnCurrencyUnitMapper; import org.jadira.usertype.moneyandcurrency.legacyjdk.columnmapper.BigDecimalBigDecimalColumnMapper; @@ -29,23 +30,34 @@ */ public class PersistentMoneyAmountAndCurrency extends AbstractMultiColumnUserType { - private static final long serialVersionUID = 3735995469031558183L; + private static final long serialVersionUID = 3735995469031558183L; - private static final ColumnMapper[] COLUMN_MAPPERS = new ColumnMapper[] { new StringColumnCurrencyUnitMapper(), new BigDecimalBigDecimalColumnMapper() }; + private static final ColumnMapper[] COLUMN_MAPPERS = new ColumnMapper[] { new StringColumnCurrencyUnitMapper(), new BigDecimalBigDecimalColumnMapper() }; private static final String[] PROPERTY_NAMES = new String[]{ "currencyUnit", "amount" }; - - @Override - protected ColumnMapper[] getColumnMappers() { - return COLUMN_MAPPERS; - } + + private RoundingMode roundingMode; + + public PersistentMoneyAmountAndCurrency() { + this(RoundingMode.HALF_UP); + } + + public PersistentMoneyAmountAndCurrency(RoundingMode roundingMode) { + super(); + this.roundingMode = roundingMode; + } + + @Override + protected ColumnMapper[] getColumnMappers() { + return COLUMN_MAPPERS; + } @Override protected Money fromConvertedColumns(Object[] convertedColumns) { CurrencyUnit currencyUnitPart = (CurrencyUnit) convertedColumns[0]; BigDecimal amountPart = (BigDecimal) convertedColumns[1]; - Money money = Money.of(currencyUnitPart, amountPart); + Money money = Money.of(currencyUnitPart, amountPart, roundingMode); return money; } @@ -55,9 +67,9 @@ protected Object[] toConvertedColumns(Money value) { return new Object[] { value.getCurrencyUnit(), value.getAmount() }; } - + @Override - public String[] getPropertyNames() { - return PROPERTY_NAMES; - } + public String[] getPropertyNames() { + return PROPERTY_NAMES; + } } diff --git a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/PersistentMoneyAmountAndCurrencyAsInteger.java b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/PersistentMoneyAmountAndCurrencyAsInteger.java index e081324d..9ddcf497 100644 --- a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/PersistentMoneyAmountAndCurrencyAsInteger.java +++ b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/PersistentMoneyAmountAndCurrencyAsInteger.java @@ -16,6 +16,7 @@ package org.jadira.usertype.moneyandcurrency.joda; import java.math.BigDecimal; +import java.math.RoundingMode; import org.jadira.usertype.moneyandcurrency.joda.columnmapper.IntegerColumnCurrencyUnitMapper; import org.jadira.usertype.moneyandcurrency.legacyjdk.columnmapper.BigDecimalBigDecimalColumnMapper; @@ -35,6 +36,17 @@ public class PersistentMoneyAmountAndCurrencyAsInteger extends AbstractMultiColu private static final String[] PROPERTY_NAMES = new String[]{ "currencyUnit", "amount" }; + private RoundingMode roundingMode; + + public PersistentMoneyAmountAndCurrencyAsInteger() { + this(RoundingMode.HALF_UP); + } + + public PersistentMoneyAmountAndCurrencyAsInteger(RoundingMode roundingMode) { + super(); + this.roundingMode = roundingMode; + } + @Override protected ColumnMapper[] getColumnMappers() { return COLUMN_MAPPERS; @@ -45,7 +57,7 @@ protected Money fromConvertedColumns(Object[] convertedColumns) { CurrencyUnit currencyUnitPart = (CurrencyUnit) convertedColumns[0]; BigDecimal amountPart = (BigDecimal) convertedColumns[1]; - Money money = Money.of(currencyUnitPart, amountPart); + Money money = Money.of(currencyUnitPart, amountPart, roundingMode); return money; } diff --git a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/BigDecimalColumnBigMoneyMapper.java b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/BigDecimalColumnBigMoneyMapper.java index 0f6d46f7..4e48e7f3 100644 --- a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/BigDecimalColumnBigMoneyMapper.java +++ b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/BigDecimalColumnBigMoneyMapper.java @@ -36,7 +36,7 @@ public BigMoney fromNonNullValue(BigDecimal val) { @Override public BigDecimal toNonNullValue(BigMoney value) { if (!currencyUnit.equals(value.getCurrencyUnit())) { - throw new IllegalStateException("Expected currency " + currencyUnit.getCurrencyCode() + " but was " + value.getCurrencyUnit()); + throw new IllegalStateException("Expected currency " + currencyUnit.getCode() + " but was " + value.getCurrencyUnit()); } return BigMoney.of(value).getAmount(); } diff --git a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/BigDecimalColumnMoneyMapper.java b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/BigDecimalColumnMoneyMapper.java index 67f48cfd..31c62b26 100644 --- a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/BigDecimalColumnMoneyMapper.java +++ b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/BigDecimalColumnMoneyMapper.java @@ -36,7 +36,7 @@ public Money fromNonNullValue(BigDecimal val) { @Override public BigDecimal toNonNullValue(Money value) { if (!currencyUnit.equals(value.getCurrencyUnit())) { - throw new IllegalStateException("Expected currency " + currencyUnit.getCurrencyCode() + " but was " + value.getCurrencyUnit()); + throw new IllegalStateException("Expected currency " + currencyUnit.getCode() + " but was " + value.getCurrencyUnit()); } return value.getAmount(); } diff --git a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/IntegerColumnCurrencyUnitMapper.java b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/IntegerColumnCurrencyUnitMapper.java index 0258eaf5..43ee3819 100644 --- a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/IntegerColumnCurrencyUnitMapper.java +++ b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/IntegerColumnCurrencyUnitMapper.java @@ -46,7 +46,7 @@ public CurrencyUnit fromNonNullString(String s) { public String toNonNullString(CurrencyUnit value) { String str = value.getNumeric3Code(); if ("".equals(str)) { - return value.getCurrencyCode(); + return value.getCode(); } else { return str; } diff --git a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/LongColumnBigMoneyMajorMapper.java b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/LongColumnBigMoneyMajorMapper.java index 16e8b239..59d15f28 100644 --- a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/LongColumnBigMoneyMajorMapper.java +++ b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/LongColumnBigMoneyMajorMapper.java @@ -38,7 +38,7 @@ public BigMoney fromNonNullValue(Long value) { @Override public Long toNonNullValue(BigMoney value) { if (!currencyUnit.equals(value.getCurrencyUnit())) { - throw new IllegalStateException("Expected currency " + currencyUnit.getCurrencyCode() + " but was " + value.getCurrencyUnit()); + throw new IllegalStateException("Expected currency " + currencyUnit.getCode() + " but was " + value.getCurrencyUnit()); } return value.toBigMoney().getAmountMajorLong(); } diff --git a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/LongColumnBigMoneyMinorMapper.java b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/LongColumnBigMoneyMinorMapper.java index 50c2496b..c4cd4723 100644 --- a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/LongColumnBigMoneyMinorMapper.java +++ b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/LongColumnBigMoneyMinorMapper.java @@ -34,7 +34,7 @@ public BigMoney fromNonNullValue(Long val) { @Override public Long toNonNullValue(BigMoney value) { if (!currencyUnit.equals(value.getCurrencyUnit())) { - throw new IllegalStateException("Expected currency " + currencyUnit.getCurrencyCode() + " but was " + value.getCurrencyUnit()); + throw new IllegalStateException("Expected currency " + currencyUnit.getCode() + " but was " + value.getCurrencyUnit()); } return value.toBigMoney().getAmountMinorLong(); } diff --git a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/LongColumnMoneyMajorMapper.java b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/LongColumnMoneyMajorMapper.java index ded24e82..212c6f4a 100644 --- a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/LongColumnMoneyMajorMapper.java +++ b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/LongColumnMoneyMajorMapper.java @@ -34,7 +34,7 @@ public Money fromNonNullValue(Long val) { @Override public Long toNonNullValue(Money value) { if (!currencyUnit.equals(value.getCurrencyUnit())) { - throw new IllegalStateException("Expected currency " + currencyUnit.getCurrencyCode() + " but was " + value.getCurrencyUnit()); + throw new IllegalStateException("Expected currency " + currencyUnit.getCode() + " but was " + value.getCurrencyUnit()); } return value.getAmountMajorLong(); } diff --git a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/LongColumnMoneyMinorMapper.java b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/LongColumnMoneyMinorMapper.java index ad1d1475..d7e9c85a 100644 --- a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/LongColumnMoneyMinorMapper.java +++ b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/LongColumnMoneyMinorMapper.java @@ -34,7 +34,7 @@ public Money fromNonNullValue(Long val) { @Override public Long toNonNullValue(Money value) { if (!currencyUnit.equals(value.getCurrencyUnit())) { - throw new IllegalStateException("Expected currency " + currencyUnit.getCurrencyCode() + " but was " + value.getCurrencyUnit()); + throw new IllegalStateException("Expected currency " + currencyUnit.getCode() + " but was " + value.getCurrencyUnit()); } return value.getAmountMinorLong(); } diff --git a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/StringColumnCurrencyUnitMapper.java b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/StringColumnCurrencyUnitMapper.java index 5e66d038..0bb4df16 100644 --- a/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/StringColumnCurrencyUnitMapper.java +++ b/usertype.core/src/main/java/org/jadira/usertype/moneyandcurrency/joda/columnmapper/StringColumnCurrencyUnitMapper.java @@ -29,6 +29,6 @@ public CurrencyUnit fromNonNullValue(String s) { @Override public String toNonNullValue(CurrencyUnit value) { - return value.getCurrencyCode(); + return value.getCode(); } } diff --git a/usertype.core/src/test/java/org/jadira/usertype/moneyandcurrency/joda/TestPersistentCurrencyUnit.java b/usertype.core/src/test/java/org/jadira/usertype/moneyandcurrency/joda/TestPersistentCurrencyUnit.java index 53861350..439e3182 100644 --- a/usertype.core/src/test/java/org/jadira/usertype/moneyandcurrency/joda/TestPersistentCurrencyUnit.java +++ b/usertype.core/src/test/java/org/jadira/usertype/moneyandcurrency/joda/TestPersistentCurrencyUnit.java @@ -24,7 +24,7 @@ public class TestPersistentCurrencyUnit extends AbstractDatabaseTest { - private static final CurrencyUnit[] currencies = new CurrencyUnit[]{CurrencyUnit.EUR, CurrencyUnit.USD, CurrencyUnit.GBP, CurrencyUnit.getInstance("SAR"), null}; + private static final CurrencyUnit[] currencies = new CurrencyUnit[]{CurrencyUnit.EUR, CurrencyUnit.USD, CurrencyUnit.GBP, CurrencyUnit.of("SAR"), null}; public TestPersistentCurrencyUnit() { super(TestJodaMoneySuite.getFactory()); diff --git a/usertype.core/src/test/java/org/jadira/usertype/moneyandcurrency/joda/TestPersistentCurrencyUnitAsInteger.java b/usertype.core/src/test/java/org/jadira/usertype/moneyandcurrency/joda/TestPersistentCurrencyUnitAsInteger.java index 2a7af9e4..f97c52a2 100644 --- a/usertype.core/src/test/java/org/jadira/usertype/moneyandcurrency/joda/TestPersistentCurrencyUnitAsInteger.java +++ b/usertype.core/src/test/java/org/jadira/usertype/moneyandcurrency/joda/TestPersistentCurrencyUnitAsInteger.java @@ -24,7 +24,7 @@ public class TestPersistentCurrencyUnitAsInteger extends AbstractDatabaseTest { - private static final CurrencyUnit[] currencies = new CurrencyUnit[]{CurrencyUnit.EUR, CurrencyUnit.USD, CurrencyUnit.GBP, CurrencyUnit.getInstance("SAR"), null}; + private static final CurrencyUnit[] currencies = new CurrencyUnit[]{CurrencyUnit.EUR, CurrencyUnit.USD, CurrencyUnit.GBP, CurrencyUnit.of("SAR"), null}; public TestPersistentCurrencyUnitAsInteger() { super(TestJodaMoneySuite.getFactory());