From 4f98144896f561b09caf0b43d6016017fa6a8959 Mon Sep 17 00:00:00 2001 From: Keith Woodlock Date: Thu, 20 Sep 2012 15:11:48 +0100 Subject: [PATCH] mifosx-58: wip - integrate charges at time of disbursement into loan create and modify flows. suppress non-relevant warnings for unused parameters in overiding classes. --- .../org/mifosng/platform/Specifications.java | 1 + .../platform/api/LoansApiResource.java | 7 ---- .../platform/api/ReportsApiResource.java | 2 +- .../CalculateLoanScheduleCommand.java | 8 +++- .../api/commands/LoanApplicationCommand.java | 10 +++-- .../api/data/DepositProductLookup.java | 29 +++----------- .../api/data/LoanSchedulePeriodData.java | 20 ++++++---- .../AccessDeniedExceptionMapper.java | 2 +- .../BadCredentialsExceptionMapper.java | 2 +- .../InvalidJsonExceptionMapper.java | 2 +- ...nvalidTenantIdentifierExceptionMapper.java | 2 +- .../MalformedJsonExceptionMapper.java | 2 +- .../NoAuthorizationExceptionMapper.java | 2 +- .../UnAuthenticatedUserExceptionMapper.java | 2 +- .../infrastructure/JodaDateTimeAdapter.java | 1 + .../infrastructure/JodaLocalDateAdapter.java | 1 + .../ParameterListExclusionStrategy.java | 1 + .../ChargeReadPlatformServiceImpl.java | 4 +- .../ClientReadPlatformServiceImpl.java | 10 ++--- .../CurrencyReadPlatformServiceImpl.java | 2 +- .../DepositProductNotFoundException.java | 7 +--- .../service/FundReadPlatformServiceImpl.java | 2 +- .../service/GroupReadPlatformServiceImpl.java | 4 +- .../JdbcTenantDetailsService.java | 2 +- ...RepaymentScheduleTransactionProcessor.java | 4 ++ ...RepaymentScheduleTransactionProcessor.java | 4 ++ ...quivalentFlatInterestRebateCalculator.java | 2 + ...RepaymentScheduleTransactionProcessor.java | 1 + .../platform/loan/domain/LoanCharge.java | 17 +++++++-- ...RepaymentScheduleTransactionProcessor.java | 1 + .../CalculationPlatformServiceImpl.java | 20 +++++++--- .../loan/service/LoanChargeAssembler.java | 38 +++++++++++++++++++ .../service/LoanReadPlatformServiceImpl.java | 3 +- ...WritePlatformServiceJpaRepositoryImpl.java | 11 +++++- .../LoanProductReadPlatformServiceImpl.java | 4 +- .../AmortizationLoanScheduleGenerator.java | 5 ++- ...ingBalanceMethodLoanScheduleGenerator.java | 7 +++- ...entsAmortizationLoanScheduleGenerator.java | 23 ++++++++--- ...ipalAmortizationLoanScheduleGenerator.java | 38 +++++++++++++------ .../FlatMethodLoanScheduleGenerator.java | 27 +++++++++---- .../domain/LoanScheduleGenerator.java | 5 ++- .../OfficeReadPlatformServiceImpl.java | 6 +-- ...DepositAccountReadPlatformServiceImpl.java | 4 +- ...DepositProductReadPlatformServiceImpl.java | 4 +- .../SavingProductReadPlatformServiceImpl.java | 6 +-- .../service/StaffReadPlatformServiceImpl.java | 2 +- .../AppUserReadPlatformServiceImpl.java | 2 +- .../PermissionReadPlatformServiceImpl.java | 2 +- .../service/RoleReadPlatformServiceImpl.java | 2 +- 49 files changed, 240 insertions(+), 123 deletions(-) create mode 100644 mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanChargeAssembler.java diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/Specifications.java b/mifosng-provider/src/main/java/org/mifosng/platform/Specifications.java index 110b4e6f4..be019f92a 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/Specifications.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/Specifications.java @@ -9,6 +9,7 @@ import org.mifosng.platform.client.domain.Client; import org.mifosng.platform.loan.domain.Loan; import org.springframework.data.jpa.domain.Specification; +@SuppressWarnings("unused") public final class Specifications { public static Specification loansThatMatch(final Client client) { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/LoansApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/LoansApiResource.java index 2037c2613..0cb64e568 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/LoansApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/LoansApiResource.java @@ -303,17 +303,10 @@ public class LoansApiResource { @Produces({MediaType.APPLICATION_JSON}) public String modifyLoanApplication( @PathParam("loanId") final Long loanId, -// @QueryParam("command") final String commandParam, -// @Context final UriInfo uriInfo, final String jsonRequestBody) { final LoanApplicationCommand command = this.apiDataConversionService.convertJsonToLoanApplicationCommand(loanId, jsonRequestBody); -// if (is(commandParam, "calculateLoanSchedule")) { -// CalculateLoanScheduleCommand calculateLoanScheduleCommand = command.toCalculateLoanScheduleCommand(); -// return calculateLoanSchedule(uriInfo, calculateLoanScheduleCommand); -// } - final EntityIdentifier identifier = this.loanWritePlatformService.modifyLoanApplication(command); return this.apiJsonSerializerService.serializeEntityIdentifier(identifier); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/ReportsApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/ReportsApiResource.java index 37dce3a09..04ba065aa 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/ReportsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/ReportsApiResource.java @@ -153,7 +153,7 @@ public class ReportsApiResource { if (!parameterType) { AppUser currentUser = context.authenticatedUser(); if (currentUser.hasNotPermissionForReport(reportName)) { - // TODO - message isnt passing back the message in the string in + // FIXME - JW - message isnt passing back the message in the string in // the json just a generalised not authorised message throw new NoAuthorizationException( "Not Authorised to Run Report: " + reportName); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/CalculateLoanScheduleCommand.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/CalculateLoanScheduleCommand.java index 3c489147c..cd23944da 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/CalculateLoanScheduleCommand.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/CalculateLoanScheduleCommand.java @@ -28,6 +28,7 @@ public class CalculateLoanScheduleCommand { private final LocalDate expectedDisbursementDate; private final LocalDate repaymentsStartingFromDate; private final LocalDate interestChargedFromDate; + private final LoanChargeCommand[] charges; public CalculateLoanScheduleCommand( final Long productId, @@ -36,7 +37,7 @@ public class CalculateLoanScheduleCommand { final Integer repaymentEvery, final Integer repaymentFrequency, final Integer numberOfRepayments, Integer amortizationMethod, final Integer loanTermFrequency, final Integer loanTermFrequencyType, final LocalDate expectedDisbursementDate, - final LocalDate repaymentsStartingFromDate, final LocalDate interestCalculatedFromDate) { + final LocalDate repaymentsStartingFromDate, final LocalDate interestCalculatedFromDate, final LoanChargeCommand[] charges) { this.productId = productId; this.principal = principal; @@ -54,6 +55,7 @@ public class CalculateLoanScheduleCommand { this.expectedDisbursementDate = expectedDisbursementDate; this.repaymentsStartingFromDate = repaymentsStartingFromDate; this.interestChargedFromDate= interestCalculatedFromDate; + this.charges = charges; } public Long getProductId() { @@ -115,4 +117,8 @@ public class CalculateLoanScheduleCommand { public LocalDate getInterestChargedFromDate() { return interestChargedFromDate; } + + public LoanChargeCommand[] getCharges() { + return charges; + } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/LoanApplicationCommand.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/LoanApplicationCommand.java index cb5fccefd..7ccc9195f 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/LoanApplicationCommand.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/LoanApplicationCommand.java @@ -96,10 +96,12 @@ public class LoanApplicationCommand { } public CalculateLoanScheduleCommand toCalculateLoanScheduleCommand() { - return new CalculateLoanScheduleCommand(productId, - principal, interestRatePerPeriod, interestRateFrequencyType, interestType, interestCalculationPeriodType, repaymentEvery, repaymentFrequencyType, numberOfRepayments, amortizationType, + return new CalculateLoanScheduleCommand(this.productId, + this.principal, this.interestRatePerPeriod, this.interestRateFrequencyType, + this.interestType, this.interestCalculationPeriodType, this.repaymentEvery, + this.repaymentFrequencyType, this.numberOfRepayments, this.amortizationType, this.loanTermFrequency, this.loanTermFrequencyType, - expectedDisbursementDate, repaymentsStartingFromDate, interestChargedFromDate); + this.expectedDisbursementDate, this.repaymentsStartingFromDate, this.interestChargedFromDate, this.charges); } public Long getLoanId() { @@ -200,7 +202,7 @@ public class LoanApplicationCommand { public LoanProductCommand toLoanProductCommand() { - // TODO - FIX UP FOR CHARGES. + // FIXME - KW - CHARGE - FIX UP FOR CHARGES - take look at loan product charges also and align usage with other loan areas. return new LoanProductCommand(modifiedParameters, this.productId, null, null, this.fundId, this.transactionProcessingStrategyId, null, null, diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/DepositProductLookup.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/DepositProductLookup.java index fa1e360bb..e0be0c382 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/DepositProductLookup.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/DepositProductLookup.java @@ -1,17 +1,11 @@ package org.mifosng.platform.api.data; -import java.io.Serializable; +public class DepositProductLookup { -public class DepositProductLookup implements Serializable { - - private Long id; - private String name; - - public DepositProductLookup() { - // TODO Auto-generated constructor stub - } - - public DepositProductLookup(Long id, String name) { + private final Long id; + private final String name; + + public DepositProductLookup(final Long id, final String name) { this.id = id; this.name = name; } @@ -20,18 +14,7 @@ public class DepositProductLookup implements Serializable { return id; } - public void setId(Long id) { - this.id = id; - } - public String getName() { return name; } - - public void setName(String name) { - this.name = name; - } - - - -} +} \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanSchedulePeriodData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanSchedulePeriodData.java index d7b2902e7..aac0b5699 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanSchedulePeriodData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanSchedulePeriodData.java @@ -39,13 +39,16 @@ public class LoanSchedulePeriodData { private final BigDecimal totalWaivedForPeriod; private final BigDecimal totalOutstandingForPeriod; - public static LoanSchedulePeriodData disbursement(final LocalDate disbursementDate, final BigDecimal principalDisbursed) { + public static LoanSchedulePeriodData disbursementOnlyPeriod( + final LocalDate disbursementDate, + final BigDecimal principalDisbursed, + final BigDecimal chargesDueAtTimeOfDisbursement) { Integer periodNumber = Integer.valueOf(0); LocalDate from = null; - return new LoanSchedulePeriodData(periodNumber, from, disbursementDate, principalDisbursed); + return new LoanSchedulePeriodData(periodNumber, from, disbursementDate, principalDisbursed, chargesDueAtTimeOfDisbursement); } - public static LoanSchedulePeriodData repaymentPeriod(final Integer periodNumber, + public static LoanSchedulePeriodData repaymentOnlyPeriod(final Integer periodNumber, final LocalDate fromDate, final LocalDate dueDate, final BigDecimal principalDue, final BigDecimal principalOutstanding, final BigDecimal interestDueOnPrincipalOutstanding, final BigDecimal totalDueForPeriod) { @@ -84,7 +87,8 @@ public class LoanSchedulePeriodData { final Integer periodNumber, final LocalDate fromDate, final LocalDate dueDate, - final BigDecimal principalDisbursed) { + final BigDecimal principalDisbursed, + final BigDecimal chargesDueAtTimeOfDisbursement) { this.period = periodNumber; this.fromDate = fromDate; this.dueDate = dueDate; @@ -106,12 +110,12 @@ public class LoanSchedulePeriodData { this.interestWaived = null; this.interestOutstanding = null; - this.chargesDue = BigDecimal.ZERO; + this.chargesDue = chargesDueAtTimeOfDisbursement; this.chargesPaid = null; - this.chargesOutstanding = null; + this.chargesOutstanding = chargesDueAtTimeOfDisbursement; - this.totalOriginalDueForPeriod = null; - this.totalDueForPeriod = null; + this.totalOriginalDueForPeriod = chargesDueAtTimeOfDisbursement; + this.totalDueForPeriod = chargesDueAtTimeOfDisbursement; this.totalPaidForPeriod = BigDecimal.ZERO; this.totalWaivedForPeriod = null; this.totalOutstandingForPeriod = null; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/AccessDeniedExceptionMapper.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/AccessDeniedExceptionMapper.java index 2fca3558d..dac31b4fb 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/AccessDeniedExceptionMapper.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/AccessDeniedExceptionMapper.java @@ -23,7 +23,7 @@ import org.springframework.stereotype.Component; public class AccessDeniedExceptionMapper implements ExceptionMapper { @Override - public Response toResponse(AccessDeniedException exception) { + public Response toResponse(@SuppressWarnings("unused") AccessDeniedException exception) { // Status code 403 really reads as: "Authenticated - but not authorized": return Response.status(Status.FORBIDDEN).entity(ApiGlobalErrorResponse.unAuthorized()).type(MediaType.APPLICATION_JSON).build(); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/BadCredentialsExceptionMapper.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/BadCredentialsExceptionMapper.java index 1bbc3695f..a8f1a1a4c 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/BadCredentialsExceptionMapper.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/BadCredentialsExceptionMapper.java @@ -22,7 +22,7 @@ import org.springframework.stereotype.Component; public class BadCredentialsExceptionMapper implements ExceptionMapper { @Override - public Response toResponse(BadCredentialsException exception) { + public Response toResponse(@SuppressWarnings("unused") BadCredentialsException exception) { return Response.status(Status.UNAUTHORIZED).entity(ApiGlobalErrorResponse.unAuthenticated()).type(MediaType.APPLICATION_JSON).build(); } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/InvalidJsonExceptionMapper.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/InvalidJsonExceptionMapper.java index 7456bf7eb..8714d31da 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/InvalidJsonExceptionMapper.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/InvalidJsonExceptionMapper.java @@ -19,7 +19,7 @@ import org.springframework.stereotype.Component; public class InvalidJsonExceptionMapper implements ExceptionMapper { @Override - public Response toResponse(final InvalidJsonException exception) { + public Response toResponse(@SuppressWarnings("unused") final InvalidJsonException exception) { String globalisationMessageCode = "error.msg.invalid.request.body"; String defaultUserMessage = "The JSON provided in the body of the request is invalid or missing."; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/InvalidTenantIdentifierExceptionMapper.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/InvalidTenantIdentifierExceptionMapper.java index 1d0df4197..6571957e1 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/InvalidTenantIdentifierExceptionMapper.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/InvalidTenantIdentifierExceptionMapper.java @@ -22,7 +22,7 @@ import org.springframework.stereotype.Component; public class InvalidTenantIdentifierExceptionMapper implements ExceptionMapper { @Override - public Response toResponse(final InvalidTenantIdentiferException e) { + public Response toResponse(@SuppressWarnings("unused") final InvalidTenantIdentiferException e) { return Response.status(Status.UNAUTHORIZED).entity(ApiGlobalErrorResponse.invalidTenantIdentifier()).type(MediaType.APPLICATION_JSON).build(); } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/MalformedJsonExceptionMapper.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/MalformedJsonExceptionMapper.java index dcc1d39e1..2a417bc97 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/MalformedJsonExceptionMapper.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/MalformedJsonExceptionMapper.java @@ -21,7 +21,7 @@ import com.google.gson.stream.MalformedJsonException; public class MalformedJsonExceptionMapper implements ExceptionMapper { @Override - public Response toResponse(final MalformedJsonException exception) { + public Response toResponse(@SuppressWarnings("unused") final MalformedJsonException exception) { String globalisationMessageCode = "error.msg.invalid.request.body"; String defaultUserMessage = "The JSON provided in the body of the request is invalid or missing."; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/NoAuthorizationExceptionMapper.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/NoAuthorizationExceptionMapper.java index 89e0e8a9d..8beffd6ed 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/NoAuthorizationExceptionMapper.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/NoAuthorizationExceptionMapper.java @@ -23,7 +23,7 @@ import org.springframework.stereotype.Component; public class NoAuthorizationExceptionMapper implements ExceptionMapper { @Override - public Response toResponse(NoAuthorizationException exception) { + public Response toResponse(@SuppressWarnings("unused") NoAuthorizationException exception) { // Status code 403 really reads as: "Authenticated - but not authorized": return Response.status(Status.FORBIDDEN).entity(ApiGlobalErrorResponse.unAuthorized()).type(MediaType.APPLICATION_JSON).build(); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/UnAuthenticatedUserExceptionMapper.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/UnAuthenticatedUserExceptionMapper.java index a64380727..16188ac61 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/UnAuthenticatedUserExceptionMapper.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/errorhandling/UnAuthenticatedUserExceptionMapper.java @@ -20,7 +20,7 @@ import org.springframework.stereotype.Component; public class UnAuthenticatedUserExceptionMapper implements ExceptionMapper { @Override - public Response toResponse(UnAuthenticatedUserException exception) { + public Response toResponse(@SuppressWarnings("unused") UnAuthenticatedUserException exception) { // Status code 401 really reads as: "Unauthenticated": return Response.status(Status.UNAUTHORIZED).entity(ApiGlobalErrorResponse.unAuthenticated()).type(MediaType.APPLICATION_JSON).build(); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/JodaDateTimeAdapter.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/JodaDateTimeAdapter.java index a7c070305..f9291a558 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/JodaDateTimeAdapter.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/JodaDateTimeAdapter.java @@ -14,6 +14,7 @@ import com.google.gson.JsonSerializer; */ public class JodaDateTimeAdapter implements JsonSerializer { + @SuppressWarnings("unused") @Override public JsonElement serialize(DateTime src, Type typeOfSrc, JsonSerializationContext context) { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/JodaLocalDateAdapter.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/JodaLocalDateAdapter.java index bf51a82b2..f53fc5937 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/JodaLocalDateAdapter.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/JodaLocalDateAdapter.java @@ -15,6 +15,7 @@ import com.google.gson.JsonSerializer; */ public class JodaLocalDateAdapter implements JsonSerializer { + @SuppressWarnings("unused") @Override public JsonElement serialize(LocalDate src, Type typeOfSrc, JsonSerializationContext context) { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ParameterListExclusionStrategy.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ParameterListExclusionStrategy.java index 6633032ff..67647209f 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ParameterListExclusionStrategy.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ParameterListExclusionStrategy.java @@ -18,6 +18,7 @@ public class ParameterListExclusionStrategy implements ExclusionStrategy { return parameterNamesToSkip.contains(f.getName()); } + @SuppressWarnings("unused") @Override public boolean shouldSkipClass(Class clazz) { return false; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/charge/service/ChargeReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/charge/service/ChargeReadPlatformServiceImpl.java index c9d95d19a..ff2e846cf 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/charge/service/ChargeReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/charge/service/ChargeReadPlatformServiceImpl.java @@ -163,7 +163,7 @@ public class ChargeReadPlatformServiceImpl implements ChargeReadPlatformService @Override - public ChargeData mapRow(ResultSet rs, int rowNum) throws SQLException { + public ChargeData mapRow(ResultSet rs, @SuppressWarnings("unused") int rowNum) throws SQLException { Long id = rs.getLong("id"); String name = rs.getString("name"); BigDecimal amount = rs.getBigDecimal("amount"); @@ -205,7 +205,7 @@ public class ChargeReadPlatformServiceImpl implements ChargeReadPlatformService } @Override - public LoanChargeData mapRow(ResultSet rs, int rowNum) throws SQLException { + public LoanChargeData mapRow(ResultSet rs, @SuppressWarnings("unused") int rowNum) throws SQLException { Long id = rs.getLong("id"); Long chargeId = rs.getLong("chargeId"); String name = rs.getString("name"); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformServiceImpl.java index da381a607..da789c94e 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformServiceImpl.java @@ -118,7 +118,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService } @Override - public ClientData mapRow(final ResultSet rs, final int rowNum) + public ClientData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { Long officeId = JdbcSupport.getLong(rs, "officeId"); @@ -147,7 +147,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService } @Override - public ClientLookup mapRow(ResultSet rs, int rowNum) throws SQLException { + public ClientLookup mapRow(ResultSet rs, @SuppressWarnings("unused") int rowNum) throws SQLException { Long id = rs.getLong("id"); String firstname = rs.getString("firstname"); String lastname = rs.getString("lastname"); @@ -238,7 +238,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService @Override public ClientAccountSummaryData mapRow(final ResultSet rs, - final int rowNum) throws SQLException { + @SuppressWarnings("unused") final int rowNum) throws SQLException { Long id = JdbcSupport.getLong(rs, "id"); String externalId = rs.getString("externalId"); @@ -265,7 +265,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService @Override public ClientAccountSummaryData mapRow(final ResultSet rs, - final int rowNum) throws SQLException { + @SuppressWarnings("unused") final int rowNum) throws SQLException { Long id = JdbcSupport.getLong(rs, "id"); String externalId = rs.getString("externalId"); @@ -341,7 +341,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService } @Override - public NoteData mapRow(final ResultSet rs, final int rowNum) + public NoteData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { Long id = JdbcSupport.getLong(rs, "id"); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/currency/service/CurrencyReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/currency/service/CurrencyReadPlatformServiceImpl.java index 642aafdae..d49cd3516 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/currency/service/CurrencyReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/currency/service/CurrencyReadPlatformServiceImpl.java @@ -50,7 +50,7 @@ public class CurrencyReadPlatformServiceImpl implements CurrencyReadPlatformServ private static final class CurrencyMapper implements RowMapper { @Override - public CurrencyData mapRow(final ResultSet rs, final int rowNum) + public CurrencyData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { String code = rs.getString("code"); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/exceptions/DepositProductNotFoundException.java b/mifosng-provider/src/main/java/org/mifosng/platform/exceptions/DepositProductNotFoundException.java index 5aaa867f0..223cb2fa0 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/exceptions/DepositProductNotFoundException.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/exceptions/DepositProductNotFoundException.java @@ -4,10 +4,7 @@ public class DepositProductNotFoundException extends AbstractPlatformResourceNotFoundException { public DepositProductNotFoundException(Long id) { - super("error.msg.depositproduct.id.invalid", "Deposit product with identifier " + id + " does not exist", id); - // TODO Auto-generated constructor stub + super("error.msg.depositproduct.id.invalid", + "Deposit product with identifier " + id + " does not exist", id); } - - - } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/fund/service/FundReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/fund/service/FundReadPlatformServiceImpl.java index a7b885020..ff9eecaa0 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/fund/service/FundReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/fund/service/FundReadPlatformServiceImpl.java @@ -34,7 +34,7 @@ public class FundReadPlatformServiceImpl implements FundReadPlatformService { } @Override - public FundData mapRow(final ResultSet rs, final int rowNum) + public FundData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { Long id = rs.getLong("id"); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/group/service/GroupReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/group/service/GroupReadPlatformServiceImpl.java index ec4a010ef..e1fe1d99c 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/group/service/GroupReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/group/service/GroupReadPlatformServiceImpl.java @@ -80,7 +80,7 @@ public class GroupReadPlatformServiceImpl implements GroupReadPlatformService { } @Override - public GroupData mapRow(ResultSet rs, int rowNum) throws SQLException { + public GroupData mapRow(ResultSet rs, @SuppressWarnings("unused") int rowNum) throws SQLException { Long id = rs.getLong("id"); String name = rs.getString("name"); @@ -110,7 +110,7 @@ public class GroupReadPlatformServiceImpl implements GroupReadPlatformService { } @Override - public ClientLookup mapRow(ResultSet rs, int rowNum) throws SQLException { + public ClientLookup mapRow(ResultSet rs, @SuppressWarnings("unused") int rowNum) throws SQLException { Long id = rs.getLong("id"); String firstname = rs.getString("firstname"); String lastname = rs.getString("lastname"); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/infrastructure/JdbcTenantDetailsService.java b/mifosng-provider/src/main/java/org/mifosng/platform/infrastructure/JdbcTenantDetailsService.java index cad2713f3..7777569e4 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/infrastructure/JdbcTenantDetailsService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/infrastructure/JdbcTenantDetailsService.java @@ -43,7 +43,7 @@ public class JdbcTenantDetailsService implements TenantDetailsService { private static final class TenantMapper implements RowMapper { @Override - public MifosPlatformTenant mapRow(final ResultSet rs, final int rowNum) throws SQLException { + public MifosPlatformTenant mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { Long id = rs.getLong("id"); String name = rs.getString("name"); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/AdhikarLoanRepaymentScheduleTransactionProcessor.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/AdhikarLoanRepaymentScheduleTransactionProcessor.java index b3909bf20..c7c83068f 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/AdhikarLoanRepaymentScheduleTransactionProcessor.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/AdhikarLoanRepaymentScheduleTransactionProcessor.java @@ -25,6 +25,7 @@ public class AdhikarLoanRepaymentScheduleTransactionProcessor extends AbstractLo * For creocore, early is defined as any date before the installment due * date */ + @SuppressWarnings("unused") @Override protected boolean isTransactionInAdvanceOfInstallment( final int currentInstallmentIndex, @@ -39,6 +40,7 @@ public class AdhikarLoanRepaymentScheduleTransactionProcessor extends AbstractLo /** * For early/'in advance' repayments, pays off principal component only. */ + @SuppressWarnings("unused") @Override protected Money handleTransactionThatIsPaymentInAdvanceOfInstallment( final LoanRepaymentScheduleInstallment currentInstallment, @@ -53,6 +55,7 @@ public class AdhikarLoanRepaymentScheduleTransactionProcessor extends AbstractLo * For late repayments, pay off in the same way as on-time payments, * interest first then principal. */ + @SuppressWarnings("unused") @Override protected Money handleTransactionThatIsALateRepaymentOfInstallment( final LoanRepaymentScheduleInstallment currentInstallment, @@ -135,6 +138,7 @@ public class AdhikarLoanRepaymentScheduleTransactionProcessor extends AbstractLo return transactionAmountRemaining; } + @SuppressWarnings("unused") @Override protected void onLoanOverpayment(final LoanTransaction loanTransaction, final Money loanOverPaymentAmount) { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/CreocoreLoanRepaymentScheduleTransactionProcessor.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/CreocoreLoanRepaymentScheduleTransactionProcessor.java index 71a4b9b24..efbef5f60 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/CreocoreLoanRepaymentScheduleTransactionProcessor.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/CreocoreLoanRepaymentScheduleTransactionProcessor.java @@ -25,6 +25,7 @@ public class CreocoreLoanRepaymentScheduleTransactionProcessor extends * For creocore, early is defined as any date before the installment due * date */ + @SuppressWarnings("unused") @Override protected boolean isTransactionInAdvanceOfInstallment( final int currentInstallmentIndex, @@ -40,6 +41,7 @@ public class CreocoreLoanRepaymentScheduleTransactionProcessor extends * For early/'in advance' repayments, pay off in the same way as on-time payments, * interest first then principal. */ + @SuppressWarnings("unused") @Override protected Money handleTransactionThatIsPaymentInAdvanceOfInstallment( final LoanRepaymentScheduleInstallment currentInstallment, @@ -54,6 +56,7 @@ public class CreocoreLoanRepaymentScheduleTransactionProcessor extends * For late repayments, pay off in the same way as on-time payments, * interest first then principal. */ + @SuppressWarnings("unused") @Override protected Money handleTransactionThatIsALateRepaymentOfInstallment( final LoanRepaymentScheduleInstallment currentInstallment, @@ -95,6 +98,7 @@ public class CreocoreLoanRepaymentScheduleTransactionProcessor extends return transactionAmountRemaining; } + @SuppressWarnings("unused") @Override protected void onLoanOverpayment(final LoanTransaction loanTransaction, final Money loanOverPaymentAmount) { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/DailyEquivalentFlatInterestRebateCalculator.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/DailyEquivalentFlatInterestRebateCalculator.java index b339a325d..8a1b03a3f 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/DailyEquivalentFlatInterestRebateCalculator.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/DailyEquivalentFlatInterestRebateCalculator.java @@ -9,6 +9,8 @@ import org.joda.time.LocalDate; import org.mifosng.platform.currency.domain.MonetaryCurrency; import org.mifosng.platform.currency.domain.Money; +// FIXME - KW - this might be deprecated now +@SuppressWarnings("unused") public class DailyEquivalentFlatInterestRebateCalculator implements InterestRebateCalculator { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/HeavensFamilyLoanRepaymentScheduleTransactionProcessor.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/HeavensFamilyLoanRepaymentScheduleTransactionProcessor.java index 27f1e3eba..977e9e427 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/HeavensFamilyLoanRepaymentScheduleTransactionProcessor.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/HeavensFamilyLoanRepaymentScheduleTransactionProcessor.java @@ -18,6 +18,7 @@ import org.mifosng.platform.currency.domain.Money; * * If the entire principal of an installment is paid in advance then the interest component is waived. */ +@SuppressWarnings("unused") public class HeavensFamilyLoanRepaymentScheduleTransactionProcessor extends AbstractLoanRepaymentScheduleTransactionProcessor { /** diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanCharge.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanCharge.java index 93dbc8f26..b8b96a237 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanCharge.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanCharge.java @@ -2,6 +2,8 @@ package org.mifosng.platform.loan.domain; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.HashSet; +import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; @@ -13,6 +15,7 @@ import org.mifosng.platform.api.commands.LoanChargeCommand; import org.mifosng.platform.charge.domain.Charge; import org.mifosng.platform.charge.domain.ChargeCalculationType; import org.mifosng.platform.charge.domain.ChargeTimeType; +import org.mifosng.platform.currency.domain.Money; import org.springframework.data.jpa.domain.AbstractPersistable; @Entity @@ -23,7 +26,6 @@ public class LoanCharge extends AbstractPersistable { @JoinColumn(name = "loan_id", referencedColumnName = "id", nullable=false) private Loan loan; - @SuppressWarnings("unused") @ManyToOne(optional = false) @JoinColumn(name = "charge_id", referencedColumnName = "id", nullable=false) private Charge charge; @@ -92,7 +94,7 @@ public class LoanCharge extends AbstractPersistable { return ChargeTimeType.fromInt(this.chargeTime).equals(ChargeTimeType.DISBURSEMENT); } - public BigDecimal calculateMonetaryAmount() { + public BigDecimal calculateMonetaryAmount(final Money principalDisbursed) { BigDecimal calculatedAmount = BigDecimal.ZERO; if (ChargeCalculationType.fromInt(chargeCalculation).equals(ChargeCalculationType.FLAT)) { @@ -104,13 +106,22 @@ public class LoanCharge extends AbstractPersistable { amountAsPercentageFactor = this.amount.divide(BigDecimal.valueOf(Double.valueOf("100"))); } - calculatedAmount = this.loan.getPrincpal().multiplyRetainScale(amountAsPercentageFactor, RoundingMode.HALF_EVEN).getAmount(); + calculatedAmount = principalDisbursed.multiplyRetainScale(amountAsPercentageFactor, RoundingMode.HALF_EVEN).getAmount(); } return calculatedAmount; } + + public BigDecimal calculateMonetaryAmount() { + return calculateMonetaryAmount(this.loan.getPrincpal()); + } private boolean isGreaterThanZero(final BigDecimal value) { return value.compareTo(BigDecimal.ZERO) == 1; } + + public LoanChargeCommand toData() { + Set modifiedParameters = new HashSet(); + return new LoanChargeCommand(modifiedParameters, this.getId(), this.charge.getId(), this.amount, this.chargeTime, this.chargeCalculation); + } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/MifosStyleLoanRepaymentScheduleTransactionProcessor.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/MifosStyleLoanRepaymentScheduleTransactionProcessor.java index 3363cd786..b4e9fcda5 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/MifosStyleLoanRepaymentScheduleTransactionProcessor.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/MifosStyleLoanRepaymentScheduleTransactionProcessor.java @@ -15,6 +15,7 @@ import org.mifosng.platform.currency.domain.Money; * means, recalculate the interest component based on the how much principal is outstanding at a point in time; * but this isnt trying to model that option only the basic one for now. */ +@SuppressWarnings("unused") public class MifosStyleLoanRepaymentScheduleTransactionProcessor extends AbstractLoanRepaymentScheduleTransactionProcessor { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculationPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculationPlatformServiceImpl.java index 4f854d403..9b041eaf8 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculationPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculationPlatformServiceImpl.java @@ -1,5 +1,7 @@ package org.mifosng.platform.loan.service; +import java.util.Set; + import org.joda.time.LocalDate; import org.mifosng.platform.api.LoanScheduleNewData; import org.mifosng.platform.api.commands.CalculateLoanScheduleCommand; @@ -11,6 +13,7 @@ import org.mifosng.platform.exceptions.CurrencyNotFoundException; import org.mifosng.platform.exceptions.LoanNotFoundException; import org.mifosng.platform.loan.domain.InterestMethod; import org.mifosng.platform.loan.domain.Loan; +import org.mifosng.platform.loan.domain.LoanCharge; import org.mifosng.platform.loan.domain.LoanPayoffSummary; import org.mifosng.platform.loan.domain.LoanProductRelatedDetail; import org.mifosng.platform.loan.domain.LoanRepository; @@ -30,18 +33,21 @@ public class CalculationPlatformServiceImpl implements CalculationPlatformServic private final ApplicationCurrencyRepository applicationCurrencyRepository; private final PlatformSecurityContext context; private final LoanProductRelatedDetailAssembler loanProductRelatedDetailAssembler; + private final LoanChargeAssembler loanChargeAssembler; @Autowired public CalculationPlatformServiceImpl( final PlatformSecurityContext context, final LoanRepository loanRepository, final ApplicationCurrencyRepository applicationCurrencyRepository, - final LoanProductRelatedDetailAssembler loanProductRelatedDetailAssembler) { + final LoanProductRelatedDetailAssembler loanProductRelatedDetailAssembler, + final LoanChargeAssembler loanChargeAssembler) { this.context = context; this.loanRepository = loanRepository; this.applicationCurrencyRepository = applicationCurrencyRepository; this.loanScheduleFactory = new DefaultLoanScheduleGeneratorFactory(); this.loanProductRelatedDetailAssembler = loanProductRelatedDetailAssembler; + this.loanChargeAssembler = loanChargeAssembler; } @Override @@ -49,24 +55,26 @@ public class CalculationPlatformServiceImpl implements CalculationPlatformServic context.authenticatedUser(); - CalculateLoanScheduleCommandValidator validator = new CalculateLoanScheduleCommandValidator(command); + final CalculateLoanScheduleCommandValidator validator = new CalculateLoanScheduleCommandValidator(command); validator.validate(); - LoanProductRelatedDetail loanScheduleRelatedDetails = this.loanProductRelatedDetailAssembler.assembleFrom(command); + final LoanProductRelatedDetail loanScheduleRelatedDetails = this.loanProductRelatedDetailAssembler.assembleFrom(command); final Integer loanTermFrequency = command.getLoanTermFrequency(); final PeriodFrequencyType loanTermFrequencyType = PeriodFrequencyType.fromInt(command.getLoanTermFrequencyType()); final InterestMethod interestMethod = InterestMethod.fromInt(command.getInterestType()); - LoanScheduleGenerator loanScheduleGenerator = this.loanScheduleFactory.create(interestMethod); + final LoanScheduleGenerator loanScheduleGenerator = this.loanScheduleFactory.create(interestMethod); - ApplicationCurrency applicationCurrency = this.applicationCurrencyRepository.findOneByCode(loanScheduleRelatedDetails.getCurrency().getCode()); + final ApplicationCurrency applicationCurrency = this.applicationCurrencyRepository.findOneByCode(loanScheduleRelatedDetails.getCurrency().getCode()); + + final Set loanCharges = this.loanChargeAssembler.assembleFrom(command.getCharges()); return loanScheduleGenerator.generate(applicationCurrency, loanScheduleRelatedDetails, loanTermFrequency, loanTermFrequencyType, command.getExpectedDisbursementDate(), command.getRepaymentsStartingFromDate(), - command.getInterestChargedFromDate()); + command.getInterestChargedFromDate(), loanCharges); } @Override diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanChargeAssembler.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanChargeAssembler.java new file mode 100644 index 000000000..d9e4d3425 --- /dev/null +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanChargeAssembler.java @@ -0,0 +1,38 @@ +package org.mifosng.platform.loan.service; + +import java.util.HashSet; +import java.util.Set; + +import org.mifosng.platform.api.commands.LoanChargeCommand; +import org.mifosng.platform.charge.domain.Charge; +import org.mifosng.platform.charge.domain.ChargeRepository; +import org.mifosng.platform.loan.domain.LoanCharge; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class LoanChargeAssembler { + + private ChargeRepository chargeRepository; + + @Autowired + public LoanChargeAssembler(final ChargeRepository chargeRepository) { + this.chargeRepository = chargeRepository; + } + + public Set assembleFrom(final LoanChargeCommand[] charges) { + + final Set loanCharges = new HashSet(); + + // FIXME - KW - what if loanChargeCommands contains the actual loanCharge id, use loanChargeRepository to fetch it then. + if (charges != null) { + for (LoanChargeCommand loanChargeCommand : charges) { + Charge chargeDefinition = this.chargeRepository.findOne(loanChargeCommand.getChargeId()); + LoanCharge loanCharge = LoanCharge.createNew(chargeDefinition, loanChargeCommand); + loanCharges.add(loanCharge); + } + } + + return loanCharges; + } +} \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java index a8cbb9ad1..f06bc24e0 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java @@ -99,7 +99,8 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { final LoanScheduleMapper rm = new LoanScheduleMapper(disbursement); final String sql = "select " + rm.loanScheduleSchema() + " where l.id = ? order by ls.loan_id, ls.installment"; - final LoanSchedulePeriodData disbursementPeriod = LoanSchedulePeriodData.disbursement(disbursement.disbursementDate(), disbursement.amount()); + // FIXME - KW - pass through total chargesDueAtTimeOfDisbursementFigure + final LoanSchedulePeriodData disbursementPeriod = LoanSchedulePeriodData.disbursementOnlyPeriod(disbursement.disbursementDate(), disbursement.amount(), BigDecimal.ZERO); final Collection repaymentSchedulePeriods = this.jdbcTemplate.query(sql, rm, new Object[] { loanId }); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanWritePlatformServiceJpaRepositoryImpl.java index 426f88ad6..b7c9649ff 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanWritePlatformServiceJpaRepositoryImpl.java @@ -12,6 +12,7 @@ import org.mifosng.platform.api.LoanScheduleNewData; import org.mifosng.platform.api.commands.AdjustLoanTransactionCommand; import org.mifosng.platform.api.commands.CalculateLoanScheduleCommand; import org.mifosng.platform.api.commands.LoanApplicationCommand; +import org.mifosng.platform.api.commands.LoanChargeCommand; import org.mifosng.platform.api.commands.LoanStateTransitionCommand; import org.mifosng.platform.api.commands.LoanTransactionCommand; import org.mifosng.platform.api.commands.UndoStateTransitionCommand; @@ -342,13 +343,21 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf Integer interestMethod = loan.repaymentScheduleDetail().getInterestMethod().getValue(); Integer interestCalculationInPeriod = loan.repaymentScheduleDetail().getInterestCalculationPeriodMethod().getValue(); + Set loanCharges = loan.getCharges(); + List commands = new ArrayList(); + for (LoanCharge loanCharge : loanCharges) { + commands.add(loanCharge.toData()); + } + + LoanChargeCommand[] loanChargeCommands = commands.toArray(new LoanChargeCommand[commands.size()]); + CalculateLoanScheduleCommand calculateCommand = new CalculateLoanScheduleCommand( loan.loanProduct().getId(), principalAsDecimal, interestRatePerPeriod, interestRateFrequencyMethod, interestMethod, interestCalculationInPeriod, repaidEvery, selectedRepaymentFrequency, numberOfInstallments, selectedAmortizationMethod, loanTermFrequency, loanTermFrequencyType, - actualDisbursementDate, repaymentsStartingFromDate, interestCalculatedFromDate); + actualDisbursementDate, repaymentsStartingFromDate, interestCalculatedFromDate, loanChargeCommands); LoanScheduleNewData loanSchedule = this.calculationPlatformService.calculateLoanScheduleNew(calculateCommand); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductReadPlatformServiceImpl.java index 8a4c3d50f..b7a65f54b 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductReadPlatformServiceImpl.java @@ -167,7 +167,7 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo } @Override - public LoanProductData mapRow(final ResultSet rs, final int rowNum) + public LoanProductData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { Long id = rs.getLong("id"); @@ -246,7 +246,7 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo } @Override - public LoanProductLookup mapRow(final ResultSet rs, final int rowNum) + public LoanProductLookup mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { Long id = rs.getLong("id"); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/AmortizationLoanScheduleGenerator.java b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/AmortizationLoanScheduleGenerator.java index a34330447..e64ff0354 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/AmortizationLoanScheduleGenerator.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/AmortizationLoanScheduleGenerator.java @@ -2,10 +2,12 @@ package org.mifosng.platform.loanschedule.domain; import java.math.BigDecimal; import java.util.List; +import java.util.Set; import org.joda.time.LocalDate; import org.mifosng.platform.api.LoanScheduleNewData; import org.mifosng.platform.currency.domain.ApplicationCurrency; +import org.mifosng.platform.loan.domain.LoanCharge; import org.mifosng.platform.loan.domain.LoanProductRelatedDetail; public interface AmortizationLoanScheduleGenerator { @@ -18,5 +20,6 @@ public interface AmortizationLoanScheduleGenerator { LocalDate interestCalculatedFrom, BigDecimal periodInterestRateForRepaymentPeriod, LocalDate idealDisbursementDateBasedOnFirstRepaymentDate, - List scheduledDates); + List scheduledDates, + Set loanCharges); } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/DecliningBalanceMethodLoanScheduleGenerator.java b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/DecliningBalanceMethodLoanScheduleGenerator.java index fcf10a403..c8929c1b2 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/DecliningBalanceMethodLoanScheduleGenerator.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/DecliningBalanceMethodLoanScheduleGenerator.java @@ -2,11 +2,13 @@ package org.mifosng.platform.loanschedule.domain; import java.math.BigDecimal; import java.util.List; +import java.util.Set; import org.joda.time.LocalDate; import org.mifosng.platform.api.LoanScheduleNewData; import org.mifosng.platform.currency.domain.ApplicationCurrency; import org.mifosng.platform.loan.domain.AmortizationMethod; +import org.mifosng.platform.loan.domain.LoanCharge; import org.mifosng.platform.loan.domain.LoanProductRelatedDetail; import org.mifosng.platform.loan.domain.PeriodFrequencyType; @@ -41,7 +43,8 @@ public class DecliningBalanceMethodLoanScheduleGenerator implements LoanSchedule final PeriodFrequencyType loanTermFrequencyType, final LocalDate disbursementDate, final LocalDate firstRepaymentDate, - final LocalDate interestCalculatedFrom) { + final LocalDate interestCalculatedFrom, + final Set loanCharges) { // 1. generate valid set of 'due dates' based on some of the 'loan attributes' final List scheduledDates = this.scheduledDateGenerator.generate(loanScheduleInfo, disbursementDate, firstRepaymentDate); @@ -61,6 +64,6 @@ public class DecliningBalanceMethodLoanScheduleGenerator implements LoanSchedule interestCalculatedFrom, periodInterestRateForRepaymentPeriod, idealDisbursementDateBasedOnFirstRepaymentDate, - scheduledDates); + scheduledDates, loanCharges); } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/EqualInstallmentsAmortizationLoanScheduleGenerator.java b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/EqualInstallmentsAmortizationLoanScheduleGenerator.java index d45ec98b2..001daf76b 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/EqualInstallmentsAmortizationLoanScheduleGenerator.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/EqualInstallmentsAmortizationLoanScheduleGenerator.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Set; import org.joda.time.Days; import org.joda.time.LocalDate; @@ -13,6 +14,7 @@ import org.mifosng.platform.api.data.LoanSchedulePeriodData; import org.mifosng.platform.currency.domain.ApplicationCurrency; import org.mifosng.platform.currency.domain.MonetaryCurrency; import org.mifosng.platform.currency.domain.Money; +import org.mifosng.platform.loan.domain.LoanCharge; import org.mifosng.platform.loan.domain.LoanProductRelatedDetail; /** @@ -33,7 +35,8 @@ public class EqualInstallmentsAmortizationLoanScheduleGenerator implements Amort final LocalDate interestCalculatedFrom, final BigDecimal periodInterestRateForRepaymentPeriod, final LocalDate idealDisbursementDateBasedOnFirstRepaymentDate, - final List scheduledDates) { + final List scheduledDates, + final Set loanCharges) { final Collection periods = new ArrayList(); @@ -44,6 +47,7 @@ public class EqualInstallmentsAmortizationLoanScheduleGenerator implements Amort Money totalInterestDue = totalRepaymentDueForLoanTerm.minus(loanScheduleInfo.getPrincipal()); Money outstandingBalance = loanScheduleInfo.getPrincipal(); + Money principalDisbursed = loanScheduleInfo.getPrincipal(); Money totalPrincipal = Money.zero(monetaryCurrency); Money totalInterest = Money.zero(monetaryCurrency); @@ -54,16 +58,25 @@ public class EqualInstallmentsAmortizationLoanScheduleGenerator implements Amort scheduledDates, idealDisbursementDateBasedOnFirstRepaymentDate); + BigDecimal chargesDueAtTimeOfDisbursement = BigDecimal.ZERO; + for (LoanCharge loanCharge : loanCharges) { + // FIXME - KW - right now only charges at disbursement are supported. + if (loanCharge.isDueAtDisbursement()) { + chargesDueAtTimeOfDisbursement = chargesDueAtTimeOfDisbursement.add(loanCharge.calculateMonetaryAmount(principalDisbursed)); + } + } + + BigDecimal cumulativeChargesToDate = chargesDueAtTimeOfDisbursement; + // create entries of disbursement period on loan schedule - final LoanSchedulePeriodData disbursementPeriod = LoanSchedulePeriodData.disbursement(disbursementDate, loanScheduleInfo.getPrincipal().getAmount()); + final LoanSchedulePeriodData disbursementPeriod = LoanSchedulePeriodData.disbursementOnlyPeriod(disbursementDate, principalDisbursed.getAmount(), chargesDueAtTimeOfDisbursement); periods.add(disbursementPeriod); int loanTermInDays = Integer.valueOf(0); BigDecimal cumulativePrincipalDisbursed = loanScheduleInfo.getPrincipal().getAmount(); BigDecimal cumulativePrincipalDue = BigDecimal.ZERO; BigDecimal cumulativeInterestExpected = BigDecimal.ZERO; - BigDecimal cumulativeChargesToDate = BigDecimal.ZERO; - BigDecimal totalExpectedRepayment = BigDecimal.ZERO; + BigDecimal totalExpectedRepayment = chargesDueAtTimeOfDisbursement; LocalDate startDate = disbursementDate; int periodNumber = 1; @@ -110,7 +123,7 @@ public class EqualInstallmentsAmortizationLoanScheduleGenerator implements Amort outstandingBalance = outstandingBalance.minus(principalForInstallment); - LoanSchedulePeriodData installment = LoanSchedulePeriodData.repaymentPeriod(periodNumber, startDate, + LoanSchedulePeriodData installment = LoanSchedulePeriodData.repaymentOnlyPeriod(periodNumber, startDate, scheduledDueDate, principalForInstallment.getAmount(), outstandingBalance.getAmount(), diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/EqualPrincipalAmortizationLoanScheduleGenerator.java b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/EqualPrincipalAmortizationLoanScheduleGenerator.java index 366283d1d..0b3760898 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/EqualPrincipalAmortizationLoanScheduleGenerator.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/EqualPrincipalAmortizationLoanScheduleGenerator.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Set; import org.joda.time.Days; import org.joda.time.LocalDate; @@ -13,6 +14,7 @@ import org.mifosng.platform.api.data.LoanSchedulePeriodData; import org.mifosng.platform.currency.domain.ApplicationCurrency; import org.mifosng.platform.currency.domain.MonetaryCurrency; import org.mifosng.platform.currency.domain.Money; +import org.mifosng.platform.loan.domain.LoanCharge; import org.mifosng.platform.loan.domain.LoanProductRelatedDetail; public class EqualPrincipalAmortizationLoanScheduleGenerator implements AmortizationLoanScheduleGenerator { @@ -22,13 +24,15 @@ public class EqualPrincipalAmortizationLoanScheduleGenerator implements Amortiza @Override public LoanScheduleNewData generate( - ApplicationCurrency currency, - LoanProductRelatedDetail loanScheduleInfo, - LocalDate disbursementDate, LocalDate firstRepaymentDate, - LocalDate interestCalculatedFrom, - BigDecimal periodInterestRateForRepaymentPeriod, - LocalDate idealDisbursementDateBasedOnFirstRepaymentDate, - List scheduledDates) { + final ApplicationCurrency currency, + final LoanProductRelatedDetail loanScheduleInfo, + final LocalDate disbursementDate, + final LocalDate firstRepaymentDate, + final LocalDate interestCalculatedFrom, + final BigDecimal periodInterestRateForRepaymentPeriod, + final LocalDate idealDisbursementDateBasedOnFirstRepaymentDate, + final List scheduledDates, + final Set loanCharges) { final Collection periods = new ArrayList(); @@ -37,22 +41,32 @@ public class EqualPrincipalAmortizationLoanScheduleGenerator implements Amortiza Money totalDuePerInstallment = Money.zero(monetaryCurrency); Money outstandingBalance = loanScheduleInfo.getPrincipal(); + Money principalDisbursed = loanScheduleInfo.getPrincipal(); Money totalPrincipal = Money.zero(monetaryCurrency); Money totalInterest = Money.zero(monetaryCurrency); double interestCalculationGraceOnRepaymentPeriodFraction = this.paymentPeriodsInOneYearCalculator.calculateRepaymentPeriodAsAFractionOfDays(loanScheduleInfo.getRepaymentPeriodFrequencyType(), loanScheduleInfo.getRepayEvery(), interestCalculatedFrom, scheduledDates, idealDisbursementDateBasedOnFirstRepaymentDate); + BigDecimal chargesDueAtTimeOfDisbursement = BigDecimal.ZERO; + for (LoanCharge loanCharge : loanCharges) { + // FIXME - KW - right now only charges at disbursement are supported. + if (loanCharge.isDueAtDisbursement()) { + chargesDueAtTimeOfDisbursement = chargesDueAtTimeOfDisbursement.add(loanCharge.calculateMonetaryAmount(principalDisbursed)); + } + } + + BigDecimal cumulativeChargesToDate = chargesDueAtTimeOfDisbursement; + // create entries of disbursement period on loan schedule - final LoanSchedulePeriodData disbursementPeriod = LoanSchedulePeriodData.disbursement(disbursementDate, loanScheduleInfo.getPrincipal().getAmount()); + final LoanSchedulePeriodData disbursementPeriod = LoanSchedulePeriodData.disbursementOnlyPeriod(disbursementDate, principalDisbursed.getAmount(), chargesDueAtTimeOfDisbursement); periods.add(disbursementPeriod); int loanTermInDays = Integer.valueOf(0); - BigDecimal cumulativePrincipalDisbursed = loanScheduleInfo.getPrincipal().getAmount(); + BigDecimal cumulativePrincipalDisbursed = principalDisbursed.getAmount(); BigDecimal cumulativePrincipalDue = BigDecimal.ZERO; BigDecimal cumulativeInterestExpected = BigDecimal.ZERO; - BigDecimal cumulativeChargesToDate = BigDecimal.ZERO; - BigDecimal totalExpectedRepayment = BigDecimal.ZERO; + BigDecimal totalExpectedRepayment = chargesDueAtTimeOfDisbursement; LocalDate startDate = disbursementDate; int periodNumber = 1; @@ -90,7 +104,7 @@ public class EqualPrincipalAmortizationLoanScheduleGenerator implements Amortiza outstandingBalance = outstandingBalance.minus(principalForInstallment); - LoanSchedulePeriodData installment = LoanSchedulePeriodData.repaymentPeriod(periodNumber, startDate, + LoanSchedulePeriodData installment = LoanSchedulePeriodData.repaymentOnlyPeriod(periodNumber, startDate, scheduledDueDate, principalForInstallment.getAmount(), outstandingBalance.getAmount(), diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/FlatMethodLoanScheduleGenerator.java b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/FlatMethodLoanScheduleGenerator.java index b248b3a27..401c4541d 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/FlatMethodLoanScheduleGenerator.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/FlatMethodLoanScheduleGenerator.java @@ -6,6 +6,7 @@ import java.math.RoundingMode; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Set; import org.joda.time.Days; import org.joda.time.LocalDate; @@ -15,6 +16,7 @@ import org.mifosng.platform.api.data.LoanSchedulePeriodData; import org.mifosng.platform.currency.domain.ApplicationCurrency; import org.mifosng.platform.currency.domain.MonetaryCurrency; import org.mifosng.platform.currency.domain.Money; +import org.mifosng.platform.loan.domain.LoanCharge; import org.mifosng.platform.loan.domain.LoanProductRelatedDetail; import org.mifosng.platform.loan.domain.PeriodFrequencyType; @@ -31,7 +33,8 @@ public class FlatMethodLoanScheduleGenerator implements LoanScheduleGenerator { final PeriodFrequencyType loanTermFrequencyType, final LocalDate disbursementDate, final LocalDate firstRepaymentDate, - final LocalDate interestCalculatedFrom) { + final LocalDate interestCalculatedFrom, + final Set loanCharges) { final Collection periods = new ArrayList(); @@ -56,19 +59,29 @@ public class FlatMethodLoanScheduleGenerator implements LoanScheduleGenerator { RoundingMode.HALF_EVEN); Money outstandingBalance = loanScheduleInfo.getPrincipal(); + Money principalDisbursed = loanScheduleInfo.getPrincipal(); Money totalPrincipal = Money.zero(outstandingBalance.getCurrency()); Money totalInterest = Money.zero(outstandingBalance.getCurrency()); - + + BigDecimal chargesDueAtTimeOfDisbursement = BigDecimal.ZERO; + for (LoanCharge loanCharge : loanCharges) { + // FIXME - KW - right now only charges at disbursement are supported. + if (loanCharge.isDueAtDisbursement()) { + chargesDueAtTimeOfDisbursement = chargesDueAtTimeOfDisbursement.add(loanCharge.calculateMonetaryAmount(principalDisbursed)); + } + } + + BigDecimal cumulativeChargesToDate = chargesDueAtTimeOfDisbursement; + // create entries of disbursement period on loan schedule - final LoanSchedulePeriodData disbursementPeriod = LoanSchedulePeriodData.disbursement(disbursementDate, loanScheduleInfo.getPrincipal().getAmount()); + final LoanSchedulePeriodData disbursementPeriod = LoanSchedulePeriodData.disbursementOnlyPeriod(disbursementDate, principalDisbursed.getAmount(), chargesDueAtTimeOfDisbursement); periods.add(disbursementPeriod); int loanTermInDays = Integer.valueOf(0); - BigDecimal cumulativePrincipalDisbursed = loanScheduleInfo.getPrincipal().getAmount(); + BigDecimal cumulativePrincipalDisbursed = principalDisbursed.getAmount(); BigDecimal cumulativePrincipalDue = BigDecimal.ZERO; BigDecimal cumulativeInterestExpected = BigDecimal.ZERO; - BigDecimal cumulativeChargesToDate = BigDecimal.ZERO; - BigDecimal totalExpectedRepayment = BigDecimal.ZERO; + BigDecimal totalExpectedRepayment = chargesDueAtTimeOfDisbursement; LocalDate startDate = disbursementDate; int periodNumber = 1; @@ -98,7 +111,7 @@ public class FlatMethodLoanScheduleGenerator implements LoanScheduleGenerator { Money totalInstallmentDue = principalPerInstallment.plus(interestPerInstallment); outstandingBalance = outstandingBalance.minus(principalPerInstallment); - LoanSchedulePeriodData installment = LoanSchedulePeriodData.repaymentPeriod(periodNumber, startDate, + LoanSchedulePeriodData installment = LoanSchedulePeriodData.repaymentOnlyPeriod(periodNumber, startDate, scheduledDueDate, principalPerInstallment.getAmount(), outstandingBalance.getAmount(), diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/LoanScheduleGenerator.java b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/LoanScheduleGenerator.java index 8b517bd2b..abb97800d 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/LoanScheduleGenerator.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/LoanScheduleGenerator.java @@ -1,8 +1,11 @@ package org.mifosng.platform.loanschedule.domain; +import java.util.Set; + import org.joda.time.LocalDate; import org.mifosng.platform.api.LoanScheduleNewData; import org.mifosng.platform.currency.domain.ApplicationCurrency; +import org.mifosng.platform.loan.domain.LoanCharge; import org.mifosng.platform.loan.domain.LoanProductRelatedDetail; import org.mifosng.platform.loan.domain.PeriodFrequencyType; @@ -12,6 +15,6 @@ public interface LoanScheduleGenerator { LoanProductRelatedDetail loanScheduleInfo, Integer loanTermFrequency, PeriodFrequencyType loanTermFrequencyType, - LocalDate disbursementDate, LocalDate firstRepaymentDate, LocalDate interestCalculatedFrom); + LocalDate disbursementDate, LocalDate firstRepaymentDate, LocalDate interestCalculatedFrom, Set loanCharges); } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/service/OfficeReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/organisation/service/OfficeReadPlatformServiceImpl.java index c2001f204..d591607c6 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/service/OfficeReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/organisation/service/OfficeReadPlatformServiceImpl.java @@ -51,7 +51,7 @@ public class OfficeReadPlatformServiceImpl implements OfficeReadPlatformService } @Override - public OfficeData mapRow(final ResultSet rs, final int rowNum) + public OfficeData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { Long id = rs.getLong("id"); @@ -79,7 +79,7 @@ public class OfficeReadPlatformServiceImpl implements OfficeReadPlatformService } @Override - public OfficeLookup mapRow(final ResultSet rs, final int rowNum) + public OfficeLookup mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { Long id = rs.getLong("id"); @@ -106,7 +106,7 @@ public class OfficeReadPlatformServiceImpl implements OfficeReadPlatformService } @Override - public OfficeTransactionData mapRow(final ResultSet rs, final int rowNum) + public OfficeTransactionData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { Long id = rs.getLong("id"); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/saving/service/DepositAccountReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/saving/service/DepositAccountReadPlatformServiceImpl.java index 1cd4e9943..a8d89aa7c 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/saving/service/DepositAccountReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/saving/service/DepositAccountReadPlatformServiceImpl.java @@ -165,7 +165,7 @@ public class DepositAccountReadPlatformServiceImpl implements DepositAccountRead } @Override - public DepositAccountData mapRow(ResultSet rs, int rowNum) + public DepositAccountData mapRow(ResultSet rs, @SuppressWarnings("unused") int rowNum) throws SQLException { Long id = rs.getLong("id"); @@ -229,7 +229,7 @@ public class DepositAccountReadPlatformServiceImpl implements DepositAccountRead } @Override - public DepositAccountTransactionData mapRow(ResultSet rs, int rowNum) + public DepositAccountTransactionData mapRow(ResultSet rs, @SuppressWarnings("unused") int rowNum) throws SQLException { Long transactionId = rs.getLong("transactionId"); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/savingproduct/service/DepositProductReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/savingproduct/service/DepositProductReadPlatformServiceImpl.java index 76b76272a..50f3320c2 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/savingproduct/service/DepositProductReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/savingproduct/service/DepositProductReadPlatformServiceImpl.java @@ -79,7 +79,7 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead } @Override - public DepositProductData mapRow(ResultSet rs, int rowNum) + public DepositProductData mapRow(ResultSet rs, @SuppressWarnings("unused") int rowNum) throws SQLException { Long id = rs.getLong("id"); @@ -125,7 +125,7 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead } @Override - public DepositProductLookup mapRow(final ResultSet rs, final int rowNum) + public DepositProductLookup mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { Long id = rs.getLong("id"); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/savingproduct/service/SavingProductReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/savingproduct/service/SavingProductReadPlatformServiceImpl.java index 641847859..ba6444fd1 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/savingproduct/service/SavingProductReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/savingproduct/service/SavingProductReadPlatformServiceImpl.java @@ -77,7 +77,7 @@ public class SavingProductReadPlatformServiceImpl implements } catch (EmptyResultDataAccessException e) { throw new LoanProductNotFoundException(savingProductId); } - } // TODO Auto-generated method stub + } @Override public SavingProductData retrieveNewSavingProductDetails() { @@ -98,7 +98,7 @@ public class SavingProductReadPlatformServiceImpl implements } @Override - public SavingProductData mapRow(ResultSet rs, int rowNum) + public SavingProductData mapRow(ResultSet rs, @SuppressWarnings("unused") int rowNum) throws SQLException { Long id = rs.getLong("id"); @@ -132,7 +132,7 @@ public class SavingProductReadPlatformServiceImpl implements } @Override - public SavingProductLookup mapRow(final ResultSet rs, final int rowNum) + public SavingProductLookup mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { Long id = rs.getLong("id"); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/staff/service/StaffReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/staff/service/StaffReadPlatformServiceImpl.java index 8f4079d9d..147041058 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/staff/service/StaffReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/staff/service/StaffReadPlatformServiceImpl.java @@ -37,7 +37,7 @@ public class StaffReadPlatformServiceImpl implements StaffReadPlatformService { } @Override - public StaffData mapRow(final ResultSet rs, final int rowNum) + public StaffData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { Long id = rs.getLong("id"); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/AppUserReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/AppUserReadPlatformServiceImpl.java index 8ec9c6040..cf0793641 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/AppUserReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/AppUserReadPlatformServiceImpl.java @@ -120,7 +120,7 @@ public class AppUserReadPlatformServiceImpl implements AppUserReadPlatformServic } @Override - public AppUserData mapRow(final ResultSet rs, final int rowNum) + public AppUserData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { Long id = rs.getLong("id"); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformServiceImpl.java index 7099bade2..29ae131d6 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformServiceImpl.java @@ -39,7 +39,7 @@ public class PermissionReadPlatformServiceImpl implements PermissionReadPlatform private static final class PermissionMapper implements RowMapper { @Override - public PermissionData mapRow(final ResultSet rs, final int rowNum) throws SQLException { + public PermissionData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { Long id = JdbcSupport.getLong(rs, "id"); String name = rs.getString("name"); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/RoleReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/RoleReadPlatformServiceImpl.java index 363731e86..11d18d514 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/RoleReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/RoleReadPlatformServiceImpl.java @@ -56,7 +56,7 @@ public class RoleReadPlatformServiceImpl implements RoleReadPlatformService { protected static final class RoleMapper implements RowMapper { @Override - public RoleData mapRow(final ResultSet rs, final int rowNum) + public RoleData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { Long id = JdbcSupport.getLong(rs, "id");