From b331a29bf8814b0a2c133428fbdc438157141f7c Mon Sep 17 00:00:00 2001 From: Keith Woodlock Date: Wed, 5 Sep 2012 15:46:53 +0100 Subject: [PATCH] fix up some old validation issues on loans. --- .../platform/charge/domain/Charge.java | 2 -- .../mifosng/platform/loan/domain/Loan.java | 5 ++-- .../platform/loan/domain/LoanCharge.java | 27 ++++++++++++------- .../platform/loan/domain/LoanProduct.java | 1 - ...CalculateLoanScheduleCommandValidator.java | 2 +- 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/charge/domain/Charge.java b/mifosng-provider/src/main/java/org/mifosng/platform/charge/domain/Charge.java index 7af2cd554..bfe88aa97 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/charge/domain/Charge.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/charge/domain/Charge.java @@ -26,11 +26,9 @@ public class Charge extends AbstractAuditableCustom { @Column(name = "charge_applies_to_enum", nullable = false) private Integer chargeAppliesTo; - @SuppressWarnings("unused") @Column(name = "charge_time_enum", nullable = false) private Integer chargeTime; - @SuppressWarnings("unused") @Column(name = "charge_calculation_enum") private Integer chargeCalculation; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/Loan.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/Loan.java index 430035483..d795014e1 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/Loan.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/Loan.java @@ -129,7 +129,6 @@ public class Loan extends AbstractAuditableCustom { @Column(name = "maturedon_date") private Date maturedOnDate; - @SuppressWarnings("unused") @LazyCollection(LazyCollectionOption.FALSE) @OneToMany(cascade = CascadeType.ALL, mappedBy = "loan", orphanRemoval = true) private Set charges; @@ -162,11 +161,11 @@ public class Loan extends AbstractAuditableCustom { return new Loan(client, fund, transactionProcessingStrategy, loanProduct, loanRepaymentScheduleDetail, null); } - public Loan() { + protected Loan() { this.client = null; this.loanProduct = null; this.loanRepaymentScheduleDetail = null; - this.charges = charges; + this.charges = null; } public Loan(final Client client, Fund fund, LoanTransactionProcessingStrategy transactionProcessingStrategy, final LoanProduct loanProduct, diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanCharge.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanCharge.java index a72340f8b..ef9ddcc54 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanCharge.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanCharge.java @@ -7,17 +7,21 @@ import javax.persistence.*; import java.io.Serializable; import java.math.BigDecimal; -@Entity @IdClass(LoanCharge.LoanChargePK.class) +@Entity +@IdClass(LoanCharge.LoanChargePK.class) @Table(name = "m_loan_charge") public class LoanCharge { - @Id + @SuppressWarnings("unused") + @Id private Loan loan; - @Id + @SuppressWarnings("unused") + @Id private Charge charge; - @Column(name = "amount", scale = 6, precision = 19, nullable = false) + @SuppressWarnings("unused") + @Column(name = "amount", scale = 6, precision = 19, nullable = false) private BigDecimal amount; @SuppressWarnings("unused") @@ -28,7 +32,8 @@ public class LoanCharge { @Column(name = "charge_calculation_enum") private Integer chargeCalculation; - public LoanCharge() { + protected LoanCharge() { + // } public LoanCharge(Loan loan, Charge charge, LoanChargeCommand command) { @@ -54,11 +59,11 @@ public class LoanCharge { } } - public LoanCharge(Loan loan, Charge charge) { + public LoanCharge(final Loan loan, final Charge charge) { this(loan, charge, charge.getAmount(), charge.getChargeTime(), charge.getChargeCalculation()); } - public LoanCharge(Loan loan, Charge charge, BigDecimal amount, Integer chargeTime, Integer chargeCalculation) { + public LoanCharge(final Loan loan, final Charge charge, final BigDecimal amount, final Integer chargeTime, final Integer chargeCalculation) { this.loan = loan; this.charge = charge; this.amount = amount; @@ -66,13 +71,15 @@ public class LoanCharge { this.chargeCalculation = chargeCalculation; } - public static class LoanChargePK implements Serializable{ - @Id + public static class LoanChargePK implements Serializable { + @SuppressWarnings("unused") + @Id @ManyToOne(optional = false) @JoinColumn(name = "loan_id", referencedColumnName = "id", nullable=false) private Loan loan; - @Id + @SuppressWarnings("unused") + @Id @ManyToOne(optional = false) @JoinColumn(name = "charge_id", referencedColumnName = "id", nullable=false) private Charge charge; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanProduct.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanProduct.java index 602520803..51573fb1a 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanProduct.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanProduct.java @@ -47,7 +47,6 @@ public class LoanProduct extends AbstractAuditableCustom { @Column(name = "description") private String description; - @SuppressWarnings("unused") @ManyToMany @JoinTable(name = "m_product_loan_charge", joinColumns = @JoinColumn(name = "product_loan_id"), diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculateLoanScheduleCommandValidator.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculateLoanScheduleCommandValidator.java index 045f2e6f7..0cec297fd 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculateLoanScheduleCommandValidator.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculateLoanScheduleCommandValidator.java @@ -33,7 +33,7 @@ public class CalculateLoanScheduleCommandValidator { // FIXME - this constraint doesnt really need to be here. should be possible to express loan term as say 12 months whilst also saying // - that the repayment structure is 6 repayments every bi-monthly. - if (!command.getLoanTermFrequencyType().equals(command.getRepaymentFrequencyType())) { + if (command.getLoanTermFrequencyType() != null && !command.getLoanTermFrequencyType().equals(command.getRepaymentFrequencyType())) { ApiParameterError error = ApiParameterError.parameterError("validation.msg.loan.loanTermFrequencyType.not.the.same.as.repaymentFrequencyType", "The parameters loanTermFrequencyType and repaymentFrequencyType must be the same.", "loanTermFrequencyType", command.getLoanTermFrequencyType(), command.getRepaymentFrequencyType());