mifosx-92: tidy up loan product in prep for tranche loans.
This commit is contained in:
+71
-54
@@ -3,6 +3,7 @@ package org.mifosng.platform.api;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
@@ -14,17 +15,23 @@ import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.Context;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import javax.ws.rs.core.UriInfo;
|
||||
|
||||
import org.mifosng.platform.api.commands.LoanProductCommand;
|
||||
import org.mifosng.platform.api.data.ChargeData;
|
||||
import org.mifosng.platform.api.data.CurrencyData;
|
||||
import org.mifosng.platform.api.data.EntityIdentifier;
|
||||
import org.mifosng.platform.api.data.EnumOptionData;
|
||||
import org.mifosng.platform.api.data.FundData;
|
||||
import org.mifosng.platform.api.data.LoanProductData;
|
||||
import org.mifosng.platform.api.data.TransactionProcessingStrategyData;
|
||||
import org.mifosng.platform.api.infrastructure.ApiDataConversionService;
|
||||
import org.mifosng.platform.api.infrastructure.ApiJsonSerializerService;
|
||||
import org.mifosng.platform.api.infrastructure.ApiParameterHelper;
|
||||
import org.mifosng.platform.charge.service.ChargeReadPlatformService;
|
||||
import org.mifosng.platform.currency.service.CurrencyReadPlatformService;
|
||||
import org.mifosng.platform.fund.service.FundReadPlatformService;
|
||||
import org.mifosng.platform.loanproduct.service.LoanDropdownReadPlatformService;
|
||||
import org.mifosng.platform.loanproduct.service.LoanProductReadPlatformService;
|
||||
import org.mifosng.platform.loanproduct.service.LoanProductWritePlatformService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -50,17 +57,39 @@ public class LoanProductsApiResource {
|
||||
|
||||
@Autowired
|
||||
private ApiJsonSerializerService apiJsonSerializerService;
|
||||
|
||||
@Autowired
|
||||
private CurrencyReadPlatformService currencyReadPlatformService;
|
||||
|
||||
@Autowired
|
||||
private FundReadPlatformService fundReadPlatformService;
|
||||
|
||||
@Autowired
|
||||
private LoanDropdownReadPlatformService dropdownReadPlatformService;
|
||||
|
||||
private final Set<String> typicalResponseParameters = new HashSet<String>(
|
||||
Arrays.asList("id", "name", "description",
|
||||
"fundId", "fundName",
|
||||
"transactionProcessingStrategyId", "transactionProcessingStrategyName",
|
||||
"principal", "inArrearsTolerance",
|
||||
"numberOfRepayments", "repaymentEvery",
|
||||
"interestRatePerPeriod", "annualInterestRate",
|
||||
"repaymentFrequencyType", "interestRateFrequencyType",
|
||||
"amortizationType", "interestType", "interestCalculationPeriodType",
|
||||
"charges",
|
||||
"createdOn", "lastModifedOn")
|
||||
);
|
||||
|
||||
@POST
|
||||
@Consumes({MediaType.APPLICATION_JSON})
|
||||
@Produces({MediaType.APPLICATION_JSON})
|
||||
public Response createLoanProduct(final String jsonRequestBody) {
|
||||
public String createLoanProduct(final String jsonRequestBody) {
|
||||
|
||||
final LoanProductCommand command = this.apiDataConversionService.convertJsonToLoanProductCommand(null, jsonRequestBody);
|
||||
|
||||
EntityIdentifier entityIdentifier = this.loanProductWritePlatformService.createLoanProduct(command);
|
||||
final EntityIdentifier identifier = this.loanProductWritePlatformService.createLoanProduct(command);
|
||||
|
||||
return Response.ok().entity(entityIdentifier).build();
|
||||
return apiJsonSerializerService.serializeEntityIdentifier(identifier);
|
||||
}
|
||||
|
||||
@GET
|
||||
@@ -68,52 +97,31 @@ public class LoanProductsApiResource {
|
||||
@Produces({MediaType.APPLICATION_JSON})
|
||||
public String retrieveAllLoanProducts(@Context final UriInfo uriInfo) {
|
||||
|
||||
Set<String> typicalResponseParameters = new HashSet<String>(
|
||||
Arrays.asList("id", "name", "description", "fundId", "fundName", "principal", "inArrearsTolerance", "numberOfRepayments",
|
||||
"repaymentEvery", "interestRatePerPeriod", "annualInterestRate",
|
||||
"repaymentFrequencyType", "interestRateFrequencyType", "amortizationType", "interestType", "interestCalculationPeriodType",
|
||||
"charges", "createdOn", "lastModifedOn")
|
||||
);
|
||||
|
||||
Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
if (responseParameters.isEmpty()) {
|
||||
responseParameters.addAll(typicalResponseParameters);
|
||||
}
|
||||
boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||
|
||||
Collection<LoanProductData> products = this.loanProductReadPlatformService.retrieveAllLoanProducts();
|
||||
final Collection<LoanProductData> products = this.loanProductReadPlatformService.retrieveAllLoanProducts();
|
||||
|
||||
return this.apiJsonSerializerService.serializeLoanProductDataToJson(prettyPrint, responseParameters, products);
|
||||
}
|
||||
|
||||
/*
|
||||
* see
|
||||
* http://stackoverflow.com/questions/5250074/what-uri-can-be-used-to-request
|
||||
* -a-default-resource
|
||||
*/
|
||||
@GET
|
||||
@Path("template")
|
||||
@Consumes({MediaType.APPLICATION_JSON})
|
||||
@Produces({MediaType.APPLICATION_JSON})
|
||||
public String retrieveNewLoanProductDetails(@Context final UriInfo uriInfo) {
|
||||
|
||||
// TODO - KW - every addition of a parameter here requires same addition in supported params used in 'apiDataConversionService' method.
|
||||
Set<String> typicalResponseParameters = new HashSet<String>(
|
||||
Arrays.asList("id", "name", "description", "fundId", "fundName", "transactionProcessingStrategyId", "transactionProcessingStrategyName",
|
||||
"principal", "inArrearsTolerance", "numberOfRepayments",
|
||||
"repaymentEvery", "interestRatePerPeriod", "annualInterestRate",
|
||||
"repaymentFrequencyType", "interestRateFrequencyType", "amortizationType", "interestType", "interestCalculationPeriodType", "charges",
|
||||
"createdOn", "lastModifedOn","currencyOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions",
|
||||
"repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions")
|
||||
);
|
||||
|
||||
Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
if (responseParameters.isEmpty()) {
|
||||
responseParameters.addAll(typicalResponseParameters);
|
||||
}
|
||||
boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||
|
||||
LoanProductData loanProduct = this.loanProductReadPlatformService.retrieveNewLoanProductDetails();
|
||||
loanProduct = handleTemplate(loanProduct, responseParameters);
|
||||
|
||||
return this.apiJsonSerializerService.serializeLoanProductDataToJson(prettyPrint, responseParameters, loanProduct);
|
||||
}
|
||||
@@ -124,45 +132,54 @@ public class LoanProductsApiResource {
|
||||
@Produces({MediaType.APPLICATION_JSON})
|
||||
public String retrieveLoanProductDetails(@PathParam("productId") final Long productId, @Context final UriInfo uriInfo) {
|
||||
|
||||
Set<String> typicalResponseParameters = new HashSet<String>(
|
||||
Arrays.asList("id", "name", "description", "fundId", "fundName",
|
||||
"transactionProcessingStrategyId", "transactionProcessingStrategyName",
|
||||
"principal", "inArrearsTolerance", "numberOfRepayments",
|
||||
"repaymentEvery", "interestRatePerPeriod", "annualInterestRate",
|
||||
"repaymentFrequencyType", "interestRateFrequencyType", "amortizationType", "interestType",
|
||||
"interestCalculationPeriodType", "charges",
|
||||
"createdOn", "lastModifedOn")
|
||||
);
|
||||
|
||||
Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
if (responseParameters.isEmpty()) {
|
||||
responseParameters.addAll(typicalResponseParameters);
|
||||
}
|
||||
boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||
boolean template = ApiParameterHelper.template(uriInfo.getQueryParameters());
|
||||
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||
final boolean template = ApiParameterHelper.template(uriInfo.getQueryParameters());
|
||||
|
||||
LoanProductData loanProduct = this.loanProductReadPlatformService.retrieveLoanProduct(productId);
|
||||
if (template) {
|
||||
responseParameters.addAll(Arrays.asList("currencyOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions",
|
||||
"repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions"));
|
||||
Collection<ChargeData> chargeOptions = this.chargeReadPlatformService.retrieveLoanApplicableCharges();
|
||||
chargeOptions.removeAll(loanProduct.getCharges());
|
||||
loanProduct.setChargeOptions(chargeOptions);
|
||||
loanProduct = handleTemplate(loanProduct, responseParameters);
|
||||
}
|
||||
|
||||
return this.apiJsonSerializerService.serializeLoanProductDataToJson(prettyPrint, responseParameters, loanProduct);
|
||||
}
|
||||
|
||||
|
||||
@PUT
|
||||
@Path("{productId}")
|
||||
@Consumes({MediaType.APPLICATION_JSON})
|
||||
@Produces({MediaType.APPLICATION_JSON})
|
||||
public Response updateLoanProduct(@PathParam("productId") final Long productId, final String jsonRequestBody) {
|
||||
public String updateLoanProduct(@PathParam("productId") final Long productId, final String jsonRequestBody) {
|
||||
|
||||
LoanProductCommand command = this.apiDataConversionService.convertJsonToLoanProductCommand(productId, jsonRequestBody);
|
||||
final LoanProductCommand command = this.apiDataConversionService.convertJsonToLoanProductCommand(productId, jsonRequestBody);
|
||||
|
||||
EntityIdentifier entityIdentifier = this.loanProductWritePlatformService.updateLoanProduct(command);
|
||||
final EntityIdentifier identifier = this.loanProductWritePlatformService.updateLoanProduct(command);
|
||||
|
||||
return Response.ok().entity(entityIdentifier).build();
|
||||
return apiJsonSerializerService.serializeEntityIdentifier(identifier);
|
||||
}
|
||||
|
||||
private LoanProductData handleTemplate(final LoanProductData productData, final Set<String> responseParameters) {
|
||||
|
||||
responseParameters.addAll(Arrays.asList("currencyOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions",
|
||||
"repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions"));
|
||||
|
||||
Collection<ChargeData> chargeOptions = this.chargeReadPlatformService.retrieveLoanApplicableCharges();
|
||||
chargeOptions.removeAll(productData.charges());
|
||||
|
||||
List<CurrencyData> currencyOptions = currencyReadPlatformService.retrieveAllowedCurrencies();
|
||||
List<EnumOptionData> amortizationTypeOptions = dropdownReadPlatformService.retrieveLoanAmortizationTypeOptions();
|
||||
List<EnumOptionData> interestTypeOptions = dropdownReadPlatformService.retrieveLoanInterestTypeOptions();
|
||||
List<EnumOptionData> interestCalculationPeriodTypeOptions = dropdownReadPlatformService.retrieveLoanInterestRateCalculatedInPeriodOptions();
|
||||
List<EnumOptionData> loanTermFrequencyTypeOptions = dropdownReadPlatformService.retrieveLoanTermFrequencyTypeOptions();
|
||||
List<EnumOptionData> repaymentFrequencyTypeOptions = dropdownReadPlatformService.retrieveRepaymentFrequencyTypeOptions();
|
||||
List<EnumOptionData> interestRateFrequencyTypeOptions = dropdownReadPlatformService.retrieveInterestRateFrequencyTypeOptions();
|
||||
|
||||
Collection<FundData> fundOptions = this.fundReadPlatformService.retrieveAllFunds();
|
||||
Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions = this.dropdownReadPlatformService.retreiveTransactionProcessingStrategies();
|
||||
|
||||
return new LoanProductData(productData, chargeOptions, currencyOptions, amortizationTypeOptions, interestTypeOptions,
|
||||
interestCalculationPeriodTypeOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions, interestRateFrequencyTypeOptions, fundOptions, transactionProcessingStrategyOptions);
|
||||
}
|
||||
}
|
||||
@@ -37,7 +37,7 @@ import org.mifosng.platform.api.data.LoanAccountData;
|
||||
import org.mifosng.platform.api.data.LoanBasicDetailsData;
|
||||
import org.mifosng.platform.api.data.LoanChargeData;
|
||||
import org.mifosng.platform.api.data.LoanPermissionData;
|
||||
import org.mifosng.platform.api.data.LoanProductLookup;
|
||||
import org.mifosng.platform.api.data.LoanProductData;
|
||||
import org.mifosng.platform.api.data.LoanTransactionData;
|
||||
import org.mifosng.platform.api.data.LoanTransactionNewData;
|
||||
import org.mifosng.platform.api.data.MoneyData;
|
||||
@@ -134,7 +134,7 @@ public class LoansApiResource {
|
||||
"chargeTemplate", "charges"));
|
||||
|
||||
// tempate related
|
||||
Collection<LoanProductLookup> productOptions = this.loanProductReadPlatformService.retrieveAllLoanProductsForLookup();
|
||||
Collection<LoanProductData> productOptions = this.loanProductReadPlatformService.retrieveAllLoanProductsForLookup();
|
||||
Collection<EnumOptionData>loanTermFrequencyTypeOptions = dropdownReadPlatformService.retrieveLoanTermFrequencyTypeOptions();
|
||||
Collection<EnumOptionData>repaymentFrequencyTypeOptions = dropdownReadPlatformService.retrieveRepaymentFrequencyTypeOptions();
|
||||
Collection<EnumOptionData>interestRateFrequencyTypeOptions = dropdownReadPlatformService.retrieveInterestRateFrequencyTypeOptions();
|
||||
@@ -237,7 +237,7 @@ public class LoansApiResource {
|
||||
}
|
||||
}
|
||||
|
||||
Collection<LoanProductLookup> productOptions = new ArrayList<LoanProductLookup>();
|
||||
Collection<LoanProductData> productOptions = new ArrayList<LoanProductData>();
|
||||
Collection<EnumOptionData> loanTermFrequencyTypeOptions = null;
|
||||
Collection<EnumOptionData> repaymentFrequencyTypeOptions = new ArrayList<EnumOptionData>();
|
||||
Collection<TransactionProcessingStrategyData> repaymentStrategyOptions = null;
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
package org.mifosng.platform.api.data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class CurrencyData implements Serializable {
|
||||
/**
|
||||
* Immutable data object representing currency.
|
||||
*/
|
||||
public class CurrencyData {
|
||||
|
||||
private final String code;
|
||||
private final String name;
|
||||
@@ -11,6 +12,10 @@ public class CurrencyData implements Serializable {
|
||||
private final String nameCode;
|
||||
private final String displayLabel;
|
||||
|
||||
public static CurrencyData blank() {
|
||||
return new CurrencyData("", "", 0, "", "");
|
||||
}
|
||||
|
||||
public CurrencyData(final String code, final String name, final int decimalPlaces, final String displaySymbol, final String nameCode) {
|
||||
this.code = code;
|
||||
this.name = name;
|
||||
|
||||
@@ -63,7 +63,7 @@ public class LoanAccountData {
|
||||
|
||||
// template
|
||||
private final Collection<StaffData> loanOfficerOptions;
|
||||
private final Collection<LoanProductLookup> productOptions;
|
||||
private final Collection<LoanProductData> productOptions;
|
||||
private final Collection<EnumOptionData> termFrequencyTypeOptions;
|
||||
private final Collection<EnumOptionData> repaymentFrequencyTypeOptions;
|
||||
private final Collection<TransactionProcessingStrategyData> repaymentStrategyOptions;
|
||||
@@ -82,7 +82,7 @@ public class LoanAccountData {
|
||||
final Collection<LoanTransactionNewData> transactions,
|
||||
final LoanPermissionData permissions,
|
||||
final Collection<LoanChargeData> charges,
|
||||
final Collection<LoanProductLookup> productOptions,
|
||||
final Collection<LoanProductData> productOptions,
|
||||
final Collection<EnumOptionData> termFrequencyTypeOptions,
|
||||
final Collection<EnumOptionData> repaymentFrequencyTypeOptions,
|
||||
final Collection<TransactionProcessingStrategyData> repaymentStrategyOptions,
|
||||
|
||||
+1
-1
@@ -77,7 +77,7 @@ public class LoanBasicDetailsData {
|
||||
final EnumOptionData termPeriodFrequencyType = product.getRepaymentFrequencyType();
|
||||
final Collection<LoanChargeData> charges = new ArrayList<LoanChargeData>();
|
||||
|
||||
for (ChargeData charge : product.getCharges()) {
|
||||
for (ChargeData charge : product.charges()) {
|
||||
charges.add(LoanChargeData.newChargeDetails(charge.getId(), charge.getName(), charge.getCurrency(),
|
||||
charge.getAmount(), charge.getChargeTimeType(), charge.getChargeCalculationType()));
|
||||
}
|
||||
|
||||
+227
-218
@@ -6,76 +6,161 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.joda.time.DateTime;
|
||||
import org.mifosng.platform.loan.domain.AmortizationMethod;
|
||||
import org.mifosng.platform.loan.domain.InterestCalculationPeriodMethod;
|
||||
import org.mifosng.platform.loan.domain.InterestMethod;
|
||||
import org.mifosng.platform.loan.domain.PeriodFrequencyType;
|
||||
import org.mifosng.platform.loanproduct.service.LoanEnumerations;
|
||||
|
||||
/**
|
||||
* Immutable data object to represent loan products.
|
||||
*/
|
||||
public class LoanProductData {
|
||||
|
||||
private Long id;
|
||||
private String name;
|
||||
private String description;
|
||||
private final Long id;
|
||||
private final String name;
|
||||
private final String description;
|
||||
|
||||
private Long fundId;
|
||||
private String fundName;
|
||||
private final Long fundId;
|
||||
private final String fundName;
|
||||
|
||||
private Long transactionProcessingStrategyId;
|
||||
private String transactionProcessingStrategyName;
|
||||
private final Long transactionProcessingStrategyId;
|
||||
private final String transactionProcessingStrategyName;
|
||||
|
||||
private CurrencyData currency;
|
||||
private BigDecimal principal;
|
||||
private BigDecimal inArrearsTolerance;
|
||||
private final CurrencyData currency;
|
||||
private final BigDecimal principal;
|
||||
private final BigDecimal inArrearsTolerance;
|
||||
|
||||
private Integer numberOfRepayments;
|
||||
private Integer loanTermFrequency;
|
||||
private Integer repaymentEvery;
|
||||
private BigDecimal interestRatePerPeriod = BigDecimal.ZERO;
|
||||
private BigDecimal annualInterestRate = BigDecimal.ZERO;
|
||||
private final Integer numberOfRepayments;
|
||||
private final Integer loanTermFrequency;
|
||||
private final Integer repaymentEvery;
|
||||
private final BigDecimal interestRatePerPeriod;
|
||||
private final BigDecimal annualInterestRate;
|
||||
|
||||
private EnumOptionData loanTermFrequencyType;
|
||||
private EnumOptionData repaymentFrequencyType;
|
||||
private EnumOptionData interestRateFrequencyType;
|
||||
private EnumOptionData amortizationType;
|
||||
private EnumOptionData interestType;
|
||||
private EnumOptionData interestCalculationPeriodType;
|
||||
private final EnumOptionData loanTermFrequencyType;
|
||||
private final EnumOptionData repaymentFrequencyType;
|
||||
private final EnumOptionData interestRateFrequencyType;
|
||||
private final EnumOptionData amortizationType;
|
||||
private final EnumOptionData interestType;
|
||||
private final EnumOptionData interestCalculationPeriodType;
|
||||
|
||||
private Collection<ChargeData> charges;
|
||||
private final Collection<ChargeData> charges;
|
||||
|
||||
private DateTime createdOn;
|
||||
private DateTime lastModifedOn;
|
||||
private final DateTime createdOn;
|
||||
private final DateTime lastModifedOn;
|
||||
|
||||
private final List<CurrencyData> currencyOptions;
|
||||
private final Collection<FundData> fundOptions;
|
||||
private final Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions;
|
||||
private final List<EnumOptionData> amortizationTypeOptions;
|
||||
private final List<EnumOptionData> interestTypeOptions;
|
||||
private final List<EnumOptionData> interestCalculationPeriodTypeOptions;
|
||||
private final List<EnumOptionData> repaymentFrequencyTypeOptions;
|
||||
private final List<EnumOptionData> interestRateFrequencyTypeOptions;
|
||||
private final List<EnumOptionData> loanTermFrequencyTypeOptions;
|
||||
private final Collection<ChargeData> chargeOptions;
|
||||
|
||||
/**
|
||||
* Used when returning lookup information about loan product for dropdowns.
|
||||
*/
|
||||
public static LoanProductData lookup(final Long id, final String name) {
|
||||
final DateTime createdOn = null;
|
||||
final DateTime lastModifedOn = null;
|
||||
final String description = null;
|
||||
final CurrencyData currency = null;
|
||||
final BigDecimal principal = null;
|
||||
final BigDecimal tolerance = null;
|
||||
final Integer numberOfRepayments = null;
|
||||
final Integer loanTermFrequency = null;
|
||||
final Integer repaymentEvery = null;
|
||||
final BigDecimal interestRatePerPeriod = null;
|
||||
final BigDecimal annualInterestRate = null;
|
||||
final EnumOptionData loanTermFrequencyType = null;
|
||||
final EnumOptionData repaymentFrequencyType = null;
|
||||
final EnumOptionData interestRateFrequencyType = null;
|
||||
final EnumOptionData amortizationType = null;
|
||||
final EnumOptionData interestType = null;
|
||||
final EnumOptionData interestCalculationPeriodType = null;
|
||||
final Long fundId = null;
|
||||
final String fundName = null;
|
||||
final Long transactionProcessingStrategyId = null;
|
||||
final String transactionProcessingStrategyName = null;
|
||||
final Collection<ChargeData> charges = null;
|
||||
|
||||
return new LoanProductData(createdOn, lastModifedOn, id, name, description, currency, principal, tolerance,
|
||||
numberOfRepayments, loanTermFrequency, repaymentEvery, interestRatePerPeriod, annualInterestRate,
|
||||
loanTermFrequencyType, repaymentFrequencyType, interestRateFrequencyType,
|
||||
amortizationType, interestType, interestCalculationPeriodType,
|
||||
fundId, fundName, transactionProcessingStrategyId, transactionProcessingStrategyName, charges);
|
||||
}
|
||||
|
||||
public static LoanProductData sensibleDefaultsForNewLoanProductCreation() {
|
||||
|
||||
private List<CurrencyData> currencyOptions = new ArrayList<CurrencyData>();
|
||||
private Collection<FundData> fundOptions = new ArrayList<FundData>();
|
||||
private Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions = new ArrayList<TransactionProcessingStrategyData>();
|
||||
private List<EnumOptionData> amortizationTypeOptions = new ArrayList<EnumOptionData>();
|
||||
private List<EnumOptionData> interestTypeOptions = new ArrayList<EnumOptionData>();
|
||||
private List<EnumOptionData> interestCalculationPeriodTypeOptions = new ArrayList<EnumOptionData>();
|
||||
private List<EnumOptionData> repaymentFrequencyTypeOptions = new ArrayList<EnumOptionData>();
|
||||
private List<EnumOptionData> interestRateFrequencyTypeOptions = new ArrayList<EnumOptionData>();
|
||||
private List<EnumOptionData> loanTermFrequencyTypeOptions = new ArrayList<EnumOptionData>();
|
||||
private Collection<ChargeData> chargeOptions = new ArrayList<ChargeData>();
|
||||
|
||||
public LoanProductData() {
|
||||
//
|
||||
final DateTime createdOn = null;
|
||||
final DateTime lastModifedOn = null;
|
||||
final Long id = null;
|
||||
final String name = null;
|
||||
final String description = null;
|
||||
final CurrencyData currency = CurrencyData.blank();
|
||||
final BigDecimal principal = null;
|
||||
final BigDecimal tolerance = null;
|
||||
final Integer numberOfRepayments = null;
|
||||
final Integer loanTermFrequency = null;
|
||||
final Integer repaymentEvery = null;
|
||||
final BigDecimal interestRatePerPeriod = null;
|
||||
final BigDecimal annualInterestRate = null;
|
||||
final EnumOptionData loanTermFrequencyType = LoanEnumerations.loanTermFrequencyType(PeriodFrequencyType.MONTHS);
|
||||
final EnumOptionData repaymentFrequencyType = LoanEnumerations.repaymentFrequencyType(PeriodFrequencyType.MONTHS);
|
||||
final EnumOptionData interestRateFrequencyType = LoanEnumerations.interestRateFrequencyType(PeriodFrequencyType.MONTHS);
|
||||
final EnumOptionData amortizationType = LoanEnumerations.amortizationType(AmortizationMethod.EQUAL_INSTALLMENTS);
|
||||
final EnumOptionData interestType = LoanEnumerations.interestType(InterestMethod.DECLINING_BALANCE);
|
||||
final EnumOptionData interestCalculationPeriodType = LoanEnumerations.interestCalculationPeriodType(InterestCalculationPeriodMethod.SAME_AS_REPAYMENT_PERIOD);
|
||||
final Long fundId = null;
|
||||
final String fundName = null;
|
||||
final Long transactionProcessingStrategyId = null;
|
||||
final String transactionProcessingStrategyName = null;
|
||||
final Collection<ChargeData> charges = null;
|
||||
|
||||
return new LoanProductData(createdOn, lastModifedOn, id, name, description, currency, principal, tolerance,
|
||||
numberOfRepayments, loanTermFrequency, repaymentEvery, interestRatePerPeriod, annualInterestRate,
|
||||
loanTermFrequencyType, repaymentFrequencyType, interestRateFrequencyType,
|
||||
amortizationType, interestType, interestCalculationPeriodType,
|
||||
fundId, fundName, transactionProcessingStrategyId, transactionProcessingStrategyName, charges);
|
||||
}
|
||||
|
||||
public LoanProductData(DateTime createdOn, DateTime lastModifedOn, Long id,
|
||||
String name, String description, MoneyData principal,
|
||||
MoneyData tolerance, Integer numberOfRepayments,
|
||||
Integer loanTermFrequency,
|
||||
Integer repaymentEvery, BigDecimal interestRatePerPeriod,
|
||||
BigDecimal annualInterestRate,
|
||||
EnumOptionData loanTermFrequencyType,
|
||||
EnumOptionData repaymentFrequencyType,
|
||||
EnumOptionData interestRateFrequencyType,
|
||||
EnumOptionData amortizationType, EnumOptionData interestType,
|
||||
EnumOptionData interestCalculationPeriodType, Long fundId,
|
||||
String fundName, Long transactionProcessingStrategyId, String transactionProcessingStrategyName) {
|
||||
public LoanProductData(
|
||||
final DateTime createdOn,
|
||||
final DateTime lastModifedOn,
|
||||
final Long id,
|
||||
final String name,
|
||||
final String description,
|
||||
final CurrencyData currency,
|
||||
final BigDecimal principal,
|
||||
final BigDecimal tolerance,
|
||||
final Integer numberOfRepayments,
|
||||
final Integer loanTermFrequency,
|
||||
final Integer repaymentEvery,
|
||||
final BigDecimal interestRatePerPeriod,
|
||||
final BigDecimal annualInterestRate,
|
||||
final EnumOptionData loanTermFrequencyType,
|
||||
final EnumOptionData repaymentFrequencyType,
|
||||
final EnumOptionData interestRateFrequencyType,
|
||||
final EnumOptionData amortizationType,
|
||||
final EnumOptionData interestType,
|
||||
final EnumOptionData interestCalculationPeriodType,
|
||||
final Long fundId,
|
||||
final String fundName,
|
||||
final Long transactionProcessingStrategyId,
|
||||
final String transactionProcessingStrategyName,
|
||||
final Collection<ChargeData> charges) {
|
||||
this.createdOn = createdOn;
|
||||
this.lastModifedOn = lastModifedOn;
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
this.currency = new CurrencyData(principal.getCurrencyCode(), principal.getDefaultName(), principal.getDigitsAfterDecimal(), principal.getDisplaySymbol(), principal.getNameCode());
|
||||
this.principal = principal.getAmount();
|
||||
this.inArrearsTolerance = tolerance.getAmount();
|
||||
this.currency = currency;
|
||||
this.principal = principal;
|
||||
this.inArrearsTolerance = tolerance;
|
||||
this.numberOfRepayments = numberOfRepayments;
|
||||
this.loanTermFrequency = loanTermFrequency;
|
||||
this.repaymentEvery = repaymentEvery;
|
||||
@@ -91,286 +176,210 @@ public class LoanProductData {
|
||||
this.fundName = fundName;
|
||||
this.transactionProcessingStrategyId = transactionProcessingStrategyId;
|
||||
this.transactionProcessingStrategyName = transactionProcessingStrategyName;
|
||||
this.charges = charges;
|
||||
|
||||
this.chargeOptions = null;
|
||||
this.currencyOptions = null;
|
||||
this.fundOptions = null;
|
||||
this.transactionProcessingStrategyOptions = null;
|
||||
this.amortizationTypeOptions = null;
|
||||
this.interestTypeOptions = null;
|
||||
this.interestCalculationPeriodTypeOptions = null;
|
||||
this.loanTermFrequencyTypeOptions = null;
|
||||
this.repaymentFrequencyTypeOptions = null;
|
||||
this.interestRateFrequencyTypeOptions = null;
|
||||
}
|
||||
|
||||
public LoanProductData(
|
||||
final LoanProductData productData,
|
||||
final Collection<ChargeData> chargeOptions,
|
||||
final List<CurrencyData> currencyOptions,
|
||||
final List<EnumOptionData> amortizationTypeOptions,
|
||||
final List<EnumOptionData> interestTypeOptions,
|
||||
final List<EnumOptionData> interestCalculationPeriodTypeOptions,
|
||||
final List<EnumOptionData> loanTermFrequencyTypeOptions,
|
||||
final List<EnumOptionData> repaymentFrequencyTypeOptions,
|
||||
final List<EnumOptionData> interestRateFrequencyTypeOptions,
|
||||
final Collection<FundData> fundOptions,
|
||||
final Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions) {
|
||||
this.createdOn = productData.createdOn;
|
||||
this.lastModifedOn = productData.lastModifedOn;
|
||||
this.id = productData.id;
|
||||
this.name = productData.name;
|
||||
this.description = productData.description;
|
||||
this.principal = productData.principal;
|
||||
this.inArrearsTolerance = productData.inArrearsTolerance;
|
||||
this.numberOfRepayments = productData.numberOfRepayments;
|
||||
this.loanTermFrequency = productData.loanTermFrequency;
|
||||
this.repaymentEvery = productData.repaymentEvery;
|
||||
this.interestRatePerPeriod = productData.interestRatePerPeriod;
|
||||
this.annualInterestRate = productData.annualInterestRate;
|
||||
this.loanTermFrequencyType = productData.loanTermFrequencyType;
|
||||
this.repaymentFrequencyType = productData.repaymentFrequencyType;
|
||||
this.interestRateFrequencyType = productData.interestRateFrequencyType;
|
||||
this.amortizationType = productData.amortizationType;
|
||||
this.interestType = productData.interestType;
|
||||
this.interestCalculationPeriodType = productData.interestCalculationPeriodType;
|
||||
this.fundId = productData.fundId;
|
||||
this.fundName = productData.fundName;
|
||||
this.transactionProcessingStrategyId = productData.transactionProcessingStrategyId;
|
||||
this.transactionProcessingStrategyName = productData.transactionProcessingStrategyName;
|
||||
this.charges = null;
|
||||
|
||||
this.chargeOptions = chargeOptions;
|
||||
this.currencyOptions = currencyOptions;
|
||||
if (this.currencyOptions.size() == 1) {
|
||||
this.currency = this.currencyOptions.get(0);
|
||||
} else {
|
||||
this.currency = productData.currency;
|
||||
}
|
||||
this.fundOptions = fundOptions;
|
||||
this.transactionProcessingStrategyOptions = transactionProcessingStrategyOptions;
|
||||
this.amortizationTypeOptions = amortizationTypeOptions;
|
||||
this.interestTypeOptions = interestTypeOptions;
|
||||
this.interestCalculationPeriodTypeOptions = interestCalculationPeriodTypeOptions;
|
||||
this.loanTermFrequencyTypeOptions = loanTermFrequencyTypeOptions;
|
||||
this.repaymentFrequencyTypeOptions = repaymentFrequencyTypeOptions;
|
||||
this.interestRateFrequencyTypeOptions = interestRateFrequencyTypeOptions;
|
||||
}
|
||||
|
||||
public Collection<ChargeData> charges() {
|
||||
Collection<ChargeData> chargesLocal = new ArrayList<ChargeData>();
|
||||
if (this.charges != null) {
|
||||
chargesLocal = this.charges;
|
||||
}
|
||||
return chargesLocal;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public Long getFundId() {
|
||||
return fundId;
|
||||
}
|
||||
|
||||
public void setFundId(Long fundId) {
|
||||
this.fundId = fundId;
|
||||
}
|
||||
|
||||
public String getFundName() {
|
||||
return fundName;
|
||||
}
|
||||
|
||||
public void setFundName(String fundName) {
|
||||
this.fundName = fundName;
|
||||
}
|
||||
|
||||
public Long getTransactionProcessingStrategyId() {
|
||||
return transactionProcessingStrategyId;
|
||||
}
|
||||
|
||||
public void setTransactionProcessingStrategyId(Long transactionProcessingStrategyId) {
|
||||
this.transactionProcessingStrategyId = transactionProcessingStrategyId;
|
||||
}
|
||||
|
||||
public String getTransactionProcessingStrategyName() {
|
||||
return transactionProcessingStrategyName;
|
||||
}
|
||||
|
||||
public void setTransactionProcessingStrategyName(
|
||||
String transactionProcessingStrategyName) {
|
||||
this.transactionProcessingStrategyName = transactionProcessingStrategyName;
|
||||
}
|
||||
|
||||
public CurrencyData getCurrency() {
|
||||
return currency;
|
||||
}
|
||||
|
||||
public void setCurrency(CurrencyData currency) {
|
||||
this.currency = currency;
|
||||
}
|
||||
|
||||
public BigDecimal getPrincipal() {
|
||||
return principal;
|
||||
}
|
||||
|
||||
public void setPrincipal(BigDecimal principal) {
|
||||
this.principal = principal;
|
||||
}
|
||||
|
||||
public BigDecimal getInArrearsTolerance() {
|
||||
return inArrearsTolerance;
|
||||
}
|
||||
|
||||
public void setInArrearsTolerance(BigDecimal inArrearsTolerance) {
|
||||
this.inArrearsTolerance = inArrearsTolerance;
|
||||
}
|
||||
|
||||
public Integer getNumberOfRepayments() {
|
||||
return numberOfRepayments;
|
||||
}
|
||||
|
||||
public void setNumberOfRepayments(Integer numberOfRepayments) {
|
||||
this.numberOfRepayments = numberOfRepayments;
|
||||
}
|
||||
|
||||
public Integer getLoanTermFrequency() {
|
||||
return loanTermFrequency;
|
||||
}
|
||||
|
||||
public void setLoanTermFrequency(Integer loanTermFrequency) {
|
||||
this.loanTermFrequency = loanTermFrequency;
|
||||
}
|
||||
|
||||
public Integer getRepaymentEvery() {
|
||||
return repaymentEvery;
|
||||
}
|
||||
|
||||
public void setRepaymentEvery(Integer repaymentEvery) {
|
||||
this.repaymentEvery = repaymentEvery;
|
||||
}
|
||||
|
||||
public BigDecimal getInterestRatePerPeriod() {
|
||||
return interestRatePerPeriod;
|
||||
}
|
||||
|
||||
public void setInterestRatePerPeriod(BigDecimal interestRatePerPeriod) {
|
||||
this.interestRatePerPeriod = interestRatePerPeriod;
|
||||
}
|
||||
|
||||
public BigDecimal getAnnualInterestRate() {
|
||||
return annualInterestRate;
|
||||
}
|
||||
|
||||
public void setAnnualInterestRate(BigDecimal annualInterestRate) {
|
||||
this.annualInterestRate = annualInterestRate;
|
||||
}
|
||||
|
||||
public DateTime getCreatedOn() {
|
||||
return createdOn;
|
||||
}
|
||||
|
||||
public void setCreatedOn(DateTime createdOn) {
|
||||
this.createdOn = createdOn;
|
||||
}
|
||||
|
||||
public DateTime getLastModifedOn() {
|
||||
return lastModifedOn;
|
||||
}
|
||||
|
||||
public void setLastModifedOn(DateTime lastModifedOn) {
|
||||
this.lastModifedOn = lastModifedOn;
|
||||
public EnumOptionData getLoanTermFrequencyType() {
|
||||
return loanTermFrequencyType;
|
||||
}
|
||||
|
||||
public EnumOptionData getRepaymentFrequencyType() {
|
||||
return repaymentFrequencyType;
|
||||
}
|
||||
|
||||
public void setRepaymentFrequencyType(EnumOptionData repaymentFrequencyType) {
|
||||
this.repaymentFrequencyType = repaymentFrequencyType;
|
||||
}
|
||||
|
||||
public EnumOptionData getInterestRateFrequencyType() {
|
||||
return interestRateFrequencyType;
|
||||
}
|
||||
|
||||
public void setInterestRateFrequencyType(
|
||||
EnumOptionData interestRateFrequencyType) {
|
||||
this.interestRateFrequencyType = interestRateFrequencyType;
|
||||
}
|
||||
|
||||
public EnumOptionData getAmortizationType() {
|
||||
return amortizationType;
|
||||
}
|
||||
|
||||
public void setAmortizationType(EnumOptionData amortizationType) {
|
||||
this.amortizationType = amortizationType;
|
||||
}
|
||||
|
||||
public EnumOptionData getInterestType() {
|
||||
return interestType;
|
||||
}
|
||||
|
||||
public void setInterestType(EnumOptionData interestType) {
|
||||
this.interestType = interestType;
|
||||
}
|
||||
|
||||
public EnumOptionData getInterestCalculationPeriodType() {
|
||||
return interestCalculationPeriodType;
|
||||
}
|
||||
|
||||
public void setInterestCalculationPeriodType(
|
||||
EnumOptionData interestCalculationPeriodType) {
|
||||
this.interestCalculationPeriodType = interestCalculationPeriodType;
|
||||
public DateTime getCreatedOn() {
|
||||
return createdOn;
|
||||
}
|
||||
|
||||
public List<EnumOptionData> getRepaymentFrequencyTypeOptions() {
|
||||
return repaymentFrequencyTypeOptions;
|
||||
}
|
||||
|
||||
public void setRepaymentFrequencyTypeOptions(
|
||||
List<EnumOptionData> repaymentFrequencyTypeOptions) {
|
||||
this.repaymentFrequencyTypeOptions = repaymentFrequencyTypeOptions;
|
||||
}
|
||||
|
||||
public List<EnumOptionData> getInterestRateFrequencyTypeOptions() {
|
||||
return interestRateFrequencyTypeOptions;
|
||||
}
|
||||
|
||||
public void setInterestRateFrequencyTypeOptions(
|
||||
List<EnumOptionData> interestRateFrequencyTypeOptions) {
|
||||
this.interestRateFrequencyTypeOptions = interestRateFrequencyTypeOptions;
|
||||
}
|
||||
|
||||
public EnumOptionData getLoanTermFrequencyType() {
|
||||
return loanTermFrequencyType;
|
||||
}
|
||||
|
||||
public void setLoanTermFrequencyType(EnumOptionData loanTermFrequencyType) {
|
||||
this.loanTermFrequencyType = loanTermFrequencyType;
|
||||
}
|
||||
|
||||
public List<EnumOptionData> getLoanTermFrequencyTypeOptions() {
|
||||
return loanTermFrequencyTypeOptions;
|
||||
}
|
||||
|
||||
public void setLoanTermFrequencyTypeOptions(
|
||||
List<EnumOptionData> loanTermFrequencyTypeOptions) {
|
||||
this.loanTermFrequencyTypeOptions = loanTermFrequencyTypeOptions;
|
||||
public DateTime getLastModifedOn() {
|
||||
return lastModifedOn;
|
||||
}
|
||||
|
||||
public List<CurrencyData> getCurrencyOptions() {
|
||||
return currencyOptions;
|
||||
}
|
||||
|
||||
public void setCurrencyOptions(List<CurrencyData> currencyOptions) {
|
||||
this.currencyOptions = currencyOptions;
|
||||
}
|
||||
|
||||
public Collection<FundData> getFundOptions() {
|
||||
return fundOptions;
|
||||
}
|
||||
|
||||
public void setFundOptions(Collection<FundData> fundOptions) {
|
||||
this.fundOptions = fundOptions;
|
||||
}
|
||||
|
||||
public Collection<TransactionProcessingStrategyData> getTransactionProcessingStrategyOptions() {
|
||||
return transactionProcessingStrategyOptions;
|
||||
}
|
||||
|
||||
public void setTransactionProcessingStrategyOptions(
|
||||
Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions) {
|
||||
this.transactionProcessingStrategyOptions = transactionProcessingStrategyOptions;
|
||||
}
|
||||
|
||||
public List<EnumOptionData> getAmortizationTypeOptions() {
|
||||
return amortizationTypeOptions;
|
||||
}
|
||||
|
||||
public void setAmortizationTypeOptions(
|
||||
List<EnumOptionData> amortizationTypeOptions) {
|
||||
this.amortizationTypeOptions = amortizationTypeOptions;
|
||||
}
|
||||
|
||||
public List<EnumOptionData> getInterestTypeOptions() {
|
||||
return interestTypeOptions;
|
||||
}
|
||||
|
||||
public void setInterestTypeOptions(List<EnumOptionData> interestTypeOptions) {
|
||||
this.interestTypeOptions = interestTypeOptions;
|
||||
}
|
||||
|
||||
public List<EnumOptionData> getInterestCalculationPeriodTypeOptions() {
|
||||
return interestCalculationPeriodTypeOptions;
|
||||
}
|
||||
|
||||
public void setInterestCalculationPeriodTypeOptions(
|
||||
List<EnumOptionData> interestCalculationPeriodTypeOptions) {
|
||||
this.interestCalculationPeriodTypeOptions = interestCalculationPeriodTypeOptions;
|
||||
public List<EnumOptionData> getRepaymentFrequencyTypeOptions() {
|
||||
return repaymentFrequencyTypeOptions;
|
||||
}
|
||||
|
||||
public Collection<ChargeData> getCharges() {
|
||||
return charges;
|
||||
}
|
||||
public List<EnumOptionData> getInterestRateFrequencyTypeOptions() {
|
||||
return interestRateFrequencyTypeOptions;
|
||||
}
|
||||
|
||||
public void setCharges(Collection<ChargeData> charges) {
|
||||
this.charges = charges;
|
||||
}
|
||||
public List<EnumOptionData> getLoanTermFrequencyTypeOptions() {
|
||||
return loanTermFrequencyTypeOptions;
|
||||
}
|
||||
|
||||
public Collection<ChargeData> getChargeOptions() {
|
||||
return chargeOptions;
|
||||
}
|
||||
|
||||
public void setChargeOptions(Collection<ChargeData> chargeOptions) {
|
||||
this.chargeOptions = chargeOptions;
|
||||
}
|
||||
public Collection<ChargeData> getChargeOptions() {
|
||||
return chargeOptions;
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
package org.mifosng.platform.api.data;
|
||||
|
||||
/**
|
||||
* Immutable data object used for basic loan product info for lookup situations.
|
||||
*
|
||||
* TODO - kw - this can be replace and the normal {@link LoanProductData} used where only id and name are populated as google gson does
|
||||
* not return null attributes/parameters.
|
||||
*/
|
||||
public class LoanProductLookup {
|
||||
|
||||
private final Long id;
|
||||
private final String name;
|
||||
|
||||
public LoanProductLookup(final Long id, final String name) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,10 @@ import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
|
||||
/**
|
||||
* @deprecated - Want to remove this and its usage around loans in full. In its place we just pass back a {@link BigDecimal} for the amount and a {@link CurrencyData} is also passed back.
|
||||
*/
|
||||
@Deprecated
|
||||
public class MoneyData implements Serializable, Comparable<MoneyData> {
|
||||
|
||||
private String currencyCode;
|
||||
|
||||
+56
-47
@@ -335,23 +335,23 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService {
|
||||
throw new InvalidJsonException();
|
||||
}
|
||||
|
||||
Type typeOfMap = new TypeToken<Map<String, Object>>(){}.getType();
|
||||
Map<String, String> requestMap = gsonConverter.fromJson(json, typeOfMap);
|
||||
final Type typeOfMap = new TypeToken<Map<String, Object>>(){}.getType();
|
||||
final Map<String, String> requestMap = gsonConverter.fromJson(json, typeOfMap);
|
||||
|
||||
Set<String> supportedParams = new HashSet<String>(
|
||||
final Set<String> supportedParams = new HashSet<String>(
|
||||
Arrays.asList("name", "officeId", "externalId", "clientMembers")
|
||||
);
|
||||
|
||||
checkForUnsupportedParameters(requestMap, supportedParams);
|
||||
|
||||
Set<String> modifiedParameters = new HashSet<String>();
|
||||
final Set<String> modifiedParameters = new HashSet<String>();
|
||||
|
||||
Long officeId = extractLongParameter("officeId", requestMap, modifiedParameters);
|
||||
String externalId = extractStringParameter("externalId", requestMap, modifiedParameters);
|
||||
String name = extractStringParameter("name", requestMap, modifiedParameters);
|
||||
final Long officeId = extractLongParameter("officeId", requestMap, modifiedParameters);
|
||||
final String externalId = extractStringParameter("externalId", requestMap, modifiedParameters);
|
||||
final String name = extractStringParameter("name", requestMap, modifiedParameters);
|
||||
|
||||
// check array
|
||||
JsonParser parser = new JsonParser();
|
||||
final JsonParser parser = new JsonParser();
|
||||
|
||||
String[] clientMembers = null;
|
||||
JsonElement element = parser.parse(json);
|
||||
@@ -378,44 +378,54 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService {
|
||||
throw new InvalidJsonException();
|
||||
}
|
||||
|
||||
Type typeOfMap = new TypeToken<Map<String, Object>>(){}.getType();
|
||||
Map<String, Object> requestMap = gsonConverter.fromJson(json, typeOfMap);
|
||||
final Type typeOfMap = new TypeToken<Map<String, Object>>(){}.getType();
|
||||
final Map<String, Object> requestMap = gsonConverter.fromJson(json, typeOfMap);
|
||||
|
||||
Set<String> supportedParams = new HashSet<String>(
|
||||
Arrays.asList("name", "description", "fundId", "transactionProcessingStrategyId", "currencyCode", "digitsAfterDecimal",
|
||||
"principal", "inArrearsTolerance", "interestRatePerPeriod", "repaymentEvery", "numberOfRepayments",
|
||||
"repaymentFrequencyType", "interestRateFrequencyType", "amortizationType", "interestType", "interestCalculationPeriodType",
|
||||
// FIXME - A - LoanProduct - KW - Do we add support for "overpaidTolerance" parameter?
|
||||
final Set<String> supportedParams = new HashSet<String>(
|
||||
Arrays.asList("name", "description", "fundId", "transactionProcessingStrategyId",
|
||||
"currencyCode", "digitsAfterDecimal",
|
||||
"principal", "inArrearsTolerance",
|
||||
"interestRatePerPeriod", "repaymentEvery", "numberOfRepayments",
|
||||
"repaymentFrequencyType", "interestRateFrequencyType",
|
||||
"amortizationType", "interestType", "interestCalculationPeriodType",
|
||||
"charges", "locale")
|
||||
);
|
||||
|
||||
checkForUnsupportedParameters(requestMap, supportedParams);
|
||||
|
||||
Set<String> modifiedParameters = new HashSet<String>();
|
||||
|
||||
String name = extractStringParameter("name", requestMap, modifiedParameters);
|
||||
String description = extractStringParameter("description", requestMap, modifiedParameters);
|
||||
Long fundId = extractLongParameter("fundId", requestMap, modifiedParameters);
|
||||
Long transactionProcessingStrategyId = extractLongParameter("transactionProcessingStrategyId", requestMap, modifiedParameters);
|
||||
String currencyCode = extractStringParameter("currencyCode", requestMap, modifiedParameters);
|
||||
Integer digitsAfterDecimalValue = extractIntegerParameter("digitsAfterDecimal", requestMap, modifiedParameters);
|
||||
BigDecimal principalValue = extractBigDecimalParameter("principal", requestMap, modifiedParameters);
|
||||
BigDecimal inArrearsToleranceValue = extractBigDecimalParameter("inArrearsTolerance", requestMap, modifiedParameters);
|
||||
BigDecimal interestRatePerPeriodValue = extractBigDecimalParameter("interestRatePerPeriod", requestMap, modifiedParameters);
|
||||
final JsonParser parser = new JsonParser();
|
||||
final JsonElement element = parser.parse(json);
|
||||
final JsonParserHelper helper = new JsonParserHelper();
|
||||
|
||||
Integer repaymentEveryValue = extractIntegerParameter("repaymentEvery", requestMap, modifiedParameters);
|
||||
Integer numberOfRepaymentsValue = extractIntegerParameter("numberOfRepayments", requestMap, modifiedParameters);
|
||||
Integer repaymentFrequencyTypeValue = extractIntegerParameter("repaymentFrequencyType", requestMap, modifiedParameters);
|
||||
final Set<String> modifiedParameters = new HashSet<String>();
|
||||
final String name = helper.extractStringNamed("name", element, modifiedParameters);
|
||||
final String description = helper.extractStringNamed("description", element, modifiedParameters);
|
||||
final Long fundId = helper.extractLongNamed("fundId", element, modifiedParameters);
|
||||
|
||||
Integer interestRateFrequencyTypeValue = extractIntegerParameter("interestRateFrequencyType", requestMap, modifiedParameters);
|
||||
Integer amortizationTypeValue = extractIntegerParameter("amortizationType", requestMap, modifiedParameters);
|
||||
Integer interestTypeValue = extractIntegerParameter("interestType", requestMap, modifiedParameters);
|
||||
Integer interestCalculationPeriodTypeValue = extractIntegerParameter("interestCalculationPeriodType", requestMap, modifiedParameters);
|
||||
|
||||
// check array
|
||||
JsonParser parser = new JsonParser();
|
||||
|
||||
final Long transactionProcessingStrategyId = helper.extractLongNamed("transactionProcessingStrategyId", element, modifiedParameters);
|
||||
|
||||
final String currencyCode = helper.extractStringNamed("currencyCode", element, modifiedParameters);
|
||||
final Integer digitsAfterDecimal = helper.extractIntegerNamed("digitsAfterDecimal", element, modifiedParameters);
|
||||
|
||||
final BigDecimal principal = helper.extractBigDecimalNamed("principal", element, modifiedParameters);
|
||||
final BigDecimal inArrearsTolerance = helper.extractBigDecimalNamed("inArrearsTolerance", element, modifiedParameters);
|
||||
final BigDecimal interestRatePerPeriod = helper.extractBigDecimalNamed("interestRatePerPeriod", element, modifiedParameters);
|
||||
final Integer repaymentEvery = helper.extractIntegerNamed("repaymentEvery", element, modifiedParameters);
|
||||
final Integer numberOfRepayments = helper.extractIntegerNamed("numberOfRepayments", element, modifiedParameters);
|
||||
final Integer repaymentFrequencyType = helper.extractIntegerNamed("repaymentFrequencyType", element, modifiedParameters);
|
||||
|
||||
// FIXME - A - LoanProduct - KW - should loan term fields be part of product also as are basic part of 'loan terms'
|
||||
// final Integer loanTermFrequency = helper.extractIntegerNamed("loanTermFrequency", element, modifiedParameters);
|
||||
// final Integer loanTermFrequencyType = helper.extractIntegerNamed("loanTermFrequencyType", element, modifiedParameters);
|
||||
final Integer interestRateFrequencyType = helper.extractIntegerNamed("interestRateFrequencyType", element, modifiedParameters);
|
||||
final Integer amortizationType = helper.extractIntegerNamed("amortizationType", element, modifiedParameters);
|
||||
final Integer interestType = helper.extractIntegerNamed("interestType", element, modifiedParameters);
|
||||
final Integer interestCalculationPeriodType = helper.extractIntegerNamed("interestCalculationPeriodType", element, modifiedParameters);
|
||||
|
||||
// FIXME - A - LoanProduct - KW - product charges at present dont allow for adding 'charge' to loan product and setting its 'amount', might this be needed?
|
||||
// loan product charges
|
||||
String[] charges = null;
|
||||
JsonElement element = parser.parse(json);
|
||||
if (element.isJsonObject()) {
|
||||
JsonObject object = element.getAsJsonObject();
|
||||
if (object.has("charges")) {
|
||||
@@ -427,11 +437,10 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService {
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
|
||||
return new LoanProductCommand(modifiedParameters, resourceIdentifier, name, description, fundId, transactionProcessingStrategyId,
|
||||
currencyCode, digitsAfterDecimalValue, principalValue, inArrearsToleranceValue, numberOfRepaymentsValue, repaymentEveryValue, interestRatePerPeriodValue,
|
||||
repaymentFrequencyTypeValue, interestRateFrequencyTypeValue, amortizationTypeValue, interestTypeValue, interestCalculationPeriodTypeValue, charges);
|
||||
currencyCode, digitsAfterDecimal, principal, inArrearsTolerance, numberOfRepayments, repaymentEvery, interestRatePerPeriod,
|
||||
repaymentFrequencyType, interestRateFrequencyType, amortizationType, interestType, interestCalculationPeriodType, charges);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -441,10 +450,10 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService {
|
||||
throw new InvalidJsonException();
|
||||
}
|
||||
|
||||
Type typeOfMap = new TypeToken<Map<String, Object>>(){}.getType();
|
||||
Map<String, Object> requestMap = gsonConverter.fromJson(json, typeOfMap);
|
||||
final Type typeOfMap = new TypeToken<Map<String, Object>>(){}.getType();
|
||||
final Map<String, Object> requestMap = gsonConverter.fromJson(json, typeOfMap);
|
||||
|
||||
Set<String> supportedParams = new HashSet<String>(
|
||||
final Set<String> supportedParams = new HashSet<String>(
|
||||
Arrays.asList("clientId", "groupId", "productId", "externalId", "fundId", "transactionProcessingStrategyId",
|
||||
"principal", "inArrearsTolerance", "interestRatePerPeriod", "repaymentEvery", "numberOfRepayments",
|
||||
"loanTermFrequency", "loanTermFrequencyType", "charges",
|
||||
@@ -455,11 +464,11 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService {
|
||||
|
||||
checkForUnsupportedParameters(requestMap, supportedParams);
|
||||
|
||||
Set<String> modifiedParameters = new HashSet<String>();
|
||||
final Set<String> modifiedParameters = new HashSet<String>();
|
||||
|
||||
JsonParser parser = new JsonParser();
|
||||
JsonElement element = parser.parse(json);
|
||||
JsonParserHelper helper = new JsonParserHelper();
|
||||
final JsonParser parser = new JsonParser();
|
||||
final JsonElement element = parser.parse(json);
|
||||
final JsonParserHelper helper = new JsonParserHelper();
|
||||
|
||||
final Long clientId = helper.extractLongNamed("clientId", element, modifiedParameters);
|
||||
final Long groupId = helper.extractLongNamed("groupId", element, modifiedParameters);
|
||||
|
||||
+6
-8
@@ -46,18 +46,16 @@ public class JsonParserHelper {
|
||||
return longValue;
|
||||
}
|
||||
|
||||
public String extractStringNamed(final String parameterName,
|
||||
final JsonElement element, final Set<String> modifiedParameters) {
|
||||
public String extractStringNamed(final String parameterName, final JsonElement element, final Set<String> modifiedParameters) {
|
||||
String stringValue = null;
|
||||
if (element.isJsonObject()) {
|
||||
JsonObject object = element.getAsJsonObject();
|
||||
if (object.has(parameterName)
|
||||
&& object.get(parameterName).isJsonPrimitive()) {
|
||||
if (object.has(parameterName) && object.get(parameterName).isJsonPrimitive()) {
|
||||
modifiedParameters.add(parameterName);
|
||||
JsonPrimitive primitive = object.get(parameterName)
|
||||
.getAsJsonPrimitive();
|
||||
if (StringUtils.isNotBlank(stringValue)) {
|
||||
stringValue = primitive.getAsString();
|
||||
final JsonPrimitive primitive = object.get(parameterName).getAsJsonPrimitive();
|
||||
final String valueAsString = primitive.getAsString();
|
||||
if (StringUtils.isNotBlank(valueAsString)) {
|
||||
stringValue = valueAsString;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-2
@@ -3,13 +3,12 @@ package org.mifosng.platform.loanproduct.service;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.mifosng.platform.api.data.LoanProductData;
|
||||
import org.mifosng.platform.api.data.LoanProductLookup;
|
||||
|
||||
public interface LoanProductReadPlatformService {
|
||||
|
||||
Collection<LoanProductData> retrieveAllLoanProducts();
|
||||
|
||||
Collection<LoanProductLookup> retrieveAllLoanProductsForLookup();
|
||||
Collection<LoanProductData> retrieveAllLoanProductsForLookup();
|
||||
|
||||
LoanProductData retrieveLoanProduct(Long productId);
|
||||
|
||||
|
||||
+58
-152
@@ -4,27 +4,16 @@ import java.math.BigDecimal;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.joda.time.DateTime;
|
||||
import org.mifosng.platform.api.data.ChargeData;
|
||||
import org.mifosng.platform.api.data.CurrencyData;
|
||||
import org.mifosng.platform.api.data.EnumOptionData;
|
||||
import org.mifosng.platform.api.data.FundData;
|
||||
import org.mifosng.platform.api.data.LoanProductData;
|
||||
import org.mifosng.platform.api.data.LoanProductLookup;
|
||||
import org.mifosng.platform.api.data.MoneyData;
|
||||
import org.mifosng.platform.api.data.TransactionProcessingStrategyData;
|
||||
import org.mifosng.platform.charge.service.ChargeReadPlatformService;
|
||||
import org.mifosng.platform.currency.service.CurrencyReadPlatformService;
|
||||
import org.mifosng.platform.exceptions.LoanProductNotFoundException;
|
||||
import org.mifosng.platform.fund.service.FundReadPlatformService;
|
||||
import org.mifosng.platform.infrastructure.JdbcSupport;
|
||||
import org.mifosng.platform.infrastructure.TenantAwareRoutingDataSource;
|
||||
import org.mifosng.platform.loan.domain.AmortizationMethod;
|
||||
import org.mifosng.platform.loan.domain.InterestCalculationPeriodMethod;
|
||||
import org.mifosng.platform.loan.domain.InterestMethod;
|
||||
import org.mifosng.platform.loan.domain.PeriodFrequencyType;
|
||||
import org.mifosng.platform.security.PlatformSecurityContext;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.dao.EmptyResultDataAccessException;
|
||||
@@ -36,24 +25,15 @@ import org.springframework.stereotype.Service;
|
||||
public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatformService {
|
||||
|
||||
private final PlatformSecurityContext context;
|
||||
private final CurrencyReadPlatformService currencyReadPlatformService;
|
||||
private final JdbcTemplate jdbcTemplate;
|
||||
private final LoanDropdownReadPlatformService dropdownReadPlatformService;
|
||||
private final FundReadPlatformService fundReadPlatformService;
|
||||
private final ChargeReadPlatformService chargeReadPlatformService;
|
||||
|
||||
@Autowired
|
||||
public LoanProductReadPlatformServiceImpl(
|
||||
final PlatformSecurityContext context,
|
||||
final CurrencyReadPlatformService currencyReadPlatformService,
|
||||
final FundReadPlatformService fundReadPlatformService,
|
||||
final LoanDropdownReadPlatformService dropdownReadPlatformService,
|
||||
final ChargeReadPlatformService chargeReadPlatformService,
|
||||
final TenantAwareRoutingDataSource dataSource) {
|
||||
this.context = context;
|
||||
this.currencyReadPlatformService = currencyReadPlatformService;
|
||||
this.fundReadPlatformService = fundReadPlatformService;
|
||||
this.dropdownReadPlatformService = dropdownReadPlatformService;
|
||||
this.chargeReadPlatformService = chargeReadPlatformService;
|
||||
this.jdbcTemplate = new JdbcTemplate(dataSource);
|
||||
}
|
||||
@@ -62,19 +42,14 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo
|
||||
public LoanProductData retrieveLoanProduct(final Long loanProductId) {
|
||||
|
||||
try {
|
||||
LoanProductMapper rm = new LoanProductMapper();
|
||||
String sql = "select " + rm.loanProductSchema()
|
||||
+ " where lp.id = ?";
|
||||
final Collection<ChargeData> charges = this.chargeReadPlatformService.retrieveLoanProductCharges(loanProductId);
|
||||
|
||||
final LoanProductMapper rm = new LoanProductMapper(charges);
|
||||
final String sql = "select " + rm.loanProductSchema() + " where lp.id = ?";
|
||||
|
||||
LoanProductData productData = this.jdbcTemplate.queryForObject(sql,
|
||||
rm, new Object[] { loanProductId });
|
||||
|
||||
Collection<ChargeData> charges = this.chargeReadPlatformService.retrieveLoanProductCharges(loanProductId);
|
||||
productData.setCharges(charges);
|
||||
|
||||
populateProductDataWithDropdownOptions(productData);
|
||||
|
||||
return productData;
|
||||
|
||||
return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { loanProductId });
|
||||
|
||||
} catch (EmptyResultDataAccessException e) {
|
||||
throw new LoanProductNotFoundException(loanProductId);
|
||||
}
|
||||
@@ -85,69 +60,37 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo
|
||||
|
||||
this.context.authenticatedUser();
|
||||
|
||||
LoanProductMapper rm = new LoanProductMapper();
|
||||
final LoanProductMapper rm = new LoanProductMapper(null);
|
||||
|
||||
String sql = "select " + rm.loanProductSchema();
|
||||
final String sql = "select " + rm.loanProductSchema();
|
||||
|
||||
Collection<LoanProductData> loanProducts = this.jdbcTemplate.query(sql, rm, new Object[] {});
|
||||
for (LoanProductData loanProduct : loanProducts){
|
||||
Collection<ChargeData> charges = this.chargeReadPlatformService.retrieveLoanProductCharges(loanProduct.getId());
|
||||
loanProduct.setCharges(charges);
|
||||
}
|
||||
|
||||
return loanProducts;
|
||||
return this.jdbcTemplate.query(sql, rm, new Object[] {});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<LoanProductLookup> retrieveAllLoanProductsForLookup() {
|
||||
public Collection<LoanProductData> retrieveAllLoanProductsForLookup() {
|
||||
|
||||
this.context.authenticatedUser();
|
||||
|
||||
LoanProductLookupMapper rm = new LoanProductLookupMapper();
|
||||
final LoanProductLookupMapper rm = new LoanProductLookupMapper();
|
||||
|
||||
String sql = "select " + rm.loanProductLookupSchema();
|
||||
final String sql = "select " + rm.loanProductLookupSchema();
|
||||
|
||||
return this.jdbcTemplate.query(sql, rm, new Object[] {});
|
||||
}
|
||||
|
||||
@Override
|
||||
public LoanProductData retrieveNewLoanProductDetails() {
|
||||
|
||||
LoanProductData productData = new LoanProductData();
|
||||
|
||||
productData.setAmortizationType(LoanEnumerations.amortizationType(AmortizationMethod.EQUAL_INSTALLMENTS));
|
||||
productData.setInterestType(LoanEnumerations.interestType(InterestMethod.DECLINING_BALANCE));
|
||||
|
||||
productData.setLoanTermFrequencyType(LoanEnumerations.loanTermFrequencyType(PeriodFrequencyType.MONTHS));
|
||||
|
||||
productData.setRepaymentFrequencyType(LoanEnumerations.repaymentFrequencyType(PeriodFrequencyType.MONTHS));
|
||||
|
||||
productData.setInterestRateFrequencyType(LoanEnumerations.interestRateFrequencyType(PeriodFrequencyType.MONTHS));
|
||||
|
||||
productData.setInterestCalculationPeriodType(LoanEnumerations.interestCalculationPeriodType(InterestCalculationPeriodMethod.SAME_AS_REPAYMENT_PERIOD));
|
||||
|
||||
productData.setChargeOptions(this.chargeReadPlatformService.retrieveLoanApplicableCharges());
|
||||
|
||||
populateProductDataWithDropdownOptions(productData);
|
||||
|
||||
productData.setPrincipal(BigDecimal.ZERO);
|
||||
productData.setInArrearsTolerance(BigDecimal.ZERO);
|
||||
|
||||
CurrencyData currency = new CurrencyData("", "", 0, "", "");
|
||||
productData.setCurrency(currency);
|
||||
|
||||
if (productData.getCurrencyOptions().size() == 1) {
|
||||
currency = productData.getCurrencyOptions().get(0);
|
||||
productData.setCurrency(currency);
|
||||
}
|
||||
|
||||
return productData;
|
||||
return LoanProductData.sensibleDefaultsForNewLoanProductCreation();
|
||||
}
|
||||
|
||||
private static final class LoanProductMapper implements
|
||||
RowMapper<LoanProductData> {
|
||||
|
||||
public LoanProductMapper() {
|
||||
private final Collection<ChargeData> charges;
|
||||
|
||||
public LoanProductMapper(final Collection<ChargeData> charges) {
|
||||
this.charges = charges;
|
||||
}
|
||||
|
||||
public String loanProductSchema() {
|
||||
@@ -170,115 +113,78 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo
|
||||
public LoanProductData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum)
|
||||
throws SQLException {
|
||||
|
||||
Long id = rs.getLong("id");
|
||||
String name = rs.getString("name");
|
||||
String description = rs.getString("description");
|
||||
final Long id = rs.getLong("id");
|
||||
final String name = rs.getString("name");
|
||||
final String description = rs.getString("description");
|
||||
final Long fundId = JdbcSupport.getLong(rs, "fundId");
|
||||
final String fundName = rs.getString("fundName");
|
||||
final Long transactionStrategyId = JdbcSupport.getLong(rs, "transactionStrategyId");
|
||||
final String transactionStrategyName = rs.getString("transactionStrategyName");
|
||||
|
||||
Long fundId = JdbcSupport.getLong(rs, "fundId");
|
||||
String fundName = rs.getString("fundName");
|
||||
|
||||
Long transactionStrategyId = JdbcSupport.getLong(rs, "transactionStrategyId");
|
||||
String transactionStrategyName = rs.getString("transactionStrategyName");
|
||||
final String currencyCode = rs.getString("currencyCode");
|
||||
final String currencyName = rs.getString("currencyName");
|
||||
final String currencyNameCode = rs.getString("currencyNameCode");
|
||||
final String currencyDisplaySymbol = rs.getString("currencyDisplaySymbol");
|
||||
final Integer currencyDigits = JdbcSupport.getInteger(rs, "currencyDigits");
|
||||
|
||||
String currencyCode = rs.getString("currencyCode");
|
||||
String currencyName = rs.getString("currencyName");
|
||||
String currencyNameCode = rs.getString("currencyNameCode");
|
||||
String currencyDisplaySymbol = rs
|
||||
.getString("currencyDisplaySymbol");
|
||||
Integer currencyDigits = JdbcSupport.getInteger(rs,
|
||||
"currencyDigits");
|
||||
|
||||
CurrencyData currencyData = new CurrencyData(currencyCode,
|
||||
final CurrencyData currency = new CurrencyData(currencyCode,
|
||||
currencyName, currencyDigits, currencyDisplaySymbol,
|
||||
currencyNameCode);
|
||||
|
||||
BigDecimal principal = rs.getBigDecimal("principal");
|
||||
BigDecimal tolerance = rs.getBigDecimal("tolerance");
|
||||
final BigDecimal principal = rs.getBigDecimal("principal");
|
||||
final BigDecimal tolerance = rs.getBigDecimal("tolerance");
|
||||
|
||||
MoneyData principalMoney = MoneyData.of(currencyData, principal);
|
||||
MoneyData toleranceMoney = MoneyData.of(currencyData, tolerance);
|
||||
final Integer numberOfRepayments = JdbcSupport.getInteger(rs,"numberOfRepayments");
|
||||
final Integer repaymentEvery = JdbcSupport.getInteger(rs, "repaidEvery");
|
||||
final Integer loanTermFrequency = repaymentEvery * numberOfRepayments;
|
||||
final BigDecimal interestRatePerPeriod = rs.getBigDecimal("interestRatePerPeriod");
|
||||
final BigDecimal annualInterestRate = rs.getBigDecimal("annualInterestRate");
|
||||
|
||||
Integer numberOfRepayments = JdbcSupport.getInteger(rs,"numberOfRepayments");
|
||||
Integer repaymentEvery = JdbcSupport.getInteger(rs, "repaidEvery");
|
||||
Integer loanTermFrequency = repaymentEvery * numberOfRepayments;
|
||||
BigDecimal interestRatePerPeriod = rs.getBigDecimal("interestRatePerPeriod");
|
||||
BigDecimal annualInterestRate = rs.getBigDecimal("annualInterestRate");
|
||||
|
||||
int repaymentFrequencyTypeId = JdbcSupport.getInteger(rs, "repaymentPeriodFrequency");
|
||||
EnumOptionData repaymentFrequencyType = LoanEnumerations.repaymentFrequencyType(repaymentFrequencyTypeId);
|
||||
final int repaymentFrequencyTypeId = JdbcSupport.getInteger(rs, "repaymentPeriodFrequency");
|
||||
final EnumOptionData repaymentFrequencyType = LoanEnumerations.repaymentFrequencyType(repaymentFrequencyTypeId);
|
||||
|
||||
EnumOptionData loanTermFrequencyType = LoanEnumerations.loanTermFrequencyType(repaymentFrequencyTypeId);
|
||||
final EnumOptionData loanTermFrequencyType = LoanEnumerations.loanTermFrequencyType(repaymentFrequencyTypeId);
|
||||
|
||||
int amortizationTypeId = JdbcSupport.getInteger(rs,
|
||||
"amortizationMethod");
|
||||
EnumOptionData amortizationType = LoanEnumerations
|
||||
.amortizationType(amortizationTypeId);
|
||||
final int amortizationTypeId = JdbcSupport.getInteger(rs, "amortizationMethod");
|
||||
final EnumOptionData amortizationType = LoanEnumerations.amortizationType(amortizationTypeId);
|
||||
|
||||
int interestRateFrequencyTypeId = JdbcSupport.getInteger(rs,"interestRatePerPeriodFreq");
|
||||
EnumOptionData interestRateFrequencyType = LoanEnumerations.interestRateFrequencyType(interestRateFrequencyTypeId);
|
||||
final int interestRateFrequencyTypeId = JdbcSupport.getInteger(rs,"interestRatePerPeriodFreq");
|
||||
final EnumOptionData interestRateFrequencyType = LoanEnumerations.interestRateFrequencyType(interestRateFrequencyTypeId);
|
||||
|
||||
int interestTypeId = JdbcSupport.getInteger(rs, "interestMethod");
|
||||
EnumOptionData interestType = LoanEnumerations.interestType(interestTypeId);
|
||||
final int interestTypeId = JdbcSupport.getInteger(rs, "interestMethod");
|
||||
final EnumOptionData interestType = LoanEnumerations.interestType(interestTypeId);
|
||||
|
||||
int interestCalculationPeriodTypeId = JdbcSupport.getInteger(rs,
|
||||
"interestCalculationInPeriodMethod");
|
||||
EnumOptionData interestCalculationPeriodType = LoanEnumerations
|
||||
.interestCalculationPeriodType(interestCalculationPeriodTypeId);
|
||||
final int interestCalculationPeriodTypeId = JdbcSupport.getInteger(rs,"interestCalculationInPeriodMethod");
|
||||
final EnumOptionData interestCalculationPeriodType = LoanEnumerations.interestCalculationPeriodType(interestCalculationPeriodTypeId);
|
||||
|
||||
DateTime createdOn = JdbcSupport.getDateTime(rs, "createdon");
|
||||
DateTime lastModifedOn = JdbcSupport.getDateTime(rs, "modifiedon");
|
||||
final DateTime createdOn = JdbcSupport.getDateTime(rs, "createdon");
|
||||
final DateTime lastModifedOn = JdbcSupport.getDateTime(rs, "modifiedon");
|
||||
|
||||
return new LoanProductData(createdOn, lastModifedOn, id, name,
|
||||
description, principalMoney, toleranceMoney,
|
||||
description, currency, principal, tolerance,
|
||||
numberOfRepayments, loanTermFrequency, repaymentEvery, interestRatePerPeriod,
|
||||
annualInterestRate, loanTermFrequencyType, repaymentFrequencyType,
|
||||
interestRateFrequencyType, amortizationType, interestType,
|
||||
interestCalculationPeriodType, fundId, fundName, transactionStrategyId, transactionStrategyName);
|
||||
interestCalculationPeriodType, fundId, fundName, transactionStrategyId, transactionStrategyName, this.charges);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static final class LoanProductLookupMapper implements
|
||||
RowMapper<LoanProductLookup> {
|
||||
RowMapper<LoanProductData> {
|
||||
|
||||
public String loanProductLookupSchema() {
|
||||
return "lp.id as id, lp.name as name from m_product_loan lp";
|
||||
}
|
||||
|
||||
@Override
|
||||
public LoanProductLookup mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum)
|
||||
public LoanProductData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum)
|
||||
throws SQLException {
|
||||
|
||||
Long id = rs.getLong("id");
|
||||
String name = rs.getString("name");
|
||||
final Long id = rs.getLong("id");
|
||||
final String name = rs.getString("name");
|
||||
|
||||
return new LoanProductLookup(id, name);
|
||||
return LoanProductData.lookup(id, name);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void populateProductDataWithDropdownOptions(final LoanProductData productData) {
|
||||
|
||||
List<CurrencyData> currencyOptions = currencyReadPlatformService.retrieveAllowedCurrencies();
|
||||
List<EnumOptionData> amortizationTypeOptions = dropdownReadPlatformService.retrieveLoanAmortizationTypeOptions();
|
||||
List<EnumOptionData> interestTypeOptions = dropdownReadPlatformService.retrieveLoanInterestTypeOptions();
|
||||
List<EnumOptionData> interestCalculationPeriodTypeOptions = dropdownReadPlatformService.retrieveLoanInterestRateCalculatedInPeriodOptions();
|
||||
List<EnumOptionData> loanTermFrequencyTypeOptions = dropdownReadPlatformService.retrieveLoanTermFrequencyTypeOptions();
|
||||
List<EnumOptionData> repaymentFrequencyTypeOptions = dropdownReadPlatformService.retrieveRepaymentFrequencyTypeOptions();
|
||||
List<EnumOptionData> interestRateFrequencyTypeOptions = dropdownReadPlatformService.retrieveInterestRateFrequencyTypeOptions();
|
||||
|
||||
Collection<FundData> fundOptions = this.fundReadPlatformService.retrieveAllFunds();
|
||||
Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions = this.dropdownReadPlatformService.retreiveTransactionProcessingStrategies();
|
||||
|
||||
productData.setCurrencyOptions(currencyOptions);
|
||||
productData.setAmortizationTypeOptions(amortizationTypeOptions);
|
||||
productData.setInterestTypeOptions(interestTypeOptions);
|
||||
productData.setInterestCalculationPeriodTypeOptions(interestCalculationPeriodTypeOptions);
|
||||
productData.setLoanTermFrequencyTypeOptions(loanTermFrequencyTypeOptions);
|
||||
productData.setRepaymentFrequencyTypeOptions(repaymentFrequencyTypeOptions);
|
||||
productData.setInterestRateFrequencyTypeOptions(interestRateFrequencyTypeOptions);
|
||||
productData.setFundOptions(fundOptions);
|
||||
productData.setTransactionProcessingStrategyOptions(transactionProcessingStrategyOptions);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user