MIFOSX-97: organise classes into new package structure.

This commit is contained in:
Keith Woodlock
2012-12-02 21:10:23 +00:00
parent c395d96517
commit 082d77f5b6
29 changed files with 299 additions and 316 deletions
+8 -11
View File
@@ -22,14 +22,11 @@ sourceCompatibility = JavaVersion.VERSION_1_6
/* define binary compatiblity version */ /* define binary compatiblity version */
targetCompatibility = JavaVersion.VERSION_1_6 targetCompatibility = JavaVersion.VERSION_1_6
// targetCompatibility = 1.6 project.ext.springVersion = '3.1.3.RELEASE'
// sourceCompatibility = 1.6 project.ext.springSecurityVersion = '3.1.3.RELEASE'
project.ext.hibernateValidatorVersion = '4.3.1.Final'
project.ext.springVersion = '3.1.1.RELEASE' project.ext.hibernateCoreVersion = '4.1.8.Final'
project.ext.springSecurityVersion = '3.1.0.RELEASE' project.ext.jerseyVersion = '1.16'
project.ext.hibernateValidatorVersion = '4.3.0.Final'
project.ext.hibernateCoreVersion = '4.1.3.Final'
project.ext.jerseyVersion = '1.13'
project.ext.springDataJpaVersion = '1.0.3.RELEASE' project.ext.springDataJpaVersion = '1.0.3.RELEASE'
repositories { repositories {
@@ -63,7 +60,7 @@ configurations {
} }
dependencies { dependencies {
def tomcatVersion = '7.0.29' def tomcatVersion = '7.0.33'
tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}", tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}" "org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}"
tomcat("org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}") { tomcat("org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}") {
@@ -111,8 +108,8 @@ dependencies {
[group: 'ch.qos.logback', name: 'logback-core', version: '1.0.6'], [group: 'ch.qos.logback', name: 'logback-core', version: '1.0.6'],
[group: 'ch.qos.logback', name: 'logback-classic', version: '1.0.6'], [group: 'ch.qos.logback', name: 'logback-classic', version: '1.0.6'],
[group: 'mysql', name: 'mysql-connector-java', version: '5.1.21'], [group: 'mysql', name: 'mysql-connector-java', version: '5.1.22'],
[group: 'org.apache.tomcat', name: 'tomcat-jdbc', version: '7.0.29'], [group: 'org.apache.tomcat', name: 'tomcat-jdbc', version: '7.0.33'],
[group: 'pentaho-reporting-engine', name: 'pentaho-reporting-engine-classic-core', version: '3.8.3-GA'], [group: 'pentaho-reporting-engine', name: 'pentaho-reporting-engine-classic-core', version: '3.8.3-GA'],
[group: 'pentaho-reporting-engine', name: 'pentaho-reporting-engine-classic-extensions', version: '3.8.3-GA'], [group: 'pentaho-reporting-engine', name: 'pentaho-reporting-engine-classic-extensions', version: '3.8.3-GA'],
@@ -1,12 +1,10 @@
package org.mifosplatform.infrastructure.configuration.domain; package org.mifosplatform.infrastructure.configuration.domain;
import java.io.Serializable;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Embeddable; import javax.persistence.Embeddable;
@Embeddable @Embeddable
public class MonetaryCurrency implements Serializable { public class MonetaryCurrency {
@Column(name = "currency_code", length = 3, nullable = false) @Column(name = "currency_code", length = 3, nullable = false)
private final String code; private final String code;
@@ -1,6 +1,5 @@
package org.mifosplatform.infrastructure.configuration.domain; package org.mifosplatform.infrastructure.configuration.domain;
import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.Iterator; import java.util.Iterator;
@@ -9,15 +8,15 @@ import javax.persistence.Column;
import javax.persistence.Embeddable; import javax.persistence.Embeddable;
@Embeddable @Embeddable
public class Money implements Comparable<Money>, Serializable { public class Money implements Comparable<Money> {
@Column(name = "currency_code", length=3) @Column(name = "currency_code", length = 3)
private final String currencyCode; private final String currencyCode;
@Column(name = "currency_digits") @Column(name = "currency_digits")
private final int currencyDigitsAfterDecimal; private final int currencyDigitsAfterDecimal;
@Column(name = "amount", scale=6, precision=19) @Column(name = "amount", scale = 6, precision = 19)
private final BigDecimal amount; private final BigDecimal amount;
public static Money total(final Money... monies) { public static Money total(final Money... monies) {
@@ -39,12 +38,12 @@ public class Money implements Comparable<Money>, Serializable {
return total; return total;
} }
public static Money of(final MonetaryCurrency currency, final BigDecimal newAmount) { public static Money of(final MonetaryCurrency currency, final BigDecimal newAmount) {
return new Money(currency.getCode(), currency.getDigitsAfterDecimal(), defaultToZeroIfNull(newAmount)); return new Money(currency.getCode(), currency.getDigitsAfterDecimal(), defaultToZeroIfNull(newAmount));
} }
public static Money zero(final MonetaryCurrency currency) { public static Money zero(final MonetaryCurrency currency) {
return new Money(currency.getCode(), currency.getDigitsAfterDecimal(), BigDecimal.ZERO); return new Money(currency.getCode(), currency.getDigitsAfterDecimal(), BigDecimal.ZERO);
} }
protected Money() { protected Money() {
@@ -63,12 +62,12 @@ public class Money implements Comparable<Money>, Serializable {
} }
private static BigDecimal defaultToZeroIfNull(final BigDecimal value) { private static BigDecimal defaultToZeroIfNull(final BigDecimal value) {
BigDecimal result = BigDecimal.ZERO; BigDecimal result = BigDecimal.ZERO;
if (value != null) { if (value != null) {
result = value; result = value;
} }
return result; return result;
} }
public Money copy() { public Money copy() {
return new Money(this.currencyCode, this.currencyDigitsAfterDecimal, this.amount.stripTrailingZeros()); return new Money(this.currencyCode, this.currencyDigitsAfterDecimal, this.amount.stripTrailingZeros());
@@ -83,7 +82,7 @@ public class Money implements Comparable<Money>, Serializable {
return Money.of(monetaryCurrency(), total); return Money.of(monetaryCurrency(), total);
} }
public Money plus(final Money moneyToAdd) { public Money plus(final Money moneyToAdd) {
Money toAdd = this.checkCurrencyEqual(moneyToAdd); Money toAdd = this.checkCurrencyEqual(moneyToAdd);
return this.plus(toAdd.getAmount()); return this.plus(toAdd.getAmount());
} }
@@ -170,9 +169,8 @@ public class Money implements Comparable<Money>, Serializable {
@Override @Override
public int compareTo(final Money other) { public int compareTo(final Money other) {
Money otherMoney = other; Money otherMoney = other;
if (this.currencyCode.equals(otherMoney.currencyCode) == false) { if (this.currencyCode.equals(otherMoney.currencyCode) == false) { throw new UnsupportedOperationException(
throw new UnsupportedOperationException("currencies arent different"); "currencies arent different"); }
}
return this.amount.compareTo(otherMoney.amount); return this.amount.compareTo(otherMoney.amount);
} }
@@ -222,17 +220,11 @@ public class Money implements Comparable<Money>, Serializable {
@Override @Override
public String toString() { public String toString() {
return new StringBuilder() return new StringBuilder().append(this.currencyCode).append(' ').append(this.amount.toPlainString()).toString();
.append(this.currencyCode)
.append(' ')
.append(this.amount.toPlainString())
.toString();
} }
public Money negated() { public Money negated() {
if (this.isZero()) { if (this.isZero()) { return this; }
return this;
}
return Money.of(monetaryCurrency(), this.amount.negate()); return Money.of(monetaryCurrency(), this.amount.negate());
} }
@@ -240,11 +232,11 @@ public class Money implements Comparable<Money>, Serializable {
return this.isLessThanZero() ? this.negated() : this; return this.isLessThanZero() ? this.negated() : this;
} }
public MonetaryCurrency getCurrency() { public MonetaryCurrency getCurrency() {
return monetaryCurrency(); return monetaryCurrency();
} }
private MonetaryCurrency monetaryCurrency() { private MonetaryCurrency monetaryCurrency() {
return new MonetaryCurrency(this.currencyCode, this.currencyDigitsAfterDecimal); return new MonetaryCurrency(this.currencyCode, this.currencyDigitsAfterDecimal);
} }
} }
@@ -7,8 +7,6 @@ import java.util.Set;
import org.mifosng.platform.api.data.DepositAccountData; import org.mifosng.platform.api.data.DepositAccountData;
import org.mifosng.platform.api.data.DepositProductData; import org.mifosng.platform.api.data.DepositProductData;
import org.mifosng.platform.api.data.GroupAccountSummaryCollectionData;
import org.mifosng.platform.api.data.GroupData;
import org.mifosng.platform.api.data.SavingAccountData; import org.mifosng.platform.api.data.SavingAccountData;
import org.mifosng.platform.api.data.SavingProductData; import org.mifosng.platform.api.data.SavingProductData;
import org.mifosplatform.commands.api.data.CommandSourceData; import org.mifosplatform.commands.api.data.CommandSourceData;
@@ -33,6 +31,8 @@ import org.mifosplatform.portfolio.client.data.ClientData;
import org.mifosplatform.portfolio.client.data.ClientIdentifierData; import org.mifosplatform.portfolio.client.data.ClientIdentifierData;
import org.mifosplatform.portfolio.client.data.NoteData; import org.mifosplatform.portfolio.client.data.NoteData;
import org.mifosplatform.portfolio.fund.data.FundData; import org.mifosplatform.portfolio.fund.data.FundData;
import org.mifosplatform.portfolio.group.data.GroupAccountSummaryCollectionData;
import org.mifosplatform.portfolio.group.data.GroupData;
import org.mifosplatform.portfolio.loanaccount.data.LoanAccountData; import org.mifosplatform.portfolio.loanaccount.data.LoanAccountData;
import org.mifosplatform.portfolio.loanaccount.data.LoanChargeData; import org.mifosplatform.portfolio.loanaccount.data.LoanChargeData;
import org.mifosplatform.portfolio.loanaccount.data.LoanTransactionData; import org.mifosplatform.portfolio.loanaccount.data.LoanTransactionData;
@@ -6,7 +6,6 @@ import org.mifosng.platform.api.commands.DepositAccountWithdrawalCommand;
import org.mifosng.platform.api.commands.DepositProductCommand; import org.mifosng.platform.api.commands.DepositProductCommand;
import org.mifosng.platform.api.commands.DepositStateTransitionApprovalCommand; import org.mifosng.platform.api.commands.DepositStateTransitionApprovalCommand;
import org.mifosng.platform.api.commands.DepositStateTransitionCommand; import org.mifosng.platform.api.commands.DepositStateTransitionCommand;
import org.mifosng.platform.api.commands.GroupCommand;
import org.mifosng.platform.api.commands.SavingAccountCommand; import org.mifosng.platform.api.commands.SavingAccountCommand;
import org.mifosng.platform.api.commands.SavingProductCommand; import org.mifosng.platform.api.commands.SavingProductCommand;
import org.mifosplatform.infrastructure.codes.command.CodeCommand; import org.mifosplatform.infrastructure.codes.command.CodeCommand;
@@ -25,6 +24,7 @@ import org.mifosplatform.portfolio.client.command.ClientIdentifierCommand;
import org.mifosplatform.portfolio.client.command.NoteCommand; import org.mifosplatform.portfolio.client.command.NoteCommand;
import org.mifosplatform.portfolio.client.data.ClientData; import org.mifosplatform.portfolio.client.data.ClientData;
import org.mifosplatform.portfolio.fund.command.FundCommand; import org.mifosplatform.portfolio.fund.command.FundCommand;
import org.mifosplatform.portfolio.group.command.GroupCommand;
import org.mifosplatform.portfolio.loanaccount.command.AdjustLoanTransactionCommand; import org.mifosplatform.portfolio.loanaccount.command.AdjustLoanTransactionCommand;
import org.mifosplatform.portfolio.loanaccount.command.LoanApplicationCommand; import org.mifosplatform.portfolio.loanaccount.command.LoanApplicationCommand;
import org.mifosplatform.portfolio.loanaccount.command.LoanChargeCommand; import org.mifosplatform.portfolio.loanaccount.command.LoanChargeCommand;
@@ -23,7 +23,6 @@ import org.mifosng.platform.api.commands.DepositAccountWithdrawalCommand;
import org.mifosng.platform.api.commands.DepositProductCommand; import org.mifosng.platform.api.commands.DepositProductCommand;
import org.mifosng.platform.api.commands.DepositStateTransitionApprovalCommand; import org.mifosng.platform.api.commands.DepositStateTransitionApprovalCommand;
import org.mifosng.platform.api.commands.DepositStateTransitionCommand; import org.mifosng.platform.api.commands.DepositStateTransitionCommand;
import org.mifosng.platform.api.commands.GroupCommand;
import org.mifosng.platform.api.commands.SavingAccountCommand; import org.mifosng.platform.api.commands.SavingAccountCommand;
import org.mifosng.platform.api.commands.SavingProductCommand; import org.mifosng.platform.api.commands.SavingProductCommand;
import org.mifosplatform.infrastructure.codes.command.CodeCommand; import org.mifosplatform.infrastructure.codes.command.CodeCommand;
@@ -46,6 +45,7 @@ import org.mifosplatform.portfolio.client.command.ClientIdentifierCommand;
import org.mifosplatform.portfolio.client.command.NoteCommand; import org.mifosplatform.portfolio.client.command.NoteCommand;
import org.mifosplatform.portfolio.client.data.ClientData; import org.mifosplatform.portfolio.client.data.ClientData;
import org.mifosplatform.portfolio.fund.command.FundCommand; import org.mifosplatform.portfolio.fund.command.FundCommand;
import org.mifosplatform.portfolio.group.command.GroupCommand;
import org.mifosplatform.portfolio.loanaccount.command.AdjustLoanTransactionCommand; import org.mifosplatform.portfolio.loanaccount.command.AdjustLoanTransactionCommand;
import org.mifosplatform.portfolio.loanaccount.command.LoanApplicationCommand; import org.mifosplatform.portfolio.loanaccount.command.LoanApplicationCommand;
import org.mifosplatform.portfolio.loanaccount.command.LoanChargeCommand; import org.mifosplatform.portfolio.loanaccount.command.LoanChargeCommand;
@@ -5,8 +5,6 @@ import java.util.Set;
import org.mifosng.platform.api.data.DepositAccountData; import org.mifosng.platform.api.data.DepositAccountData;
import org.mifosng.platform.api.data.DepositProductData; import org.mifosng.platform.api.data.DepositProductData;
import org.mifosng.platform.api.data.GroupAccountSummaryCollectionData;
import org.mifosng.platform.api.data.GroupData;
import org.mifosng.platform.api.data.SavingAccountData; import org.mifosng.platform.api.data.SavingAccountData;
import org.mifosng.platform.api.data.SavingProductData; import org.mifosng.platform.api.data.SavingProductData;
import org.mifosplatform.commands.api.data.CommandSourceData; import org.mifosplatform.commands.api.data.CommandSourceData;
@@ -31,6 +29,8 @@ import org.mifosplatform.portfolio.client.data.ClientData;
import org.mifosplatform.portfolio.client.data.ClientIdentifierData; import org.mifosplatform.portfolio.client.data.ClientIdentifierData;
import org.mifosplatform.portfolio.client.data.NoteData; import org.mifosplatform.portfolio.client.data.NoteData;
import org.mifosplatform.portfolio.fund.data.FundData; import org.mifosplatform.portfolio.fund.data.FundData;
import org.mifosplatform.portfolio.group.data.GroupAccountSummaryCollectionData;
import org.mifosplatform.portfolio.group.data.GroupData;
import org.mifosplatform.portfolio.loanaccount.data.LoanAccountData; import org.mifosplatform.portfolio.loanaccount.data.LoanAccountData;
import org.mifosplatform.portfolio.loanaccount.data.LoanChargeData; import org.mifosplatform.portfolio.loanaccount.data.LoanChargeData;
import org.mifosplatform.portfolio.loanaccount.data.LoanTransactionData; import org.mifosplatform.portfolio.loanaccount.data.LoanTransactionData;
@@ -3,8 +3,8 @@ package org.mifosplatform.infrastructure.staff.data;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import org.mifosng.platform.api.data.GroupAccountSummaryData;
import org.mifosplatform.portfolio.client.data.ClientAccountSummaryData; import org.mifosplatform.portfolio.client.data.ClientAccountSummaryData;
import org.mifosplatform.portfolio.group.data.GroupAccountSummaryData;
/** /**
* *
@@ -6,8 +6,6 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.mifosng.platform.api.data.GroupAccountSummaryData;
import org.mifosng.platform.group.service.GroupReadPlatformService;
import org.mifosplatform.infrastructure.core.domain.JdbcSupport; import org.mifosplatform.infrastructure.core.domain.JdbcSupport;
import org.mifosplatform.infrastructure.core.service.TenantAwareRoutingDataSource; import org.mifosplatform.infrastructure.core.service.TenantAwareRoutingDataSource;
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext; import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
@@ -16,6 +14,8 @@ import org.mifosplatform.infrastructure.staff.data.StaffData;
import org.mifosplatform.infrastructure.staff.exception.StaffNotFoundException; import org.mifosplatform.infrastructure.staff.exception.StaffNotFoundException;
import org.mifosplatform.portfolio.client.data.ClientAccountSummaryData; import org.mifosplatform.portfolio.client.data.ClientAccountSummaryData;
import org.mifosplatform.portfolio.client.service.ClientReadPlatformService; import org.mifosplatform.portfolio.client.service.ClientReadPlatformService;
import org.mifosplatform.portfolio.group.data.GroupAccountSummaryData;
import org.mifosplatform.portfolio.group.service.GroupReadPlatformService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
@@ -56,9 +56,6 @@ import com.sun.jersey.core.header.FormDataContentDisposition;
import com.sun.jersey.multipart.FormDataBodyPart; import com.sun.jersey.multipart.FormDataBodyPart;
import com.sun.jersey.multipart.FormDataParam; import com.sun.jersey.multipart.FormDataParam;
/**
* test commit. again.
*/
@Path("/clients") @Path("/clients")
@Component @Component
@Scope("singleton") @Scope("singleton")
@@ -1,4 +1,4 @@
package org.mifosng.platform.api; package org.mifosplatform.portfolio.group.api;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
@@ -20,11 +20,6 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo; import javax.ws.rs.core.UriInfo;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.mifosng.platform.api.commands.GroupCommand;
import org.mifosng.platform.api.data.GroupAccountSummaryCollectionData;
import org.mifosng.platform.api.data.GroupData;
import org.mifosng.platform.group.service.GroupReadPlatformService;
import org.mifosng.platform.group.service.GroupWritePlatformService;
import org.mifosplatform.infrastructure.core.api.ApiParameterHelper; import org.mifosplatform.infrastructure.core.api.ApiParameterHelper;
import org.mifosplatform.infrastructure.core.api.PortfolioApiDataConversionService; import org.mifosplatform.infrastructure.core.api.PortfolioApiDataConversionService;
import org.mifosplatform.infrastructure.core.api.PortfolioApiJsonSerializerService; import org.mifosplatform.infrastructure.core.api.PortfolioApiJsonSerializerService;
@@ -34,6 +29,11 @@ import org.mifosplatform.infrastructure.office.service.OfficeReadPlatformService
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext; import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
import org.mifosplatform.portfolio.client.data.ClientLookup; import org.mifosplatform.portfolio.client.data.ClientLookup;
import org.mifosplatform.portfolio.client.service.ClientReadPlatformService; import org.mifosplatform.portfolio.client.service.ClientReadPlatformService;
import org.mifosplatform.portfolio.group.command.GroupCommand;
import org.mifosplatform.portfolio.group.data.GroupAccountSummaryCollectionData;
import org.mifosplatform.portfolio.group.data.GroupData;
import org.mifosplatform.portfolio.group.service.GroupReadPlatformService;
import org.mifosplatform.portfolio.group.service.GroupWritePlatformService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -1,4 +1,4 @@
package org.mifosng.platform.api.commands; package org.mifosplatform.portfolio.group.command;
import java.util.Set; import java.util.Set;
@@ -1,9 +1,8 @@
package org.mifosng.platform.group.service; package org.mifosplatform.portfolio.group.command;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.mifosng.platform.api.commands.GroupCommand;
import org.mifosplatform.infrastructure.core.data.ApiParameterError; import org.mifosplatform.infrastructure.core.data.ApiParameterError;
import org.mifosplatform.infrastructure.core.data.DataValidatorBuilder; import org.mifosplatform.infrastructure.core.data.DataValidatorBuilder;
import org.mifosplatform.infrastructure.core.exception.PlatformApiDataValidationException; import org.mifosplatform.infrastructure.core.exception.PlatformApiDataValidationException;
@@ -1,4 +1,4 @@
package org.mifosng.platform.api.data; package org.mifosplatform.portfolio.group.data;
import java.util.List; import java.util.List;
@@ -1,4 +1,4 @@
package org.mifosng.platform.api.data; package org.mifosplatform.portfolio.group.data;
/** /**
* Immutable data object for group loan accounts. * Immutable data object for group loan accounts.
@@ -1,4 +1,4 @@
package org.mifosng.platform.api.data; package org.mifosplatform.portfolio.group.data;
import java.util.Collection; import java.util.Collection;
@@ -1,4 +1,4 @@
package org.mifosng.platform.group.domain; package org.mifosplatform.portfolio.group.domain;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
@@ -12,11 +12,11 @@ import javax.persistence.ManyToOne;
import javax.persistence.Table; import javax.persistence.Table;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.mifosng.platform.api.commands.GroupCommand;
import org.mifosplatform.infrastructure.core.domain.AbstractAuditableCustom; import org.mifosplatform.infrastructure.core.domain.AbstractAuditableCustom;
import org.mifosplatform.infrastructure.office.domain.Office; import org.mifosplatform.infrastructure.office.domain.Office;
import org.mifosplatform.infrastructure.user.domain.AppUser; import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.mifosplatform.portfolio.client.domain.Client; import org.mifosplatform.portfolio.client.domain.Client;
import org.mifosplatform.portfolio.group.command.GroupCommand;
@Entity @Entity
@Table(name = "m_group") @Table(name = "m_group")
@@ -1,4 +1,4 @@
package org.mifosng.platform.group.domain; package org.mifosplatform.portfolio.group.domain;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
@@ -1,4 +1,4 @@
package org.mifosng.platform.exceptions; package org.mifosplatform.portfolio.group.exception;
import org.mifosplatform.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; import org.mifosplatform.infrastructure.core.exception.AbstractPlatformResourceNotFoundException;
@@ -1,11 +1,11 @@
package org.mifosng.platform.group.service; package org.mifosplatform.portfolio.group.service;
import java.util.Collection; import java.util.Collection;
import org.mifosng.platform.api.data.GroupAccountSummaryCollectionData;
import org.mifosng.platform.api.data.GroupAccountSummaryData;
import org.mifosng.platform.api.data.GroupData;
import org.mifosplatform.portfolio.client.data.ClientLookup; import org.mifosplatform.portfolio.client.data.ClientLookup;
import org.mifosplatform.portfolio.group.data.GroupAccountSummaryCollectionData;
import org.mifosplatform.portfolio.group.data.GroupAccountSummaryData;
import org.mifosplatform.portfolio.group.data.GroupData;
public interface GroupReadPlatformService { public interface GroupReadPlatformService {
@@ -1,4 +1,4 @@
package org.mifosng.platform.group.service; package org.mifosplatform.portfolio.group.service;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
@@ -7,10 +7,6 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.mifosng.platform.api.data.GroupAccountSummaryCollectionData;
import org.mifosng.platform.api.data.GroupAccountSummaryData;
import org.mifosng.platform.api.data.GroupData;
import org.mifosng.platform.exceptions.GroupNotFoundException;
import org.mifosplatform.infrastructure.core.domain.JdbcSupport; import org.mifosplatform.infrastructure.core.domain.JdbcSupport;
import org.mifosplatform.infrastructure.core.service.TenantAwareRoutingDataSource; import org.mifosplatform.infrastructure.core.service.TenantAwareRoutingDataSource;
import org.mifosplatform.infrastructure.office.data.OfficeLookup; import org.mifosplatform.infrastructure.office.data.OfficeLookup;
@@ -19,6 +15,10 @@ import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext
import org.mifosplatform.portfolio.client.data.ClientLookup; import org.mifosplatform.portfolio.client.data.ClientLookup;
import org.mifosplatform.portfolio.client.service.ClientReadPlatformService; import org.mifosplatform.portfolio.client.service.ClientReadPlatformService;
import org.mifosplatform.portfolio.client.service.LoanStatusMapper; import org.mifosplatform.portfolio.client.service.LoanStatusMapper;
import org.mifosplatform.portfolio.group.data.GroupAccountSummaryCollectionData;
import org.mifosplatform.portfolio.group.data.GroupAccountSummaryData;
import org.mifosplatform.portfolio.group.data.GroupData;
import org.mifosplatform.portfolio.group.exception.GroupNotFoundException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
@@ -1,7 +1,7 @@
package org.mifosng.platform.group.service; package org.mifosplatform.portfolio.group.service;
import org.mifosng.platform.api.commands.GroupCommand;
import org.mifosplatform.infrastructure.core.data.EntityIdentifier; import org.mifosplatform.infrastructure.core.data.EntityIdentifier;
import org.mifosplatform.portfolio.group.command.GroupCommand;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
public interface GroupWritePlatformService { public interface GroupWritePlatformService {
@@ -1,12 +1,8 @@
package org.mifosng.platform.group.service; package org.mifosplatform.portfolio.group.service;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import org.mifosng.platform.api.commands.GroupCommand;
import org.mifosng.platform.exceptions.GroupNotFoundException;
import org.mifosng.platform.group.domain.Group;
import org.mifosng.platform.group.domain.GroupRepository;
import org.mifosplatform.infrastructure.core.data.EntityIdentifier; import org.mifosplatform.infrastructure.core.data.EntityIdentifier;
import org.mifosplatform.infrastructure.core.exception.PlatformDataIntegrityException; import org.mifosplatform.infrastructure.core.exception.PlatformDataIntegrityException;
import org.mifosplatform.infrastructure.office.domain.Office; import org.mifosplatform.infrastructure.office.domain.Office;
@@ -17,6 +13,11 @@ import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext
import org.mifosplatform.portfolio.client.domain.Client; import org.mifosplatform.portfolio.client.domain.Client;
import org.mifosplatform.portfolio.client.domain.ClientRepository; import org.mifosplatform.portfolio.client.domain.ClientRepository;
import org.mifosplatform.portfolio.client.exception.ClientNotFoundException; import org.mifosplatform.portfolio.client.exception.ClientNotFoundException;
import org.mifosplatform.portfolio.group.command.GroupCommand;
import org.mifosplatform.portfolio.group.command.GroupCommandValidator;
import org.mifosplatform.portfolio.group.domain.Group;
import org.mifosplatform.portfolio.group.domain.GroupRepository;
import org.mifosplatform.portfolio.group.exception.GroupNotFoundException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -26,7 +26,6 @@ import org.apache.commons.lang.StringUtils;
import org.hibernate.annotations.LazyCollection; import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption; import org.hibernate.annotations.LazyCollectionOption;
import org.joda.time.LocalDate; import org.joda.time.LocalDate;
import org.mifosng.platform.group.domain.Group;
import org.mifosplatform.infrastructure.configuration.domain.MonetaryCurrency; import org.mifosplatform.infrastructure.configuration.domain.MonetaryCurrency;
import org.mifosplatform.infrastructure.configuration.domain.Money; import org.mifosplatform.infrastructure.configuration.domain.Money;
import org.mifosplatform.infrastructure.core.domain.AbstractAuditableCustom; import org.mifosplatform.infrastructure.core.domain.AbstractAuditableCustom;
@@ -35,6 +34,7 @@ import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.mifosplatform.portfolio.charge.exception.LoanChargeCannotBeAddedException; import org.mifosplatform.portfolio.charge.exception.LoanChargeCannotBeAddedException;
import org.mifosplatform.portfolio.client.domain.Client; import org.mifosplatform.portfolio.client.domain.Client;
import org.mifosplatform.portfolio.fund.domain.Fund; import org.mifosplatform.portfolio.fund.domain.Fund;
import org.mifosplatform.portfolio.group.domain.Group;
import org.mifosplatform.portfolio.loanaccount.command.LoanApplicationCommand; import org.mifosplatform.portfolio.loanaccount.command.LoanApplicationCommand;
import org.mifosplatform.portfolio.loanaccount.command.LoanChargeCommand; import org.mifosplatform.portfolio.loanaccount.command.LoanChargeCommand;
import org.mifosplatform.portfolio.loanaccount.exception.InvalidLoanStateTransitionException; import org.mifosplatform.portfolio.loanaccount.exception.InvalidLoanStateTransitionException;
@@ -6,8 +6,6 @@ import java.util.Date;
import javax.persistence.CascadeType; import javax.persistence.CascadeType;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn; import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.OneToOne; import javax.persistence.OneToOne;
@@ -35,34 +33,33 @@ import org.springframework.format.annotation.DateTimeFormat;
public class LoanTransaction extends AbstractAuditableCustom<AppUser, Long> { public class LoanTransaction extends AbstractAuditableCustom<AppUser, Long> {
@ManyToOne(optional = false) @ManyToOne(optional = false)
@JoinColumn(name = "loan_id", nullable=false) @JoinColumn(name = "loan_id", nullable = false)
private Loan loan; private Loan loan;
@Column(name = "amount", scale = 6, precision = 19, nullable = false) @Column(name = "amount", scale = 6, precision = 19, nullable = false)
private BigDecimal amount; private BigDecimal amount;
@Column(name = "principal_portion_derived", scale = 6, precision = 19, nullable = true) @Column(name = "principal_portion_derived", scale = 6, precision = 19, nullable = true)
private BigDecimal principalPortion = BigDecimal.ZERO; private BigDecimal principalPortion = BigDecimal.ZERO;
@Column(name = "interest_portion_derived", scale = 6, precision = 19, nullable = true) @Column(name = "interest_portion_derived", scale = 6, precision = 19, nullable = true)
private BigDecimal interestPortion = BigDecimal.ZERO; private BigDecimal interestPortion = BigDecimal.ZERO;
@Column(name = "fee_charges_portion_derived", scale = 6, precision = 19, nullable = true) @Column(name = "fee_charges_portion_derived", scale = 6, precision = 19, nullable = true)
private BigDecimal feeChargesPortion = BigDecimal.ZERO; private BigDecimal feeChargesPortion = BigDecimal.ZERO;
@Column(name = "penalty_charges_portion_derived", scale = 6, precision = 19, nullable = true) @Column(name = "penalty_charges_portion_derived", scale = 6, precision = 19, nullable = true)
private BigDecimal penaltyChargesPortion = BigDecimal.ZERO; private BigDecimal penaltyChargesPortion = BigDecimal.ZERO;
@Temporal(TemporalType.DATE) @Temporal(TemporalType.DATE)
@Column(name = "transaction_date", nullable=false) @Column(name = "transaction_date", nullable = false)
private final Date dateOf; private final Date dateOf;
@Enumerated(EnumType.ORDINAL) @Column(name = "transaction_type_enum", nullable = false)
@Column(name = "transaction_type_enum", nullable = false) private Integer typeOf;
private Integer typeOf;
@OneToOne(optional=true, cascade={CascadeType.PERSIST}) @OneToOne(optional = true, cascade = { CascadeType.PERSIST })
@JoinColumn(name="contra_id") @JoinColumn(name = "contra_id")
private LoanTransaction contra; private LoanTransaction contra;
protected LoanTransaction() { protected LoanTransaction() {
@@ -72,210 +69,215 @@ public class LoanTransaction extends AbstractAuditableCustom<AppUser, Long> {
} }
public static LoanTransaction disbursement(final Money amount, final LocalDate disbursementDate) { public static LoanTransaction disbursement(final Money amount, final LocalDate disbursementDate) {
return new LoanTransaction(null, LoanTransactionType.DISBURSEMENT, amount.getAmount(), disbursementDate); return new LoanTransaction(null, LoanTransactionType.DISBURSEMENT, amount.getAmount(), disbursementDate);
} }
public static LoanTransaction repayment(final Money amount, final LocalDate paymentDate) { public static LoanTransaction repayment(final Money amount, final LocalDate paymentDate) {
return new LoanTransaction(null, LoanTransactionType.REPAYMENT, amount.getAmount(), paymentDate); return new LoanTransaction(null, LoanTransactionType.REPAYMENT, amount.getAmount(), paymentDate);
} }
public static LoanTransaction repaymentAtDisbursement(final Money amount, final LocalDate paymentDate) { public static LoanTransaction repaymentAtDisbursement(final Money amount, final LocalDate paymentDate) {
return new LoanTransaction(null, LoanTransactionType.REPAYMENT_AT_DISBURSEMENT, amount.getAmount(), paymentDate); return new LoanTransaction(null, LoanTransactionType.REPAYMENT_AT_DISBURSEMENT, amount.getAmount(), paymentDate);
} }
public static LoanTransaction waiver(final Loan loan, final Money waived, final LocalDate waiveDate) { public static LoanTransaction waiver(final Loan loan, final Money waived, final LocalDate waiveDate) {
return new LoanTransaction(loan, LoanTransactionType.WAIVE_INTEREST, waived.getAmount(), waiveDate); return new LoanTransaction(loan, LoanTransactionType.WAIVE_INTEREST, waived.getAmount(), waiveDate);
} }
public static LoanTransaction waiveLoanCharge(final Loan loan, final Money waived, final LocalDate waiveDate, final Money feeChargesWaived, final Money penaltyChargesWaived) { public static LoanTransaction waiveLoanCharge(final Loan loan, final Money waived, final LocalDate waiveDate,
LoanTransaction waiver = new LoanTransaction(loan, LoanTransactionType.WAIVE_CHARGES, waived.getAmount(), waiveDate); final Money feeChargesWaived, final Money penaltyChargesWaived) {
waiver.updateChargesComponents(feeChargesWaived, penaltyChargesWaived); LoanTransaction waiver = new LoanTransaction(loan, LoanTransactionType.WAIVE_CHARGES, waived.getAmount(), waiveDate);
waiver.updateChargesComponents(feeChargesWaived, penaltyChargesWaived);
return waiver; return waiver;
} }
private static LoanTransaction contra(final LoanTransaction originalTransaction) { private static LoanTransaction contra(final LoanTransaction originalTransaction) {
LoanTransaction contra = new LoanTransaction(null, LoanTransactionType.CONTRA, originalTransaction.getAmount().negate(), new LocalDate(originalTransaction.getDateOf())); LoanTransaction contra = new LoanTransaction(null, LoanTransactionType.CONTRA, originalTransaction.getAmount().negate(),
contra.updateContra(originalTransaction); new LocalDate(originalTransaction.getDateOf()));
return contra; contra.updateContra(originalTransaction);
} return contra;
}
public static LoanTransaction writeoff(final Loan loan, final LocalDate writeOffDate) { public static LoanTransaction writeoff(final Loan loan, final LocalDate writeOffDate) {
return new LoanTransaction(loan, LoanTransactionType.WRITEOFF, null, writeOffDate); return new LoanTransaction(loan, LoanTransactionType.WRITEOFF, null, writeOffDate);
} }
public void updateContra(final LoanTransaction transaction) { public void updateContra(final LoanTransaction transaction) {
this.contra = transaction; this.contra = transaction;
} }
private LoanTransaction(final Loan loan, final LoanTransactionType type, final BigDecimal amount, final LocalDate date) { private LoanTransaction(final Loan loan, final LoanTransactionType type, final BigDecimal amount, final LocalDate date) {
this.loan = loan; this.loan = loan;
this.typeOf = type.getValue(); this.typeOf = type.getValue();
this.amount = amount; this.amount = amount;
this.dateOf = date.toDateMidnight().toDate(); this.dateOf = date.toDateMidnight().toDate();
} }
public BigDecimal getAmount() { public BigDecimal getAmount() {
return this.amount; return this.amount;
} }
public Money getAmount(MonetaryCurrency currency) { public Money getAmount(MonetaryCurrency currency) {
return Money.of(currency, this.amount); return Money.of(currency, this.amount);
} }
@DateTimeFormat(style="-M") @DateTimeFormat(style = "-M")
public LocalDate getTransactionDate() { public LocalDate getTransactionDate() {
return new LocalDate(this.dateOf); return new LocalDate(this.dateOf);
} }
public Date getDateOf() { public Date getDateOf() {
return dateOf; return dateOf;
} }
public LoanTransactionType getTypeOf() { public LoanTransactionType getTypeOf() {
return LoanTransactionType.fromInt(this.typeOf); return LoanTransactionType.fromInt(this.typeOf);
} }
public boolean isRepayment() { public boolean isRepayment() {
return LoanTransactionType.REPAYMENT.equals(getTypeOf()) && isNotContra(); return LoanTransactionType.REPAYMENT.equals(getTypeOf()) && isNotContra();
} }
public boolean isNotRepayment() { public boolean isNotRepayment() {
return !isRepayment(); return !isRepayment();
} }
public boolean isNotContra() { public boolean isNotContra() {
return this.contra == null; return this.contra == null;
} }
public boolean isDisbursement() { public boolean isDisbursement() {
return LoanTransactionType.DISBURSEMENT.equals(getTypeOf()); return LoanTransactionType.DISBURSEMENT.equals(getTypeOf());
} }
public boolean isRepaymentAtDisbursement() { public boolean isRepaymentAtDisbursement() {
return LoanTransactionType.REPAYMENT_AT_DISBURSEMENT.equals(getTypeOf()); return LoanTransactionType.REPAYMENT_AT_DISBURSEMENT.equals(getTypeOf());
} }
public boolean isInterestWaiver() { public boolean isInterestWaiver() {
return LoanTransactionType.WAIVE_INTEREST.equals(getTypeOf()) && isNotContra(); return LoanTransactionType.WAIVE_INTEREST.equals(getTypeOf()) && isNotContra();
} }
public boolean isChargesWaiver() { public boolean isChargesWaiver() {
return LoanTransactionType.WAIVE_CHARGES.equals(getTypeOf()) && isNotContra(); return LoanTransactionType.WAIVE_CHARGES.equals(getTypeOf()) && isNotContra();
} }
public boolean isNotInterestWaiver() { public boolean isNotInterestWaiver() {
return !isInterestWaiver(); return !isInterestWaiver();
} }
public boolean isWaiver() { public boolean isWaiver() {
return isInterestWaiver() || isChargesWaiver(); return isInterestWaiver() || isChargesWaiver();
} }
public boolean isNotWaiver() { public boolean isNotWaiver() {
return !isInterestWaiver() && !isChargesWaiver(); return !isInterestWaiver() && !isChargesWaiver();
} }
public boolean isWriteOff() { public boolean isWriteOff() {
return getTypeOf().isWriteOff() && isNotContra(); return getTypeOf().isWriteOff() && isNotContra();
} }
public boolean isIdentifiedBy(final Long identifier) { public boolean isIdentifiedBy(final Long identifier) {
return this.getId().equals(identifier); return this.getId().equals(identifier);
} }
public boolean isBelongingToLoanOf(final Loan check) { public boolean isBelongingToLoanOf(final Loan check) {
return this.loan.getId().equals(check.getId()); return this.loan.getId().equals(check.getId());
} }
public boolean isNotBelongingToLoanOf(final Loan check) { public boolean isNotBelongingToLoanOf(final Loan check) {
return !isBelongingToLoanOf(check); return !isBelongingToLoanOf(check);
} }
public void contra() { public void contra() {
this.contra = LoanTransaction.contra(this); this.contra = LoanTransaction.contra(this);
contra.updateLoan(this.loan); contra.updateLoan(this.loan);
} }
public void updateLoan(final Loan loan) { public void updateLoan(final Loan loan) {
this.loan = loan; this.loan = loan;
} }
public boolean isNonZero() { public boolean isNonZero() {
return this.amount.subtract(BigDecimal.ZERO).doubleValue() > 0; return this.amount.subtract(BigDecimal.ZERO).doubleValue() > 0;
} }
/** /**
* This updates the derived fields of a loan transaction for the principal, interest and interest waived portions. * This updates the derived fields of a loan transaction for the principal,
* * interest and interest waived portions.
* This accumulates the values passed to the already existent values for each of the portions. *
*/ * This accumulates the values passed to the already existent values for
public void updateComponents(final Money principal, final Money interest, final Money feeCharges, final Money penaltyCharges) { * each of the portions.
final MonetaryCurrency currency = principal.getCurrency(); */
this.principalPortion = defaultToNullIfZero(getPrincipalPortion(currency).plus(principal).getAmount()); public void updateComponents(final Money principal, final Money interest, final Money feeCharges, final Money penaltyCharges) {
this.interestPortion = defaultToNullIfZero(getInterestPortion(currency).plus(interest).getAmount()); final MonetaryCurrency currency = principal.getCurrency();
updateChargesComponents(feeCharges, penaltyCharges); this.principalPortion = defaultToNullIfZero(getPrincipalPortion(currency).plus(principal).getAmount());
} this.interestPortion = defaultToNullIfZero(getInterestPortion(currency).plus(interest).getAmount());
updateChargesComponents(feeCharges, penaltyCharges);
}
private void updateChargesComponents(final Money feeCharges, final Money penaltyCharges) { private void updateChargesComponents(final Money feeCharges, final Money penaltyCharges) {
final MonetaryCurrency currency = feeCharges.getCurrency(); final MonetaryCurrency currency = feeCharges.getCurrency();
this.feeChargesPortion = defaultToNullIfZero(getFeeChargesPortion(currency).plus(feeCharges).getAmount()); this.feeChargesPortion = defaultToNullIfZero(getFeeChargesPortion(currency).plus(feeCharges).getAmount());
this.penaltyChargesPortion = defaultToNullIfZero(getPenaltyChargesPortion(currency).plus(penaltyCharges).getAmount()); this.penaltyChargesPortion = defaultToNullIfZero(getPenaltyChargesPortion(currency).plus(penaltyCharges).getAmount());
} }
public void updateComponentsAndTotal(final Money principal, final Money interest, final Money feeCharges, final Money penaltyCharges) { public void updateComponentsAndTotal(final Money principal, final Money interest, final Money feeCharges, final Money penaltyCharges) {
updateComponents(principal, interest, feeCharges, penaltyCharges); updateComponents(principal, interest, feeCharges, penaltyCharges);
final MonetaryCurrency currency = principal.getCurrency(); final MonetaryCurrency currency = principal.getCurrency();
this.amount = getPrincipalPortion(currency).plus(getInterestPortion(currency)).plus(getFeeChargesPortion(currency)).plus(getPenaltyChargesPortion(currency)).getAmount(); this.amount = getPrincipalPortion(currency).plus(getInterestPortion(currency)).plus(getFeeChargesPortion(currency))
} .plus(getPenaltyChargesPortion(currency)).getAmount();
}
public Money getPrincipalPortion(final MonetaryCurrency currency) { public Money getPrincipalPortion(final MonetaryCurrency currency) {
return Money.of(currency, this.principalPortion); return Money.of(currency, this.principalPortion);
} }
public Money getInterestPortion(final MonetaryCurrency currency) { public Money getInterestPortion(final MonetaryCurrency currency) {
return Money.of(currency, this.interestPortion); return Money.of(currency, this.interestPortion);
} }
public Money getFeeChargesPortion(final MonetaryCurrency currency) { public Money getFeeChargesPortion(final MonetaryCurrency currency) {
return Money.of(currency, this.feeChargesPortion); return Money.of(currency, this.feeChargesPortion);
} }
public Money getPenaltyChargesPortion(final MonetaryCurrency currency) { public Money getPenaltyChargesPortion(final MonetaryCurrency currency) {
return Money.of(currency, this.penaltyChargesPortion); return Money.of(currency, this.penaltyChargesPortion);
} }
public void resetDerivedComponents() { public void resetDerivedComponents() {
this.principalPortion = null; this.principalPortion = null;
this.interestPortion = null; this.interestPortion = null;
this.feeChargesPortion = null; this.feeChargesPortion = null;
this.penaltyChargesPortion = null; this.penaltyChargesPortion = null;
} }
public boolean isGreaterThan(final Money monetaryAmount) { public boolean isGreaterThan(final Money monetaryAmount) {
return getAmount(monetaryAmount.getCurrency()).isGreaterThan(monetaryAmount); return getAmount(monetaryAmount.getCurrency()).isGreaterThan(monetaryAmount);
} }
public boolean isGreaterThanZero(final MonetaryCurrency currency) { public boolean isGreaterThanZero(final MonetaryCurrency currency) {
return getAmount(currency).isGreaterThanZero(); return getAmount(currency).isGreaterThanZero();
} }
public boolean isNotZero(final MonetaryCurrency currency) { public boolean isNotZero(final MonetaryCurrency currency) {
return !getAmount(currency).isZero(); return !getAmount(currency).isZero();
} }
private BigDecimal defaultToNullIfZero(final BigDecimal value) { private BigDecimal defaultToNullIfZero(final BigDecimal value) {
BigDecimal result = value; BigDecimal result = value;
if (BigDecimal.ZERO.compareTo(value) == 0) { if (BigDecimal.ZERO.compareTo(value) == 0) {
result = null; result = null;
} }
return result; return result;
} }
public LoanTransactionData toData(final CurrencyData currencyData) { public LoanTransactionData toData(final CurrencyData currencyData) {
final EnumOptionData transactionType = LoanEnumerations.transactionType(this.typeOf); final EnumOptionData transactionType = LoanEnumerations.transactionType(this.typeOf);
return new LoanTransactionData(this.getId(), transactionType, currencyData, getTransactionDate(), return new LoanTransactionData(this.getId(), transactionType, currencyData, getTransactionDate(), this.amount,
this.amount, this.principalPortion, this.interestPortion, this.feeChargesPortion, this.penaltyChargesPortion); this.principalPortion, this.interestPortion, this.feeChargesPortion, this.penaltyChargesPortion);
} }
} }
@@ -1,4 +1,4 @@
package org.mifosng.platform.api; package org.mifosplatform.portfolio.loanaccount.gaurantor.api;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
@@ -5,9 +5,6 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import org.mifosng.platform.exceptions.GroupNotFoundException;
import org.mifosng.platform.group.domain.Group;
import org.mifosng.platform.group.domain.GroupRepository;
import org.mifosplatform.infrastructure.configuration.domain.MonetaryCurrency; import org.mifosplatform.infrastructure.configuration.domain.MonetaryCurrency;
import org.mifosplatform.infrastructure.staff.domain.Staff; import org.mifosplatform.infrastructure.staff.domain.Staff;
import org.mifosplatform.infrastructure.staff.domain.StaffRepository; import org.mifosplatform.infrastructure.staff.domain.StaffRepository;
@@ -19,6 +16,9 @@ import org.mifosplatform.portfolio.client.exception.ClientNotFoundException;
import org.mifosplatform.portfolio.fund.domain.Fund; import org.mifosplatform.portfolio.fund.domain.Fund;
import org.mifosplatform.portfolio.fund.domain.FundRepository; import org.mifosplatform.portfolio.fund.domain.FundRepository;
import org.mifosplatform.portfolio.fund.exception.FundNotFoundException; import org.mifosplatform.portfolio.fund.exception.FundNotFoundException;
import org.mifosplatform.portfolio.group.domain.Group;
import org.mifosplatform.portfolio.group.domain.GroupRepository;
import org.mifosplatform.portfolio.group.exception.GroupNotFoundException;
import org.mifosplatform.portfolio.loanaccount.command.LoanApplicationCommand; import org.mifosplatform.portfolio.loanaccount.command.LoanApplicationCommand;
import org.mifosplatform.portfolio.loanaccount.domain.DefaultLoanLifecycleStateMachine; import org.mifosplatform.portfolio.loanaccount.domain.DefaultLoanLifecycleStateMachine;
import org.mifosplatform.portfolio.loanaccount.domain.Loan; import org.mifosplatform.portfolio.loanaccount.domain.Loan;
@@ -7,8 +7,6 @@ import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import org.joda.time.LocalDate; import org.joda.time.LocalDate;
import org.mifosng.platform.api.data.GroupData;
import org.mifosng.platform.group.service.GroupReadPlatformService;
import org.mifosplatform.infrastructure.configuration.data.CurrencyData; import org.mifosplatform.infrastructure.configuration.data.CurrencyData;
import org.mifosplatform.infrastructure.configuration.domain.ApplicationCurrency; import org.mifosplatform.infrastructure.configuration.domain.ApplicationCurrency;
import org.mifosplatform.infrastructure.configuration.domain.ApplicationCurrencyRepository; import org.mifosplatform.infrastructure.configuration.domain.ApplicationCurrencyRepository;
@@ -21,6 +19,8 @@ import org.mifosplatform.infrastructure.core.service.TenantAwareRoutingDataSourc
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext; import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
import org.mifosplatform.portfolio.client.data.ClientData; import org.mifosplatform.portfolio.client.data.ClientData;
import org.mifosplatform.portfolio.client.service.ClientReadPlatformService; import org.mifosplatform.portfolio.client.service.ClientReadPlatformService;
import org.mifosplatform.portfolio.group.data.GroupData;
import org.mifosplatform.portfolio.group.service.GroupReadPlatformService;
import org.mifosplatform.portfolio.loanaccount.data.DisbursementData; import org.mifosplatform.portfolio.loanaccount.data.DisbursementData;
import org.mifosplatform.portfolio.loanaccount.data.LoanBasicDetailsData; import org.mifosplatform.portfolio.loanaccount.data.LoanBasicDetailsData;
import org.mifosplatform.portfolio.loanaccount.data.LoanChargeData; import org.mifosplatform.portfolio.loanaccount.data.LoanChargeData;
@@ -1,13 +1,10 @@
package org.mifosplatform.portfolio.loanproduct.domain; package org.mifosplatform.portfolio.loanproduct.domain;
import java.io.Serializable;
/** /**
* Represents the bare minimum repayment details needed for activities related * Represents the bare minimum repayment details needed for activities related
* to generating repayment schedules. * to generating repayment schedules.
*/ */
public interface LoanProductMinimumRepaymentScheduleRelatedDetail extends Serializable { public interface LoanProductMinimumRepaymentScheduleRelatedDetail {
Integer getRepayEvery(); Integer getRepayEvery();