MIFOSX-292: ensure correct decimal places value for currency is returned.

This commit is contained in:
Keith Woodlock
2013-04-10 23:26:00 +01:00
parent dbed6037f3
commit b7f72b2943
@@ -37,8 +37,8 @@ public class LoanProductData {
// terms // terms
private final CurrencyData currency; private final CurrencyData currency;
private final BigDecimal principal; private final BigDecimal principal;
private BigDecimal minPrincipal; private final BigDecimal minPrincipal;
private BigDecimal maxPrincipal; private final BigDecimal maxPrincipal;
private final Integer numberOfRepayments; private final Integer numberOfRepayments;
private final Integer minNumberOfRepayments; private final Integer minNumberOfRepayments;
private final Integer maxNumberOfRepayments; private final Integer maxNumberOfRepayments;
@@ -109,12 +109,13 @@ public class LoanProductData {
final Collection<ChargeData> charges = null; final Collection<ChargeData> charges = null;
final EnumOptionData accountingType = null; final EnumOptionData accountingType = null;
return new LoanProductData(id, name, description, currency, principal, minPrincipal, maxPrincipal, tolerance, numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, return new LoanProductData(id, name, description, currency, principal, minPrincipal, maxPrincipal, tolerance, numberOfRepayments,
interestRatePerPeriod, minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, interestRateFrequencyType, amortizationType, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod, minInterestRatePerPeriod,
maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, interestRateFrequencyType, amortizationType,
interestType, interestCalculationPeriodType, fundId, fundName, transactionProcessingStrategyId, interestType, interestCalculationPeriodType, fundId, fundName, transactionProcessingStrategyId,
transactionProcessingStrategyName, charges, accountingType); transactionProcessingStrategyName, charges, accountingType);
} }
public static LoanProductData lookupWithCurrency(final Long id, final String name, final CurrencyData currency) { public static LoanProductData lookupWithCurrency(final Long id, final String name, final CurrencyData currency) {
final String description = null; final String description = null;
final BigDecimal principal = null; final BigDecimal principal = null;
@@ -141,17 +142,18 @@ public class LoanProductData {
final Collection<ChargeData> charges = null; final Collection<ChargeData> charges = null;
final EnumOptionData accountingType = null; final EnumOptionData accountingType = null;
return new LoanProductData(id, name, description, currency, principal, minPrincipal, maxPrincipal, tolerance, numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, return new LoanProductData(id, name, description, currency, principal, minPrincipal, maxPrincipal, tolerance, numberOfRepayments,
interestRatePerPeriod, minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, interestRateFrequencyType, amortizationType, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod, minInterestRatePerPeriod,
maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, interestRateFrequencyType, amortizationType,
interestType, interestCalculationPeriodType, fundId, fundName, transactionProcessingStrategyId, interestType, interestCalculationPeriodType, fundId, fundName, transactionProcessingStrategyId,
transactionProcessingStrategyName, charges, accountingType); transactionProcessingStrategyName, charges, accountingType);
} }
public static LoanProductData sensibleDefaultsForNewLoanProductCreation() { public static LoanProductData sensibleDefaultsForNewLoanProductCreation() {
final Long id = null; final Long id = null;
final String name = null; final String name = null;
final String description = null; final String description = null;
final CurrencyData currency = CurrencyData.blank(); final CurrencyData currency = null;
final BigDecimal principal = null; final BigDecimal principal = null;
final BigDecimal minPrincipal = null; final BigDecimal minPrincipal = null;
final BigDecimal maxPrincipal = null; final BigDecimal maxPrincipal = null;
@@ -202,11 +204,19 @@ public class LoanProductData {
final EnumOptionData interestCalculationPeriodType, final Long fundId, final String fundName, final EnumOptionData interestCalculationPeriodType, final Long fundId, final String fundName,
final Long transactionProcessingStrategyId, final String transactionProcessingStrategyName, final Long transactionProcessingStrategyId, final String transactionProcessingStrategyName,
final Collection<ChargeData> charges, final EnumOptionData accountingType) { final Collection<ChargeData> charges, final EnumOptionData accountingType) {
this.id = id; this.id = id;
this.name = name; this.name = name;
this.description = description; this.description = description;
this.currency = currency; if (currency == null) {
if (this.currencyOptions != null && this.currencyOptions.size() == 1) {
this.currency = new ArrayList<CurrencyData>(this.currencyOptions).get(0);
} else {
this.currency = CurrencyData.blank();
}
} else {
this.currency = currency;
}
this.principal = principal; this.principal = principal;
this.minPrincipal = minPrincipal; this.minPrincipal = minPrincipal;
this.maxPrincipal = maxPrincipal; this.maxPrincipal = maxPrincipal;
@@ -282,17 +292,13 @@ public class LoanProductData {
this.chargeOptions = chargeOptions; this.chargeOptions = chargeOptions;
this.currencyOptions = currencyOptions; this.currencyOptions = currencyOptions;
if (this.currencyOptions != null && this.currencyOptions.size() == 1) { this.currency = productData.currency;
this.currency = new ArrayList<CurrencyData>(this.currencyOptions).get(0);
} else {
this.currency = productData.currency;
}
this.fundOptions = fundOptions; this.fundOptions = fundOptions;
this.transactionProcessingStrategyOptions = transactionStrategyOptions; this.transactionProcessingStrategyOptions = transactionStrategyOptions;
if (this.transactionProcessingStrategyOptions != null && this.transactionProcessingStrategyOptions.size() == 1) { if (this.transactionProcessingStrategyOptions != null && this.transactionProcessingStrategyOptions.size() == 1) {
final List<TransactionProcessingStrategyData> listOfOptions = new ArrayList<TransactionProcessingStrategyData>( final List<TransactionProcessingStrategyData> listOfOptions = new ArrayList<TransactionProcessingStrategyData>(
this.transactionProcessingStrategyOptions); this.transactionProcessingStrategyOptions);
this.transactionProcessingStrategyId = listOfOptions.get(0).id(); this.transactionProcessingStrategyId = listOfOptions.get(0).id();
this.transactionProcessingStrategyName = listOfOptions.get(0).name(); this.transactionProcessingStrategyName = listOfOptions.get(0).name();
} else { } else {
@@ -379,7 +385,7 @@ public class LoanProductData {
public BigDecimal getMinPrincipal() { public BigDecimal getMinPrincipal() {
return this.minPrincipal; return this.minPrincipal;
} }
public BigDecimal getMaxPrincipal() { public BigDecimal getMaxPrincipal() {
return this.maxPrincipal; return this.maxPrincipal;
} }
@@ -451,8 +457,9 @@ public class LoanProductData {
public Collection<ChargeData> getChargeOptions() { public Collection<ChargeData> getChargeOptions() {
return chargeOptions; return chargeOptions;
} }
@Override @Override
public boolean equals(Object obj) { public boolean equals(final Object obj) {
LoanProductData loanProductData = (LoanProductData) obj; LoanProductData loanProductData = (LoanProductData) obj;
return loanProductData.id.equals(this.id); return loanProductData.id.equals(this.id);
} }