diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountNumberPreferencesTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountNumberPreferencesTest.java index a75bfa444..26d4aa637 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountNumberPreferencesTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountNumberPreferencesTest.java @@ -86,7 +86,7 @@ public class AccountNumberPreferencesTest { private Integer groupID; private Integer centerId; private String groupAccountNo; - + @Before public void setup() { Utils.initializeRESTAssured(); @@ -191,17 +191,17 @@ public class AccountNumberPreferencesTest { this.savingsAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper.createSavingsAccountNumberPreference( this.responseSpec, "resourceId"); System.out.println("Successfully created account number preferences for Savings (ID: " + this.savingsAccountNumberPreferenceId); - + this.groupsAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper.createGroupsAccountNumberPreference( this.responseSpec, "resourceId"); System.out.println("Successfully created account number preferences for Groups (ID: " + this.groupsAccountNumberPreferenceId); - + this.centerAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper.createCenterAccountNumberPreference( this.responseSpec, "resourceId"); System.out.println("Successfully created account number preferences for Center (ID: " + this.centerAccountNumberPreferenceId); this.accountNumberPreferencesHelper.verifyCreationOfAccountNumberPreferences(this.clientAccountNumberPreferenceId, - this.loanAccountNumberPreferenceId, this.savingsAccountNumberPreferenceId, this.groupsAccountNumberPreferenceId, + this.loanAccountNumberPreferenceId, this.savingsAccountNumberPreferenceId, this.groupsAccountNumberPreferenceId, this.centerAccountNumberPreferenceId, this.responseSpec, this.requestSpec); this.createAccountNumberPreferenceInvalidData("1000", "1001"); @@ -278,7 +278,7 @@ public class AccountNumberPreferencesTest { this.createAndValidateClientWithoutAccountPreference(); } } - + private void createAndValidateGroup(Boolean isAccountPreferenceSetUp) { this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build(); this.groupID = GroupHelper.createGroup(this.requestSpec, this.responseSpec); @@ -286,25 +286,25 @@ public class AccountNumberPreferencesTest { this.groupID = GroupHelper.activateGroup(this.requestSpec, this.responseSpec, groupID.toString()); GroupHelper.verifyGroupActivatedOnServer(this.requestSpec, this.responseSpec, groupID, true); - + final String GROUP_URL = "/fineract-provider/api/v1/groups/" + this.groupID + "?" + Utils.TENANT_IDENTIFIER; this.groupAccountNo = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, "accountNo"); - + if (isAccountPreferenceSetUp) { String groupsPrefixName = (String) this.accountNumberPreferencesHelper.getAccountNumberPreference( this.groupsAccountNumberPreferenceId, "prefixType.value"); - + if (groupsPrefixName.equals(this.officeName)) { - + final String groupOfficeName = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, "officeName"); - + this.validateAccountNumberLengthAndStartsWithPrefix(this.groupAccountNo, groupOfficeName); } } else { validateAccountNumberLengthAndStartsWithPrefix(this.groupAccountNo, null); } } - + private void createAndValidateCenter(Boolean isAccountPreferenceSetUp) { this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build(); Integer officeId = new OfficeHelper(requestSpec, responseSpec).createOffice("01 July 2007"); @@ -314,21 +314,21 @@ public class AccountNumberPreferencesTest { CenterDomain center = CenterHelper.retrieveByID(centerId, requestSpec, responseSpec); Assert.assertNotNull(center); Assert.assertTrue(center.getName().equals(name)); - + if (isAccountPreferenceSetUp) { String centerPrefixName = (String) this.accountNumberPreferencesHelper.getAccountNumberPreference( this.centerAccountNumberPreferenceId, "prefixType.value"); final String CENTER_URL = "/fineract-provider/api/v1/centers/" + this.centerId + "?" + Utils.TENANT_IDENTIFIER; - + if (centerPrefixName.equals(this.officeName)) { - final String centerOfficeName = Utils.performServerGet(requestSpec, responseSpec, CENTER_URL, "officeName"); + final String centerOfficeName = Utils.performServerGet(requestSpec, responseSpec, CENTER_URL, "officeName"); this.validateAccountNumberLengthAndStartsWithPrefix(center.getAccountNo(), centerOfficeName); } - } else { + } else { validateAccountNumberLengthAndStartsWithPrefix(center.getAccountNo(), null); } } - + private void createAndValidateClientWithoutAccountPreference() { this.clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchApiTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchApiTest.java index 38f89e9de..57f16e5aa 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchApiTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchApiTest.java @@ -49,9 +49,9 @@ import com.jayway.restassured.specification.ResponseSpecification; * {@link org.apache.fineract.batch.command.CommandStrategyProvider}. This tests * the response provided by commandStrategy by injecting it with a * {@code BatchRequest}. - * + * * @author RishabhShukla - * + * * @see org.apache.fineract.integrationtests.common.BatchHelper * @see org.apache.fineract.batch.domain.BatchRequest */ @@ -81,7 +81,7 @@ public class BatchApiTest { * Tests for the unimplemented command Strategies by returning 501 status * code. For a unknownRequest a statusCode 501 is returned back with * response. - * + * * @see org.apache.fineract.batch.command.internal.UnknownCommandStrategy */ @Test @@ -104,7 +104,7 @@ public class BatchApiTest { * Tests for the successful response for a createClient request from * createClientCommand. A successful response with statusCode '200' is * returned back. - * + * * @see org.apache.fineract.batch.command.internal.CreateClientCommandStrategy */ @Test @@ -125,7 +125,7 @@ public class BatchApiTest { * fails. If Query Parameter 'enclosingTransaction' is set to 'true' and if * one of the request in BatchRequest fails then all transactions are rolled * back. - * + * * @see org.apache.fineract.batch.command.internal.CreateClientCommandStrategy * @see org.apache.fineract.batch.api.BatchApiResource * @see org.apache.fineract.batch.service.BatchApiService @@ -167,7 +167,7 @@ public class BatchApiTest { * Tests that a client information was successfully updated through * updateClientCommand. A 'changes' parameter is returned in the response * after successful update of client information. - * + * * @see org.apache.fineract.batch.command.internal.UpdateClientCommandStrategy */ @Test @@ -202,7 +202,7 @@ public class BatchApiTest { * 200(OK) status. It creates a new client and apply a loan to that client. * This also verifies the successful resolution of dependencies among two * requests. - * + * * @see org.apache.fineract.batch.command.internal.ApplyLoanCommandStrategy */ @Test @@ -251,7 +251,7 @@ public class BatchApiTest { * Tests that a new savings accounts was applied to an existing client and a * 200(OK) status was returned. It first creates a new client and a savings * product, then uses the cliendId and ProductId to apply a savings account. - * + * * @see org.apache.fineract.batch.command.internal.ApplySavingsCommandStrategy */ @Test @@ -294,7 +294,7 @@ public class BatchApiTest { * Collected properly 200(OK) status was returned for successful responses. * It first creates a new client and apply a loan, then creates a new charge * for the create loan and then fetches all the applied charges - * + * * @see org.apache.fineract.batch.command.internal.CollectChargesCommandStrategy * @see org.apache.fineract.batch.command.internal.CreateChargeCommandStrategy */ @@ -409,7 +409,7 @@ public class BatchApiTest { * Test for the successful activation of a pending client using * 'ActivateClientCommandStrategy'. A '200' status code is expected on * successful activation. - * + * * @see org.apache.fineract.batch.command.internal.ActivateClientCommandStrategy */ @Test @@ -439,7 +439,7 @@ public class BatchApiTest { * Test for the successful approval and disbursal of a loan using * 'ApproveLoanCommandStrategy' and 'DisburseLoanCommandStrategy'. A '200' * status code is expected on successful activation. - * + * * @see org.apache.fineract.batch.command.internal.ApproveLoanCommandStrategy * @see org.apache.fineract.batch.command.internal.DisburseLoanCommandStrategy */ diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchRequestsIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchRequestsIntegrationTest.java index ad1f61b40..4a775220f 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchRequestsIntegrationTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchRequestsIntegrationTest.java @@ -43,7 +43,7 @@ import com.jayway.restassured.specification.ResponseSpecification; * Test class for testing the integration of Batch API with custom batch * requests and various user defined workflow. Like in the case of mifos * community-app - * + * * @author Rishabh Shukla */ public class BatchRequestsIntegrationTest { @@ -70,12 +70,12 @@ public class BatchRequestsIntegrationTest { @Test /** - * Tests that a loan is successfully applied to client members of a group. + * Tests that a loan is successfully applied to client members of a group. * Firstly, it'll create a few new clients and then will add those clients * to the group. Then a few loans will be created and one of those loans * will be chosen at random and similarily a few of the created clients will * be chosen on random. Now, the selected loan will be applied to these - * clients through Batch - API ApplyLoanCommandStrategy. + * clients through Batch - API ApplyLoanCommandStrategy. */ public void shouldReturnOkStatusForLoansAppliedToSelectedClients() { diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CenterIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CenterIntegrationTest.java index 80e51cc83..b1f2b83a3 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CenterIntegrationTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CenterIntegrationTest.java @@ -239,7 +239,7 @@ public class CenterIntegrationTest { final Integer groupID = CenterHelper.createCenter(this.requestSpec, this.responseSpec); CenterHelper.verifyCenterCreatedOnServer(this.requestSpec, this.responseSpec, groupID); - + final HashMap assignStaffToCenterResponseMap = (HashMap) CenterHelper.assignStaff(this.requestSpec, this.responseSpec, groupID.toString(), staffId.longValue()); @@ -248,7 +248,7 @@ public class CenterIntegrationTest { Assert.assertNotNull(centerWithStaffAssigned); Assert.assertTrue(centerWithStaffAssigned.getId().intValue() == groupID); Assert.assertTrue(centerWithStaffAssigned.getStaffId().intValue() == staffId); - + final HashMap unassignStaffToCenterResponseMap = (HashMap) CenterHelper.unassignStaff(this.requestSpec, this.responseSpec, groupID.toString(), staffId.longValue()); @@ -257,7 +257,7 @@ public class CenterIntegrationTest { Assert.assertNotNull(centerWithStaffUnssigned); Assert.assertTrue(centerWithStaffUnssigned.getId().intValue() == groupID); Assert.assertTrue(centerWithStaffUnssigned.getStaffId() == null); - + } } diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientSavingsIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientSavingsIntegrationTest.java index 3bb0f4aae..ef427daaf 100755 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientSavingsIntegrationTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientSavingsIntegrationTest.java @@ -108,11 +108,11 @@ public class ClientSavingsIntegrationTest { this.savingsAccountHelper.postInterestForSavings(savingsId); summary = this.savingsAccountHelper.getSavingsSummary(savingsId); Assert.assertFalse(summaryBefore.equals(summary)); - + final Object savingsInterest = this.savingsAccountHelper.getSavingsInterest(savingsId); // verifySavingsInterest(savingsInterest); } - + @Test public void testSavingsAccountWithMinBalanceForInterestCalculation() { this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec); @@ -703,7 +703,7 @@ public class ClientSavingsIntegrationTest { /*** * Activate the application and verify account status - * + * * @param activationDate * this value is every time first day of previous month */ @@ -735,7 +735,7 @@ public class ClientSavingsIntegrationTest { /*** * Perform Deposit transaction on last day of month and verify account * balance. - * + * * @param transactionDate * this value is every time last day of previous month */ @@ -785,7 +785,7 @@ public class ClientSavingsIntegrationTest { assertEquals("validation.msg.savingsaccount.close.results.in.balance.not.zero", savingsAccountErrorData.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE)); } - + @SuppressWarnings("unchecked") @Test public void testSavingsAccountPostInterestOnLastDayWithOverdraft() { @@ -845,7 +845,7 @@ public class ClientSavingsIntegrationTest { /*** * Activate the application and verify account status - * + * * @param activationDate * this value is every time first day of previous month */ @@ -876,7 +876,7 @@ public class ClientSavingsIntegrationTest { /*** * Perform Deposit transaction on last day of month and verify account * balance. - * + * * @param transactionDate * this value is every time last day of previous month */ @@ -1120,7 +1120,7 @@ public class ClientSavingsIntegrationTest { .println("-----Post Interest As on Successfully Worked----------"); } - + @SuppressWarnings("unchecked") @Test public void testSavingsAccountPostInterestOnLastDayWithdrawalWithOverdraft() { @@ -1180,7 +1180,7 @@ public class ClientSavingsIntegrationTest { /*** * Activate the application and verify account status - * + * * @param activationDate * this value is every time first day of previous month */ @@ -1219,11 +1219,11 @@ public class ClientSavingsIntegrationTest { balance -= new Float(WITHDRAW_AMOUNT); assertEquals("Verifying Withdrawal Amount", new Float(WITHDRAW_AMOUNT), withdrawTransaction.get("amount")); assertEquals("Verifying Balance after Withdrawal", balance, withdrawTransaction.get("runningBalance")); - + /*** * Perform Deposit transaction on last day of month and verify account * balance. - * + * * @param transactionDate * this value is every time last day of previous month */ @@ -1462,7 +1462,7 @@ public class ClientSavingsIntegrationTest { System.out .println("-----Post Interest As on Successfully Worked----------"); } - + @SuppressWarnings("unchecked") @Test public void testSavingsAccountPostInterestWithOverdraft() { @@ -1523,7 +1523,7 @@ public class ClientSavingsIntegrationTest { /*** * Activate the application and verify account status - * + * * @param activationDate * this value is every time first day of previous month */ @@ -1555,7 +1555,7 @@ public class ClientSavingsIntegrationTest { /*** * Perform Deposit transaction on last day of month and verify account * balance. - * + * * @param transactionDate * this value is every time last day of previous month */ @@ -1619,7 +1619,7 @@ public class ClientSavingsIntegrationTest { final String INTEREST_POSTING_DATE = dateFormat.format(interestPostingDate.getTime()); final String TODYS_POSTING_DATE = dateFormat.format(todysDate.getTime()); String withdrawBalance = "true"; - + if (TODYS_POSTING_DATE.equalsIgnoreCase(INTEREST_POSTING_DATE)) { final SavingsAccountHelper validationErrorHelper = new SavingsAccountHelper(this.requestSpec, responseSpec); @@ -1687,11 +1687,11 @@ public class ClientSavingsIntegrationTest { final Integer lastDayOfMonth = todaysDate.getActualMaximum(Calendar.DAY_OF_MONTH); todaysDate.set(Calendar.DAY_OF_MONTH, lastDayOfMonth); final String TRANSACTION_DATE = dateFormat.format(todaysDate.getTime()); - + Calendar postedDate = Calendar.getInstance(); postedDate.set(Calendar.DAY_OF_MONTH, 1); - - final String POSTED_TRANSACTION_DATE = dateFormat.format(postedDate.getTime()); + + final String POSTED_TRANSACTION_DATE = dateFormat.format(postedDate.getTime()); Calendar postedLastDate = Calendar.getInstance(); int countOfDate=postedDate.getActualMaximum(Calendar.DAY_OF_MONTH); System.out.println("count Of Date---> "+countOfDate); @@ -1700,7 +1700,7 @@ public class ClientSavingsIntegrationTest { /*** * Activate the application and verify account status - * + * * @param activationDate * this value is every time first day of previous month */ @@ -1732,7 +1732,7 @@ public class ClientSavingsIntegrationTest { /*** * Perform Deposit transaction on last day of month and verify account * balance. - * + * * @param transactionDate * this value is every time last day of previous month */ @@ -1750,8 +1750,8 @@ public class ClientSavingsIntegrationTest { HashMap accountDetails = this.savingsAccountHelper.getSavingsDetails(savingsId); summary = (HashMap) accountDetails.get("summary"); Float actualInterestPosted = Float.valueOf(summary.get("totalInterestPosted").toString()); - - + + /*** * Calculate expected interest to be posted, interest should be posted * for one day only because deposit transaction happened on last day of @@ -1773,14 +1773,14 @@ public class ClientSavingsIntegrationTest { decimalFormat.applyPattern("#.###"); interestPosted = new Float(decimalFormat.format(interestPosted)); actualInterestPosted = new Float(decimalFormat.format(actualInterestPosted)); - assertEquals("Verifying interest posted", interestPosted, actualInterestPosted); + assertEquals("Verifying interest posted", interestPosted, actualInterestPosted); System.out.println("------Post Interest As On Successful Worked--------"); - + this.savingsAccountHelper.postInterestAsOnSavings(savingsId, POSTED_LAST_TRANSACTION_DATE); HashMap accountLastDetails = this.savingsAccountHelper.getSavingsDetails(savingsId); summary = (HashMap) accountLastDetails.get("summary"); Float actualLastInterestPosted = Float.valueOf(summary.get("totalInterestPosted").toString()); - + final Float nominalLastAnnualInterest = Float.valueOf(accountDetails.get("nominalAnnualInterestRate").toString()); final HashMap interestLastCalculationDaysInYearType = (HashMap) accountDetails.get("interestCalculationDaysInYearType"); final Integer daysLastInYear = Integer.valueOf(interestCalculationDaysInYearType.get("id").toString()); @@ -1788,18 +1788,18 @@ public class ClientSavingsIntegrationTest { double perLastDay = (double) 1 / (daysInYear); double interestLastPerDay = interestLastRateInFraction * perLastDay; Float interestLastPosted = (float) (interestLastPerDay * balance * 1); - + DecimalFormat decimalLastFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US)); decimalLastFormat.applyPattern("#.###"); interestLastPosted = new Float(decimalLastFormat.format(interestLastPosted)); actualInterestPosted = new Float(decimalFormat.format(actualInterestPosted)); - assertEquals("Verifying interest posted", interestLastPosted, actualInterestPosted); + assertEquals("Verifying interest posted", interestLastPosted, actualInterestPosted); System.out.println("------Post Interest As On Successful Worked--------"); - + } - - - + + + @Test public void testSavingsAccount_WITH_WITHHOLD_TAX() { this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec); @@ -1897,7 +1897,7 @@ public class ClientSavingsIntegrationTest { Assert.assertEquals(expected, actual, 1); } - + @Test public void testSavingsAccount_DormancyTracking() { this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec); @@ -1913,7 +1913,7 @@ public class ClientSavingsIntegrationTest { final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE, minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft, String.valueOf(taxGroupId), true); Assert.assertNotNull(savingsProductID); - + final Integer savingsChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec, ChargesHelper.getSavingsNoActivityFeeJSON()); Assert.assertNotNull(savingsChargeId); @@ -1961,14 +1961,14 @@ public class ClientSavingsIntegrationTest { TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID); transactionDate = transactionDate.minusDays(30); } - + SchedulerJobHelper jobHelper = new SchedulerJobHelper(this.requestSpec, this.responseSpec); try { jobHelper.executeJob("Update Savings Dormant Accounts"); } catch (InterruptedException e) { e.printStackTrace(); } - + //VERIFY WITHIN PROVIDED RANGE DOESN'T INACTIVATE savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(0)); SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap); @@ -2010,7 +2010,7 @@ public class ClientSavingsIntegrationTest { chargeAmt = 100f; balance -= chargeAmt; assertEquals("Verifying account Balance", balance, summary.get("accountBalance")); - + TRANSACTION_DATE = formatter.print(new LocalDate()); depositTransactionId = (Integer) this.savingsAccountHelper.depositToSavingsAccount(savingsList.get(2), DEPOSIT_AMOUNT, TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID); @@ -2018,7 +2018,7 @@ public class ClientSavingsIntegrationTest { SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap); savingsStatusHashMap = SavingsStatusChecker.getSubStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(2)); SavingsStatusChecker.verifySavingsSubStatusNone(savingsStatusHashMap); - + //VERIFY ESCHEAT DUE TO OLD TRANSACTION savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(3)); SavingsStatusChecker.verifySavingsAccountIsClosed(savingsStatusHashMap); @@ -2026,7 +2026,7 @@ public class ClientSavingsIntegrationTest { SavingsStatusChecker.verifySavingsSubStatusEscheat(savingsStatusHashMap); summary = this.savingsAccountHelper.getSavingsSummary(savingsList.get(3)); assertEquals("Verifying account Balance", 2900f, summary.get("accountBalance")); - + //VERIFY ESCHEAT DUE NO TRANSACTION FROM ACTIVATION savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(4)); SavingsStatusChecker.verifySavingsAccountIsClosed(savingsStatusHashMap); @@ -2034,17 +2034,17 @@ public class ClientSavingsIntegrationTest { SavingsStatusChecker.verifySavingsSubStatusEscheat(savingsStatusHashMap); summary = this.savingsAccountHelper.getSavingsSummary(savingsList.get(4)); assertEquals("Verifying account Balance", 900f, summary.get("accountBalance")); - + //VERIFY NON ACTIVE ACCOUNTS ARE NOT AFFECTED savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(5)); SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap); savingsStatusHashMap = SavingsStatusChecker.getSubStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(5)); SavingsStatusChecker.verifySavingsSubStatusNone(savingsStatusHashMap); - + } - + private HashMap activateSavingsAccount(final Integer savingsId, final String activationDate) { final HashMap status = this.savingsAccountHelper.activateSavingsAccount(savingsId, activationDate); return status; @@ -2057,7 +2057,7 @@ public class ClientSavingsIntegrationTest { return createSavingsProduct(requestSpec, responseSpec, minOpenningBalance, minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft, taxGroupId, false); } - + private Integer createSavingsProduct(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String minOpenningBalance, String minBalanceForInterestCalculation, String minRequiredBalance, String enforceMinRequiredBalance, final boolean allowOverdraft, final String taxGroupId, boolean withDormancy) { @@ -2085,7 +2085,7 @@ public class ClientSavingsIntegrationTest { .withMinimumOpenningBalance(minOpenningBalance).withWithHoldTax(taxGroupId).build(); return SavingsProductHelper.createSavingsProduct(savingsProductJSON, requestSpec, responseSpec); } - + private Integer createTaxGroup(final String percentage){ final Integer liabilityAccountId = null; final Integer taxComponentId = TaxComponentHelper.createTaxComponent(this.requestSpec, this.responseSpec, percentage, liabilityAccountId); @@ -2098,11 +2098,11 @@ public class ClientSavingsIntegrationTest { * System.out.println( * "--------------------VERIFYING THE BALANCE, INTEREST --------------------------" * ); - * + * * assertEquals("Verifying Interest Calculation", new Float("238.3399"), * savingsInterest); } */ - + @SuppressWarnings("unchecked") @Test public void testSavingsAccountBlockStatus() { @@ -2162,7 +2162,7 @@ public class ClientSavingsIntegrationTest { SavingsAccountHelper.TRANSACTION_DATE, CommonConstants.RESPONSE_ERROR); assertEquals("error.msg.savings.account.debit.transaction.not.allowed", error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE)); - + depositTransactionId = (Integer) this.savingsAccountHelper.depositToSavingsAccount(savingsId, DEPOSIT_AMOUNT, SavingsAccountHelper.TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID); depositTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, depositTransactionId); @@ -2183,7 +2183,7 @@ public class ClientSavingsIntegrationTest { CommonConstants.RESPONSE_ERROR); assertEquals("error.msg.savings.account.credit.transaction.not.allowed", error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE)); - + withdrawTransactionId = (Integer) this.savingsAccountHelper.withdrawalFromSavingsAccount(savingsId, WITHDRAW_AMOUNT, SavingsAccountHelper.TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID); withdrawTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, withdrawTransactionId); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientTest.java index 7e6664d93..b07a2db7f 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientTest.java @@ -78,10 +78,10 @@ public class ClientTest { ClientStatusChecker.verifyClientWithdrawn(clientStatusHashMap); } - + @Test public void testClientAsPersonStatus() { - + this.clientHelper = new ClientHelper(this.requestSpec, this.responseSpec); final Integer clientId = ClientHelper.createClientAsPerson(this.requestSpec, this.responseSpec); Assert.assertNotNull(clientId); @@ -111,10 +111,10 @@ public class ClientTest { ClientStatusChecker.verifyClientWithdrawn(clientStatusHashMap); } - + @Test public void testClientAsEntityStatus() { - + this.clientHelper = new ClientHelper(this.requestSpec, this.responseSpec); final Integer clientId = ClientHelper.createClientAsEntity(this.requestSpec, this.responseSpec); Assert.assertNotNull(clientId); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FixedDepositTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FixedDepositTest.java index 0b01f9689..49f527d89 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FixedDepositTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FixedDepositTest.java @@ -244,7 +244,7 @@ public class FixedDepositTest { this.responseSpec, fixedDepositAccountId.toString()); FixedDepositAccountStatusChecker.verifyFixedDepositAccountIsPrematureClosed(fixedDepositAccountStatusHashMap); - + /*** * Verify journal entry transactions for preclosure transaction */ @@ -257,8 +257,8 @@ public class FixedDepositTest { JournalEntry.TransactionType.DEBIT)); } - - + + @Test public void testFixedDepositAccountWithPrematureClosureTypeWithdrawal_WITH_HOLD_TAX() { this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec); @@ -391,11 +391,11 @@ public class FixedDepositTest { HashMap accountDetails = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec, fixedDepositAccountId); Float maturityAmount = Float.valueOf(accountDetails.get("maturityAmount").toString()); - + HashMap summary = (HashMap) accountDetails.get("summary"); Assert.assertNotNull(summary.get("totalWithholdTax")); Float withHoldTax = (Float) summary.get("totalWithholdTax"); - + this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, CLOSED_ON_DATE, new JournalEntry(maturityAmount, JournalEntry.TransactionType.CREDIT)); this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, CLOSED_ON_DATE, new JournalEntry(maturityAmount, @@ -404,8 +404,8 @@ public class FixedDepositTest { JournalEntry.TransactionType.CREDIT)); } - - + + @Test public void testFixedDepositAccountClosureTypeWithdrawal_WITH_HOLD_TAX() throws InterruptedException { this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec); @@ -514,20 +514,20 @@ public class FixedDepositTest { /*** * FD account verify whether account is matured */ - + SchedulerJobHelper schedulerJobHelper = new SchedulerJobHelper(requestSpec, responseSpec); String JobName = "Update Deposit Accounts Maturity details"; schedulerJobHelper.executeJob(JobName); - + HashMap accountDetails = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec, fixedDepositAccountId); - + HashMap summary = (HashMap) accountDetails.get("summary"); Assert.assertNotNull(summary.get("totalWithholdTax")); Float withHoldTax = (Float) summary.get("totalWithholdTax"); this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccountForTax, CLOSED_ON_DATE, new JournalEntry(withHoldTax, JournalEntry.TransactionType.CREDIT)); - + fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec, this.responseSpec, fixedDepositAccountId.toString()); @@ -535,7 +535,7 @@ public class FixedDepositTest { } - + @Test public void testFixedDepositAccountWithPeriodInterestRateChart() { final String chartToUse = "period"; @@ -544,7 +544,7 @@ public class FixedDepositTest { final Float interestRate = new Float(6.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testFixedDepositAccountWithPeriodInterestRateChart_AMOUNT_VARIATION() { final String chartToUse = "period"; @@ -553,7 +553,7 @@ public class FixedDepositTest { final Float interestRate = new Float(6.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testFixedDepositAccountWithPeriodInterestRateChart_PERIOD_VARIATION() { final String chartToUse = "period"; @@ -562,7 +562,7 @@ public class FixedDepositTest { final Float interestRate = new Float(7.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testFixedDepositAccountWithAmountInterestRateChart() { final String chartToUse = "amount"; @@ -571,7 +571,7 @@ public class FixedDepositTest { final Float interestRate = new Float(7.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testFixedDepositAccountWithAmountInterestRateChart_AMOUNT_VARIATION() { final String chartToUse = "amount"; @@ -580,7 +580,7 @@ public class FixedDepositTest { final Float interestRate = new Float(5.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testFixedDepositAccountWithAmountInterestRateChart_PERIOD_VARIATION() { final String chartToUse = "amount"; @@ -598,7 +598,7 @@ public class FixedDepositTest { final Float interestRate = new Float(7.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testFixedDepositAccountWithPeriodAndAmountInterestRateChart_AMOUNT_VARIATION() { final String chartToUse = "period_amount"; @@ -607,7 +607,7 @@ public class FixedDepositTest { final Float interestRate = new Float(6.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testFixedDepositAccountWithPeriodAndAmountInterestRateChart_PERIOD_VARIATION() { final String chartToUse = "period_amount"; @@ -616,7 +616,7 @@ public class FixedDepositTest { final Float interestRate = new Float(9.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testFixedDepositAccountWithAmountAndPeriodInterestRateChart() { final String chartToUse = "amount_period"; @@ -625,7 +625,7 @@ public class FixedDepositTest { final Float interestRate = new Float(8.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testFixedDepositAccountWithAmountAndPeriodInterestRateChart_AMOUNT_VARIATION() { final String chartToUse = "amount_period"; @@ -634,7 +634,7 @@ public class FixedDepositTest { final Float interestRate = new Float(6.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testFixedDepositAccountWithAmountAndPeriodInterestRateChart_PERIOD_VARIATION() { final String chartToUse = "amount_period"; @@ -2422,7 +2422,7 @@ public class FixedDepositTest { return FixedDepositProductHelper.createFixedDepositProduct(fixedDepositProductJSON, requestSpec, responseSpec); } - + private Integer createFixedDepositProductWithWithHoldTax(final String validFrom, final String validTo, final String taxGroupId, final String accountingRule, Account... accounts) { System.out.println("------------------------------CREATING NEW FIXED DEPOSIT PRODUCT ---------------------------------------"); @@ -2437,7 +2437,7 @@ public class FixedDepositTest { .build(validFrom, validTo); return FixedDepositProductHelper.createFixedDepositProduct(fixedDepositProductJSON, requestSpec, responseSpec); } - + private Integer createFixedDepositProduct(final String validFrom, final String validTo, final String accountingRule, final String chartToBePicked, Account... accounts) { System.out.println("------------------------------CREATING NEW FIXED DEPOSIT PRODUCT ---------------------------------------"); @@ -2561,7 +2561,7 @@ public class FixedDepositTest { Assert.assertEquals(financialActivityId, ((HashMap) mappingDetails.get("financialActivityData")).get("id")); Assert.assertEquals(glAccount.getAccountID(), ((HashMap) mappingDetails.get("glAccountData")).get("id")); } - + private Integer createTaxGroup(final String percentage, final Account liabilityAccountForTax){ final Integer liabilityAccountId = liabilityAccountForTax.getAccountID(); final Integer taxComponentId = TaxComponentHelper.createTaxComponent(this.requestSpec, this.responseSpec, percentage, liabilityAccountId); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GlobalConfigInterestChargedFromDateSameAsDisbursalDateTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GlobalConfigInterestChargedFromDateSameAsDisbursalDateTest.java index ee9bfb5c4..48b5b8e60 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GlobalConfigInterestChargedFromDateSameAsDisbursalDateTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GlobalConfigInterestChargedFromDateSameAsDisbursalDateTest.java @@ -36,11 +36,11 @@ import com.jayway.restassured.specification.ResponseSpecification; public class GlobalConfigInterestChargedFromDateSameAsDisbursalDateTest { - + private ResponseSpecification responseSpec; private RequestSpecification requestSpec; private GlobalConfigurationHelper globalConfigurationHelper; - + @Before public void setup() { Utils.initializeRESTAssured(); @@ -54,20 +54,20 @@ public class GlobalConfigInterestChargedFromDateSameAsDisbursalDateTest { GlobalConfigurationHelper.resetAllDefaultGlobalConfigurations(this.requestSpec, this.responseSpec); GlobalConfigurationHelper.verifyAllDefaultGlobalConfigurations(this.requestSpec, this.responseSpec); } - + @SuppressWarnings( {"static-access", "rawtypes", "unchecked"}) @Test public void testInterestChargedFromDateSameAsDisbursalDate(){ this.globalConfigurationHelper = new GlobalConfigurationHelper(this.requestSpec, this.responseSpec); - + // Retrieving All Global Configuration details final ArrayList globalConfig = this.globalConfigurationHelper .getAllGlobalConfigurations(this.requestSpec, this.responseSpec); Assert.assertNotNull(globalConfig); - + String configName = "interest-charged-from-date-same-as-disbursal-date"; boolean newBooleanValue = true; - + for (Integer configIndex = 0; configIndex < (globalConfig.size()); configIndex++) { if (globalConfig.get(configIndex).get("name") .equals(configName)) { @@ -80,7 +80,7 @@ public class GlobalConfigInterestChargedFromDateSameAsDisbursalDateTest { break; } } - + } } diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GlobalConfigurationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GlobalConfigurationTest.java index c81b90846..f978135dc 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GlobalConfigurationTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GlobalConfigurationTest.java @@ -144,7 +144,7 @@ public class GlobalConfigurationTest { Assert.assertEquals("Verifying Is Cache Enabled Global Config after Updation", cacheTypeId, changes.get("cacheType")); } } - + @Test public void testGlobalConfigForcePasswordResetDays() { diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupSavingsIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupSavingsIntegrationTest.java index 5d458ec1e..025d49f71 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupSavingsIntegrationTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupSavingsIntegrationTest.java @@ -500,10 +500,10 @@ public class GroupSavingsIntegrationTest { BigDecimal totalWaiveAmount = BigDecimal.valueOf(Double.valueOf((Float) savingsChargeForWaive.get("amount"))); totalWaiveAmount = totalWaiveAmount.add(totalWaiveAmount); assertEquals(totalWaiveAmount.floatValue(), waiveCharge.get("amountWaived")); - + final Integer weeklyFeeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec, ChargesHelper.getSavingsWeeklyFeeJSON()); Assert.assertNotNull(weeklyFeeId); - + this.savingsAccountHelper.addChargesForSavings(savingsId, weeklyFeeId, true); charges = this.savingsAccountHelper.getSavingsCharges(savingsId); Assert.assertEquals(3, charges.size()); @@ -530,9 +530,9 @@ public class GroupSavingsIntegrationTest { .plusWeeks((Integer) paidCharge.get("feeInterval")); assertEquals(expectedNextDueDate, nextDueDate); cal = Calendar.getInstance(); - + this.savingsAccountHelper.closeSavingsAccountAndGetBackRequiredField(savingsId, "true", null, sdf.format(cal.getTime())); - + } public static Integer createSavingsProduct(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/HookIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/HookIntegrationTest.java index 3203f4efc..3762caf26 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/HookIntegrationTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/HookIntegrationTest.java @@ -96,7 +96,7 @@ public class HookIntegrationTest { } } - + @Test public void createUpdateAndDeleteHook(){ final String payloadURL = "http://echo-webhook.herokuapp.com:80/Z7RXoCBdLSFMDrpn?"; diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanDisbursalDateValidationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanDisbursalDateValidationTest.java index 6b9ed26d0..3e793e5b3 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanDisbursalDateValidationTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanDisbursalDateValidationTest.java @@ -74,7 +74,7 @@ public class LoanDisbursalDateValidationTest { System.out.println("----------------------------------LOAN PRODUCT CREATED WITH ID-------------------------------------------" + loanProductID); - // APPLY FOR LOAN + // APPLY FOR LOAN final Integer loanID = applyForLoanApplication(clientID, loanProductID, proposedAmount); System.out.println("-----------------------------------LOAN CREATED WITH LOANID-------------------------------------------------" + loanID); @@ -93,10 +93,10 @@ public class LoanDisbursalDateValidationTest { // DISBURSE A LOAN @SuppressWarnings("unchecked") List disbursalError = (List) this.loanTransactionHelper.disburseLoan(disbursalDate, loanID, this.responseForbiddenError); - + Assert.assertEquals("error.msg.actual.disbursement.date.does.not.match.with.expected.disbursal.date", - disbursalError.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE)); - + disbursalError.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE)); + } private Integer applyForLoanApplication(final Integer clientID, final Integer loanProductID, final String proposedAmount) { @@ -112,6 +112,6 @@ public class LoanDisbursalDateValidationTest { return this.loanTransactionHelper.getLoanId(loanApplication); } - + } diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanDisbursementDetailsIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanDisbursementDetailsIntegrationTest.java index cecac3d7e..b5ac26578 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanDisbursementDetailsIntegrationTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanDisbursementDetailsIntegrationTest.java @@ -239,63 +239,63 @@ public class LoanDisbursementDetailsIntegrationTest { * periods){ LoanDisbursementTestBuilder expectedRepaymentSchedule0 = new * LoanDisbursementTestBuilder( "[2015, 6, 1]", 0.0f, 0.0f, null, null, * 5000.0f, null, null, null); - * + * * LoanDisbursementTestBuilder expectedRepaymentSchedule1 = new * LoanDisbursementTestBuilder( "[2015, 7, 1]", 800.0f, 800.0f, 50.0f, * 750.0f, 4250.0f, 750.0f, 750.0f, "[2015, 6, 1]"); - * + * * LoanDisbursementTestBuilder expectedRepaymentSchedule2 = new * LoanDisbursementTestBuilder( "[2015, 8, 1]", 800.0f, 800.0f, 42.5f, * 757.5f, 3492.5f, 757.5f, 757.5f, "[2015, 7, 1]"); - * + * * LoanDisbursementTestBuilder expectedRepaymentSchedule3 = new * LoanDisbursementTestBuilder( "[2015, 9, 1]", 0.0f, 0.0f, null, null, * 5000.0f, null, null, null); - * + * * LoanDisbursementTestBuilder expectedRepaymentSchedule4 = new * LoanDisbursementTestBuilder( "[2015, 9, 1]", 800.0f, 800.0f, 34.92f, * 765.08f, 7727.42f, 765.08f, 765.08f, "[2015, 8, 1]"); - * + * * LoanDisbursementTestBuilder expectedRepaymentSchedule5 = new * LoanDisbursementTestBuilder( "[2015, 10, 1]", 800.0f, 800.0f, 77.27f, * 722.73f, 7004.69f, 722.73f, 722.73f, "[2015, 9, 1]"); - * + * * LoanDisbursementTestBuilder expectedRepaymentSchedule6 = new * LoanDisbursementTestBuilder( "[2015, 11, 1]", 800.0f, 800.0f, 70.05f, * 729.95f, 6274.74f, 729.95f, 729.95f, "[2015, 10, 1]"); - * + * * LoanDisbursementTestBuilder expectedRepaymentSchedule7 = new * LoanDisbursementTestBuilder( "[2015, 12, 1]", 800.0f, 800.0f, 62.75f, * 737.25f, 5537.49f, 737.25f, 737.25f, "[2015, 11, 1]"); - * + * * LoanDisbursementTestBuilder expectedRepaymentSchedule8 = new * LoanDisbursementTestBuilder( "[2016, 1, 1]", 800.0f, 800.0f, 55.37f, * 744.63f, 4792.86f, 744.63f, 744.63f, "[2015, 12, 1]"); - * + * * LoanDisbursementTestBuilder expectedRepaymentSchedule9 = new * LoanDisbursementTestBuilder( "[2016, 2, 1]", 800.0f, 800.0f, 47.93f, * 752.07f, 4040.79f, 752.07f, 752.07f, "[2016, 1, 1]"); - * + * * LoanDisbursementTestBuilder expectedRepaymentSchedule10 = new * LoanDisbursementTestBuilder( "[2016, 3, 1]", 800.0f, 800.0f, 40.41f, * 759.59f, 3281.2f, 759.59f, 759.59f, "[2016, 2, 1]"); - * + * * LoanDisbursementTestBuilder expectedRepaymentSchedule11 = new * LoanDisbursementTestBuilder( "[2016, 4, 1]", 800.0f, 800.0f, 32.81f, * 767.19f, 2514.01f, 767.19f, 767.19f, "[2016, 3, 1]"); - * + * * LoanDisbursementTestBuilder expectedRepaymentSchedule12 = new * LoanDisbursementTestBuilder( "[2016, 5, 1]", 800.0f, 800.0f, 25.14f, * 774.86f, 1739.15f, 774.86f, 774.86f, "[2016, 4, 1]"); - * + * * LoanDisbursementTestBuilder expectedRepaymentSchedule13 = new * LoanDisbursementTestBuilder( "[2016, 6, 1]", 800.0f, 800.0f, 17.39f, * 782.61f, 956.54f, 782.61f, 782.61f, "[2016, 5, 1]"); - * + * * LoanDisbursementTestBuilder expectedRepaymentSchedule14 = new * LoanDisbursementTestBuilder( "[2016, 7, 1]", 966.11f, 966.11f, 9.57f, * 956.54f, 0.0f, 956.54f, 956.54f, "[2016, 6, 1]"); - * + * * ArrayList list = new * ArrayList(); * list.add(expectedRepaymentSchedule0); @@ -313,14 +313,14 @@ public class LoanDisbursementDetailsIntegrationTest { * list.add(expectedRepaymentSchedule12); * list.add(expectedRepaymentSchedule13); * list.add(expectedRepaymentSchedule14); - * + * * for (int i = 0; i < list.size(); i++) { * this.assertRepaymentScheduleValuesWithoutEMI(periods.get(i), list.get(i), * i); } } - * + * * private void assertRepaymentScheduleValuesWithoutEMI(HashMap period, * LoanDisbursementTestBuilder expectedRepaymentSchedule, int position) { - * + * * assertEquals(period.get("dueDate").toString(), * expectedRepaymentSchedule.getDueDate()); * assertEquals(period.get("principalLoanBalanceOutstanding"), @@ -329,9 +329,9 @@ public class LoanDisbursementDetailsIntegrationTest { * expectedRepaymentSchedule.getTotalOriginalDueForPeriod()); * assertEquals(period.get("totalOutstandingForPeriod"), * expectedRepaymentSchedule.getTotalOutstandingForPeriod()); - * + * * if (position != 0 && position != 3) { - * + * * assertEquals(period.get("interestOutstanding"), * expectedRepaymentSchedule.getInterestOutstanding()); * assertEquals(period.get("principalOutstanding"), diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanRepaymentRescheduleAtDisbursementTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanRepaymentRescheduleAtDisbursementTest.java index f4275da90..49464623c 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanRepaymentRescheduleAtDisbursementTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanRepaymentRescheduleAtDisbursementTest.java @@ -51,7 +51,7 @@ public class LoanRepaymentRescheduleAtDisbursementTest { private LoanTransactionHelper loanTransactionHelper; private LoanApplicationApprovalTest loanApplicationApprovalTest; private ResponseSpecification generalResponseSpec; - + @Before public void setup() { Utils.initializeRESTAssured(); @@ -62,60 +62,60 @@ public class LoanRepaymentRescheduleAtDisbursementTest { this.loanApplicationApprovalTest = new LoanApplicationApprovalTest(); this.generalResponseSpec = new ResponseSpecBuilder().build(); } - + @SuppressWarnings("unchecked") @Test public void testLoanRepaymentRescheduleAtDisbursement(){ - + final String approvalAmount = "10000"; final String approveDate = "01 March 2015"; final String expectedDisbursementDate = "01 March 2015"; final String disbursementDate = "01 March 2015"; final String adjustRepaymentDate = "16 March 2015"; - + // CREATE CLIENT final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2014"); System.out.println("---------------------------------CLIENT CREATED WITH ID---------------------------------------------------" + clientID); - // CREATE LOAN MULTIDISBURSAL PRODUCT WITH INTEREST RECALCULATION + // CREATE LOAN MULTIDISBURSAL PRODUCT WITH INTEREST RECALCULATION final Integer loanProductID = createLoanProductWithInterestRecalculation(LoanProductTestBuilder.RBI_INDIA_STRATEGY, LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_NONE, LoanProductTestBuilder.RECALCULATION_STRATEGY_REDUCE_NUMBER_OF_INSTALLMENTS, LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_DAILY, "0", LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null); - + // CREATE TRANCHES List createTranches = new ArrayList<>(); createTranches.add(this.loanApplicationApprovalTest.createTrancheDetail("01 March 2015", "5000")); createTranches.add(this.loanApplicationApprovalTest.createTrancheDetail("01 May 2015", "5000")); - + // APPROVE TRANCHES List approveTranches = new ArrayList<>(); approveTranches.add(this.loanApplicationApprovalTest.createTrancheDetail("01 March 2015", "5000")); approveTranches.add(this.loanApplicationApprovalTest.createTrancheDetail("01 May 2015", "5000")); - - // APPLY FOR TRANCHE LOAN WITH INTEREST RECALCULATION + + // APPLY FOR TRANCHE LOAN WITH INTEREST RECALCULATION final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, disbursementDate, LoanApplicationTestBuilder.RBI_INDIA_STRATEGY, new ArrayList(0), createTranches); - + HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID); - + // VALIDATE THE LOAN STATUS LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap); System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------------------------"); loanStatusHashMap = this.loanTransactionHelper.approveLoanWithApproveAmount(approveDate, expectedDisbursementDate, approvalAmount, loanID, approveTranches); - + // VALIDATE THE LOAN IS APPROVED LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap); LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap); - + // DISBURSE A FIRST TRANCHE this.loanTransactionHelper.disburseLoanWithRepaymentReschedule(disbursementDate, loanID, adjustRepaymentDate); loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID); - + ArrayList loanRepaymnetSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(requestSpec, generalResponseSpec, loanID); HashMap firstInstallement = loanRepaymnetSchedule.get(1); Map expectedvalues = new HashMap<>(3); @@ -127,14 +127,14 @@ public class LoanRepaymentRescheduleAtDisbursementTest { expectedvalues.put("feeChargesDue", "0"); expectedvalues.put("penaltyChargesDue", "0"); expectedvalues.put("totalDueForPeriod", "884.03"); - + // VALIDATE REPAYMENT SCHEDULE verifyLoanRepaymentSchedule(firstInstallement, expectedvalues); - + } - + private void verifyLoanRepaymentSchedule(final HashMap firstInstallement, final Map expectedvalues) { - + assertEquals(expectedvalues.get("dueDate"), firstInstallement.get("dueDate")); assertEquals(String.valueOf(expectedvalues.get("principalDue")), String.valueOf(firstInstallement.get("principalDue"))); assertEquals(String.valueOf(expectedvalues.get("interestDue")), String.valueOf(firstInstallement.get("interestDue"))); @@ -143,7 +143,7 @@ public class LoanRepaymentRescheduleAtDisbursementTest { assertEquals(String.valueOf(expectedvalues.get("totalDueForPeriod")), String.valueOf(firstInstallement.get("totalDueForPeriod"))); } - + private Integer createLoanProductWithInterestRecalculation(final String repaymentStrategy, final String interestRecalculationCompoundingMethod, final String rescheduleStrategyMethod, final String recalculationRestFrequencyType, final String recalculationRestFrequencyInterval, @@ -160,7 +160,7 @@ public class LoanRepaymentRescheduleAtDisbursementTest { accounts, null, false, recalculationCompoundingFrequencyOnDayType, recalculationCompoundingFrequencyDayOfWeekType, recalculationRestFrequencyOnDayType, recalculationRestFrequencyDayOfWeekType); } - + private Integer createLoanProductWithInterestRecalculation(final String repaymentStrategy, final String interestRecalculationCompoundingMethod, final String rescheduleStrategyMethod, final String recalculationRestFrequencyType, final String recalculationRestFrequencyInterval, @@ -197,7 +197,7 @@ public class LoanRepaymentRescheduleAtDisbursementTest { final String loanProductJSON = builder.build(chargeId); return this.loanTransactionHelper.getLoanProductId(loanProductJSON); } - + private Integer applyForLoanApplicationForInterestRecalculation(final Integer clientID, final Integer loanProductID, final String disbursementDate, final String repaymentStrategy, final List charges, List tranches) { final String graceOnInterestPayment = null; @@ -205,7 +205,7 @@ public class LoanRepaymentRescheduleAtDisbursementTest { return applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, disbursementDate, repaymentStrategy, charges, graceOnInterestPayment, graceOnPrincipalPayment, tranches); } - + private Integer applyForLoanApplicationForInterestRecalculation(final Integer clientID, final Integer loanProductID, final String disbursementDate, final String repaymentStrategy, final List charges, final String graceOnInterestPayment, final String graceOnPrincipalPayment, List tranches) { @@ -231,7 +231,7 @@ public class LoanRepaymentRescheduleAtDisbursementTest { .build(clientID.toString(), loanProductID.toString(), null); return this.loanTransactionHelper.getLoanId(loanApplicationJSON); } - + private List getDateAsArray(Calendar date, int addPeriod) { return getDateAsArray(date, addPeriod, Calendar.DAY_OF_MONTH); } diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanRescheduleRequestTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanRescheduleRequestTest.java index bfa89ddd7..a7ad48399 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanRescheduleRequestTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanRescheduleRequestTest.java @@ -39,8 +39,8 @@ import com.jayway.restassured.http.ContentType; import com.jayway.restassured.specification.RequestSpecification; import com.jayway.restassured.specification.ResponseSpecification; -/** - * Test the creation, approval and rejection of a loan reschedule request +/** + * Test the creation, approval and rejection of a loan reschedule request **/ @SuppressWarnings({ "rawtypes" }) public class LoanRescheduleRequestTest { @@ -57,7 +57,7 @@ public class LoanRescheduleRequestTest { private String numberOfRepayments = "12"; private String interestRatePerPeriod = "18"; private String dateString = "4 September 2014"; - + @Before public void initialize() { Utils.initializeRESTAssured(); @@ -68,52 +68,52 @@ public class LoanRescheduleRequestTest { this.loanRescheduleRequestHelper = new LoanRescheduleRequestHelper(this.requestSpec, this.responseSpec); this.generalResponseSpec = new ResponseSpecBuilder().build(); - + // create all required entities this.createRequiredEntities(); } - - /** - * Creates the client, loan product, and loan entities + + /** + * Creates the client, loan product, and loan entities **/ private void createRequiredEntities() { this.createClientEntity(); this.createLoanProductEntity(); this.createLoanEntity(); } - - /** - * create a new client - **/ + + /** + * create a new client + **/ private void createClientEntity() { this.clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec); - + ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, this.clientId); } - - /** - * create a new loan product + + /** + * create a new loan product **/ private void createLoanProductEntity() { System.out.println("---------------------------------CREATING LOAN PRODUCT------------------------------------------"); - + final String loanProductJSON = new LoanProductTestBuilder() .withPrincipal(loanPrincipalAmount) .withNumberOfRepayments(numberOfRepayments) .withinterestRatePerPeriod(interestRatePerPeriod) .withInterestRateFrequencyTypeAsYear() .build(null); - + this.loanProductId = this.loanTransactionHelper.getLoanProductId(loanProductJSON); System.out.println("Successfully created loan product (ID: " + this.loanProductId + ")"); } - - /** - * submit a new loan application, approve and disburse the loan + + /** + * submit a new loan application, approve and disburse the loan **/ private void createLoanEntity() { System.out.println("---------------------------------NEW LOAN APPLICATION------------------------------------------"); - + final String loanApplicationJSON = new LoanApplicationTestBuilder() .withPrincipal(loanPrincipalAmount) .withLoanTermFrequency(numberOfRepayments) @@ -130,90 +130,90 @@ public class LoanRescheduleRequestTest { .withPrincipalGrace("2") .withInterestGrace("2") .build(this.clientId.toString(), this.loanProductId.toString(), null); - + this.loanId = this.loanTransactionHelper.getLoanId(loanApplicationJSON); - + System.out.println("Sucessfully created loan (ID: " + this.loanId + ")"); - + this.approveLoanApplication(); this.disburseLoan(); } - - /** - * approve the loan application + + /** + * approve the loan application **/ private void approveLoanApplication() { - + if(this.loanId != null) { this.loanTransactionHelper.approveLoan(this.dateString, this.loanId); System.out.println("Successfully approved loan (ID: " + this.loanId + ")"); } } - - /** - * disburse the newly created loan + + /** + * disburse the newly created loan **/ private void disburseLoan() { - + if(this.loanId != null) { this.loanTransactionHelper.disburseLoan(this.dateString, this.loanId); System.out.println("Successfully disbursed loan (ID: " + this.loanId + ")"); } } - - /** - * create new loan reschedule request + + /** + * create new loan reschedule request **/ private void createLoanRescheduleRequest() { System.out.println("---------------------------------CREATING LOAN RESCHEDULE REQUEST------------------------------------------"); - + final String requestJSON = new LoanRescheduleRequestTestBuilder().build(this.loanId.toString()); - + this.loanRescheduleRequestId = this.loanRescheduleRequestHelper.createLoanRescheduleRequest(requestJSON); this.loanRescheduleRequestHelper.verifyCreationOfLoanRescheduleRequest(this.loanRescheduleRequestId); - + System.out.println("Successfully created loan reschedule request (ID: " + this.loanRescheduleRequestId + ")"); } - + @Test public void testCreateLoanRescheduleRequest() { this.createLoanRescheduleRequest(); } - + @Test public void testRejectLoanRescheduleRequest() { this.createLoanRescheduleRequest(); - + System.out.println("-----------------------------REJECTING LOAN RESCHEDULE REQUEST--------------------------"); - + final String requestJSON = new LoanRescheduleRequestTestBuilder().getRejectLoanRescheduleRequestJSON(); this.loanRescheduleRequestHelper.rejectLoanRescheduleRequest(this.loanRescheduleRequestId, requestJSON); - + final HashMap response = (HashMap) this.loanRescheduleRequestHelper.getLoanRescheduleRequest(loanRescheduleRequestId, "statusEnum"); assertTrue((Boolean)response.get("rejected")); - + System.out.println("Successfully rejected loan reschedule request (ID: " + this.loanRescheduleRequestId + ")"); } - + @Test public void testApproveLoanRescheduleRequest() { this.createLoanRescheduleRequest(); - + System.out.println("-----------------------------APPROVING LOAN RESCHEDULE REQUEST--------------------------"); - + final String requestJSON = new LoanRescheduleRequestTestBuilder().getApproveLoanRescheduleRequestJSON(); this.loanRescheduleRequestHelper.approveLoanRescheduleRequest(this.loanRescheduleRequestId, requestJSON); - + final HashMap response = (HashMap) this.loanRescheduleRequestHelper.getLoanRescheduleRequest(loanRescheduleRequestId, "statusEnum"); assertTrue((Boolean)response.get("approved")); - + final Integer numberOfRepayments = (Integer) this.loanTransactionHelper.getLoanDetail(requestSpec, generalResponseSpec, loanId, "numberOfRepayments"); final HashMap loanSummary = this.loanTransactionHelper.getLoanSummary(requestSpec, generalResponseSpec, loanId); final Float totalExpectedRepayment = (Float) loanSummary.get("totalExpectedRepayment"); - + assertEquals("NUMBER OF REPAYMENTS SHOULD BE 16, NOT 12", "12", numberOfRepayments.toString()); assertEquals("TOTAL EXPECTED REPAYMENT MUST BE EQUAL TO 118000.0", "118000.0", totalExpectedRepayment.toString()); - + System.out.println("Successfully approved loan reschedule request (ID: " + this.loanRescheduleRequestId + ")"); } } diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanReschedulingWithinCenterTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanReschedulingWithinCenterTest.java index 94cd11615..24d1f9558 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanReschedulingWithinCenterTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanReschedulingWithinCenterTest.java @@ -99,7 +99,7 @@ public class LoanReschedulingWithinCenterTest { Integer clientId = createClient(officeId); associateClientsToGroup(groupId, clientId); - + DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy"); dateFormat.setTimeZone(Utils.getTimeZoneOfTenant()); Calendar today = Calendar.getInstance(Utils.getTimeZoneOfTenant()); @@ -114,7 +114,7 @@ public class LoanReschedulingWithinCenterTest { LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_NONE, LoanProductTestBuilder.RECALCULATION_STRATEGY_REDUCE_NUMBER_OF_INSTALLMENTS, LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_DAILY, "0", recalculationRestFrequencyDate, - LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null, isMultiTrancheLoan, + LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null, isMultiTrancheLoan, null, null); // APPLY FOR TRANCHE LOAN WITH INTEREST RECALCULATION @@ -153,7 +153,7 @@ public class LoanReschedulingWithinCenterTest { Float interestDue = (Float) ((HashMap) loanRepaymnetSchedule.get(2)).get("interestDue"); assertEquals("90.82", String.valueOf(interestDue)); } - + private void associateClientsToGroup(Integer groupId, Integer clientId) { // Associate client to the group GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupId.toString(), clientId.toString()); @@ -225,13 +225,13 @@ public class LoanReschedulingWithinCenterTest { LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_NONE, LoanProductTestBuilder.RECALCULATION_STRATEGY_REDUCE_NUMBER_OF_INSTALLMENTS, LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_DAILY, "0", recalculationRestFrequencyDate, - LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null, isMultiTrancheLoan, + LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null, isMultiTrancheLoan, null, null); Calendar seondTrancheDate = Calendar.getInstance(Utils.getTimeZoneOfTenant()); seondTrancheDate.add(Calendar.MONTH, 1); String secondDisbursement = dateFormat.format(seondTrancheDate.getTime()) ; - + // CREATE TRANCHES List createTranches = new ArrayList<>(); createTranches.add(this.loanApplicationApprovalTest.createTrancheDetail(disbursementDate, "5000")); @@ -295,8 +295,8 @@ public class LoanReschedulingWithinCenterTest { return createLoanProductWithInterestRecalculation(repaymentStrategy, interestRecalculationCompoundingMethod, rescheduleStrategyMethod, recalculationRestFrequencyType, recalculationRestFrequencyInterval, recalculationRestFrequencyDate, recalculationCompoundingFrequencyType, recalculationCompoundingFrequencyInterval, - recalculationCompoundingFrequencyDate, preCloseInterestCalculationStrategy, accounts, null, false, isMultiTrancheLoan, - recalculationCompoundingFrequencyOnDayType, recalculationCompoundingFrequencyDayOfWeekType, recalculationRestFrequencyOnDayType, + recalculationCompoundingFrequencyDate, preCloseInterestCalculationStrategy, accounts, null, false, isMultiTrancheLoan, + recalculationCompoundingFrequencyOnDayType, recalculationCompoundingFrequencyDayOfWeekType, recalculationRestFrequencyOnDayType, recalculationRestFrequencyDayOfWeekType); } @@ -306,7 +306,7 @@ public class LoanReschedulingWithinCenterTest { final String recalculationRestFrequencyDate, final String recalculationCompoundingFrequencyType, final String recalculationCompoundingFrequencyInterval, final String recalculationCompoundingFrequencyDate, final String preCloseInterestCalculationStrategy, final Account[] accounts, final String chargeId, - boolean isArrearsBasedOnOriginalSchedule, final boolean isMultiTrancheLoan, + boolean isArrearsBasedOnOriginalSchedule, final boolean isMultiTrancheLoan, final Integer recalculationCompoundingFrequencyOnDayType, final Integer recalculationCompoundingFrequencyDayOfWeekType, final Integer recalculationRestFrequencyOnDayType, final Integer recalculationRestFrequencyDayOfWeekType) { diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/PasswordPreferencesIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/PasswordPreferencesIntegrationTest.java index 388c13ef5..27729fd2a 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/PasswordPreferencesIntegrationTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/PasswordPreferencesIntegrationTest.java @@ -65,11 +65,11 @@ public class PasswordPreferencesIntegrationTest { System.out.println("---------------------------------PASSWORD PREFERENCE VALIDATED SUCCESSFULLY-----------------------------------------"); } - + @Test public void updateWithInvalidPolicyId() { String invalidValidationPolicyId = "2000"; - final List error = (List) PasswordPreferencesHelper.updateWithInvalidValidationPolicyId(requestSpec, generalResponseSpec, invalidValidationPolicyId, + final List error = (List) PasswordPreferencesHelper.updateWithInvalidValidationPolicyId(requestSpec, generalResponseSpec, invalidValidationPolicyId, CommonConstants.RESPONSE_ERROR); assertEquals("Password Validation Policy with identifier 2000 does not exist", "error.msg.password.validation.policy.id.invalid", error.get(0).get("userMessageGlobalisationCode")); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/RecurringDepositTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/RecurringDepositTest.java index d8678eb45..fba781bca 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/RecurringDepositTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/RecurringDepositTest.java @@ -478,7 +478,7 @@ public class RecurringDepositTest { this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec); this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec); this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec); - + /*** * Create GL Accounts for product account mapping @@ -611,7 +611,7 @@ public class RecurringDepositTest { Integer transactionIdForPostInterest = this.recurringDepositAccountHelper .postInterestForRecurringDeposit(recurringDepositAccountId); Assert.assertNotNull(transactionIdForPostInterest); - + HashMap accountSummary = this.recurringDepositAccountHelper.getRecurringDepositSummary(recurringDepositAccountId); Float totalInterestPosted = (Float) accountSummary.get("totalInterestPosted"); @@ -694,7 +694,7 @@ public class RecurringDepositTest { this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec); this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec); this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec); - + /*** * Create GL Accounts for product account mapping @@ -810,7 +810,7 @@ public class RecurringDepositTest { */ todaysDate = Calendar.getInstance(); todaysDate.add(Calendar.MONTH, -20); - + for (int i = 0; i < 14; i++) { Integer depositTransactionId = this.recurringDepositAccountHelper.depositToRecurringDepositAccount(recurringDepositAccountId, depositAmount, dateFormat.format(todaysDate.getTime())); @@ -826,20 +826,20 @@ public class RecurringDepositTest { /*** * FD account verify whether account is matured */ - + SchedulerJobHelper schedulerJobHelper = new SchedulerJobHelper(requestSpec, responseSpec); String JobName = "Update Deposit Accounts Maturity details"; schedulerJobHelper.executeJob(JobName); - + HashMap accountDetails = this.recurringDepositAccountHelper.getRecurringDepositAccountById(this.requestSpec, this.responseSpec, recurringDepositAccountId); - + HashMap summary = (HashMap) accountDetails.get("summary"); Assert.assertNotNull(summary.get("totalWithholdTax")); Float withHoldTax = (Float) summary.get("totalWithholdTax"); this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccountForTax, CLOSED_ON_DATE, new JournalEntry(withHoldTax, JournalEntry.TransactionType.CREDIT)); - + recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(this.requestSpec, this.responseSpec, recurringDepositAccountId.toString()); @@ -849,7 +849,7 @@ public class RecurringDepositTest { } - + /*** * Test case for Recurring Deposit Account premature closure with * transaction type ReInvest and Cash Based accounting enabled @@ -2882,7 +2882,7 @@ public class RecurringDepositTest { final Float interestRate = new Float(6.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testRecurringDepositAccountWithPeriodInterestRateChart_AMOUNT_VARIATION() { final String chartToUse = "period"; @@ -2891,7 +2891,7 @@ public class RecurringDepositTest { final Float interestRate = new Float(6.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testRecurringDepositAccountWithPeriodInterestRateChart_PERIOD_VARIATION() { final String chartToUse = "period"; @@ -2900,7 +2900,7 @@ public class RecurringDepositTest { final Float interestRate = new Float(7.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testRecurringDepositAccountWithAmountInterestRateChart() { final String chartToUse = "amount"; @@ -2909,7 +2909,7 @@ public class RecurringDepositTest { final Float interestRate = new Float(8.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testRecurringDepositAccountWithAmountInterestRateChart_AMOUNT_VARIATION() { final String chartToUse = "amount"; @@ -2918,7 +2918,7 @@ public class RecurringDepositTest { final Float interestRate = new Float(7.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testRecurringDepositAccountWithAmountInterestRateChart_PERIOD_VARIATION() { final String chartToUse = "amount"; @@ -2927,7 +2927,7 @@ public class RecurringDepositTest { final Float interestRate = new Float(5.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testRecurringDepositAccountWithPeriodAndAmountInterestRateChart() { final String chartToUse = "period_amount"; @@ -2936,7 +2936,7 @@ public class RecurringDepositTest { final Float interestRate = new Float(7.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testRecurringDepositAccountWithPeriodAndAmountInterestRateChart_AMOUNT_VARIATION() { final String chartToUse = "period_amount"; @@ -2945,7 +2945,7 @@ public class RecurringDepositTest { final Float interestRate = new Float(6.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testRecurringDepositAccountWithPeriodAndAmountInterestRateChart_PERIOD_VARIATION() { final String chartToUse = "period_amount"; @@ -2954,7 +2954,7 @@ public class RecurringDepositTest { final Float interestRate = new Float(8.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testRecurringDepositAccountWithAmountAndPeriodInterestRateChart() { final String chartToUse = "amount_period"; @@ -2963,7 +2963,7 @@ public class RecurringDepositTest { final Float interestRate = new Float(8.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testRecurringDepositAccountWithAmountAndPeriodInterestRateChart_AMOUNT_VARIATION() { final String chartToUse = "amount_period"; @@ -2972,7 +2972,7 @@ public class RecurringDepositTest { final Float interestRate = new Float(6.0); testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate); } - + @Test public void testRecurringDepositAccountWithAmountAndPeriodInterestRateChart_PERIOD_VARIATION() { final String chartToUse = "amount_period"; @@ -3049,7 +3049,7 @@ public class RecurringDepositTest { final String recurringDepositProductJSON = recurringDepositProductHelper.withPeriodRangeChart().build(validFrom, validTo); return RecurringDepositProductHelper.createRecurringDepositProduct(recurringDepositProductJSON, requestSpec, responseSpec); } - + private Integer createRecurringDepositProductWithWithHoldTax(final String validFrom, final String validTo,final String taxGroupId, final String accountingRule, Account... accounts) { System.out.println("------------------------------CREATING NEW RECURRING DEPOSIT PRODUCT ---------------------------------------"); @@ -3186,7 +3186,7 @@ public class RecurringDepositTest { Assert.assertEquals(financialActivityId, ((HashMap) mappingDetails.get("financialActivityData")).get("id")); Assert.assertEquals(glAccount.getAccountID(), ((HashMap) mappingDetails.get("glAccountData")).get("id")); } - + private Integer createTaxGroup(final String percentage, final Account liabilityAccountForTax){ final Integer liabilityAccountId = liabilityAccountForTax.getAccountID(); final Integer taxComponentId = TaxComponentHelper.createTaxComponent(this.requestSpec, this.responseSpec, percentage, liabilityAccountId); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SkipRepaymentOnMonthFirstTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SkipRepaymentOnMonthFirstTest.java index a0c4907ce..d9fb3e035 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SkipRepaymentOnMonthFirstTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SkipRepaymentOnMonthFirstTest.java @@ -159,15 +159,15 @@ public class SkipRepaymentOnMonthFirstTest { assertEquals("Checking for Repayment Date for 1st Month", new ArrayList<>(Arrays.asList(2011, 10, 15)), loanSchedule.get(1).get("dueDate")); System.out.println("Repayment Date for 1st Month--" + loanSchedule.get(1).get("dueDate")); - + assertEquals("Checking for Repayment Date for 2nd Month", new ArrayList<>(Arrays.asList(2011, 11, 15)), loanSchedule.get(2).get("dueDate")); System.out.println("Repayment Date for 2nd Month--" + loanSchedule.get(2).get("dueDate")); - + assertEquals("Checking for Repayment Date for 3rd Month", new ArrayList<>(Arrays.asList(2011, 12, 15)), loanSchedule.get(3).get("dueDate")); System.out.println("Repayment Date for 3rd Month--" + loanSchedule.get(3).get("dueDate")); - + assertEquals("Checking for Repayment Date for 4th Month", new ArrayList<>(Arrays.asList(2012, 1, 15)), loanSchedule.get(4).get("dueDate")); System.out.println("Repayment Date for 4th Month--" + loanSchedule.get(4).get("dueDate")); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SystemCodeTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SystemCodeTest.java index 99fe2e93f..755c40840 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SystemCodeTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SystemCodeTest.java @@ -41,7 +41,7 @@ import com.jayway.restassured.specification.ResponseSpecification; /** * Test for creating, updating, deleting codes and code values - * + * */ @SuppressWarnings({ "rawtypes", "unchecked" }) public class SystemCodeTest { diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/BatchHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/BatchHelper.java index 170ede547..0570a7d12 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/BatchHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/BatchHelper.java @@ -35,9 +35,9 @@ import com.jayway.restassured.specification.ResponseSpecification; * Helper class for {@link org.apache.fineract.integrationtests.BatchApiTest}. It * takes care of creation of {@code BatchRequest} list and posting this list to * the server. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.integrationtests.BatchApiTest */ public class BatchHelper { @@ -51,7 +51,7 @@ public class BatchHelper { /** * Returns a JSON String for a list of {@code BatchRequest}s - * + * * @param batchRequests * @return JSON String of BatchRequest */ @@ -71,7 +71,7 @@ public class BatchHelper { /** * Returns the converted string response into JSON. - * + * * @param json * @return List */ @@ -83,7 +83,7 @@ public class BatchHelper { * Returns a list of BatchResponse with query parameter enclosing * transaction set to false by posting the jsonified BatchRequest to the * server. - * + * * @param requestSpec * @param responseSpec * @param jsonifiedBatchRequests @@ -99,7 +99,7 @@ public class BatchHelper { * Returns a list of BatchResponse with query parameter enclosing * transaction set to true by posting the jsonified BatchRequest to the * server. - * + * * @param requestSpec * @param responseSpec * @param jsonifiedBatchRequests @@ -114,7 +114,7 @@ public class BatchHelper { /** * Returns a BatchResponse based on the given BatchRequest, by posting the * request to the server. - * + * * @param BatchRequest * @return List */ @@ -139,7 +139,7 @@ public class BatchHelper { * Creates and returns a * {@link org.apache.fineract.batch.command.internal.CreateClientCommandStrategy} * Request as one of the request in Batch. - * + * * @param reqId * @param externalId * @return BatchRequest @@ -202,7 +202,7 @@ public class BatchHelper { * Creates and returns a * {@link org.apache.fineract.batch.command.internal.UpdateClientCommandStrategy} * Request with given requestId and reference. - * + * * @param reqId * @param clientId * @return BatchRequest @@ -224,7 +224,7 @@ public class BatchHelper { * Creates and returns a * {@link org.apache.fineract.batch.command.internal.ApplyLoanCommandStrategy} * Request with given requestId and reference. - * + * * @param requestId * @param reference * @param productId @@ -255,7 +255,7 @@ public class BatchHelper { * Creates and returns a * {@link org.apache.fineract.batch.command.internal.ApplySavingsCommandStrategy} * Request with given requestId and reference. - * + * * @param requestId * @param reference * @param productId @@ -281,7 +281,7 @@ public class BatchHelper { * Creates and returns a * {@link org.apache.fineract.batch.command.internal.CreateChargeCommandStrategy} * Request with given requestId and reference - * + * * @param requestId * @param reference * @return BatchRequest @@ -305,7 +305,7 @@ public class BatchHelper { * Creates and returns a * {@link org.apache.fineract.batch.command.internal.CollectChargesCommandStrategy} * Request with given requestId and reference. - * + * * @param requestId * @param reference * @return BatchRequest @@ -327,8 +327,8 @@ public class BatchHelper { * Creates and returns a * {@link org.apache.fineract.batch.command.internal.ActivateClientCommandStrategy} * Request with given requestId and reference. - * - * + * + * * @param requestId * @param reference * @return BatchRequest @@ -345,13 +345,13 @@ public class BatchHelper { return br; } - + /** * Creates and returns a * {@link org.apache.fineract.batch.command.internal.ApproveLoanCommandStrategy} * Request with given requestId and reference. - * - * + * + * * @param requestId * @param reference * @return BatchRequest @@ -363,7 +363,7 @@ public class BatchHelper { br.setRelativeUrl("loans/$.loanId?command=approve"); br.setReference(reference); br.setMethod("POST"); - br.setBody("{\"locale\": \"en\", \"dateFormat\": \"dd MMMM yyyy\", \"approvedOnDate\": \"12 September 2013\"," + br.setBody("{\"locale\": \"en\", \"dateFormat\": \"dd MMMM yyyy\", \"approvedOnDate\": \"12 September 2013\"," + "\"note\": \"Loan approval note\"}"); return br; @@ -373,8 +373,8 @@ public class BatchHelper { * Creates and returns a * {@link org.apache.fineract.batch.command.internal.DisburseLoanCommandStrategy} * Request with given requestId and reference. - * - * + * + * * @param requestId * @param reference * @return BatchRequest @@ -413,11 +413,11 @@ public class BatchHelper { return br; } - + /** * Checks that the client with given externalId is not created on the * server. - * + * * @param requestSpec * @param responseSpec * @param externalId diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CalendarHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CalendarHelper.java index 1f0e54731..da1f14bf3 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CalendarHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CalendarHelper.java @@ -88,7 +88,7 @@ public class CalendarHelper { final Integer responseCalendarId = from(responseCalendarDetailsinJSON).get("id"); assertEquals("ERROR IN CREATING THE CALENDAR", generatedCalendarId, responseCalendarId); } - + public static Integer createMeetingForGroup(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final Integer groupId, final String startDate, final String frequency, final String interval, final String repeatsOnDay) { diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterDomain.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterDomain.java index ae8386980..fdbec3815 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterDomain.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterDomain.java @@ -195,7 +195,7 @@ public class CenterDomain implements Comparable { public String getHierarchy() { return this.hierarchy; } - + public String getAccountNo(){ return this.accountNo; } diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterHelper.java index f22970cbd..17531d837 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterHelper.java @@ -97,7 +97,7 @@ public class CenterHelper { hm.put("dateFormat", "dd MMM yyyy"); hm.put("activationDate", activationDate); } - + System.out.println("------------------------CREATING CENTER-------------------------"); return Utils.performServerPost(requestSpec, responseSpec, CREATE_CENTER_URL, new Gson().toJson(hm), "resourceId"); } @@ -183,7 +183,7 @@ public class CenterHelper { } public static String getTestCenterWithStaffAsJSON(final boolean active, final String activationDate, final Integer staffId) { - + Integer id = null; Integer statusid = null; String statuscode = null; @@ -201,7 +201,7 @@ public class CenterHelper { } public static String getTestCenterAsJSON(final boolean active, final String activationDate) { - + Integer id = null; Integer statusid = null; String statuscode = null; @@ -217,7 +217,7 @@ public class CenterHelper { return CenterDomain.jsonRequestToCreateCenter(id, statusid, statuscode, statusvalue, active, activationDate,submittedDate,name, externalId, staffId, officeID, officeName, hierarchy, groupMembers); - + } public static String assignStaffAsJSON(final Long staffId) { diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientChargesTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientChargesTest.java index 49359c6cf..19b3ca5f3 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientChargesTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientChargesTest.java @@ -34,13 +34,13 @@ import com.jayway.restassured.specification.RequestSpecification; import com.jayway.restassured.specification.ResponseSpecification; /** - * + * * IntegrationTest for ClientCharges. - * + * */ /** * @author lenovo - * + * */ public class ClientChargesTest { @@ -71,7 +71,7 @@ public class ClientChargesTest { * create a charge for loan and try to associate to client created in * the above lines.it will be an invalid scenario the reason is client * is not allowed to have only client charge. - * + * */ final Integer loanChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec, ChargesHelper.getLoanSpecifiedDueDateJSON()); @@ -159,7 +159,7 @@ public class ClientChargesTest { /** * It checks whether the client charge transaction is reversed or not. - * + * * @param clientId * @param transactionId */ @@ -172,7 +172,7 @@ public class ClientChargesTest { /** * Check whether the outStandingAmount is equal to expected Amount or not * after paying or after waiving off the client charge. - * + * * @param outStandingAmount * @param expectedAmount */ diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientHelper.java index 762211e93..47262142b 100755 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientHelper.java @@ -85,9 +85,9 @@ public class ClientHelper { return Utils.performServerPost(requestSpec, responseSpec, CREATE_CLIENT_URL, getTestClientAsJSON(activationDate, officeId), "clientId"); } - - - + + + public static Integer createClientPending(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) { return createClientPending(requestSpec, responseSpec, "04 March 2014"); } @@ -128,12 +128,12 @@ public class ClientHelper { public static Integer createClientAsPerson(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String activationDate, final String officeId) { - + System.out.println("---------------------------------CREATING A CLIENT NON PERSON(ORGANISATION)---------------------------------------------"); return Utils.performServerPost(requestSpec, responseSpec, CREATE_CLIENT_URL, getTestPersonClientAsJSON(activationDate, officeId), "clientId"); } - + public static Integer createClientAsEntity(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) { return createClientAsEntity(requestSpec, responseSpec, "04 March 2011"); } @@ -145,10 +145,10 @@ public class ClientHelper { public static Integer createClientAsEntity(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String activationDate, final String officeId) { - + Integer constitutionCodeId = (Integer) CodeHelper.getCodeByName(requestSpec, responseSpec, "Constitution").get("id"); Integer soleProprietorCodeValueId = (Integer) CodeHelper.retrieveOrCreateCodeValue(constitutionCodeId, requestSpec, responseSpec).get("id"); - + System.out.println("---------------------------------CREATING A CLIENT NON PERSON(ORGANISATION)---------------------------------------------"); return Utils.performServerPost(requestSpec, responseSpec, CREATE_CLIENT_URL, getTestEntityClientAsJSON(activationDate, officeId, soleProprietorCodeValueId), "clientId"); @@ -191,7 +191,7 @@ public class ClientHelper { System.out.println("map : " + map); return new Gson().toJson(map); } - + public static String getTestClientAsJSONPending(final String submittedOnDate, final String officeId) { final HashMap map = new HashMap<>(); map.put("officeId", officeId); @@ -248,11 +248,11 @@ public class ClientHelper { map.put("active", "true"); map.put("activationDate", dateOfJoining); map.put("legalFormId", 1); - + System.out.println("map : " + map); return new Gson().toJson(map); } - + public static String getTestEntityClientAsJSON(final String dateOfJoining, final String officeId, final Integer soleProprietorCodeValueId) { final HashMap map = new HashMap<>(); map.put("officeId", officeId); @@ -263,11 +263,11 @@ public class ClientHelper { map.put("active", "true"); map.put("activationDate", dateOfJoining); map.put("legalFormId", 2); - + final HashMap clientNonPersonMap = new HashMap<>(); clientNonPersonMap.put("constitutionId", soleProprietorCodeValueId); map.put("clientNonPersonDetails", clientNonPersonMap); - + System.out.println("map : " + map); return new Gson().toJson(map); } @@ -408,8 +408,8 @@ public class ClientHelper { System.out.println(clientJson); return clientJson; } - - + + private String getWithdrawClientAsJSON() { final HashMap map = new HashMap<>(); @@ -539,7 +539,7 @@ public class ClientHelper { return Utils.performServerPost(this.requestSpec, this.responseSpec, postURLForClient, jsonToBeSent, jsonAttributeToGetBack); } - + private HashMap performClientActions(final String postURLForClient, final String jsonToBeSent, final Integer clientId) { Utils.performServerPost(this.requestSpec, this.responseSpec, postURLForClient, jsonToBeSent, CommonConstants.RESPONSE_STATUS); HashMap response = ClientHelper.getClientStatus(requestSpec, responseSpec, String.valueOf(clientId)); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java index 82fe8c6eb..dffa31611 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java @@ -362,7 +362,7 @@ public class GlobalConfigurationHelper { return Utils.performServerPut(requestSpec, responseSpec, IS_CACHE_GLOBAL_CONFIG_UPDATE_URL, updateIsCacheEnabledGlobalConfigUpdateAsJSON(cacheType), "changes"); } - + public static Object updatePasswordResetDaysForGlobalConfiguration(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final Integer configId, final String value, final String enabled, final String jsonAttributeToGetBack) { final String UPDATE_URL = "/fineract-provider/api/v1/configurations/" + configId + "?" + Utils.TENANT_IDENTIFIER; @@ -377,7 +377,7 @@ public class GlobalConfigurationHelper { System.out.println("map : " + map); return new Gson().toJson(map); } - + public static String updatePasswordResetDaysGlobalConfigAsJSON(final String value, final String enabled) { final HashMap map = new HashMap<>(); if(value != null){ diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HolidayHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HolidayHelper.java index b1a5e64bd..14b01c697 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HolidayHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HolidayHelper.java @@ -64,7 +64,7 @@ public class HolidayHelper { System.out.println(HolidayCreateJson); return HolidayCreateJson; } - + public static String getActivateHolidayDataAsJSON() { final HashMap map = new HashMap<>(); String activateHoliday = new Gson().toJson(map); @@ -75,12 +75,12 @@ public class HolidayHelper { public static Integer createHolidays(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) { return Utils.performServerPost(requestSpec, responseSpec, CREATE_HOLIDAY_URL, getCreateHolidayDataAsJSON(), "resourceId"); } - + public static Integer activateHolidays(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String holidayID) { - final String ACTIVATE_HOLIDAY_URL = HOLIDAYS_URL + "/" + holidayID + "?command=activate&" + Utils.TENANT_IDENTIFIER; + final String ACTIVATE_HOLIDAY_URL = HOLIDAYS_URL + "/" + holidayID + "?command=activate&" + Utils.TENANT_IDENTIFIER; return Utils.performServerPost(requestSpec, responseSpec, ACTIVATE_HOLIDAY_URL, getActivateHolidayDataAsJSON(), "resourceId"); } - + public static HashMap getHolidayById(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String holidayID) { final String GET_HOLIDAY_BY_ID_URL = HOLIDAYS_URL + "/" + holidayID + "?" + Utils.TENANT_IDENTIFIER; diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HookHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HookHelper.java index 2b4f73631..57967515a 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HookHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HookHelper.java @@ -29,23 +29,23 @@ import com.jayway.restassured.specification.RequestSpecification; import com.jayway.restassured.specification.ResponseSpecification; public class HookHelper { - + private final RequestSpecification requestSpec; private final ResponseSpecification responseSpec; private static final String CREATE_HOOK_URL = "/fineract-provider/api/v1/hooks?" + Utils.TENANT_IDENTIFIER; - + public HookHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) { this.requestSpec = requestSpec; this.responseSpec = responseSpec; } - + public Integer createHook(final String payloadURL) { System.out.println("---------------------------------CREATING A HOOK---------------------------------------------"); return Utils.performServerPost(requestSpec, responseSpec, CREATE_HOOK_URL, getTestHookAsJson(payloadURL), "resourceId"); } - + public String getTestHookAsJson(final String payloadURL) { final HashMap map = new HashMap<>(); map.put("name", "Web"); @@ -64,7 +64,7 @@ public class HookHelper { System.out.println("map : " + map); return new Gson().toJson(map); } - + public Integer updateHook(final String payloadURL, final Long hookId) { System.out.println("---------------------------------UPDATING HOOK---------------------------------------------"); final String UPDATE_HOOK_URL = "/fineract-provider/api/v1/hooks/" + hookId + "?" + Utils.TENANT_IDENTIFIER; @@ -76,14 +76,14 @@ public class HookHelper { final String DELETE_HOOK_URL = "/fineract-provider/api/v1/hooks/" + hookId + "?" + Utils.TENANT_IDENTIFIER; return Utils.performServerDelete(this.requestSpec, this.responseSpec, DELETE_HOOK_URL, "resourceId"); } - + public void verifyHookCreatedOnServer(final Long hookId) { System.out.println("------------------------------CHECK CREATE HOOK DETAILS------------------------------------\n"); final String GET_URL = "/fineract-provider/api/v1/hooks/" + hookId + "?" + Utils.TENANT_IDENTIFIER; final Integer responseHookId = Utils.performServerGet(this.requestSpec, this.responseSpec, GET_URL, "id"); assertEquals(hookId.toString(), responseHookId.toString()); } - + public void verifyUpdateHook(final String updateURL, final Long hookId) { System.out.println("------------------------------CHECK UPDATE HOOK DETAILS------------------------------------\n"); final String GET_URL = "/fineract-provider/api/v1/hooks/" + hookId + "?" + Utils.TENANT_IDENTIFIER; @@ -91,7 +91,7 @@ public class HookHelper { HashMap hash = (HashMap) map.get(1); assertEquals(updateURL, hash.get("fieldValue")); } - + public void verifyDeleteHook(final Long hookId) { System.out.println("------------------------------CHECK DELETE HOOK DETAILS------------------------------------\n"); final String GET_URL = "/fineract-provider/api/v1/hooks/" + hookId + "?" + Utils.TENANT_IDENTIFIER; diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/LoanRescheduleRequestHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/LoanRescheduleRequestHelper.java index badcaa492..ddde88588 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/LoanRescheduleRequestHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/LoanRescheduleRequestHelper.java @@ -26,40 +26,40 @@ import com.jayway.restassured.specification.ResponseSpecification; public class LoanRescheduleRequestHelper { private final RequestSpecification requestSpec; private final ResponseSpecification responseSpec; - + private static final String LOAN_RESCHEDULE_REQUEST_URL = "/fineract-provider/api/v1/rescheduleloans"; - + public LoanRescheduleRequestHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) { this.requestSpec = requestSpec; this.responseSpec = responseSpec; } - + public Integer createLoanRescheduleRequest(final String requestJSON) { - final String URL = LOAN_RESCHEDULE_REQUEST_URL + "?" + Utils.TENANT_IDENTIFIER; + final String URL = LOAN_RESCHEDULE_REQUEST_URL + "?" + Utils.TENANT_IDENTIFIER; return Utils.performServerPost(this.requestSpec, this.responseSpec, URL, requestJSON, "resourceId"); } - + public Integer rejectLoanRescheduleRequest(final Integer requestId, final String requestJSON) { final String URL = LOAN_RESCHEDULE_REQUEST_URL + "/" + requestId + "?" + Utils.TENANT_IDENTIFIER + "&command=reject"; - + return Utils.performServerPost(this.requestSpec, this.responseSpec, URL, requestJSON, "resourceId"); } - + public Integer approveLoanRescheduleRequest(final Integer requestId, final String requestJSON) { final String URL = LOAN_RESCHEDULE_REQUEST_URL + "/" + requestId + "?" + Utils.TENANT_IDENTIFIER + "&command=approve"; - + return Utils.performServerPost(this.requestSpec, this.responseSpec, URL, requestJSON, "resourceId"); } - + public Object getLoanRescheduleRequest(final Integer requestId, final String param) { final String URL = LOAN_RESCHEDULE_REQUEST_URL + "/" + requestId + "?" + Utils.TENANT_IDENTIFIER; - + return Utils.performServerGet(requestSpec, responseSpec, URL, param); } - + public void verifyCreationOfLoanRescheduleRequest(final Integer requestId) { final String URL = LOAN_RESCHEDULE_REQUEST_URL + "/" + requestId + "?" + Utils.TENANT_IDENTIFIER; - + final Integer id = Utils.performServerGet(requestSpec, responseSpec, URL, "id"); assertEquals("ERROR IN CREATING LOAN RESCHEDULE REQUEST", requestId, id); } diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PasswordPreferencesHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PasswordPreferencesHelper.java index 52b8c5a40..6149ecc5e 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PasswordPreferencesHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PasswordPreferencesHelper.java @@ -28,7 +28,7 @@ public class PasswordPreferencesHelper { private static final String PASSWORD_PREFERENCES_URL = "/fineract-provider/api/v1/passwordpreferences"; - public static Object updatePasswordPreferences(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, + public static Object updatePasswordPreferences(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, String validationPolicyId) { final String UPDATE_PASSWORD_PREFERENCES_URL = PASSWORD_PREFERENCES_URL + "?" + Utils.TENANT_IDENTIFIER; System.out.println("---------------------------------UPDATE PASSWORD PREFERENCE---------------------------------------------"); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PaymentTypeHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PaymentTypeHelper.java index c6ab35b27..e4ce208be 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PaymentTypeHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PaymentTypeHelper.java @@ -64,7 +64,7 @@ public class PaymentTypeHelper { final Integer paymentTypeId) { final String GET_PAYMENTTYPE_URL = PAYMENTTYPE_URL + "/" + paymentTypeId + "?" + Utils.TENANT_IDENTIFIER; System.out.println("---------------------------------GET PAYMENT TYPE---------------------------------------------"); - Object get = Utils.performServerGet(requestSpec, responseSpec, GET_PAYMENTTYPE_URL, ""); + Object get = Utils.performServerGet(requestSpec, responseSpec, GET_PAYMENTTYPE_URL, ""); final String jsonData = new Gson().toJson(get); return new Gson().fromJson(jsonData, new TypeToken() {}.getType()); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ProvisioningIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ProvisioningIntegrationTest.java index b03ce5ec0..c8bbd02f4 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ProvisioningIntegrationTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ProvisioningIntegrationTest.java @@ -104,7 +104,7 @@ public class ProvisioningIntegrationTest { Map newCriteria = transactionHelper.retrieveProvisioningCriteria(criteriaId) ; validateProvisioningCriteria(requestCriteria, newCriteria) ; - + ArrayList definitions = (ArrayList)newCriteria.get("definitions") ; for(int i = 0 ; i < definitions.size(); i++) { Map criteriadefinition = (Map) definitions.get(i) ; @@ -115,9 +115,9 @@ public class ProvisioningIntegrationTest { Integer criteriaId1 = transactionHelper.updateProvisioningCriteria(criteriaId, updateCriteriaString) ; Map updatedCriteria = transactionHelper.retrieveProvisioningCriteria(criteriaId1) ; validateProvisioningCriteria(newCriteria, updatedCriteria) ; - + transactionHelper.deleteProvisioningCriteria(criteriaId1) ; - + categories = transactionHelper.retrieveAllProvisioningCategories(); liability = accountHelper.createLiabilityAccount() ; expense = accountHelper.createExpenseAccount() ; @@ -129,7 +129,7 @@ public class ProvisioningIntegrationTest { String provisioningEntryJson = ProvisioningHelper.createProvisioningEntryJson(); Integer provisioningEntryId = transactionHelper.createProvisioningEntries(provisioningEntryJson); Assert.assertNotNull(provisioningEntryId); - + transactionHelper.updateProvisioningEntry("recreateprovisioningentry", provisioningEntryId, "") ; transactionHelper.updateProvisioningEntry("createjournalentry", provisioningEntryId, "") ; Map entry = transactionHelper.retrieveProvisioningEntry(provisioningEntryId) ; @@ -139,24 +139,24 @@ public class ProvisioningIntegrationTest { } private void validateProvisioningCriteria(Map requestCriteria, Map newCriteria) { - + //criteria name validation String requestCriteriaName = (String)requestCriteria.get("criteriaName") ; String criteriaName = (String)newCriteria.get("criteriaName") ; Assert.assertEquals(criteriaName, requestCriteriaName) ; - + //loan products validation ArrayList requestProducts = (ArrayList)requestCriteria.get("loanProducts") ; ArrayList products = (ArrayList)newCriteria.get("loanProducts") ; Assert.assertEquals(products.size(), requestProducts.size()) ; - + ArrayList requestedDefinitions = (ArrayList)requestCriteria.get("definitions") ; ArrayList newdefintions = (ArrayList) newCriteria.get("definitions") ; Assert.assertEquals(newdefintions.size(), requestedDefinitions.size()) ; for(int i = 0 ; i < newdefintions.size() ; i++) { Map requestedMap = (Map)requestedDefinitions.get(i) ; Object requestedCategoryId = requestedMap.get("categoryId") ; - boolean found = false ; + boolean found = false ; for(int j = 0 ; j < newdefintions.size(); j++) { Map newMap = (Map)newdefintions.get(j) ; Object newCategoryId = newMap.get("categoryId") ; @@ -175,13 +175,13 @@ public class ProvisioningIntegrationTest { if(!found) Assert.fail("No Category found with Id:"+requestedCategoryId); } } - + private void checkProperty(String propertyName, Map requestMap, Map newMap) { Object requested = requestMap.get(propertyName) ; Object modified = newMap.get(propertyName) ; Assert.assertEquals(requested, modified) ; } - + private Integer createLoanProduct(final boolean multiDisburseLoan, final String accountingRule, final Account... accounts) { System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------"); LoanProductTestBuilder builder = new LoanProductTestBuilder() // @@ -199,7 +199,7 @@ public class ProvisioningIntegrationTest { builder = builder.withInterestCalculationPeriodTypeAsRepaymentPeriod(true); } final String loanProductJSON = builder.build(null); - + return this.loanTransactionHelper.getLoanProductId(loanProductJSON); } @@ -222,7 +222,7 @@ public class ProvisioningIntegrationTest { .withCharges(charges).build(clientID.toString(), loanProductID.toString(), savingsId); return this.loanTransactionHelper.getLoanId(loanApplicationJSON); } - + private boolean isAlreadyProvisioningEntriesCreated() { ProvisioningTransactionHelper transactionHelper = new ProvisioningTransactionHelper(requestSpec, responseSpec); Map entries = transactionHelper.retrieveAllProvisioningEntries() ; diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/AccountHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/AccountHelper.java index 336285720..d83ead3ed 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/AccountHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/AccountHelper.java @@ -67,13 +67,13 @@ public class AccountHelper { liabilityAccountJSON, this.GL_ACCOUNT_ID_RESPONSE); return new Account(accountID, Account.AccountType.LIABILITY); } - + public ArrayList getAccountingWithRunningBalances() { final String GET_RUNNING_BALANCE_URL = "/fineract-provider/api/v1/glaccounts?fetchRunningBalance=true"; final ArrayList accountRunningBalance = Utils.performServerGet(this.requestSpec, this.responseSpec, GET_RUNNING_BALANCE_URL, ""); return accountRunningBalance; } - + public HashMap getAccountingWithRunningBalanceById(final String accountId) { final String GET_RUNNING_BALANCE_URL = "/fineract-provider/api/v1/glaccounts/" + accountId + "?fetchRunningBalance=true"; final HashMap accountRunningBalance = Utils.performServerGet(this.requestSpec, this.responseSpec, GET_RUNNING_BALANCE_URL, ""); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/GLAccountBuilder.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/GLAccountBuilder.java index 0e8467a6c..be8f27f83 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/GLAccountBuilder.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/GLAccountBuilder.java @@ -61,7 +61,7 @@ public class GLAccountBuilder { accountType = ASSET_ACCOUNT; glCode = Utils.randomStringGenerator("ASSET_", 2); // Add unique timestamp to avoid random collisions - glCode += Calendar.getInstance().getTimeInMillis() + ""; + glCode += Calendar.getInstance().getTimeInMillis() + ""; return this; } diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/charges/ChargesHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/charges/ChargesHelper.java index a3a267ae0..f94592e01 100755 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/charges/ChargesHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/charges/ChargesHelper.java @@ -39,7 +39,7 @@ public class ChargesHelper { private static final Integer CHARGE_APPLIES_TO_SAVINGS = 2; private static final Integer CHARGE_APPLIES_TO_CLIENT = 3; private static final Integer CHARGE_APPLIES_TO_SHARES = 4; - + private static final Integer CHARGE_DISBURSEMENT_FEE = 1; private static final Integer CHARGE_SPECIFIED_DUE_DATE = 2; private static final Integer CHARGE_SAVINGS_ACTIVATION_FEE = 3; @@ -53,9 +53,9 @@ public class ChargesHelper { private static final Integer SHAREACCOUNT_ACTIVATION = 13 ; private static final Integer SHARE_PURCHASE = 14 ; private static final Integer SHARE_REDEEM = 15 ; - + private static final Integer CHARGE_SAVINGS_NO_ACTIVITY_FEE = 16; - + private static final Integer CHARGE_CLIENT_SPECIFIED_DUE_DATE = 1; public static final Integer CHARGE_CALCULATION_TYPE_FLAT = 1; @@ -125,7 +125,7 @@ public class ChargesHelper { System.out.println(chargesCreateJson); return chargesCreateJson; } - + public static String getSavingsWeeklyFeeJSON() { final HashMap map = populateDefaultsForSavings(); map.put("chargeTimeType", WEEKLY_FEE); @@ -247,21 +247,21 @@ public class ChargesHelper { System.out.println(chargesCreateJson); return chargesCreateJson; } - + public static String getShareAccountPurchaseChargeJson() { HashMap map = populateDefaultsSharePurchaseFlatCharge() ; String chargesCreateJson = new Gson().toJson(map); System.out.println(chargesCreateJson); return chargesCreateJson; } - + public static String getShareAccountRedeemChargeJson() { HashMap map = populateDefaultsShareRedeemFlatCharge() ; String chargesCreateJson = new Gson().toJson(map); System.out.println(chargesCreateJson); return chargesCreateJson; } - + public static String getLoanOverdueFeeJSON() { final HashMap map = populateDefaultsForLoan(); map.put("penalty", ChargesHelper.penalty); @@ -274,7 +274,7 @@ public class ChargesHelper { System.out.println(chargesCreateJson); return chargesCreateJson; } - + public static String getLoanOverdueFeeJSONWithCalculattionTypePercentage(String penaltyPercentageAmount) { final HashMap map = populateDefaultsForLoan(); map.put("penalty", ChargesHelper.penalty); @@ -299,7 +299,7 @@ public class ChargesHelper { map.put("name", Utils.randomNameGenerator("Charge_Loans_", 6)); return map; } - + public static HashMap populateDefaultsClientCharge() { final HashMap map = new HashMap<>(); map.put("active", ChargesHelper.active); @@ -326,7 +326,7 @@ public class ChargesHelper { map.put("name", Utils.randomNameGenerator("Charge_Share_Activation_", 8)); return map; } - + public static HashMap populateDefaultsSharePurchaseFlatCharge() { final HashMap map = new HashMap<>(); map.put("active", ChargesHelper.active); @@ -339,7 +339,7 @@ public class ChargesHelper { map.put("name", Utils.randomNameGenerator("Charge_Share_Purchase_", 8)); return map; } - + public static HashMap populateDefaultsShareRedeemFlatCharge() { final HashMap map = new HashMap<>(); map.put("active", ChargesHelper.active); @@ -352,7 +352,7 @@ public class ChargesHelper { map.put("name", Utils.randomNameGenerator("Charge_Share_Redeem_", 8)); return map; } - + public static Integer createCharges(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String request) { return Utils.performServerPost(requestSpec, responseSpec, CREATE_CHARGES_URL, request, "resourceId"); @@ -472,7 +472,7 @@ public class ChargesHelper { System.out.println(json); return json; } - + public static String getChargeSpecifiedDueDateJSON() { final HashMap map = populateDefaultsClientCharge(); String chargesCreateJson = new Gson().toJson(map); @@ -482,6 +482,6 @@ public class ChargesHelper { public static String applyCharge(RequestSpecification requestSpec,ResponseSpecification responseSpec, String chargeId,String json) { return Utils.performServerPost(requestSpec, responseSpec, CHARGES_URL + "/" + chargeId + "?" + Utils.TENANT_IDENTIFIER, json,"status"); - + } } \ No newline at end of file diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositAccountStatusChecker.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositAccountStatusChecker.java index c276af5e2..fad699d9d 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositAccountStatusChecker.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositAccountStatusChecker.java @@ -87,7 +87,7 @@ public class FixedDepositAccountStatusChecker { assertTrue("ERROR IN PREMATURELY CLOSING THE FIXED DEPOSIT ACCOUNT", getStatus(fixedDepositStatusHashMap, "prematureClosed")); System.out.println(fixedDepositStatusHashMap); } - + public static void verifyFixedDepositAccountIsMatured(HashMap fixedDepositStatusHashMap) { System.out.println("--------------------- VERIFYING FIXED DEPOSIT APPLICATION IS MATURED ---------------------"); assertTrue("ERROR IN MATURITY JOB OF THE FIXED DEPOSIT ACCOUNT", getStatus(fixedDepositStatusHashMap, "matured")); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositProductHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositProductHelper.java index f2bb04de3..d917cbcc5 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositProductHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositProductHelper.java @@ -74,7 +74,7 @@ public class FixedDepositProductHelper { private static final String ACCRUAL_UPFRONT = "4"; private static final String WHOLE_TERM = "1"; private static final String TILL_PREMATURE_WITHDRAWAL = "2"; - + private String name = Utils.randomNameGenerator("FIXED_DEPOSIT_PRODUCT_", 6); private String shortName = Utils.randomNameGenerator("", 4); @@ -147,7 +147,7 @@ public class FixedDepositProductHelper { map.put("taxGroupId", taxGroupId); } - + if (this.accountingRule.equals(CASH_BASED)) { map.putAll(getAccountMappingForCashBased()); @@ -389,7 +389,7 @@ public class FixedDepositProductHelper { this.chartSlabs = constructChartSlabWithAmountAndPeriodRange(); return this; } - + public FixedDepositProductHelper withWithHoldTax(final String taxGroupId) { if (taxGroupId != null) { this.withHoldTax = true; diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanApplicationTestBuilder.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanApplicationTestBuilder.java index e51b2ca96..b88c30b81 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanApplicationTestBuilder.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanApplicationTestBuilder.java @@ -303,7 +303,7 @@ public class LoanApplicationTestBuilder { * disbursement with the group meetings (it seems that if we do use this * parameter we should also use calendarID to sync repayment with group * meetings) - * + * * @return */ public LoanApplicationTestBuilder withSyncDisbursementWithMeetin() { diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanDisbursementTestBuilder.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanDisbursementTestBuilder.java index 4ba7c068c..192de1f6e 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanDisbursementTestBuilder.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanDisbursementTestBuilder.java @@ -23,7 +23,7 @@ import static org.junit.Assert.assertEquals; import java.util.HashMap; public class LoanDisbursementTestBuilder { - + String dueDate = null; Float totalOriginalDueForPeriod = null; Float totalOutstandingForPeriod = null; @@ -32,8 +32,8 @@ public class LoanDisbursementTestBuilder { Float principalLoanBalanceOutstanding = null; Float principalDue = null; Float principalOriginalDue = null; - String fromDate = null; - + String fromDate = null; + public LoanDisbursementTestBuilder(String dueDate,Float totalOriginalDueForPeriod,Float totalOutstandingForPeriod, Float interestOutstanding, Float principalOutstanding, Float principalLoanBalanceOutstanding, Float principalDue, Float principalOriginalDue, String fromDate) { @@ -45,7 +45,7 @@ public class LoanDisbursementTestBuilder { this.principalLoanBalanceOutstanding = principalLoanBalanceOutstanding; this.principalDue = principalDue; this.principalOriginalDue = principalOriginalDue; - this.fromDate = fromDate; + this.fromDate = fromDate; } public String getDueDate() { @@ -83,7 +83,7 @@ public class LoanDisbursementTestBuilder { public String getFromDate() { return this.fromDate; } - + /*public HashMap build(String dueDate,String totalOriginalDueForPeriod,String totalOutstandingForPeriod, String interestOutstanding, String principalOutstanding, String principalLoanBalanceOutstanding, String principalDue, String principalOriginalDue, String fromDate) { @@ -102,7 +102,7 @@ public class LoanDisbursementTestBuilder { expectedRepaymentSchedule.put("principalOriginalDue", principalOriginalDue); expectedRepaymentSchedule.put("fromDate", fromDate); - + return expectedRepaymentSchedule; }*/ } diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanProductTestBuilder.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanProductTestBuilder.java index 63e8075c8..41014e733 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanProductTestBuilder.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanProductTestBuilder.java @@ -116,7 +116,7 @@ public class LoanProductTestBuilder { private String graceOnInterestPayment = "1"; private JsonObject allowAttributeOverrides = null; private Boolean allowPartialPeriodInterestCalcualtion = false; - + private Boolean allowVariableInstallments = Boolean.FALSE; private Integer minimumGap; private Integer maximumGap; @@ -212,7 +212,7 @@ public class LoanProductTestBuilder { map.put("minimumGap", minimumGap) ; map.put("maximumGap", maximumGap) ; } - map.put("syncExpectedWithDisbursementDate", + map.put("syncExpectedWithDisbursementDate", this.syncExpectedWithDisbursementDate); return new Gson().toJson(map); } @@ -494,16 +494,16 @@ public class LoanProductTestBuilder { this.allowAttributeOverrides = loanProductConfigurableAttributes; return this; } - + public LoanProductTestBuilder withVariableInstallmentsConfig(Boolean allowVariableInstallments, Integer minimumGap, Integer maximumGap) { this.allowVariableInstallments = allowVariableInstallments ; this.minimumGap = minimumGap; this.maximumGap = maximumGap; return this ; } - + public LoanProductTestBuilder withSyncExpectedWithDisbursementDate(Boolean syncExpectedWithDisbursementDate) { - this.syncExpectedWithDisbursementDate = + this.syncExpectedWithDisbursementDate = syncExpectedWithDisbursementDate ; return this ; } diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanTransactionHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanTransactionHelper.java index 8ef9b4635..854787c47 100755 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanTransactionHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanTransactionHelper.java @@ -190,7 +190,7 @@ public class LoanTransactionHelper { public HashMap disburseLoan(final String date, final Integer loanID) { return performLoanTransaction(createLoanOperationURL(DISBURSE_LOAN_COMMAND, loanID), getDisburseLoanAsJSON(date, null)); } - + public HashMap disburseLoanWithRepaymentReschedule(final String date, final Integer loanID, String adjustRepaymentDate) { return performLoanTransaction(createLoanOperationURL(DISBURSE_LOAN_COMMAND, loanID), getDisburseLoanWithRepaymentRescheduleAsJSON(date, null, adjustRepaymentDate)); @@ -203,7 +203,7 @@ public class LoanTransactionHelper { public Object disburseLoan(final String date, final Integer loanID, ResponseSpecification responseValidationError) { return performLoanTransaction(createLoanOperationURL(DISBURSE_LOAN_COMMAND, loanID), getDisburseLoanAsJSON(date, null), responseValidationError); } - + public HashMap disburseLoanToSavings(final String date, final Integer loanID) { return performLoanTransaction(createLoanOperationURL(DISBURSE_LOAN_TO_SAVINGS_COMMAND, loanID), getDisburseLoanAsJSON(date, null)); } @@ -215,7 +215,7 @@ public class LoanTransactionHelper { System.out.println("IN DISBURSE LOAN URL " + url); return performLoanTransaction(createLoanOperationURL(UNDO_DISBURSE_LOAN_COMMAND, loanID), undoDisburseJson); } - + public Float undoLastDisbursal(final Integer loanID) { final String undoLastDisburseJson = "{'note' : 'UNDO LAST DISBURSAL'}"; final String url = createLoanOperationURL(UNDO_LAST_DISBURSE_LOAN_COMMAND, loanID); @@ -267,7 +267,7 @@ public class LoanTransactionHelper { final String ADD_CHARGES_URL = "/fineract-provider/api/v1/loans/" + loanId + "/charges?" + Utils.TENANT_IDENTIFIER; return Utils.performServerPost(this.requestSpec, responseSpecification, ADD_CHARGES_URL, request, ""); } - + public Integer updateChargesForLoan(final Integer loanId, final Integer loanchargeId, final String request) { System.out.println("--------------------------------- ADD CHARGES FOR LOAN --------------------------------"); final String UPDATE_CHARGES_URL = "/fineract-provider/api/v1/loans/" + loanId + "/charges/" + loanchargeId + "?" @@ -312,7 +312,7 @@ public class LoanTransactionHelper { System.out.println("Loan Application disburse request : " + map); return new Gson().toJson(map); } - + private String getDisburseLoanWithRepaymentRescheduleAsJSON(final String actualDisbursementDate, final String transactionAmount, final String adjustRepaymentDate) { final HashMap map = new HashMap<>(); map.put("locale", "en"); @@ -509,7 +509,7 @@ public class LoanTransactionHelper { "changes"); return (HashMap) response.get("status"); } - + private Float performUndoLastLoanDisbursementTransaction(final String postURLForLoanTransaction, final String jsonToBeSent) { final HashMap response = Utils.performServerPost(this.requestSpec, this.responseSpec, postURLForLoanTransaction, jsonToBeSent, @@ -520,10 +520,10 @@ public class LoanTransactionHelper { private Object performLoanTransaction(final String postURLForLoanTransaction, final String jsonToBeSent, final String responseAttribute) { return Utils.performServerPost(this.requestSpec, this.responseSpec, postURLForLoanTransaction, jsonToBeSent, responseAttribute); } - + private Object performLoanTransaction(final String postURLForLoanTransaction, final String jsonToBeSent, ResponseSpecification responseValidationError) { - - return Utils.performServerPost(this.requestSpec, responseValidationError, postURLForLoanTransaction, jsonToBeSent, CommonConstants.RESPONSE_ERROR); + + return Utils.performServerPost(this.requestSpec, responseValidationError, postURLForLoanTransaction, jsonToBeSent, CommonConstants.RESPONSE_ERROR); } public Object adjustLoanTransaction(final Integer loanId, final Integer transactionId, final String date, @@ -635,7 +635,7 @@ public class LoanTransactionHelper { map.put("locale", "en"); return new Gson().toJson(map); } - + public HashMap createTrancheDetail(final String id, final String date, final String amount) { HashMap detail = new HashMap<>(); if(id != null){ @@ -646,30 +646,30 @@ public class LoanTransactionHelper { return detail; } - - public Object editDisbursementDetail(final Integer loanID, final Integer disbursementId, final String approvalAmount, final String expectedDisbursementDate, + + public Object editDisbursementDetail(final Integer loanID, final Integer disbursementId, final String approvalAmount, final String expectedDisbursementDate, final String updatedExpectedDisbursementDate, final String updatedPrincipal, final String jsonAttributeToGetBack) { - - return Utils.performServerPut(this.requestSpec, this.responseSpec, createEditDisbursementURL(loanID, disbursementId), getEditDisbursementsAsJSON(approvalAmount, expectedDisbursementDate, + + return Utils.performServerPut(this.requestSpec, this.responseSpec, createEditDisbursementURL(loanID, disbursementId), getEditDisbursementsAsJSON(approvalAmount, expectedDisbursementDate, updatedExpectedDisbursementDate, updatedPrincipal), jsonAttributeToGetBack); } - + public Object addAndDeleteDisbursementDetail(final Integer loanID, final String approvalAmount, final String expectedDisbursementDate , List disbursementData, final String jsonAttributeToGetBack) { - - return Utils.performServerPut(this.requestSpec, this.responseSpec, createAddAndDeleteDisbursementURL(loanID), + + return Utils.performServerPut(this.requestSpec, this.responseSpec, createAddAndDeleteDisbursementURL(loanID), getAddAndDeleteDisbursementsAsJSON(approvalAmount, expectedDisbursementDate, disbursementData), jsonAttributeToGetBack); } - + private String createEditDisbursementURL(Integer loanID, Integer disbursementId) { return "/fineract-provider/api/v1/loans/" + loanID + "/disbursements/" + disbursementId + "?" + Utils.TENANT_IDENTIFIER; } - + private String createAddAndDeleteDisbursementURL(Integer loanID) { return "/fineract-provider/api/v1/loans/" + loanID + "/disbursements/editDisbursements?" + Utils.TENANT_IDENTIFIER; } - - public static String getEditDisbursementsAsJSON(final String approvalAmount, final String expectedDisbursementDate, + + public static String getEditDisbursementsAsJSON(final String approvalAmount, final String expectedDisbursementDate, final String updatedExpectedDisbursementDate, final String updatedPrincipal) { final HashMap map = new HashMap<>(); map.put("locale", "en"); @@ -682,8 +682,8 @@ public class LoanTransactionHelper { System.out.println(json); return json; } - - public static String getAddAndDeleteDisbursementsAsJSON(final String approvalAmount, final String expectedDisbursementDate, + + public static String getAddAndDeleteDisbursementsAsJSON(final String approvalAmount, final String expectedDisbursementDate, final List disbursementData) { final HashMap map = new HashMap<>(); map.put("locale", "en"); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/provisioning/ProvisioningHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/provisioning/ProvisioningHelper.java index e05a7a14f..7d11d94e0 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/provisioning/ProvisioningHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/provisioning/ProvisioningHelper.java @@ -56,7 +56,7 @@ public class ProvisioningHelper { String provisioningEntryCreateJson = new Gson().toJson(map); return provisioningEntryCreateJson; } - + public final static String createProvisioningEntryJsonWithJournalsEnabled() { final HashMap map = new HashMap<>(); map.put("createjournalentries", Boolean.TRUE); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/provisioning/ProvisioningTransactionHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/provisioning/ProvisioningTransactionHelper.java index 5e7bddb3d..4baed876f 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/provisioning/ProvisioningTransactionHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/provisioning/ProvisioningTransactionHelper.java @@ -30,63 +30,63 @@ import com.jayway.restassured.specification.ResponseSpecification; public class ProvisioningTransactionHelper { private static final String PROVISIONING_CATEGORY_URL = "/fineract-provider/api/v1/provisioningcategory?" + Utils.TENANT_IDENTIFIER ; - + private static final String CREATE_PROVISIONING_CRITERIA_URL = "/fineract-provider/api/v1/provisioningcriteria?" + Utils.TENANT_IDENTIFIER; private static final String CREATE_PROVISIONING_ENTRY_URL = "/fineract-provider/api/v1/provisioningentries?" + Utils.TENANT_IDENTIFIER; - + private final RequestSpecification requestSpec; private final ResponseSpecification responseSpec; - + public ProvisioningTransactionHelper(RequestSpecification requestSpec, ResponseSpecification responeSpec) { this.requestSpec = requestSpec ; this.responseSpec = responeSpec ; } - + public ArrayList retrieveAllProvisioningCategories() { return Utils.performServerGet(requestSpec, responseSpec, PROVISIONING_CATEGORY_URL, ""); } - + public Integer createProvisioningCriteria(final String provsioningCriteriaJson) { return Utils.performServerPost(this.requestSpec, this.responseSpec, CREATE_PROVISIONING_CRITERIA_URL, provsioningCriteriaJson, "resourceId"); } - + public Map retrieveProvisioningCriteria(final Integer criteriaId) { String url = "/fineract-provider/api/v1/provisioningcriteria/"+criteriaId+"?"+Utils.TENANT_IDENTIFIER ; return Utils.performServerGet(requestSpec, responseSpec, url, ""); } - + public Integer updateProvisioningCriteria(final Integer criteriaId, final String provsioningCriteriaJson) { String url = "/fineract-provider/api/v1/provisioningcriteria/"+criteriaId+"?"+Utils.TENANT_IDENTIFIER ; return Utils.performServerPut(this.requestSpec, this.responseSpec, url, provsioningCriteriaJson, "resourceId"); } - + public Integer deleteProvisioningCriteria(final Integer criteriaId) { String url = "/fineract-provider/api/v1/provisioningcriteria/"+criteriaId+"?"+Utils.TENANT_IDENTIFIER; return Utils.performServerDelete(this.requestSpec, this.responseSpec, url, "resourceId"); } - + public Integer createProvisioningEntries(final String provsioningCriteriaJson) { return Utils.performServerPost(this.requestSpec, this.responseSpec, CREATE_PROVISIONING_ENTRY_URL, provsioningCriteriaJson, "resourceId"); } - + public Integer updateProvisioningEntry(final String command, final Integer entryId, String jsonBody) { String url = "/fineract-provider/api/v1/provisioningentries/" + entryId + "?command=" + command + "&" + Utils.TENANT_IDENTIFIER; return Utils.performServerPost(requestSpec, responseSpec, url, jsonBody, "resourceId") ; } - + public Map retrieveProvisioningEntry(final Integer provisioningEntry) { String url = "/fineract-provider/api/v1/provisioningentries/"+provisioningEntry+"?"+Utils.TENANT_IDENTIFIER; ; return Utils.performServerGet(requestSpec, responseSpec, url, "") ; } - + public Map retrieveProvisioningEntries(final Integer provisioningEntry) { String url = "/fineract-provider/api/v1/provisioningentries/entries?entryId="+provisioningEntry+"&"+Utils.TENANT_IDENTIFIER; ; return Utils.performServerGet(requestSpec, responseSpec, url, "") ; } - + public Map retrieveAllProvisioningEntries() { String url = "/fineract-provider/api/v1/provisioningentries?dateFormat=dd MMMM yyyy"+"&"+"locale=en"+"&"+Utils.TENANT_IDENTIFIER; ; return Utils.performServerGet(requestSpec, responseSpec, url, "") ; } - + } diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/recurringdeposit/RecurringDepositAccountHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/recurringdeposit/RecurringDepositAccountHelper.java index d556cd873..905b42424 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/recurringdeposit/RecurringDepositAccountHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/recurringdeposit/RecurringDepositAccountHelper.java @@ -504,7 +504,7 @@ public class RecurringDepositAccountHelper { this.interestPostingPeriodType = interestPostingPeriodTypeId; return this; } - + public RecurringDepositAccountHelper withDepositPeriod(final String depositPeriod) { this.depositPeriod = depositPeriod; return this; diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/recurringdeposit/RecurringDepositAccountStatusChecker.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/recurringdeposit/RecurringDepositAccountStatusChecker.java index ae8a5a5e8..51bcf7794 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/recurringdeposit/RecurringDepositAccountStatusChecker.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/recurringdeposit/RecurringDepositAccountStatusChecker.java @@ -89,7 +89,7 @@ public class RecurringDepositAccountStatusChecker { getStatus(recurringDepositStatusHashMap, "prematureClosed")); System.out.println(recurringDepositStatusHashMap); } - + public static void verifyRecurringDepositAccountIsMatured(HashMap recurringDepositStatusHashMap) { System.out.println("--------------------- VERIFYING RECURRING DEPOSIT APPLICATION IS MATURED ---------------------"); assertTrue("ERROR IN MATURITY JOB OF THE RECURRING DEPOSIT ACCOUNT", getStatus(recurringDepositStatusHashMap, "matured")); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/recurringdeposit/RecurringDepositProductHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/recurringdeposit/RecurringDepositProductHelper.java index 9114d6bb6..d83c9396f 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/recurringdeposit/RecurringDepositProductHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/recurringdeposit/RecurringDepositProductHelper.java @@ -190,7 +190,7 @@ public class RecurringDepositProductHelper { this.chartSlabs = constructChartSlabWithAmountAndPeriodRange(); return this; } - + public RecurringDepositProductHelper withWithHoldTax(final String taxGroupId) { if (taxGroupId != null) { this.withHoldTax = true; diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/savings/AccountTransferHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/savings/AccountTransferHelper.java index f1928bfe4..c348b4f3e 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/savings/AccountTransferHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/savings/AccountTransferHelper.java @@ -84,7 +84,7 @@ public class AccountTransferHelper { return Utils.performServerPost(this.requestSpec, this.responseSpec, ACCOUNT_TRANSFER_URL + "?" + Utils.TENANT_IDENTIFIER, accountTransferJSON, "savingsId"); } - + public Integer refundLoanByTransfer(final String date, final Integer fromClientId, final Integer fromAccountId, final Integer toClientId, final Integer toAccountId, final String fromAccountType, final String toAccountType, final String transferAmount) { System.out.println("--------------------------------ACCOUNT TRANSFER--------------------------------"); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/savings/SavingsAccountHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/savings/SavingsAccountHelper.java index 647a178ce..a8cd3811c 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/savings/SavingsAccountHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/savings/SavingsAccountHelper.java @@ -59,7 +59,7 @@ public class SavingsAccountHelper { private static final String WITHDRAW_SAVINGS_COMMAND = "withdrawal"; private static final String MODIFY_TRASACTION_COMMAND = "modify"; private static final String UNDO_TRASACTION_COMMAND = "undo"; - + private static final String BLOCK_SAVINGS_COMMAND = "block"; private static final String UNBLOCK_SAVINGS_COMMAND = "unblock"; private static final String BLOCK_DEBITS_SAVINGS_COMMAND = "blockDebit"; @@ -246,7 +246,7 @@ public class SavingsAccountHelper { performSavingActions(createSavingsCalculateInterestURL(POST_INTEREST_SAVINGS_COMMAND, savingsId), getCalculatedInterestForSavingsApplicationAsJSON(), ""); } - + public void postInterestAsOnSavings(final Integer savingsId, final String today) { System.out.println("--------------------------------- POST INTEREST AS ON FOR SAVINGS --------------------------------"); performSavingActions(createSavingsPostInterestAsOnURL(POST_INTEREST_AS_ON_SAVINGS_COMMAND, savingsId), @@ -287,7 +287,7 @@ public class SavingsAccountHelper { return Utils.performServerDelete(this.requestSpec, this.responseSpec, SAVINGS_ACCOUNT_URL + "/" + savingsId + "/charges/" + chargeId + "?" + Utils.TENANT_IDENTIFIER, CommonConstants.RESPONSE_RESOURCE_ID); } - + public HashMap blockSavings(final Integer savingsID) { System.out.println("---------------------------------- BLOCKING SAVINGS ACCOUNT ----------------------------------"); Boolean isBlock = true; @@ -406,7 +406,7 @@ public class SavingsAccountHelper { System.out.println(savingsAccountCalculatedInterestJson); return savingsAccountCalculatedInterestJson; } - + private String getCalculatedInterestForSavingsApplicationAsJSON(final String today) { final HashMap map = new HashMap<>(); map.put("locale", CommonConstants.locale); @@ -451,11 +451,11 @@ public class SavingsAccountHelper { map.put("closedOnDate", closedOnDate); map.put("withdrawBalance", withdrawBalance); map.put("note", "Close Test"); - + String josn = new Gson().toJson(map); return josn; } - + private String getCloseAccountPostInterestJSON(String withdrawBalance, String closedOnDate) { final HashMap map = new HashMap<>(); map.put("locale", CommonConstants.locale); @@ -464,7 +464,7 @@ public class SavingsAccountHelper { map.put("withdrawBalance", withdrawBalance); map.put("note", "Close Test"); map.put("postInterestValidationOnClosure", "true"); - + String josn = new Gson().toJson(map); return josn; } @@ -485,7 +485,7 @@ public class SavingsAccountHelper { private String createSavingsCalculateInterestURL(final String command, final Integer savingsID) { return SAVINGS_ACCOUNT_URL + "/" + savingsID + "?command=" + command + "&" + Utils.TENANT_IDENTIFIER; } - + private String createSavingsPostInterestAsOnURL(final String command, final Integer savingsID) { return SAVINGS_ACCOUNT_URL + "/" + savingsID + "/transactions/" + "?command=" + command + "&" + Utils.TENANT_IDENTIFIER; } @@ -569,7 +569,7 @@ public class SavingsAccountHelper { return performSavingActions(createSavingsOperationURL(CLOSE_SAVINGS_COMMAND, savingsID), getCloseAccountJSON(withdrawBalance, closedOnDate), jsonAttributeToGetBack); } - + public Object closeSavingsAccountPostInterestAndGetBackRequiredField(final Integer savingsID, String withdrawBalance, final String jsonAttributeToGetBack, final String closedOnDate) { System.out.println("---------------------------------- CLOSE SAVINGS APPLICATION ----------------------------------"); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/savings/SavingsStatusChecker.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/savings/SavingsStatusChecker.java index afbee0eb5..dfaed2c92 100755 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/savings/SavingsStatusChecker.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/savings/SavingsStatusChecker.java @@ -29,7 +29,7 @@ import com.jayway.restassured.specification.ResponseSpecification; @SuppressWarnings("rawtypes") public class SavingsStatusChecker { - + private static final String SAVINGS_ACCOUNT_URL = "/fineract-provider/api/v1/savingsaccounts"; public static void verifySavingsIsApproved(final HashMap savingsStatusHashMap) { @@ -49,19 +49,19 @@ public class SavingsStatusChecker { assertTrue("ERROR IN ACTIVATING THE SAVINGS APPLICATION", getStatus(savingsStatusHashMap, "active")); System.out.println("Savings Application Status:" + savingsStatusHashMap + "\n"); } - + public static void verifySavingsIsRejected(final HashMap savingsStatusHashMap) { System.out.println("\n-------------------------------------- VERIFYING SAVINGS APPLICATION IS REJECTED ------------------------------------"); assertTrue("ERROR IN REJECTING THE SAVINGS APPLICATION", getStatus(savingsStatusHashMap, "rejected")); System.out.println("Savings Application Status:" + savingsStatusHashMap + "\n"); } - + public static void verifySavingsIsWithdrawn(final HashMap savingsStatusHashMap) { System.out.println("\n-------------------------------------- VERIFYING SAVINGS APPLICATION IS WITHDRAWN ------------------------------------"); assertTrue("ERROR IN WITHDRAW THE SAVINGS APPLICATION", getStatus(savingsStatusHashMap, "withdrawnByApplicant")); System.out.println("Savings Application Status:" + savingsStatusHashMap + "\n"); } - + public static void verifySavingsAccountIsClosed(final HashMap savingsStatusHashMap) { System.out.println("\n-------------------------------------- VERIFYING SAVINGS APPLICATION IS CLOSED ------------------------------------"); assertTrue("ERROR IN CLOSING THE SAVINGS APPLICATION", getStatus(savingsStatusHashMap, "closed")); @@ -95,13 +95,13 @@ public class SavingsStatusChecker { assertTrue("UNEXPECTED SAVINGS ACCOUNT SUB STATUS", getStatus(savingsStatusHashMap, "inactive")); System.out.println("Savings Application Sub Status:" + savingsStatusHashMap + "\n"); } - + public static void verifySavingsSubStatusDormant(HashMap savingsStatusHashMap) { System.out.println("\n-------------------------------------- VERIFYING SAVINGS APPLICATION IS ACTIVE ------------------------------------"); assertTrue("UNEXPECTED SAVINGS ACCOUNT SUB STATUS", getStatus(savingsStatusHashMap, "dormant")); System.out.println("Savings Application Sub Status:" + savingsStatusHashMap + "\n"); } - + public static void verifySavingsSubStatusEscheat(HashMap savingsStatusHashMap) { System.out.println("\n-------------------------------------- VERIFYING SAVINGS APPLICATION IS ACTIVE ------------------------------------"); assertTrue("UNEXPECTED SAVINGS ACCOUNT SUB STATUS", getStatus(savingsStatusHashMap, "escheat")); @@ -113,7 +113,7 @@ public class SavingsStatusChecker { assertTrue("UNEXPECTED SAVINGS ACCOUNT SUB STATUS", getStatus(savingsStatusHashMap, "none")); System.out.println("Savings Application Sub Status:" + savingsStatusHashMap + "\n"); } - + public static void verifySavingsSubStatusblock(HashMap savingsStatusHashMap) { System.out.println( "\n-------------------------------------- VERIFYING SAVINGS ACCOUNT IS BLOCKED ------------------------------------"); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/DividendsIntegrationTests.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/DividendsIntegrationTests.java index 5634dce7f..06e6088fa 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/DividendsIntegrationTests.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/DividendsIntegrationTests.java @@ -46,7 +46,7 @@ public class DividendsIntegrationTests { private final String[] dates = {"01 Jan 2015", "01 Apr 2015", "01 Oct 2015", "01 Dec 2015", "01 Mar 2016"} ; private final String[] shares = {"100", "200", "300", "100", "500"} ; - + private RequestSpecification requestSpec; private ResponseSpecification responseSpec; @@ -57,7 +57,7 @@ public class DividendsIntegrationTests { this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey()); this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build(); } - + @SuppressWarnings("unchecked") @Test public void testCreateDividends() { @@ -78,7 +78,7 @@ public class DividendsIntegrationTests { Assert.assertNotNull(shareAccountId); Map shareAccountData = ShareAccountTransactionHelper .retrieveShareAccount(shareAccountId, requestSpec, responseSpec); - Assert.assertNotNull(shareAccountData); + Assert.assertNotNull(shareAccountData); // Approve share Account Map approveMap = new HashMap<>(); approveMap.put("note", "Share Account Approval Note"); @@ -95,7 +95,7 @@ public class DividendsIntegrationTests { String activateJson = new Gson().toJson(activateMap); ShareAccountTransactionHelper.postCommand("activate", shareAccountId, activateJson, requestSpec, responseSpec); } - + Map dividendsMap = new HashMap<>() ; dividendsMap.put("dividendPeriodStartDate", "01 Jan 2015") ; dividendsMap.put("dividendPeriodEndDate", "01 Apr 2016") ; @@ -104,7 +104,7 @@ public class DividendsIntegrationTests { dividendsMap.put("locale", "en"); String createDividendsJson = new Gson().toJson(dividendsMap); final Integer dividendId = ShareDividendsTransactionHelper.createShareProductDividends(productId, createDividendsJson, requestSpec, responseSpec) ; - + Map productdividends = ShareDividendsTransactionHelper.retrieveAllDividends(productId, requestSpec, responseSpec); Assert.assertEquals("1", String.valueOf(productdividends.get("totalFilteredRecords"))); Map dividend = ((List>)productdividends.get("pageItems")).get(0) ; @@ -121,14 +121,14 @@ public class DividendsIntegrationTests { cal.set(enddateList.get(0), enddateList.get(1) - 1, enddateList.get(2)); Date endDate = cal.getTime(); Assert.assertEquals("01 Apr 2016", simple.format(endDate)); - - - + + + Map dividenddetails = ShareDividendsTransactionHelper.retrieveDividendDetails(productId, dividendId, requestSpec, responseSpec) ; Assert.assertEquals("5", String.valueOf(dividenddetails.get("totalFilteredRecords"))); List> pageItems = (List>)dividenddetails.get("pageItems") ; for(Map dividendData: pageItems) { - Map accountData = (Map) dividendData.get("accountData") ; + Map accountData = (Map) dividendData.get("accountData") ; String accountId = String.valueOf(accountData.get("id")) ; if(String.valueOf(shareAccounts.get(0)).equals(accountId)) { Assert.assertEquals("11320.755", String.valueOf(dividendData.get("amount"))); @@ -144,10 +144,10 @@ public class DividendsIntegrationTests { Map statusMap = (Map) dividendData.get("status") ; Assert.assertEquals("shareAccountDividendStatusType.initiated", String.valueOf(statusMap.get("code"))) ; } - + String jsonString = "" ; ShareDividendsTransactionHelper.postCommand("approve", productId, dividendId, jsonString, requestSpec, responseSpec) ; - + productdividends = ShareDividendsTransactionHelper.retrieveAllDividends(productId, requestSpec, responseSpec); Assert.assertEquals("1", String.valueOf(productdividends.get("totalFilteredRecords"))); dividend = ((List>)productdividends.get("pageItems")).get(0) ; @@ -164,12 +164,12 @@ public class DividendsIntegrationTests { cal.set(enddateList.get(0), enddateList.get(1) - 1, enddateList.get(2)); endDate = cal.getTime(); Assert.assertEquals("01 Apr 2016", simple.format(endDate)); - + dividenddetails = ShareDividendsTransactionHelper.retrieveDividendDetails(productId, dividendId, requestSpec, responseSpec) ; Assert.assertEquals("5", String.valueOf(dividenddetails.get("totalFilteredRecords"))); pageItems = (List>)dividenddetails.get("pageItems") ; for(Map dividendData: pageItems) { - Map accountData = (Map) dividendData.get("accountData") ; + Map accountData = (Map) dividendData.get("accountData") ; String accountId = String.valueOf(accountData.get("id")) ; if(String.valueOf(shareAccounts.get(0)).equals(accountId)) { Assert.assertEquals("11320.755", String.valueOf(dividendData.get("amount"))); @@ -185,14 +185,14 @@ public class DividendsIntegrationTests { Map statusMap = (Map) dividendData.get("status") ; Assert.assertEquals("shareAccountDividendStatusType.initiated", String.valueOf(statusMap.get("code"))) ; } - + } - + private Integer createShareProduct() { String shareProductJson = new ShareProductHelper().build(); return ShareProductTransactionHelper.createShareProduct(shareProductJson, requestSpec, responseSpec); } - + private Integer createShareAccount(final Integer clientId, final Integer productId, final Integer savingsAccountId, String applicationDate, String requestedShares) { String josn = new ShareAccountHelper().withClientId(String.valueOf(clientId)).withProductId(String.valueOf(productId)) diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareAccountHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareAccountHelper.java index 99846568b..d39839ca5 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareAccountHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareAccountHelper.java @@ -29,113 +29,113 @@ import com.google.gson.Gson; public class ShareAccountHelper { private static final String LOCALE = "en_GB"; - + private String clientId ; - + private String productId ; - + private String submittedDate ; - + private String externalId ; - + private String savingsAccountId ; - + private String requestedShares ; - + private String applicationDate ; - + private String allowDividendCalculationForInactiveClients ; - + private String minimumActivePeriod ; - + private String minimumActivePeriodFrequencyType ; - + private String lockinPeriodFrequency ; - + private String lockinPeriodFrequencyType ; - + private List> charges = null ; //chargeId , amount - + public String build() { final HashMap map = new HashMap<>(); map.put("locale", LOCALE); if(this.clientId != null) { - map.put("clientId", this.clientId) ; + map.put("clientId", this.clientId) ; } if(this.productId != null) { map.put("productId", this.productId) ; } map.put("dateFormat", "dd MMMM yyyy"); - + if(this.savingsAccountId != null) { map.put("savingsAccountId", savingsAccountId) ; } - + if(externalId != null) { map.put("externalId", this.externalId) ; } - + if(submittedDate != null) { map.put("submittedDate", this.submittedDate) ; } - + if(applicationDate != null) { map.put("applicationDate", this.applicationDate) ; } - + if(this.requestedShares != null) { map.put("requestedShares", this.requestedShares) ; } - + if(this.allowDividendCalculationForInactiveClients != null) { map.put("allowDividendCalculationForInactiveClients", this.allowDividendCalculationForInactiveClients) ; } - + if(this.charges != null) { map.put("charges", this.charges) ; } - + String shareAccountCreateJson = new Gson().toJson(map); System.out.println(shareAccountCreateJson); return shareAccountCreateJson; } - + public ShareAccountHelper withClientId(final String clientId) { this.clientId = clientId ; return this ; } - + public ShareAccountHelper withProductId(final String productId) { this.productId = productId ; return this ; } - + public ShareAccountHelper withSavingsAccountId(final String savingsAccountId) { this.savingsAccountId = savingsAccountId ; return this ; } - + public ShareAccountHelper withSubmittedDate(final String submittedDate) { this.submittedDate = submittedDate ; return this ; } - + public ShareAccountHelper withRequestedShares(final String requestedShares) { this.requestedShares = requestedShares ; return this ; } - + public ShareAccountHelper withApplicationDate(final String applicationDate) { this.applicationDate = applicationDate ; return this ; } - + public ShareAccountHelper withExternalId(final String externalId) { this.externalId = externalId ; return this ; } - + public ShareAccountHelper withCharges(final List> charges) { this.charges = new ArrayList<>() ; this.charges.addAll(charges) ; diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareAccountIntegrationTests.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareAccountIntegrationTests.java index 2a938fe85..676b36426 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareAccountIntegrationTests.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareAccountIntegrationTests.java @@ -156,7 +156,7 @@ public class ShareAccountIntegrationTests { Map shareAccountData = ShareAccountTransactionHelper .retrieveShareAccount(shareAccountId, requestSpec, responseSpec); Assert.assertNotNull(shareAccountData); - + // Approve share Account Map approveMap = new HashMap<>(); approveMap.put("note", "Share Account Approval Note"); @@ -205,7 +205,7 @@ public class ShareAccountIntegrationTests { Assert.assertEquals("25", String.valueOf(summaryMap.get("totalApprovedShares"))); Assert.assertEquals("0", String.valueOf(summaryMap.get("totalPendingForApprovalShares"))); } - + @Test @SuppressWarnings("unchecked") public void rejectShareAccount() { @@ -231,7 +231,7 @@ public class ShareAccountIntegrationTests { Map shareAccountData = ShareAccountTransactionHelper .retrieveShareAccount(shareAccountId, requestSpec, responseSpec); Assert.assertNotNull(shareAccountData); - + // Reject share Account Map rejectMap = new HashMap<>(); rejectMap.put("note", "Share Account Rejection Note"); @@ -249,7 +249,7 @@ public class ShareAccountIntegrationTests { Date rejectedDate = cal.getTime(); Date currentTenantDate = DateUtils.getDateOfTenant() ; Assert.assertEquals(simple.format(currentTenantDate), simple.format(rejectedDate)); - + List> transactions = (List>) shareAccountData.get("purchasedShares"); Assert.assertNotNull(transactions); Assert.assertEquals(2, transactions.size()); @@ -280,7 +280,7 @@ public class ShareAccountIntegrationTests { Assert.assertEquals("0", String.valueOf(summaryMap.get("totalApprovedShares"))); Assert.assertEquals("0", String.valueOf(summaryMap.get("totalPendingForApprovalShares"))); } - + @Test @SuppressWarnings("unchecked") public void testShareAccountUndoApproval() { @@ -307,7 +307,7 @@ public class ShareAccountIntegrationTests { Map shareAccountData = ShareAccountTransactionHelper .retrieveShareAccount(shareAccountId, requestSpec, responseSpec); Assert.assertNotNull(shareAccountData); - + // Approve share Account Map approveMap = new HashMap<>(); approveMap.put("note", "Share Account Approval Note"); @@ -326,18 +326,18 @@ public class ShareAccountIntegrationTests { cal.set(dateList.get(0), dateList.get(1) - 1, dateList.get(2)); Date approvedDate = cal.getTime(); Assert.assertEquals("01 Jan 2016", simple.format(approvedDate)); - + // Undo Approval share Account Map undoApprovalMap = new HashMap<>(); String undoApprovalJson = new Gson().toJson(undoApprovalMap); ShareAccountTransactionHelper.postCommand("undoapproval", shareAccountId, undoApprovalJson, requestSpec, responseSpec); - + shareAccountData = ShareAccountTransactionHelper .retrieveShareAccount(shareAccountId, requestSpec, responseSpec); - + statusMap = (Map) shareAccountData.get("status"); Assert.assertEquals("shareAccountStatusType.submitted.and.pending.approval", String.valueOf(statusMap.get("code"))); - + List> transactions = (List>) shareAccountData.get("purchasedShares"); Assert.assertNotNull(transactions); Assert.assertEquals(2, transactions.size()); @@ -368,7 +368,7 @@ public class ShareAccountIntegrationTests { Assert.assertEquals("0", String.valueOf(summaryMap.get("totalApprovedShares"))); Assert.assertEquals("25", String.valueOf(summaryMap.get("totalPendingForApprovalShares"))); } - + @SuppressWarnings("unchecked") @Test public void testCreateShareAccountWithCharges() { @@ -453,7 +453,7 @@ public class ShareAccountIntegrationTests { Assert.fail("Other Charge defintion found"); } } - + // Approve share Account Map approveMap = new HashMap<>(); approveMap.put("note", "Share Account Approval Note"); @@ -495,7 +495,7 @@ public class ShareAccountIntegrationTests { Assert.fail("Other Charge defintion found"); } } - + Map activateMap = new HashMap<>(); activateMap.put("dateFormat", "dd MMMM yyyy"); activateMap.put("activatedDate", "01 Jan 2016"); @@ -560,7 +560,7 @@ public class ShareAccountIntegrationTests { Assert.fail("Other Charge defintion found"); } } - + Map summaryMap = (Map) shareAccountData.get("summary"); Assert.assertEquals("30", String.valueOf(summaryMap.get("totalApprovedShares"))); Assert.assertEquals("0", String.valueOf(summaryMap.get("totalPendingForApprovalShares"))); @@ -634,7 +634,7 @@ public class ShareAccountIntegrationTests { Assert.fail("Other Charge defintion found"); } } - + summaryMap = (Map) shareAccountData.get("summary"); Assert.assertEquals("30", String.valueOf(summaryMap.get("totalApprovedShares"))); Assert.assertEquals("15", String.valueOf(summaryMap.get("totalPendingForApprovalShares"))); @@ -708,7 +708,7 @@ public class ShareAccountIntegrationTests { Assert.fail("Other Charge defintion found"); } } - + summaryMap = (Map) shareAccountData.get("summary"); Assert.assertEquals("45", String.valueOf(summaryMap.get("totalApprovedShares"))); Assert.assertEquals("0", String.valueOf(summaryMap.get("totalPendingForApprovalShares"))); @@ -770,7 +770,7 @@ public class ShareAccountIntegrationTests { Assert.fail("Other Charge defintion found"); } } - + summaryMap = (Map) shareAccountData.get("summary"); Assert.assertEquals("45", String.valueOf(summaryMap.get("totalApprovedShares"))); Assert.assertEquals("20", String.valueOf(summaryMap.get("totalPendingForApprovalShares"))); @@ -832,7 +832,7 @@ public class ShareAccountIntegrationTests { Assert.fail("Other Charge defintion found"); } } - + summaryMap = (Map) shareAccountData.get("summary"); Assert.assertEquals("45", String.valueOf(summaryMap.get("totalApprovedShares"))); Assert.assertEquals("0", String.valueOf(summaryMap.get("totalPendingForApprovalShares"))); @@ -912,7 +912,7 @@ public class ShareAccountIntegrationTests { summaryMap = (Map) shareAccountData.get("summary"); Assert.assertEquals("30", String.valueOf(summaryMap.get("totalApprovedShares"))); Assert.assertEquals("0", String.valueOf(summaryMap.get("totalPendingForApprovalShares"))); - + //Close Share Account Map closeAccountMap = new HashMap<>(); closeAccountMap.put("note", "Share Account Close Note"); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareDividendsTransactionHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareDividendsTransactionHelper.java index 19a1e268b..eadf9d7c4 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareDividendsTransactionHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareDividendsTransactionHelper.java @@ -31,25 +31,25 @@ public class ShareDividendsTransactionHelper { private static final String SHARE_PRODUCT_URL = "/fineract-provider/api/v1/shareproduct"; private static final String DIVIDEND = "dividend" ; - + public static Integer createShareProductDividends(final Integer productId, final String dividendJson, final RequestSpecification requestSpec, final ResponseSpecification responseSpec) { String url = SHARE_PRODUCT_URL + "/" + productId + "/" + DIVIDEND + "?" + Utils.TENANT_IDENTIFIER ; return Utils.performServerPost(requestSpec, responseSpec, url, dividendJson, "subResourceId"); } - + public static Integer postCommand(final String command, final Integer productId, final Integer dividendId, String jsonBody, final RequestSpecification requestSpec, final ResponseSpecification responseSpec) { String url = SHARE_PRODUCT_URL + "/" + productId + "/"+DIVIDEND + "/"+ dividendId + "?command=" + command + "&" + Utils.TENANT_IDENTIFIER; return Utils.performServerPut(requestSpec, responseSpec, url, jsonBody, "resourceId"); } - + public static Map retrieveDividendDetails(final Integer productId, final Integer dividendId, final RequestSpecification requestSpec, final ResponseSpecification responseSpec) { String url = SHARE_PRODUCT_URL + "/" + productId + "/"+DIVIDEND + "/"+ dividendId +"?" + Utils.TENANT_IDENTIFIER; return Utils.performServerGet(requestSpec, responseSpec, url, ""); } - + public static Map retrieveAllDividends(final Integer productId, final RequestSpecification requestSpec, final ResponseSpecification responseSpec) { String url = SHARE_PRODUCT_URL + "/" + productId + "/"+DIVIDEND +"?" + Utils.TENANT_IDENTIFIER; diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareProductHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareProductHelper.java index 15edb092c..0ccedfc7a 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareProductHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareProductHelper.java @@ -34,14 +34,14 @@ import java.util.Map; public class ShareProductHelper { - + private static final String NONE = "1"; private static final String CASH_BASED = "2"; private static final String LOCALE = "en_GB"; private static final String DIGITS_AFTER_DECIMAL = "4"; private static final String IN_MULTIPLES_OF = "0"; private static final String USD = "USD"; - + private String productName = Utils.randomNameGenerator("SHARE_PRODUCT_", 6); private String shortName = Utils.randomNameGenerator("", 4); private String description = Utils.randomNameGenerator("", 20); @@ -56,14 +56,14 @@ public class ShareProductHelper { private String lockinPeriodFrequency = "1"; private String lockinPeriodFrequencyType = "0"; private String accountingRule = NONE; - + String minimumActivePeriodForDividends = "1"; String minimumactiveperiodFrequencyType = "0"; - + private List> charges = null ; private List> marketPrices = null ; - - + + public String build() { final HashMap map = new HashMap<>(); map.put("name", this.productName); @@ -85,25 +85,25 @@ public class ShareProductHelper { map.put("minimumactiveperiodFrequencyType", this.minimumactiveperiodFrequencyType) ; map.put("lockinPeriodFrequency", this.lockinPeriodFrequency) ; map.put("lockinPeriodFrequencyType", this.lockinPeriodFrequencyType) ; - + if(charges != null) { map.put("chargesSelected", charges) ; } - + if(marketPrices != null) { map.put("marketPricePeriods", marketPrices) ; } - + String shareProductCreateJson = new Gson().toJson(map); System.out.println(shareProductCreateJson); return shareProductCreateJson; } - + public ShareProductHelper withCashBasedAccounting() { this.accountingRule = CASH_BASED ; return this ; } - + public ShareProductHelper withMarketPrice() { this.marketPrices = new ArrayList<>() ; LocalDate currentDate = DateUtils.getLocalDateOfTenant() ; @@ -118,7 +118,7 @@ public class ShareProductHelper { } return this ; } - + public ShareProductHelper withCharges(final ArrayList charges) { if(charges != null && !charges.isEmpty()) { this.charges = new ArrayList<>() ; @@ -137,62 +137,62 @@ public class ShareProductHelper { Assert.assertEquals(this.productName, productName); String shortName = (String)shareProductData.get("shortName") ; Assert.assertEquals(this.shortName, shortName); - + String description = (String)shareProductData.get("description") ; Assert.assertEquals(this.description, description); - + Map currency = (Map)shareProductData.get("currency") ; String currencyCode = currency.get("code") ; Assert.assertEquals(this.currencyCode, currencyCode); - + String digitsAfterDecimal = String.valueOf(currency.get("decimalPlaces")) ; Assert.assertEquals(DIGITS_AFTER_DECIMAL, digitsAfterDecimal); - + String inMultiplesOf = String.valueOf(currency.get("inMultiplesOf")) ; Assert.assertEquals(IN_MULTIPLES_OF, inMultiplesOf); - + String totalShares = String.valueOf(shareProductData.get("totalShares")) ; Assert.assertEquals(this.totalShares, totalShares); - + String sharesIssued = String.valueOf(shareProductData.get("totalSharesIssued")) ; Assert.assertEquals(this.sharesIssued, sharesIssued); - + String unitPrice = String.valueOf(shareProductData.get("unitPrice")) ; Assert.assertEquals(this.unitPrice, unitPrice); - + String minimumShares = String.valueOf(shareProductData.get("minimumShares")) ; Assert.assertEquals(this.minimumShares, minimumShares); - + String nominalShares = String.valueOf(shareProductData.get("nominalShares")) ; Assert.assertEquals(this.nominalShares, nominalShares); - + String maximumShares = String.valueOf(shareProductData.get("maximumShares")) ; Assert.assertEquals(this.maximumShares, maximumShares); - + String allowDividendCalculationForInactiveClients = String.valueOf(shareProductData.get("allowDividendCalculationForInactiveClients")) ; Assert.assertEquals(this.allowDividendCalculationForInactiveClients, allowDividendCalculationForInactiveClients); - + Map accountingRuleMap = (Map) shareProductData.get("accountingRule") ; String accountingRule = String.valueOf(accountingRuleMap.get("id")) ; Assert.assertEquals(this.accountingRule, accountingRule); - + String minimumActivePeriodForDividends = String.valueOf(shareProductData.get("minimumActivePeriod")) ; Assert.assertEquals(this.minimumActivePeriodForDividends, minimumActivePeriodForDividends); - + Map minimumActivePeriodType = (Map) shareProductData.get("minimumActivePeriodForDividendsTypeEnum") ; String minimumactiveperiodFrequencyType = String.valueOf(minimumActivePeriodType.get("id")) ; Assert.assertEquals(this.minimumactiveperiodFrequencyType, minimumactiveperiodFrequencyType); - + String lockinPeriodFrequency = String.valueOf(shareProductData.get("lockinPeriod")) ; Assert.assertEquals(this.lockinPeriodFrequency, lockinPeriodFrequency); - + Map lockinPeriodType = (Map) shareProductData.get("lockPeriodTypeEnum") ; String lockinPeriodFrequencyType = String.valueOf(lockinPeriodType.get("id")) ; Assert.assertEquals(this.lockinPeriodFrequencyType, lockinPeriodFrequencyType); - + //ArrayList> charges = (ArrayList>)shareProductData.get("chargesSelected") ; - + // ArrayList> marketPrices = (ArrayList>)shareProductData.get("marketPricePeriods") ; - + } } diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareProductTransactionHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareProductTransactionHelper.java index 2c8588fa1..4f425767c 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareProductTransactionHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/shares/ShareProductTransactionHelper.java @@ -30,18 +30,18 @@ public class ShareProductTransactionHelper { private static final String SHARE_PRODUCT_URL = "/fineract-provider/api/v1/products/share"; private static final String CREATE_SHARE_PRODUCT_URL = SHARE_PRODUCT_URL + "?" + Utils.TENANT_IDENTIFIER; - + public static Integer createShareProduct(final String savingsProductJSON, final RequestSpecification requestSpec, final ResponseSpecification responseSpec) { return Utils.performServerPost(requestSpec, responseSpec, CREATE_SHARE_PRODUCT_URL, savingsProductJSON, "resourceId"); } - + public static Map retrieveShareProduct(final Integer shareProductId, final RequestSpecification requestSpec, final ResponseSpecification responseSpec) { String url = SHARE_PRODUCT_URL+"/"+shareProductId+"?"+Utils.TENANT_IDENTIFIER ; return Utils.performServerGet(requestSpec, responseSpec, url, ""); } - + public static Integer updateShareProduct(final Integer shareProductId, final String provsioningCriteriaJson, final RequestSpecification requestSpec, final ResponseSpecification responseSpec) { diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/system/AccountNumberPreferencesHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/system/AccountNumberPreferencesHelper.java index 0a950237a..0efe77f05 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/system/AccountNumberPreferencesHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/system/AccountNumberPreferencesHelper.java @@ -84,7 +84,7 @@ public class AccountNumberPreferencesHelper { requestJSON, jsonAttributeToGetBack); } - + public Object createGroupsAccountNumberPreference( ResponseSpecification responseSpec, String jsonAttributeToGetBack) { System.out @@ -99,7 +99,7 @@ public class AccountNumberPreferencesHelper { requestJSON, jsonAttributeToGetBack); } - + public Object createCenterAccountNumberPreference( ResponseSpecification responseSpec, String jsonAttributeToGetBack) { System.out @@ -200,13 +200,13 @@ public class AccountNumberPreferencesHelper { + Utils.TENANT_IDENTIFIER; Utils.performServerGet(requestSpec, responseSpec, savingsURL, "id"); - + final String groupsURL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/" + groupsAccountNumberPreferenceId + "?" + Utils.TENANT_IDENTIFIER; Utils.performServerGet(requestSpec, responseSpec, groupsURL, "id"); - + final String centerURL = ACCOUNT_NUMBER_FORMATS_REQUEST_URL + "/" + centerAccountNumberPreferenceId + "?" + Utils.TENANT_IDENTIFIER; diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/system/AccountNumberPreferencesTestBuilder.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/system/AccountNumberPreferencesTestBuilder.java index d10deddef..6d499a517 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/system/AccountNumberPreferencesTestBuilder.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/system/AccountNumberPreferencesTestBuilder.java @@ -57,7 +57,7 @@ public class AccountNumberPreferencesTestBuilder { return new Gson().toJson(map); } - + public String groupsBuild() { final HashMap map = new HashMap<>(); map.put("accountType", groupsAccountType); @@ -73,7 +73,7 @@ public class AccountNumberPreferencesTestBuilder { return new Gson().toJson(map); } - + public String invalidDataBuild(String accountType, String prefixType) { final HashMap map = new HashMap<>(); map.put("accountType", accountType); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/system/CodeHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/system/CodeHelper.java index f6319a4f4..6fe58d7f9 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/system/CodeHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/system/CodeHelper.java @@ -107,7 +107,7 @@ public class CodeHelper { codeValueId = (Integer) CodeHelper.createCodeValue(requestSpec, responseSpec, codeId, codeValue, codeValuePosition, "subResourceId"); - + } else { return codeValuesList.get(0); } @@ -115,7 +115,7 @@ public class CodeHelper { CODE_VALUE_URL.replace("[codeId]", codeId.toString()) + "/" + codeValueId.toString() + "?" + Utils.TENANT_IDENTIFIER, ""); - + } public static ArrayList> getAllCodes( @@ -201,7 +201,7 @@ public class CodeHelper { return Utils.performServerGet(requestSpec, responseSpec, CODE_VALUE_URL.replace("[codeId]", codeId.toString()) + "?" + Utils.TENANT_IDENTIFIER, jsonAttributeToGetback); - + } public static Object getCodeValueById( diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/loanaccount/guarantor/GuarantorTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/loanaccount/guarantor/GuarantorTest.java index eeeaf58d3..b07079165 100755 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/loanaccount/guarantor/GuarantorTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/loanaccount/guarantor/GuarantorTest.java @@ -504,7 +504,7 @@ public class GuarantorTest { Float externalBalance = new Float(10000); Float selfguarantee = new Float(6000); Float externalguarantee = new Float(7000); - + final Integer selfSavigsId = SavingsAccountHelper.openSavingsAccount(this.requestSpec, this.responseSpec, clientID, String.valueOf(selfBalance)); final Integer externalSavigsId_1 = SavingsAccountHelper.openSavingsAccount(this.requestSpec, this.responseSpec, clientID_external, @@ -562,7 +562,7 @@ public class GuarantorTest { } - + @SuppressWarnings({ "rawtypes", "unchecked" }) @Test public void testGuarantor_WRITE_OFF_LOAN() { diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/loanaccount/guarantor/GuarantorTestBuilder.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/loanaccount/guarantor/GuarantorTestBuilder.java index ea62f71f6..30144ed67 100755 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/loanaccount/guarantor/GuarantorTestBuilder.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/loanaccount/guarantor/GuarantorTestBuilder.java @@ -79,7 +79,7 @@ public class GuarantorTestBuilder { this.guarantorTypeId = GUARANTOR_TYPE_CUSTOMER; return this; } - + public GuarantorTestBuilder externalCustomer() { this.guarantorTypeId = GUARANTOR_TYPE_EXTERNAL; return this; diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsDecliningBalanceHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsDecliningBalanceHelper.java index 46be99096..30cdcd392 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsDecliningBalanceHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsDecliningBalanceHelper.java @@ -51,7 +51,7 @@ public class VariableInstallmentsDecliningBalanceHelper { .withAccounting(accountingRule, accounts).build(null); return loanProductJSON ; } - + public static String createLoanProductWithVaribleConfig(final boolean multiDisburseLoan, final String accountingRule, final Account... accounts) { System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------"); final String loanProductJSON = new LoanProductTestBuilder() // @@ -69,7 +69,7 @@ public class VariableInstallmentsDecliningBalanceHelper { .withAccounting(accountingRule, accounts).build(null); return loanProductJSON ; } - + public static String createLoanProductWithVaribleConfigwithEqualPrincipal(final boolean multiDisburseLoan, final String accountingRule, final Account... accounts) { System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------"); final String loanProductJSON = new LoanProductTestBuilder() // @@ -87,7 +87,7 @@ public class VariableInstallmentsDecliningBalanceHelper { .withAccounting(accountingRule, accounts).build(null); return loanProductJSON ; } - + public static String applyForLoanApplication(final Integer clientID, final Integer loanProductID, List charges, final String savingsId, String principal) { System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------"); @@ -107,7 +107,7 @@ public class VariableInstallmentsDecliningBalanceHelper { .withCharges(charges).build(clientID.toString(), loanProductID.toString(), savingsId); return loanApplicationJSON ; } - + public static String applyForLoanApplicationWithEqualPrincipal(final Integer clientID, final Integer loanProductID, List charges, final String savingsId, String principal) { System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------"); @@ -127,7 +127,7 @@ public class VariableInstallmentsDecliningBalanceHelper { .withCharges(charges).build(clientID.toString(), loanProductID.toString(), savingsId); return loanApplicationJSON ; } - + public static String createDeleteVariations(ArrayList deletedInstallments) { Map toReturn = new HashMap<>(); toReturn.put("locale", "en"); @@ -180,7 +180,7 @@ public class VariableInstallmentsDecliningBalanceHelper { String json = new Gson().toJson(toReturn); return json; } - + private static ArrayList createNewInstallments(String date) { ArrayList toReturn = new ArrayList<>(); Map tosend = new HashMap(); @@ -189,7 +189,7 @@ public class VariableInstallmentsDecliningBalanceHelper { toReturn.add(tosend); return toReturn; } - + private static ArrayList createModifyMap(Map firstSchedule) { ArrayList toReturn = new ArrayList<>(); ArrayList dueDate = (ArrayList) firstSchedule.get("dueDate"); @@ -199,7 +199,7 @@ public class VariableInstallmentsDecliningBalanceHelper { toReturn.add(tosend); return toReturn; } - + public static String createAllVariations() { Map toReturn = new HashMap<>(); toReturn.put("locale", "en"); @@ -212,7 +212,7 @@ public class VariableInstallmentsDecliningBalanceHelper { String json = new Gson().toJson(toReturn); return json; } - + public static String createAllVariationsWithEqualPrincipal() { Map toReturn = new HashMap<>(); toReturn.put("locale", "en"); @@ -225,7 +225,7 @@ public class VariableInstallmentsDecliningBalanceHelper { String json = new Gson().toJson(toReturn); return json; } - + private static ArrayList createNewInstallmentsWithPrincipal(String date) { ArrayList toReturn = new ArrayList<>(); Map tosend = new HashMap(); @@ -234,7 +234,7 @@ public class VariableInstallmentsDecliningBalanceHelper { toReturn.add(tosend); return toReturn; } - + private static ArrayList createModifyMapWithPrinciapl(String date) { ArrayList toReturn = new ArrayList<>(); Map tosend = new HashMap(); @@ -250,7 +250,7 @@ public class VariableInstallmentsDecliningBalanceHelper { toReturn.add(tosend); return toReturn; } - + private static ArrayList createModifyMap(String date) { ArrayList toReturn = new ArrayList<>(); Map tosend = new HashMap(); @@ -259,7 +259,7 @@ public class VariableInstallmentsDecliningBalanceHelper { toReturn.add(tosend); return toReturn; } - + public static String createModifiyDateVariations(String[] date, String[] newdate, String[] principal) { Map toReturn = new HashMap<>(); toReturn.put("locale", "en"); @@ -270,7 +270,7 @@ public class VariableInstallmentsDecliningBalanceHelper { String json = new Gson().toJson(toReturn); return json; } - + private static ArrayList createDateModifyMap(String[] date, String[] newdate, String[] installments) { ArrayList toReturn = new ArrayList<>(); for(int i = 0 ; i < date.length; i++) { @@ -280,7 +280,7 @@ public class VariableInstallmentsDecliningBalanceHelper { if(i < installments.length) { tosend.put("installmentAmount", installments[i]) ; } - toReturn.add(tosend); + toReturn.add(tosend); } return toReturn; } diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsFlatHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsFlatHelper.java index 6385879eb..1190a4a43 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsFlatHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsFlatHelper.java @@ -44,7 +44,7 @@ public class VariableInstallmentsFlatHelper { .withRepaymentAfterEvery("1") // .withRepaymentTypeAsMonth() // .withinterestRatePerPeriod("1") // - .withAmortizationTypeAsEqualPrincipalPayment() + .withAmortizationTypeAsEqualPrincipalPayment() .withInterestTypeAsFlat() // .withTranches(multiDisburseLoan) // .withInterestCalculationPeriodTypeAsRepaymentPeriod(true)// @@ -52,9 +52,9 @@ public class VariableInstallmentsFlatHelper { .withAccounting(accountingRule, accounts).build(null); return loanProductJSON ; } - - - + + + public static String applyForLoanApplication(final Integer clientID, final Integer loanProductID, List charges, final String savingsId, String principal) { System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------"); @@ -74,7 +74,7 @@ public class VariableInstallmentsFlatHelper { .withCharges(charges).build(clientID.toString(), loanProductID.toString(), savingsId); return loanApplicationJSON ; } - + public static String createDeleteVariations(ArrayList deletedInstallments) { Map toReturn = new HashMap<>(); toReturn.put("locale", "en"); @@ -127,7 +127,7 @@ public class VariableInstallmentsFlatHelper { String json = new Gson().toJson(toReturn); return json; } - + private static ArrayList createNewInstallments(String date) { ArrayList toReturn = new ArrayList<>(); Map tosend = new HashMap(); @@ -136,7 +136,7 @@ public class VariableInstallmentsFlatHelper { toReturn.add(tosend); return toReturn; } - + public static String createModifiyDateVariations(String[] date, String[] newdate, String[] principal) { Map toReturn = new HashMap<>(); toReturn.put("locale", "en"); @@ -147,7 +147,7 @@ public class VariableInstallmentsFlatHelper { String json = new Gson().toJson(toReturn); return json; } - + private static ArrayList createDateModifyMap(String[] date, String[] newdate, String[] principal) { ArrayList toReturn = new ArrayList<>(); for(int i = 0 ; i < date.length; i++) { @@ -157,12 +157,12 @@ public class VariableInstallmentsFlatHelper { if(i < principal.length) { tosend.put("principal", principal[i]) ; } - toReturn.add(tosend); + toReturn.add(tosend); } return toReturn; } - - + + private static ArrayList createModifyMap(Map firstSchedule) { ArrayList toReturn = new ArrayList<>(); ArrayList dueDate = (ArrayList) firstSchedule.get("dueDate"); @@ -172,7 +172,7 @@ public class VariableInstallmentsFlatHelper { toReturn.add(tosend); return toReturn; } - + public static String createAllVariations() { Map toReturn = new HashMap<>(); toReturn.put("locale", "en"); @@ -185,7 +185,7 @@ public class VariableInstallmentsFlatHelper { String json = new Gson().toJson(toReturn); return json; } - + private static ArrayList createDeletedMap(String date) { ArrayList toReturn = new ArrayList<>(); Map tosend = new HashMap(); @@ -193,7 +193,7 @@ public class VariableInstallmentsFlatHelper { toReturn.add(tosend); return toReturn; } - + private static ArrayList createModifyMap(String date) { ArrayList toReturn = new ArrayList<>(); Map tosend = new HashMap(); @@ -202,7 +202,7 @@ public class VariableInstallmentsFlatHelper { toReturn.add(tosend); return toReturn; } - + public static String formatDate(ArrayList list) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, (int) list.get(0)); diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsIntegrationTest.java index 3c93c5240..35d4561b4 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsIntegrationTest.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsIntegrationTest.java @@ -39,12 +39,12 @@ import com.jayway.restassured.specification.ResponseSpecification; @SuppressWarnings({"rawtypes", "unchecked"}) public class VariableInstallmentsIntegrationTest { - + private static final String NONE = "1"; private RequestSpecification requestSpec; private ResponseSpecification responseSpec; private LoanTransactionHelper loanTransactionHelper; - + @Before public void setup() { Utils.initializeRESTAssured(); @@ -53,7 +53,7 @@ public class VariableInstallmentsIntegrationTest { this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build(); this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec); } - + @Test public void testVariableLoanProductCreation() { final String json = VariableInstallmentsDecliningBalanceHelper.createLoanProductWithVaribleConfig(false, NONE); @@ -64,8 +64,8 @@ public class VariableInstallmentsIntegrationTest { Assert.assertEquals(new Integer(5), loanProduct.get("minimumGap")) ; Assert.assertEquals(new Integer(90), loanProduct.get("maximumGap")) ; } - - + + @Test public void testLoanProductCreation() { final String josn = VariableInstallmentsDecliningBalanceHelper.createLoanProductWithoutVaribleConfig(false, NONE); @@ -74,7 +74,7 @@ public class VariableInstallmentsIntegrationTest { Map loanProduct = (Map)loanTransactionHelper.getLoanProductDetail(requestSpec, responseSpec, loanProductID, "") ; Assert.assertTrue(!(Boolean)loanProduct.get("allowVariableInstallments")) ; } - + @Test public void testDeleteInstallmentsWithDecliningBalanceEqualInstallments() { VariableIntallmentsTransactionHelper transactionHelper = new VariableIntallmentsTransactionHelper(requestSpec, responseSpec) ; @@ -95,7 +95,7 @@ public class VariableInstallmentsIntegrationTest { String toDeletedata = VariableInstallmentsDecliningBalanceHelper.createDeleteVariations(toDelete) ; HashMap modifiedReschdule = transactionHelper.validateVariations(toDeletedata, loanID) ; ArrayList newperiods = (ArrayList) modifiedReschdule.get("periods") ; - ArrayList toVerifyData = VariableInstallmentsDecliningBalanceHelper.constructVerifyData(new String[] {"20 November 2011", "20 December 2011", "20 January 2012"}, + ArrayList toVerifyData = VariableInstallmentsDecliningBalanceHelper.constructVerifyData(new String[] {"20 November 2011", "20 December 2011", "20 January 2012"}, new String[] {"34675.47", "34675.47", "36756.26"}) ; assertAfterSubmit(newperiods, toVerifyData) ; transactionHelper.submitVariations(toDeletedata, loanID) ; @@ -104,7 +104,7 @@ public class VariableInstallmentsIntegrationTest { periods = (ArrayList)repaymentSchedule.get("periods") ; periods.remove(0) ; //Repayments Schedule includes disbursement also. So remove this. assertAfterSubmit(periods, toVerifyData) ; - + } private void assertAfterSubmit(ArrayList serverData, ArrayList expectedData) { Assert.assertTrue(serverData.size() == expectedData.size()) ; @@ -115,7 +115,7 @@ public class VariableInstallmentsIntegrationTest { Assert.assertTrue(serverMap.get("totalOutstandingForPeriod").toString().equals(expectedMap.get("installmentAmount"))) ; } } - + @Test public void testAddInstallmentsWithDecliningBalanceEqualInstallments() { //31 October 2011 - 5000 @@ -136,7 +136,7 @@ public class VariableInstallmentsIntegrationTest { String addVariationsjsondata = VariableInstallmentsDecliningBalanceHelper.createAddVariations() ; HashMap modifiedReschdule = transactionHelper.validateVariations(addVariationsjsondata, loanID) ; ArrayList newperiods = (ArrayList) modifiedReschdule.get("periods") ; - ArrayList toVerifyData = VariableInstallmentsDecliningBalanceHelper.constructVerifyData(new String[] {"20 October 2011", "31 October 2011", "20 November 2011", "20 December 2011", "20 January 2012"}, + ArrayList toVerifyData = VariableInstallmentsDecliningBalanceHelper.constructVerifyData(new String[] {"20 October 2011", "31 October 2011", "20 November 2011", "20 December 2011", "20 January 2012"}, new String[] {"21215.84", "5000.0", "26477.31", "26477.31", "25947.7"}) ; assertAfterSubmit(newperiods, toVerifyData) ; transactionHelper.submitVariations(addVariationsjsondata, loanID) ; @@ -146,7 +146,7 @@ public class VariableInstallmentsIntegrationTest { periods.remove(0) ; //Repayments Schedule includes disbursement also. So remove this. assertAfterSubmit(periods, toVerifyData) ; } - + @Test public void testModifyInstallmentWithDecliningBalanceEqualInstallments() { //20 October 2011 - 30000 modify @@ -164,10 +164,10 @@ public class VariableInstallmentsIntegrationTest { Map list = transactionHelper.retrieveSchedule(loanID) ; Map repaymentSchedule = (Map)list.get("repaymentSchedule") ; ArrayList periods = (ArrayList)repaymentSchedule.get("periods") ; - String addVariationsjsondata = VariableInstallmentsDecliningBalanceHelper.createModifiyVariations((Map)periods.get(1)) ; //0th position will have disbursement + String addVariationsjsondata = VariableInstallmentsDecliningBalanceHelper.createModifiyVariations((Map)periods.get(1)) ; //0th position will have disbursement HashMap modifiedReschdule = transactionHelper.validateVariations(addVariationsjsondata, loanID) ; ArrayList newperiods = (ArrayList) modifiedReschdule.get("periods") ; - ArrayList toVerifyData = VariableInstallmentsDecliningBalanceHelper.constructVerifyData(new String[] {"20 October 2011", "20 November 2011", "20 December 2011", "20 January 2012"}, + ArrayList toVerifyData = VariableInstallmentsDecliningBalanceHelper.constructVerifyData(new String[] {"20 October 2011", "20 November 2011", "20 December 2011", "20 January 2012"}, new String[] {"30000.0", "24966.34", "24966.34", "24966.33"}) ; assertAfterSubmit(newperiods, toVerifyData) ; transactionHelper.submitVariations(addVariationsjsondata, loanID) ; @@ -176,13 +176,13 @@ public class VariableInstallmentsIntegrationTest { periods = (ArrayList)repaymentSchedule.get("periods") ; periods.remove(0) ; //Repayments Schedule includes disbursement also. So remove this. assertAfterSubmit(periods, toVerifyData) ; - + } - + @Test public void testAllVariationsDecliningBalancewithEqualInstallments() { // Request: Delete 20 December 2011 26,262.38, Modify 20 November 2011 from 26,262.38 to 30000, Add 25 December 2011 5000 - // Result: 20 October 2011 - 26262.38, 20 November 2011 - 30000, 25 December 2011 - 5000, 20 January 2012 - 44077 + // Result: 20 October 2011 - 26262.38, 20 November 2011 - 30000, 25 December 2011 - 5000, 20 January 2012 - 44077 VariableIntallmentsTransactionHelper transactionHelper = new VariableIntallmentsTransactionHelper(requestSpec, responseSpec) ; final String loanProductJson = VariableInstallmentsDecliningBalanceHelper.createLoanProductWithVaribleConfig(false, NONE); Integer loanProductID = this.loanTransactionHelper.getLoanProductId(loanProductJson); @@ -196,11 +196,11 @@ public class VariableInstallmentsIntegrationTest { Map list = transactionHelper.retrieveSchedule(loanID) ; Map repaymentSchedule = (Map)list.get("repaymentSchedule") ; ArrayList periods = (ArrayList)repaymentSchedule.get("periods") ; - - String addVariationsjsondata = VariableInstallmentsDecliningBalanceHelper.createAllVariations() ; //0th position will have disbursement + + String addVariationsjsondata = VariableInstallmentsDecliningBalanceHelper.createAllVariations() ; //0th position will have disbursement HashMap modifiedReschdule = transactionHelper.validateVariations(addVariationsjsondata, loanID) ; ArrayList newperiods = (ArrayList) modifiedReschdule.get("periods") ; - ArrayList toVerifyData = VariableInstallmentsDecliningBalanceHelper.constructVerifyData(new String[] {"20 October 2011", "20 November 2011", "25 December 2011", "20 January 2012"}, + ArrayList toVerifyData = VariableInstallmentsDecliningBalanceHelper.constructVerifyData(new String[] {"20 October 2011", "20 November 2011", "25 December 2011", "20 January 2012"}, new String[] {"26262.38", "30000.0", "5000.0", "44077.0"}) ; assertAfterSubmit(newperiods, toVerifyData) ; transactionHelper.submitVariations(addVariationsjsondata, loanID) ; @@ -210,11 +210,11 @@ public class VariableInstallmentsIntegrationTest { periods.remove(0) ; //Repayments Schedule includes disbursement also. So remove this. assertAfterSubmit(periods, toVerifyData) ; } - + @Test public void testAllVariationsDecliningBalancewithEqualPrincipal() { // Request: Delete 20 December 2011 26,262.38, Modify 20 November 2011 from 26,262.38 to 30000, Add 25 December 2011 5000 - // Result: 20 October 2011 - 27000.0, 20 November 2011 - 31500.0, 25 December 2011 - 6045.16, 20 January 2012 - 40670.97 + // Result: 20 October 2011 - 27000.0, 20 November 2011 - 31500.0, 25 December 2011 - 6045.16, 20 January 2012 - 40670.97 VariableIntallmentsTransactionHelper transactionHelper = new VariableIntallmentsTransactionHelper(requestSpec, responseSpec) ; final String loanProductJson = VariableInstallmentsDecliningBalanceHelper.createLoanProductWithVaribleConfigwithEqualPrincipal(false, NONE); Integer loanProductID = this.loanTransactionHelper.getLoanProductId(loanProductJson); @@ -228,11 +228,11 @@ public class VariableInstallmentsIntegrationTest { Map list = transactionHelper.retrieveSchedule(loanID) ; Map repaymentSchedule = (Map)list.get("repaymentSchedule") ; ArrayList periods = (ArrayList)repaymentSchedule.get("periods") ; - - String addVariationsjsondata = VariableInstallmentsDecliningBalanceHelper.createAllVariationsWithEqualPrincipal() ; //0th position will have disbursement + + String addVariationsjsondata = VariableInstallmentsDecliningBalanceHelper.createAllVariationsWithEqualPrincipal() ; //0th position will have disbursement HashMap modifiedReschdule = transactionHelper.validateVariations(addVariationsjsondata, loanID) ; ArrayList newperiods = (ArrayList) modifiedReschdule.get("periods") ; - ArrayList toVerifyData = VariableInstallmentsDecliningBalanceHelper.constructVerifyData(new String[] {"20 October 2011", "20 November 2011", "25 December 2011", "20 January 2012"}, + ArrayList toVerifyData = VariableInstallmentsDecliningBalanceHelper.constructVerifyData(new String[] {"20 October 2011", "20 November 2011", "25 December 2011", "20 January 2012"}, new String[] {"27000.0", "31500.0", "6045.16", "40670.97"}) ; assertAfterSubmit(newperiods, toVerifyData) ; transactionHelper.submitVariations(addVariationsjsondata, loanID) ; @@ -242,7 +242,7 @@ public class VariableInstallmentsIntegrationTest { periods.remove(0) ; //Repayments Schedule includes disbursement also. So remove this. assertAfterSubmit(periods, toVerifyData) ; } - + @Test public void testModifyDatesWithDecliningBalanceEqualInstallments() { //Modify 20 December 2011:25000 -> 04 January 2012:20000 @@ -258,18 +258,18 @@ public class VariableInstallmentsIntegrationTest { HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID); LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap); //Integer loanID = 57 ; - + Map list = transactionHelper.retrieveSchedule(loanID) ; Map repaymentSchedule = (Map)list.get("repaymentSchedule") ; ArrayList periods = (ArrayList)repaymentSchedule.get("periods") ; // // - String addVariationsjsondata = VariableInstallmentsDecliningBalanceHelper.createModifiyDateVariations(new String[]{"20 December 2011", "20 January 2012"}, new String[]{"04 January 2012", "08 February 2012"}, new String[]{"20000"}) ; //0th position will have disbursement + String addVariationsjsondata = VariableInstallmentsDecliningBalanceHelper.createModifiyDateVariations(new String[]{"20 December 2011", "20 January 2012"}, new String[]{"04 January 2012", "08 February 2012"}, new String[]{"20000"}) ; //0th position will have disbursement HashMap modifiedReschdule = transactionHelper.validateVariations(addVariationsjsondata, loanID) ; ArrayList newperiods = (ArrayList) modifiedReschdule.get("periods") ; - ArrayList toVerifyData = VariableInstallmentsDecliningBalanceHelper.constructVerifyData(new String[] {"20 October 2011", "20 November 2011", "04 January 2012", "08 February 2012"}, + ArrayList toVerifyData = VariableInstallmentsDecliningBalanceHelper.constructVerifyData(new String[] {"20 October 2011", "20 November 2011", "04 January 2012", "08 February 2012"}, new String[] {"26262.38", "26262.38", "20000.0", "33242.97"}) ; - assertAfterSubmit(newperiods, toVerifyData) ; + assertAfterSubmit(newperiods, toVerifyData) ; transactionHelper.submitVariations(addVariationsjsondata, loanID) ; list = transactionHelper.retrieveSchedule(loanID) ; repaymentSchedule = (Map)list.get("repaymentSchedule") ; @@ -277,7 +277,7 @@ public class VariableInstallmentsIntegrationTest { periods.remove(0) ; //Repayments Schedule includes disbursement also. So remove this. assertAfterSubmit(periods, toVerifyData) ; } - + // Interest Type is FLAT @Test public void testDeleteInstallmentsWithInterestTypeFlat() { @@ -298,7 +298,7 @@ public class VariableInstallmentsIntegrationTest { String toDeletedata = VariableInstallmentsFlatHelper.createDeleteVariations(toDelete) ; HashMap modifiedReschdule = transactionHelper.validateVariations(toDeletedata, loanID) ; ArrayList newperiods = (ArrayList) modifiedReschdule.get("periods") ; - ArrayList toVerifyData = VariableInstallmentsFlatHelper.constructVerifyData(new String[] {"20 November 2011", "20 December 2011", "20 January 2012"}, + ArrayList toVerifyData = VariableInstallmentsFlatHelper.constructVerifyData(new String[] {"20 November 2011", "20 December 2011", "20 January 2012"}, new String[] {"36000.0", "36000.0", "36000.0"}) ; assertAfterSubmit(newperiods, toVerifyData) ; transactionHelper.submitVariations(toDeletedata, loanID) ; @@ -308,7 +308,7 @@ public class VariableInstallmentsIntegrationTest { periods.remove(0) ; //Repayments Schedule includes disbursement also. So remove this. assertAfterSubmit(periods, toVerifyData) ; } - + @Test public void testAddInstallmentsWithInterestTypeFlat() { //31 October 2011 - 5000 @@ -329,7 +329,7 @@ public class VariableInstallmentsIntegrationTest { String addVariationsjsondata = VariableInstallmentsFlatHelper.createAddVariations() ; HashMap modifiedReschdule = transactionHelper.validateVariations(addVariationsjsondata, loanID) ; ArrayList newperiods = (ArrayList) modifiedReschdule.get("periods") ; - ArrayList toVerifyData = VariableInstallmentsFlatHelper.constructVerifyData(new String[] {"20 October 2011", "31 October 2011", "20 November 2011", "20 December 2011", "20 January 2012"}, + ArrayList toVerifyData = VariableInstallmentsFlatHelper.constructVerifyData(new String[] {"20 October 2011", "31 October 2011", "20 November 2011", "20 December 2011", "20 January 2012"}, new String[] {"21600.0", "6600.0", "26600.0", "26600.0", "26600.0"}) ; assertAfterSubmit(newperiods, toVerifyData) ; transactionHelper.submitVariations(addVariationsjsondata, loanID) ; @@ -339,7 +339,7 @@ public class VariableInstallmentsIntegrationTest { periods.remove(0) ; //Repayments Schedule includes disbursement also. So remove this. assertAfterSubmit(periods, toVerifyData) ; } - + @Test public void testModifyInstallmentsWithInterestTypeisFlat() { //20 October 2011 - 30000 modify @@ -357,10 +357,10 @@ public class VariableInstallmentsIntegrationTest { Map list = transactionHelper.retrieveSchedule(loanID) ; Map repaymentSchedule = (Map)list.get("repaymentSchedule") ; ArrayList periods = (ArrayList)repaymentSchedule.get("periods") ; - String addVariationsjsondata = VariableInstallmentsFlatHelper.createModifiyVariations((Map)periods.get(1)) ; //0th position will have disbursement + String addVariationsjsondata = VariableInstallmentsFlatHelper.createModifiyVariations((Map)periods.get(1)) ; //0th position will have disbursement HashMap modifiedReschdule = transactionHelper.validateVariations(addVariationsjsondata, loanID) ; ArrayList newperiods = (ArrayList) modifiedReschdule.get("periods") ; - ArrayList toVerifyData = VariableInstallmentsFlatHelper.constructVerifyData(new String[] {"20 October 2011", "20 November 2011", "20 December 2011", "20 January 2012"}, + ArrayList toVerifyData = VariableInstallmentsFlatHelper.constructVerifyData(new String[] {"20 October 2011", "20 November 2011", "20 December 2011", "20 January 2012"}, new String[] {"32000.0", "25333.33", "25333.33", "25333.34"}) ; assertAfterSubmit(newperiods, toVerifyData) ; transactionHelper.submitVariations(addVariationsjsondata, loanID) ; @@ -370,11 +370,11 @@ public class VariableInstallmentsIntegrationTest { periods.remove(0) ; //Repayments Schedule includes disbursement also. So remove this. assertAfterSubmit(periods, toVerifyData) ; } - + @Test public void testAllVariationsWithInterestTypeFlat() { // Request: Delete 20 December 2011 25000.0, Modify 20 November 2011 from 25,000 to 30000, Add 25 December 2011 5000 - // Result: 20 October 2011 - 27000.0, 20 November 2011 - 32000.0, 25 December 2011 - 7000.0, 20 January 2012 - 42000.0 + // Result: 20 October 2011 - 27000.0, 20 November 2011 - 32000.0, 25 December 2011 - 7000.0, 20 January 2012 - 42000.0 VariableIntallmentsTransactionHelper transactionHelper = new VariableIntallmentsTransactionHelper(requestSpec, responseSpec) ; final String loanProductJson = VariableInstallmentsFlatHelper.createLoanProductWithVaribleConfig(false, NONE); Integer loanProductID = this.loanTransactionHelper.getLoanProductId(loanProductJson); @@ -388,11 +388,11 @@ public class VariableInstallmentsIntegrationTest { Map list = transactionHelper.retrieveSchedule(loanID) ; Map repaymentSchedule = (Map)list.get("repaymentSchedule") ; ArrayList periods = (ArrayList)repaymentSchedule.get("periods") ; - - String addVariationsjsondata = VariableInstallmentsFlatHelper.createAllVariations() ; //0th position will have disbursement + + String addVariationsjsondata = VariableInstallmentsFlatHelper.createAllVariations() ; //0th position will have disbursement HashMap modifiedReschdule = transactionHelper.validateVariations(addVariationsjsondata, loanID) ; ArrayList newperiods = (ArrayList) modifiedReschdule.get("periods") ; - ArrayList toVerifyData = VariableInstallmentsFlatHelper.constructVerifyData(new String[] {"20 October 2011", "20 November 2011", "25 December 2011", "20 January 2012"}, + ArrayList toVerifyData = VariableInstallmentsFlatHelper.constructVerifyData(new String[] {"20 October 2011", "20 November 2011", "25 December 2011", "20 January 2012"}, new String[] {"27000.0", "32000.0", "7000.0", "42000.0"}) ; assertAfterSubmit(newperiods, toVerifyData) ; transactionHelper.submitVariations(addVariationsjsondata, loanID) ; @@ -402,7 +402,7 @@ public class VariableInstallmentsIntegrationTest { periods.remove(0) ; //Repayments Schedule includes disbursement also. So remove this. assertAfterSubmit(periods, toVerifyData) ; } - + @Test public void testModifyDatesWithInterestTypeFlat() { //Modify 20 December 2011:25000 -> 04 January 2012:20000 @@ -418,18 +418,18 @@ public class VariableInstallmentsIntegrationTest { HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID); LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap); //Integer loanID = 67 ; - + Map list = transactionHelper.retrieveSchedule(loanID) ; Map repaymentSchedule = (Map)list.get("repaymentSchedule") ; ArrayList periods = (ArrayList)repaymentSchedule.get("periods") ; // // - String addVariationsjsondata = VariableInstallmentsFlatHelper.createModifiyDateVariations(new String[]{"20 December 2011", "20 January 2012"}, new String[]{"04 January 2012", "08 February 2012"}, new String[]{"20000"}) ; //0th position will have disbursement + String addVariationsjsondata = VariableInstallmentsFlatHelper.createModifiyDateVariations(new String[]{"20 December 2011", "20 January 2012"}, new String[]{"04 January 2012", "08 February 2012"}, new String[]{"20000"}) ; //0th position will have disbursement HashMap modifiedReschdule = transactionHelper.validateVariations(addVariationsjsondata, loanID) ; ArrayList newperiods = (ArrayList) modifiedReschdule.get("periods") ; - ArrayList toVerifyData = VariableInstallmentsFlatHelper.constructVerifyData(new String[] {"20 October 2011", "20 November 2011", "04 January 2012", "08 February 2012"}, + ArrayList toVerifyData = VariableInstallmentsFlatHelper.constructVerifyData(new String[] {"20 October 2011", "20 November 2011", "04 January 2012", "08 February 2012"}, new String[] {"27306.45", "27306.45", "22306.45", "32306.46"}) ; - assertAfterSubmit(newperiods, toVerifyData) ; + assertAfterSubmit(newperiods, toVerifyData) ; transactionHelper.submitVariations(addVariationsjsondata, loanID) ; list = transactionHelper.retrieveSchedule(loanID) ; repaymentSchedule = (Map)list.get("repaymentSchedule") ; diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableIntallmentsTransactionHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableIntallmentsTransactionHelper.java index e1ee06053..a3942a2d4 100644 --- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableIntallmentsTransactionHelper.java +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableIntallmentsTransactionHelper.java @@ -31,27 +31,27 @@ import com.jayway.restassured.specification.ResponseSpecification; public class VariableIntallmentsTransactionHelper { private final String URL = "https://localhost:8443/fineract-provider/api/v1/loans/" ; - + private final RequestSpecification requestSpec; private final ResponseSpecification responseSpec; - - public VariableIntallmentsTransactionHelper(final RequestSpecification requestSpec, + + public VariableIntallmentsTransactionHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) { this.requestSpec = requestSpec ; this.responseSpec = responseSpec ; } - - + + public Map retrieveSchedule(Integer loanId) { String url = URL+loanId+"?associations=repaymentSchedule&exclude=guarantors&"+Utils.TENANT_IDENTIFIER ; return Utils.performServerGet(requestSpec, responseSpec, url, ""); } - + public HashMap validateVariations(final String exceptions, Integer loanId) { String url = URL+loanId+"/schedule?command=calculateLoanSchedule&"+Utils.TENANT_IDENTIFIER ; return Utils.performServerPost(this.requestSpec, this.responseSpec, url, exceptions, ""); } - + public HashMap submitVariations(final String exceptions, Integer loanId) { String url = URL+loanId+"/schedule?command=addVariations&"+Utils.TENANT_IDENTIFIER ; return Utils.performServerPost(this.requestSpec, this.responseSpec, url, exceptions, ""); diff --git a/fineract-provider/src/main/java/org/apache/fineract/ServerWithMariaDB4jApplication.java b/fineract-provider/src/main/java/org/apache/fineract/ServerWithMariaDB4jApplication.java index aa844cf77..53013b81b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/ServerWithMariaDB4jApplication.java +++ b/fineract-provider/src/main/java/org/apache/fineract/ServerWithMariaDB4jApplication.java @@ -82,14 +82,14 @@ public class ServerWithMariaDB4jApplication { if (distResource.exists()) { openWebBrowser(distURI); } else if (devResource.exists()) { - openWebBrowser(devURI); + openWebBrowser(devURI); } else { logger.error("Cannot open Fineract UI in browser; not found: " + distResource.toString()); } } - + // TODO Tray Icon stuff; dig out my very own old @see https://github.com/mifos/head/tree/hudsonBuild-MIFOS-5157_Launch4j-EXE_NewDist-squash1/server-jetty/src/main/java/org/mifos/server/tray - + ApplicationExitUtil.waitForKeyPressToCleanlyExit(ctx); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingConstants.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingConstants.java index 5ed32c313..62b3c6b63 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingConstants.java @@ -27,7 +27,7 @@ public class AccrualAccountingConstants { public static final String accrueTillParamName = "tillDate"; public static final String localeParamName = "locale"; public static final String dateFormatParamName = "dateFormat"; - + public static final String PERIODIC_ACCRUAL_ACCOUNTING_RESOURCE_NAME = "periodicaccrual"; public static final String PERIODIC_ACCRUAL_ACCOUNTING_EXECUTION_ERROR_CODE = "execution.failed"; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/data/GLClosureData.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/data/GLClosureData.java index 73b89c3e0..93b7565a4 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/data/GLClosureData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/data/GLClosureData.java @@ -26,7 +26,7 @@ import org.joda.time.LocalDate; /** * Immutable object representing a General Ledger Account - * + * * Note: no getter/setters required as google-gson will produce json from fields * of object. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/common/AccountingDropdownReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/common/AccountingDropdownReadPlatformService.java index 8c9aa3116..9c0f68283 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/common/AccountingDropdownReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/common/AccountingDropdownReadPlatformService.java @@ -41,7 +41,7 @@ public interface AccountingDropdownReadPlatformService { public Map> retrieveAccountMappingOptionsForCharges(); public Map> retrieveAccountMappingOptions(); - + public Map> retrieveAccountMappingOptionsForShareProducts(); } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/data/GLAccountData.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/data/GLAccountData.java index f65936e86..6065162f7 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/data/GLAccountData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/data/GLAccountData.java @@ -30,7 +30,7 @@ import java.util.List; /** * Immutable object representing a General Ledger Account - * + * * Note: no getter/setters required as google-gson will produce json from fields * of object. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDisableException.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDisableException.java index fbae542b4..8f56dcf89 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDisableException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDisableException.java @@ -21,7 +21,7 @@ package org.apache.fineract.accounting.glaccount.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; /** - * + * * when gl account is attached with any product(loan/saving) then we can not * disable the gl account */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/api/DateParam.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/api/DateParam.java index cbc088237..690b99f2a 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/api/DateParam.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/api/DateParam.java @@ -28,7 +28,7 @@ import org.joda.time.LocalDate; /** * Class for parsing dates sent as query parameters - * + * * TODO: Vishwas Should move this class to a more generic package */ public class DateParam { diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/api/JournalEntriesApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/api/JournalEntriesApiResource.java index 4f721bdb5..dc365851b 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/api/JournalEntriesApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/api/JournalEntriesApiResource.java @@ -221,7 +221,7 @@ public class JournalEntriesApiResource { return this.apiJsonSerializerService.serialize(settings, entries, RESPONSE_DATA_PARAMETERS); } - + @GET @Path("openingbalance") @Consumes({ MediaType.APPLICATION_JSON }) diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryData.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryData.java index 4c67d9980..0388d8d74 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryData.java @@ -29,7 +29,7 @@ import org.joda.time.LocalDate; /** * Immutable object representing a General Ledger Account - * + * * Note: no getter/setters required as google will produce json from fields of * object. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java index 447cb13a1..dda72fba4 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java @@ -220,7 +220,7 @@ public class JournalEntry extends AbstractAuditableCustom { return this.entityType; } - + public Long getShareTransactionId() { return this.shareTransactionId; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntryRepository.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntryRepository.java index c280f89da..0a194087f 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntryRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntryRepository.java @@ -37,8 +37,8 @@ public interface JournalEntryRepository extends JpaRepository findNonReversedContraTansactionIds(@Param("contraId") Long contraId, @Param("officeId") Long officeId); - - @Query("select journalEntry from JournalEntry journalEntry where journalEntry.entityId= :entityId and journalEntry.entityType = :entityType") + + @Query("select journalEntry from JournalEntry journalEntry where journalEntry.entityId= :entityId and journalEntry.entityType = :entityType") List findProvisioningJournalEntriesByEntityId(@Param("entityId") Long entityId, @Param("entityType") Integer entityType) ; @Query("select journalEntry from JournalEntry journalEntry where journalEntry.transactionId= :transactionId and journalEntry.reversed=false and journalEntry.entityType = :entityType") diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/handler/DefineOpeningBalanceCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/handler/DefineOpeningBalanceCommandHandler.java index dd6e29823..24899b082 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/handler/DefineOpeningBalanceCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/handler/DefineOpeningBalanceCommandHandler.java @@ -29,7 +29,7 @@ import org.springframework.stereotype.Service; @Service @CommandType(entity = "JOURNALENTRY", action = "DEFINEOPENINGBALANCE") public class DefineOpeningBalanceCommandHandler implements NewCommandSourceHandler { - + private final JournalEntryWritePlatformService writePlatformService; @Autowired diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccountingProcessorHelper.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccountingProcessorHelper.java index 47944f2b0..891f72d4c 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccountingProcessorHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccountingProcessorHelper.java @@ -340,10 +340,10 @@ public class AccountingProcessorHelper { /** * Convenience method that creates a pair of related Debits and Credits for * Accrual Based accounting. - * + * * The target accounts for debits and credits are switched in case of a * reversal - * + * * @param office * @param accountTypeToBeDebited * Enum of the placeholder GLAccount to be debited @@ -375,10 +375,10 @@ public class AccountingProcessorHelper { /** * Convenience method that creates a pair of related Debits and Credits for * Accrual Based accounting. - * + * * The target accounts for debits and credits are switched in case of a * reversal - * + * * @param office office * @param currencyCode currencyCode * @param accountTypeToBeDebited Enum of the placeholder GLAccount to be debited @@ -435,10 +435,10 @@ public class AccountingProcessorHelper { /** * Convenience method that creates a pair of related Debits and Credits for * Cash Based accounting. - * + * * The target accounts for debits and credits are switched in case of a * reversal - * + * * @param office * @param accountTypeToBeDebited * Enum of the placeholder GLAccount to be debited @@ -470,10 +470,10 @@ public class AccountingProcessorHelper { /** * Convenience method that creates a pair of related Debits and Credits for * Cash Based accounting. - * + * * The target accounts for debits and credits are switched in case of a * reversal - * + * * @param office * @param accountTypeToBeDebited * Enum of the placeholder GLAccount to be debited @@ -562,10 +562,10 @@ public class AccountingProcessorHelper { /** * Convenience method that creates a pair of related Debits and Credits for * Cash Based accounting. - * + * * The target accounts for debits and credits are switched in case of a * reversal - * + * * @param office * @param currencyCode * @param accountTypeToBeDebited Enum of the placeholder GLAccount to be debited @@ -721,10 +721,10 @@ public class AccountingProcessorHelper { /** * Convenience method that creates a pair of related Debits and Credits for * Cash Based accounting. - * + * * The target accounts for debits and credits are switched in case of a * reversal - * + * * @param office office * @param currencyCode currencyCode * @param accountTypeToBeDebited Enum of the placeholder GLAccount to be debited @@ -1041,7 +1041,7 @@ public class AccountingProcessorHelper { "Recent Portfolio changes w.r.t Charges for shares have Broken the accounting code", "Recent Portfolio changes w.r.t Charges for shares have Broken the accounting code"); } } - + private void createDebitJournalEntryForShares(final Office office, final String currencyCode, final GLAccount account, final Long shareAccountId, final String transactionId, final Date transactionDate, final BigDecimal amount) { final boolean manualEntry = false; diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccrualBasedAccountingProcessorForLoan.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccrualBasedAccountingProcessorForLoan.java index 8baa00a08..235c5d275 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccrualBasedAccountingProcessorForLoan.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccrualBasedAccountingProcessorForLoan.java @@ -102,7 +102,7 @@ public class AccrualBasedAccountingProcessorForLoan implements AccountingProcess /** * Debit loan Portfolio and credit Fund source for Disbursement. - * + * * @param loanDTO * @param loanTransactionDTO * @param office @@ -141,20 +141,20 @@ public class AccrualBasedAccountingProcessorForLoan implements AccountingProcess } /** - * + * * Handles repayments using the following posting rules
*
*
- * + * * Principal Repayment: Debits "Fund Source" and Credits * "Loan Portfolio"
- * + * * Interest Repayment:Debits "Fund Source" and and Credits * "Receivable Interest"
- * + * * Fee Repayment:Debits "Fund Source" (or "Interest on Loans" in case * of repayment at disbursement) and and Credits "Receivable Fees"
- * + * * Penalty Repayment: Debits "Fund Source" and and Credits * "Receivable Penalties"
*
@@ -162,24 +162,24 @@ public class AccrualBasedAccountingProcessorForLoan implements AccountingProcess *
* Principal Write off: Debits "Losses Written Off" and Credits * "Loan Portfolio"
- * + * * Interest Write off:Debits "Losses Written off" and and Credits * "Receivable Interest"
- * + * * Fee Write off:Debits "Losses Written off" and and Credits * "Receivable Fees"
- * + * * Penalty Write off: Debits "Losses Written off" and and Credits * "Receivable Penalties"
*
*
* In case the loan transaction has been reversed, all debits are turned * into credits and vice versa - * + * * @param loanTransactionDTO * @param loanDTO * @param office - * + * */ private void createJournalEntriesForRepaymentsAndWriteOffs(final LoanDTO loanDTO, final LoanTransactionDTO loanTransactionDTO, final Office office, final boolean writeOff, final boolean isIncomeFromFee) { @@ -320,7 +320,7 @@ public class AccrualBasedAccountingProcessorForLoan implements AccountingProcess /** * Create a single Debit to fund source and a single credit to * "Income from Recovery" - * + * * In case the loan transaction is a reversal, all debits are turned into * credits and vice versa */ @@ -347,15 +347,15 @@ public class AccrualBasedAccountingProcessorForLoan implements AccountingProcess /** * Recognize the receivable interest
* Debit "Interest Receivable" and Credit "Income from Interest" - * + * * Fees: Debit Fees Receivable and credit Income from * Fees
- * + * * Penalties: Debit Penalties Receivable and credit Income * from Penalties - * + * * Also handles reversals for both fees and payment applications - * + * * @param loanDTO * @param loanTransactionDTO * @param office diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForClientTransactions.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForClientTransactions.java index 5b8477d97..e237dc471 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForClientTransactions.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForClientTransactions.java @@ -55,7 +55,7 @@ public class CashBasedAccountingProcessorForClientTransactions implements Accoun /** * Create a single debit to fund source and multiple credits for the income * account mapped with each charge this payment pays off - * + * * In case the loan transaction is a reversal, all debits are turned into * credits and vice versa */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForLoan.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForLoan.java index 4b1866dd4..10742a92d 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForLoan.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForLoan.java @@ -110,11 +110,11 @@ public class CashBasedAccountingProcessorForLoan implements AccountingProcessorF /** * Debit loan Portfolio and credit Fund source for a Disbursement
- * + * * All debits are turned into credits and vice versa in case of disbursement * reversals - * - * + * + * * @param loanDTO * @param loanTransactionDTO * @param office @@ -150,11 +150,11 @@ public class CashBasedAccountingProcessorForLoan implements AccountingProcessorF /** * Debit loan Portfolio and credit Fund source for a Disbursement
- * + * * All debits are turned into credits and vice versa in case of disbursement * reversals - * - * + * + * * @param loanDTO * @param loanTransactionDTO * @param office @@ -188,7 +188,7 @@ public class CashBasedAccountingProcessorForLoan implements AccountingProcessorF * (loan portfolio for principal repayments, Interest on loans for interest * repayments, Income from fees for fees payment and Income from penalties * for penalty payment) - * + * * In case the loan transaction is a reversal, all debits are turned into * credits and vice versa */ @@ -259,7 +259,7 @@ public class CashBasedAccountingProcessorForLoan implements AccountingProcessorF /** * Create a single Debit to fund source and a single credit to * "Income from Recovery" - * + * * In case the loan transaction is a reversal, all debits are turned into * credits and vice versa */ @@ -287,11 +287,11 @@ public class CashBasedAccountingProcessorForLoan implements AccountingProcessorF * Credit loan Portfolio and Debit Suspense Account for a Transfer * Initiation. A Transfer acceptance would be treated the opposite i.e Debit * Loan Portfolio and Credit Suspense Account
- * + * * All debits are turned into credits and vice versa in case of Transfer * Initiation disbursals - * - * + * + * * @param loanDTO * @param loanTransactionDTO * @param office @@ -320,7 +320,7 @@ public class CashBasedAccountingProcessorForLoan implements AccountingProcessorF null, loanId, transactionId, transactionDate, principalAmount, isReversal); } } - + private void createJournalEntriesForRefundForActiveLoan(LoanDTO loanDTO, LoanTransactionDTO loanTransactionDTO, Office office) { // loan properties final Long loanProductId = loanDTO.getLoanProductId(); @@ -354,11 +354,11 @@ public class CashBasedAccountingProcessorForLoan implements AccountingProcessorF if (feesAmount != null && !(feesAmount.compareTo(BigDecimal.ZERO) == 0)) { totalDebitAmount = totalDebitAmount.add(feesAmount); - + List chargePaymentDTOs = new ArrayList<>(); - + for(ChargePaymentDTO chargePaymentDTO : loanTransactionDTO.getFeePayments()) { - chargePaymentDTOs.add(new ChargePaymentDTO(chargePaymentDTO.getChargeId(), chargePaymentDTO.getLoanChargeId(), + chargePaymentDTOs.add(new ChargePaymentDTO(chargePaymentDTO.getChargeId(), chargePaymentDTO.getLoanChargeId(), chargePaymentDTO.getAmount().floatValue() < 0 ? chargePaymentDTO.getAmount().multiply(new BigDecimal(-1)):chargePaymentDTO.getAmount() )); } this.helper.createCreditJournalEntryOrReversalForLoanCharges(office, currencyCode, @@ -369,12 +369,12 @@ public class CashBasedAccountingProcessorForLoan implements AccountingProcessorF if (penaltiesAmount != null && !(penaltiesAmount.compareTo(BigDecimal.ZERO) == 0)) { totalDebitAmount = totalDebitAmount.add(penaltiesAmount); List chargePaymentDTOs = new ArrayList<>(); - + for(ChargePaymentDTO chargePaymentDTO : loanTransactionDTO.getPenaltyPayments()) { - chargePaymentDTOs.add(new ChargePaymentDTO(chargePaymentDTO.getChargeId(), chargePaymentDTO.getLoanChargeId(), + chargePaymentDTOs.add(new ChargePaymentDTO(chargePaymentDTO.getChargeId(), chargePaymentDTO.getLoanChargeId(), chargePaymentDTO.getAmount().floatValue() < 0 ? chargePaymentDTO.getAmount().multiply(new BigDecimal(-1)):chargePaymentDTO.getAmount() )); } - + this.helper.createCreditJournalEntryOrReversalForLoanCharges(office, currencyCode, CASH_ACCOUNTS_FOR_LOAN.INCOME_FROM_PENALTIES.getValue(), loanProductId, loanId, transactionId, transactionDate, penaltiesAmount, !isReversal, chargePaymentDTOs); @@ -389,6 +389,6 @@ public class CashBasedAccountingProcessorForLoan implements AccountingProcessorF /*** create a single debit entry (or reversal) for the entire amount **/ this.helper.createDebitJournalEntryOrReversalForLoan(office, currencyCode, CASH_ACCOUNTS_FOR_LOAN.FUND_SOURCE.getValue(), loanProductId, paymentTypeId, loanId, transactionId, transactionDate, totalDebitAmount, !isReversal); - + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForShares.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForShares.java index cef515e66..4ef608d9f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForShares.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForShares.java @@ -123,13 +123,13 @@ public class CashBasedAccountingProcessorForShares implements AccountingProcesso transactionId, transactionDate, amount.subtract(chargeAmount)); this.helper.createCreditJournalEntryForShares(office, currencyCode, CASH_ACCOUNTS_FOR_SHARES.SHARES_REFERENCE.getValue(), shareProductId, paymentTypeId, shareAccountId, transactionId, transactionDate, amount); - + }else{ this.helper.createJournalEntriesForShares(office, currencyCode, CASH_ACCOUNTS_FOR_SHARES.SHARES_SUSPENSE.getValue(), CASH_ACCOUNTS_FOR_SHARES.SHARES_REFERENCE.getValue(), shareProductId, paymentTypeId, shareAccountId, transactionId, transactionDate, amount); } - + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java index 928ed40b7..d47210fe3 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java @@ -362,7 +362,7 @@ public class JournalEntryReadPlatformServiceImpl implements JournalEntryReadPlat if (searchParameters.isOrderByRequested()) { sqlBuilder.append(" order by ").append(searchParameters.getOrderBy()); this.columnValidator.validateSqlInjection(sqlBuilder.toString(), searchParameters.getOrderBy()); - + if (searchParameters.isSortOrderProvided()) { sqlBuilder.append(' ').append(searchParameters.getSortOrder()); this.columnValidator.validateSqlInjection(sqlBuilder.toString(), searchParameters.getOrderBy()); diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryRunningBalanceUpdateServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryRunningBalanceUpdateServiceImpl.java index dccd7cb40..d08e5c776 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryRunningBalanceUpdateServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryRunningBalanceUpdateServiceImpl.java @@ -65,11 +65,11 @@ public class JournalEntryRunningBalanceUpdateServiceImpl implements JournalEntry private final FromJsonHelper fromApiJsonHelper; private final GLJournalEntryMapper entryMapper = new GLJournalEntryMapper(); - - // if a limit is not added to the running balance select statements below and the resultset is more than 400,000, + + // if a limit is not added to the running balance select statements below and the resultset is more than 400,000, // the script will eat up all of the server memory private final String selectRunningBalanceSqlLimit = "limit 0, 10000"; - + private final String officeRunningBalanceSql = "select je.office_running_balance as runningBalance,je.account_id as accountId from acc_gl_journal_entry je " + "inner join (select max(id) as id from acc_gl_journal_entry where office_id=? and entry_date < ? group by account_id,entry_date) je2 " + "inner join (select max(entry_date) as date from acc_gl_journal_entry where office_id=? and entry_date < ? group by account_id) je3 " diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformService.java index 89c93647f..261a0a3b4 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformService.java @@ -39,12 +39,12 @@ public interface JournalEntryWritePlatformService { void createJournalEntriesForClientTransactions(Map accountingBridgeData); CommandProcessingResult defineOpeningBalance(JsonCommand command); - + public String revertProvisioningJournalEntries(final Date reversalTransactionDate, final Long entityId, final Integer entityType) ; public String createProvisioningJournalEntries(ProvisioningEntry entry) ; void createJournalEntriesForShares(Map accountingBridgeData); - + void revertShareAccountJournalEntries(final ArrayList transactionId, final Date transactionDate); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java index 8fc62d975..e1a143790 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java @@ -323,7 +323,7 @@ public class JournalEntryWritePlatformServiceJpaRepositoryImpl implements Journa final boolean useDefaultComment = StringUtils.isBlank(reversalComment); validateCommentForReversal(reversalComment); - + //Before reversal validate accounting closure is done for that branch or not. final Date journalEntriesTransactionDate = journalEntries.get(0).getTransactionDate(); final GLClosure latestGLClosureByBranch = this.glClosureRepository.getLatestGLClosureByBranch(officeId); @@ -563,7 +563,7 @@ public class JournalEntryWritePlatformServiceJpaRepositoryImpl implements Journa } } } - + private void validateBusinessRulesForJournalEntries(final JournalEntryCommand command) { /** check if date of Journal entry is valid ***/ final LocalDate entryLocalDate = command.getTransactionDate(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/serialization/ProductToGLAccountMappingFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/serialization/ProductToGLAccountMappingFromApiJsonDeserializer.java index 7a0f91b27..78acef60b 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/serialization/ProductToGLAccountMappingFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/serialization/ProductToGLAccountMappingFromApiJsonDeserializer.java @@ -48,27 +48,27 @@ import com.google.gson.JsonElement; /** * TODO Vishwas find a better approach for validation - * + * * Currently, validation of the passed in JSON is done before calling save or * update method on the target resource (in our case the loan Product) - * + * * However, in the case of a loan product it would be difficult to validate the * passed in JSON for valid {@link LoanProduct} to {@link GLAccount} mappings * during update because of the following scenario - * + * * The accounting rule type may be changed in the update command, so we would * have to validate if all required account heads for a particular account type * have been passed in (would be different for CASH and Accrual based). However, * till we have access to the domain object it would not be possible to detect * if an accounting rule has actually been changed - * + * * Hence, method {@link #validateForLoanProductCreate(String)} from this class * is called separately for validation only if an accounting rule change is * detected by {@link ProductToGLAccountMappingWritePlatformService} - * + * * Also, the class is probably named wrong (*FromApiJsonDeserializer) should * probably be named as (*Validator) instead - * + * */ @Component public final class ProductToGLAccountMappingFromApiJsonDeserializer { @@ -207,7 +207,7 @@ public final class ProductToGLAccountMappingFromApiJsonDeserializer { SAVINGS_PRODUCT_ACCOUNTING_PARAMS.INCOME_FROM_PENALTIES.getValue(), element); baseDataValidator.reset().parameter(SAVINGS_PRODUCT_ACCOUNTING_PARAMS.INCOME_FROM_PENALTIES.getValue()) .value(incomeFromPenaltyId).notNull().integerGreaterThanZero(); - + final Boolean isDormancyTrackingActive = this.fromApiJsonHelper.extractBooleanNamed(isDormancyTrackingActiveParamName, element); if(null != isDormancyTrackingActive && isDormancyTrackingActive){ final Long escheatLiabilityId = this.fromApiJsonHelper.extractLongNamed( @@ -258,17 +258,17 @@ public final class ProductToGLAccountMappingFromApiJsonDeserializer { SHARES_PRODUCT_ACCOUNTING_PARAMS.SHARES_REFERENCE.getValue(), element); baseDataValidator.reset().parameter(SHARES_PRODUCT_ACCOUNTING_PARAMS.SHARES_REFERENCE.getValue()) .value(shareReferenceId).notNull().integerGreaterThanZero(); - + final Long shareSuspenseId = this.fromApiJsonHelper.extractLongNamed( SHARES_PRODUCT_ACCOUNTING_PARAMS.SHARES_SUSPENSE.getValue(), element); baseDataValidator.reset().parameter(SHARES_PRODUCT_ACCOUNTING_PARAMS.SHARES_SUSPENSE.getValue()) .value(shareSuspenseId).notNull().integerGreaterThanZero(); - + final Long incomeFromFeeAccountId = this.fromApiJsonHelper.extractLongNamed( SHARES_PRODUCT_ACCOUNTING_PARAMS.INCOME_FROM_FEES.getValue(), element); baseDataValidator.reset().parameter(SHARES_PRODUCT_ACCOUNTING_PARAMS.INCOME_FROM_FEES.getValue()) .value(incomeFromFeeAccountId).notNull().integerGreaterThanZero(); - + final Long shareEquityId = this.fromApiJsonHelper.extractLongNamed( SHARES_PRODUCT_ACCOUNTING_PARAMS.SHARES_EQUITY.getValue(), element); baseDataValidator.reset().parameter(SHARES_PRODUCT_ACCOUNTING_PARAMS.SHARES_EQUITY.getValue()) diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/LoanProductToGLAccountMappingHelper.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/LoanProductToGLAccountMappingHelper.java index 2021f81d5..79ce0f559 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/LoanProductToGLAccountMappingHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/LoanProductToGLAccountMappingHelper.java @@ -212,7 +212,7 @@ public class LoanProductToGLAccountMappingHelper extends ProductToGLAccountMappi /** * Examines and updates each account mapping for given loan product with * changes passed in from the Json element - * + * * @param loanProductId * @param changes * @param element diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingHelper.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingHelper.java index 864497cc3..79bc99110 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingHelper.java @@ -129,7 +129,7 @@ public class ProductToGLAccountMappingHelper { /** * Saves the payment type to Fund source mappings for a particular * product/product type (also populates the changes array if passed in) - * + * * @param command * @param element * @param productId @@ -156,7 +156,7 @@ public class ProductToGLAccountMappingHelper { /** * Saves the Charge to Income / Liability account mappings for a particular * product/product type (also populates the changes array if passed in) - * + * * @param command * @param element * @param productId @@ -242,7 +242,7 @@ public class ProductToGLAccountMappingHelper { * as a part of Jsoncommand)
* Create new mappings for charges that are passed in as a part of * the Jsoncommand but not already present - * + * **/ else { for (final ProductToGLAccountMapping chargeToIncomeAccountMapping : existingChargeToIncomeAccountMappings) { @@ -328,7 +328,7 @@ public class ProductToGLAccountMappingHelper { * as a part of Jsoncommand)
* Create new mappings for payment types that are passed in as a * part of the Jsoncommand but not already present - * + * **/ else { for (final ProductToGLAccountMapping existingPaymentChannelToFundSourceMapping : existingPaymentChannelToFundSourceMappings) { @@ -417,7 +417,7 @@ public class ProductToGLAccountMappingHelper { /** * Fetches account with a particular Id and throws and Exception it is not * of the expected Account Category ('ASSET','liability' etc) - * + * * @param paramName * @param expectedAccountType * @param accountId diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformService.java index 0ce623261..8e791a2bb 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformService.java @@ -41,7 +41,7 @@ public interface ProductToGLAccountMappingReadPlatformService { public List fetchFeeToIncomeAccountMappingsForSavingsProduct(final Long savingsProductId); public List fetchPenaltyToIncomeAccountMappingsForSavingsProduct(final Long savingsProductId); - + public Map fetchAccountMappingDetailsForShareProduct(final Long productId, final Integer accountingType); public List fetchPaymentTypeToFundSourceMappingsForShareProduct(final Long productId); diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingWritePlatformServiceImpl.java index 8b1e504bb..82eff1263 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingWritePlatformServiceImpl.java @@ -225,7 +225,7 @@ public class ProductToGLAccountMappingWritePlatformServiceImpl implements Produc this.savingsProductToGLAccountMappingHelper.saveSavingsToLiabilityAccountMapping(element, SAVINGS_PRODUCT_ACCOUNTING_PARAMS.TRANSFERS_SUSPENSE.getValue(), savingProductId, CASH_ACCOUNTS_FOR_SAVINGS.TRANSFERS_SUSPENSE.getValue()); - + final Boolean isDormancyTrackingActive = this.fromApiJsonHelper.extractBooleanNamed(isDormancyTrackingActiveParamName, element); if(null != isDormancyTrackingActive && isDormancyTrackingActive){ this.savingsProductToGLAccountMappingHelper.saveSavingsToLiabilityAccountMapping(element, diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java index f888e60be..5f1dc5e54 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java @@ -103,7 +103,7 @@ public class SavingsProductToGLAccountMappingHelper extends ProductToGLAccountMa createOrmergeProductToAccountMappingChanges(element, paramName, productId, accountTypeId, changes, GLAccountType.LIABILITY, PortfolioProductType.SAVING); } - + /*** Abstractions for payments channel related to savings products ***/ public void savePaymentChannelToFundSourceMappings(final JsonCommand command, final JsonElement element, final Long productId, @@ -179,7 +179,7 @@ public class SavingsProductToGLAccountMappingHelper extends ProductToGLAccountMa /** * Examines and updates each account mapping for given loan product with * changes passed in from the Json element - * + * * @param savingsProductId * @param changes * @param element diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ShareProductToGLAccountMappingHelper.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ShareProductToGLAccountMappingHelper.java index 489532fc0..8ed076783 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ShareProductToGLAccountMappingHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ShareProductToGLAccountMappingHelper.java @@ -157,7 +157,7 @@ public class ShareProductToGLAccountMappingHelper extends ProductToGLAccountMapp /** * Examines and updates each account mapping for given loan product with * changes passed in from the Json element - * + * * @param sharesProductId * @param changes * @param element diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/constant/ProvisioningEntriesApiConstants.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/constant/ProvisioningEntriesApiConstants.java index 5149c8488..165a94740 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/constant/ProvisioningEntriesApiConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/constant/ProvisioningEntriesApiConstants.java @@ -25,11 +25,11 @@ import java.util.Set; public interface ProvisioningEntriesApiConstants { public final static String JSON_DATE_PARAM = "date" ; - + public final static String JSON_DATEFORMAT_PARAM = "dateFormat" ; - + public final static String JSON_LOCALE_PARAM = "locale" ; - + public final static String JSON_CREATEJOURNALENTRIES_PARAM = "createjournalentries" ; public final static String PROVISIONINGENTRY_PARAM = "provisioningentry"; diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/LoanProductProvisioningEntryData.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/LoanProductProvisioningEntryData.java index eb8743e60..da8d6ee33 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/LoanProductProvisioningEntryData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/LoanProductProvisioningEntryData.java @@ -27,17 +27,17 @@ public class LoanProductProvisioningEntryData { private final Long officeId; private final String officeName ; - + private final String currencyCode; private final Long productId; private final String productName ; - + private final Long categoryId; private final String categoryName ; - + private final Long overdueInDays; private final BigDecimal percentage; @@ -45,21 +45,21 @@ public class LoanProductProvisioningEntryData { private final BigDecimal balance; private final BigDecimal amountreserved ; - + private final Long liablityAccount; private final String liabilityAccountCode ; - + private final String liabilityAccountName ; - + private final Long expenseAccount; private final String expenseAccountCode ; - + private final String expenseAccountName ; - + private final Long criteriaId ; - + public LoanProductProvisioningEntryData(final Long historyId, final Long officeId, final String currencyCode, final Long productId, final Long categoryId, final Long overdueInDays, final BigDecimal percentage, final BigDecimal balance, Long liablityAccount, Long expenseAccount, final Long criteriaId) { @@ -85,7 +85,7 @@ public class LoanProductProvisioningEntryData { } public LoanProductProvisioningEntryData(final Long historyId, final Long officeId, final String officeName, final String currencyCode, final Long productId, - final String productName, final Long categoryId, final String categoryName, final Long overdueInDays, final BigDecimal amountReserved, + final String productName, final Long categoryId, final String categoryName, final Long overdueInDays, final BigDecimal amountReserved, Long liablityAccount, String liabilityAccountglCode, String liabilityAccountName, Long expenseAccount, String expenseAccountglCode, String expenseAccountName, final Long criteriaId) { this.historyId = historyId; this.officeId = officeId; @@ -146,7 +146,7 @@ public class LoanProductProvisioningEntryData { public String getCurrencyCode() { return this.currencyCode; } - + public Long getCriteriaId() { return this.criteriaId ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/ProvisioningEntryData.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/ProvisioningEntryData.java index 4fe18b7a9..df16b938f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/ProvisioningEntryData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/ProvisioningEntryData.java @@ -26,23 +26,23 @@ import java.util.Date; public class ProvisioningEntryData { private Long id ; - + private Boolean journalEntry ; - + private Long createdById ; - + private String createdUser ; Date createdDate ; - + Long modifiedById ; - + private String modifiedUser ; private BigDecimal reservedAmount ; - + private Collection provisioningEntries ; - + public ProvisioningEntryData(final Long id, final Collection provisioningEntries) { this.provisioningEntries = provisioningEntries ; this.id = id ; @@ -59,7 +59,7 @@ public class ProvisioningEntryData { this.createdDate = createdDate ; this.reservedAmount = totalReservedAmount ; } - + public void setEntries(Collection provisioningEntries) { this.provisioningEntries = provisioningEntries ; } @@ -67,7 +67,7 @@ public class ProvisioningEntryData { public Long getId() { return this.id ; } - + public Date getCreatedDate() { return this.createdDate ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/LoanProductProvisioningEntry.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/LoanProductProvisioningEntry.java index 21ba3bc64..8ad80efff 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/LoanProductProvisioningEntry.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/LoanProductProvisioningEntry.java @@ -100,7 +100,7 @@ public class LoanProductProvisioningEntry extends AbstractPersistableCustom { @Column(name = "journal_entry_created") private Boolean isJournalEntryCreated; - + @OneToMany(cascade = CascadeType.ALL, mappedBy = "entry", orphanRemoval = true, fetch=FetchType.EAGER) private Set provisioningEntries = new HashSet<>(); - + @OneToOne @JoinColumn(name = "createdby_id") private AppUser createdBy; @@ -64,9 +64,9 @@ public class ProvisioningEntry extends AbstractPersistableCustom { private Date lastModifiedDate; protected ProvisioningEntry() { - + } - + public ProvisioningEntry(AppUser createdBy, Date createdDate, AppUser lastModifiedBy, Date lastModifiedDate, Set provisioningEntries ) { this.provisioningEntries = provisioningEntries ; this.createdBy = createdBy ; @@ -74,22 +74,22 @@ public class ProvisioningEntry extends AbstractPersistableCustom { this.lastModifiedBy = lastModifiedBy ; this.lastModifiedDate = lastModifiedDate ; } - + public void setProvisioningEntries(Collection provisioningEntries) { - if(this.provisioningEntries == null) this.provisioningEntries = new HashSet<>(); + if(this.provisioningEntries == null) this.provisioningEntries = new HashSet<>(); this.provisioningEntries.addAll(provisioningEntries) ; } - + public Collection getLoanProductProvisioningEntries() { return this.provisioningEntries ; } - + public void setJournalEntryCreated(Boolean bool) { this.isJournalEntryCreated = bool ; } - + public Date getCreatedDate() { return this.createdDate ; } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/ProvisioningEntryRepository.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/ProvisioningEntryRepository.java index 323a74712..2e69d886a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/ProvisioningEntryRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/ProvisioningEntryRepository.java @@ -27,10 +27,10 @@ import org.springframework.data.repository.query.Param; public interface ProvisioningEntryRepository extends JpaRepository, JpaSpecificationExecutor { - //OPENJPA throws error if we use entry + //OPENJPA throws error if we use entry @Query("select entry1 from ProvisioningEntry entry1 where entry1.createdDate = :createdDate") ProvisioningEntry findByProvisioningEntryDate(@Param("createdDate") Date createdDate); - + @Query("select entry1 from ProvisioningEntry entry1 where entry1.createdDate = (select max(entry2.createdDate) from ProvisioningEntry entry2 where entry2.isJournalEntryCreated=true)") ProvisioningEntry findExistingProvisioningEntryWithJournalEntries() ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/handler/ReCreateProvisioningEntryRequestCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/handler/ReCreateProvisioningEntryRequestCommandHandler.java index 115633332..1fe504fb9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/handler/ReCreateProvisioningEntryRequestCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/handler/ReCreateProvisioningEntryRequestCommandHandler.java @@ -32,7 +32,7 @@ import org.springframework.transaction.annotation.Transactional; public class ReCreateProvisioningEntryRequestCommandHandler implements NewCommandSourceHandler { private final ProvisioningEntriesWritePlatformService provisioningEntriesWritePlatformService ; - + @Autowired public ReCreateProvisioningEntryRequestCommandHandler( final ProvisioningEntriesWritePlatformService provisioningEntriesWritePlatformService) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformService.java index 310a03112..928e1385e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformService.java @@ -30,16 +30,16 @@ import org.apache.fineract.infrastructure.core.service.SearchParameters; public interface ProvisioningEntriesReadPlatformService { public Collection retrieveLoanProductsProvisioningData(Date date) ; - + public ProvisioningEntryData retrieveProvisioningEntryData(Long entryId) ; - + public Page retrieveAllProvisioningEntries(Integer offset, Integer limit) ; - + public ProvisioningEntryData retrieveProvisioningEntryData(String date) ; - + public ProvisioningEntryData retrieveProvisioningEntryDataByCriteriaId(Long criteriaId) ; - + public ProvisioningEntryData retrieveExistingProvisioningIdDateWithJournals() ; - + public Page retrieveProvisioningEntries(SearchParameters searchParams) ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java index 5ed3cb052..d06f5bba8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java @@ -225,12 +225,12 @@ public class ProvisioningEntriesReadPlatformServiceImpl implements ProvisioningE sqlBuilder.append(mapper.getSchema()); sqlBuilder.append(" order by entry.created_date"); if(limit != null ) { - sqlBuilder.append(" limit ").append(limit); + sqlBuilder.append(" limit ").append(limit); } if(offset != null) { - sqlBuilder.append(" offset ").append(offset); + sqlBuilder.append(" offset ").append(offset); } - + final String sqlCountRows = "SELECT FOUND_ROWS()"; Object[] whereClauseItemsitems = new Object[] {}; return this.provisioningEntryDataPaginationHelper.fetchPage(this.jdbcTemplate, sqlCountRows, sqlBuilder.toString(), diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesWritePlatformService.java index 3bdebace7..196bf5b73 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesWritePlatformService.java @@ -25,10 +25,10 @@ import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; public interface ProvisioningEntriesWritePlatformService { CommandProcessingResult createProvisioningEntries(JsonCommand command); - + CommandProcessingResult reCreateProvisioningEntries(Long provisioningEntryId, JsonCommand command) ; - + CommandProcessingResult createProvisioningJournalEntries(Long provisioningEntryId, JsonCommand command); - + void generateLoanLossProvisioningAmount() ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl.java index e43451e66..86a38ee2c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl.java @@ -79,7 +79,7 @@ public class ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl implements private final JournalEntryWritePlatformService journalEntryWritePlatformService; private final ProvisioningEntriesDefinitionJsonDeserializer fromApiJsonDeserializer; private final FromJsonHelper fromApiJsonHelper; - + @Autowired public ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl( final ProvisioningEntriesReadPlatformService provisioningEntriesReadPlatformService, @@ -120,11 +120,11 @@ public class ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl implements existingEntryData.getId(), PortfolioProductType.PROVISIONING.getValue()); } if(requestedEntry.getLoanProductProvisioningEntries() == null || requestedEntry.getLoanProductProvisioningEntries().size() == 0) { - requestedEntry.setJournalEntryCreated(Boolean.FALSE); + requestedEntry.setJournalEntryCreated(Boolean.FALSE); }else { requestedEntry.setJournalEntryCreated(Boolean.TRUE); } - + this.provisioningEntryRepository.save(requestedEntry); this.journalEntryWritePlatformService.createProvisioningJournalEntries(requestedEntry); } @@ -156,7 +156,7 @@ public class ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl implements Date currentDate = DateUtils.getLocalDateOfTenant().toDate() ; boolean addJournalEntries = true; try { - Collection criteriaCollection = this.provisioningCriteriaReadPlatformService.retrieveAllProvisioningCriterias() ; + Collection criteriaCollection = this.provisioningCriteriaReadPlatformService.retrieveAllProvisioningCriterias() ; if(criteriaCollection == null || criteriaCollection.size() == 0){ return ; //FIXME: Do we need to throw NoProvisioningCriteriaDefinitionFound()? @@ -171,7 +171,7 @@ public class ProvisioningEntriesWritePlatformServiceJpaRepositoryImpl implements Date createdDate = parseDate(command); boolean addJournalEntries = isJournalEntriesRequired(command); try { - Collection criteriaCollection = this.provisioningCriteriaReadPlatformService.retrieveAllProvisioningCriterias() ; + Collection criteriaCollection = this.provisioningCriteriaReadPlatformService.retrieveAllProvisioningCriterias() ; if(criteriaCollection == null || criteriaCollection.size() == 0){ throw new NoProvisioningCriteriaDefinitionFound() ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/data/AccountingRuleData.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/data/AccountingRuleData.java index 1acd5a1c9..320e203be 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/data/AccountingRuleData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/data/AccountingRuleData.java @@ -29,7 +29,7 @@ import org.apache.fineract.organisation.office.data.OfficeData; /** * Immutable object representing a General Ledger Account - * + * * Note: no getter/setters required as google-gson will produce json from fields * of object. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/api/AdHocApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/api/AdHocApiResource.java index 2fbc7ccf4..3eb1d1170 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/api/AdHocApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/api/AdHocApiResource.java @@ -62,9 +62,9 @@ public class AdHocApiResource { /** * The set of parameters that are supported in response for {@link AdhocData} - */ + */ private final Set RESPONSE_DATA_PARAMETERS = new HashSet<>(Arrays.asList("id", "name", "query", "tableName","tableField","isActive","createdBy","createdOn","createdById","updatedById","updatedOn","email")); - + private final PlatformSecurityContext context; private final AdHocReadPlatformService adHocReadPlatformService; private final DefaultToApiJsonSerializer toApiJsonSerializer; @@ -87,7 +87,7 @@ public class AdHocApiResource { @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) public String retrieveAll(@Context final UriInfo uriInfo) { - + this.context.authenticatedUser(); final Collection adhocs = this.adHocReadPlatformService.retrieveAllAdHocQuery(); final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); @@ -149,7 +149,7 @@ public class AdHocApiResource { } /** * Delete AdHocQuery - * + * * @param adHocId * @return */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/api/AdHocJsonInputParams.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/api/AdHocJsonInputParams.java index a797a0f98..a20b11005 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/api/AdHocJsonInputParams.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/api/AdHocJsonInputParams.java @@ -22,7 +22,7 @@ import java.util.HashSet; import java.util.Set; /*** - * Enum of all parameters passed in while creating/updating a AdHocQuery + * Enum of all parameters passed in while creating/updating a AdHocQuery ***/ public enum AdHocJsonInputParams { ID("id"), NAME("name"),QUERY("query"),TABLENAME("tableName"), TABLEFIELDS("tableFields"), ISACTIVE("isActive"), diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/data/AdHocData.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/data/AdHocData.java index f0b217469..69d56baae 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/data/AdHocData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/data/AdHocData.java @@ -28,7 +28,7 @@ import java.util.stream.Collectors; /** * Immutable data object represent note or case information AdHocData - * + * */ public class AdHocData { @@ -53,12 +53,12 @@ public class AdHocData { @SuppressWarnings("unused") private final Long createdById; @SuppressWarnings("unused") - private final Long updatedById; + private final Long updatedById; @SuppressWarnings("unused") private final DateTime updatedOn; @SuppressWarnings("unused") private final String createdBy; - + private final List reportRunFrequencies; private final Long reportRunFrequency; diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/domain/AdHoc.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/domain/AdHoc.java index fab80d313..19ae048c3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/domain/AdHoc.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/domain/AdHoc.java @@ -40,17 +40,17 @@ public class AdHoc extends AbstractAuditableCustom { @Column(name = "name", length = 100) private String name; - + @Column(name = "query", length = 2000) private String query; - + @Column(name = "table_name", length = 100) private String tableName; - - + + @Column(name = "table_fields", length = 2000) private String tableFields; - + @Column(name = "email", length = 500) private String email; @@ -62,7 +62,7 @@ public class AdHoc extends AbstractAuditableCustom { @Column(name = "IsActive", nullable = false) private boolean isActive = false; - + private AdHoc(final String name, final String query,final String tableName,final String tableFields ,final String email, final Long reportRunFrequency, final Long reportRunEvery, final boolean isActive) { this.name = StringUtils.defaultIfEmpty(name, null); this.query=StringUtils.defaultIfEmpty(query,null); @@ -72,13 +72,13 @@ public class AdHoc extends AbstractAuditableCustom { this.reportRunFrequency = reportRunFrequency; this.reportRunEvery = reportRunEvery; this.isActive = BooleanUtils.toBooleanDefaultIfNull(isActive, false); - + } public static AdHoc fromJson(final JsonCommand command) { final String name = command.stringValueOfParameterNamed(AdHocJsonInputParams.NAME.getValue()); - + String commandQuery=command.stringValueOfParameterNamed(AdHocJsonInputParams.QUERY.getValue()); - + SQLInjectionValidator.validateAdhocQuery(commandQuery); final String query = commandQuery; final String tableName = command.stringValueOfParameterNamed(AdHocJsonInputParams.TABLENAME.getValue()); @@ -89,7 +89,7 @@ public class AdHoc extends AbstractAuditableCustom { final boolean isActive = command.booleanPrimitiveValueOfParameterNamed(AdHocJsonInputParams.ISACTIVE.getValue()); return new AdHoc(name,query,tableName,tableFields, email, reportRunFrequency, reportRunEvery, isActive); } - + public Map update(final JsonCommand command) { final Map actualChanges = new LinkedHashMap<>(7); @@ -145,7 +145,7 @@ public class AdHoc extends AbstractAuditableCustom { } return actualChanges; } - + public String getName() { return name; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocDataValidator.java index 9cb13e8ce..1a909d81a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocDataValidator.java @@ -72,10 +72,10 @@ public final class AdHocDataValidator { final String description = this.fromApiJsonHelper.extractStringNamed("query", element); baseDataValidator.reset().parameter("query").value(description).notBlank().notExceedingLengthOf(2000); - + final String tableName = this.fromApiJsonHelper.extractStringNamed("tableName", element); baseDataValidator.reset().parameter("tableName").value(tableName).notBlank().notExceedingLengthOf(100); - + final String tableFields = this.fromApiJsonHelper.extractStringNamed("tableFields", element); baseDataValidator.reset().parameter("tableFields").value(tableFields).notBlank().notExceedingLengthOf(1000); @@ -141,7 +141,7 @@ public final class AdHocDataValidator { final Integer isActive = this.fromApiJsonHelper.extractIntegerNamed("isActive", element, Locale.getDefault()); baseDataValidator.reset().parameter("isActive").value(isActive).notNull().inMinMaxRange(1, 2); }*/ - + throwExceptionIfValidationWarningsExist(dataValidationErrors); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformService.java index 414a2b2af..3529f1012 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformService.java @@ -30,5 +30,5 @@ public interface AdHocReadPlatformService { AdHocData retrieveOne(Long adHocId); AdHocData retrieveNewAdHocDetails(); - + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformServiceImpl.java index 996554dba..c82d9ce1e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformServiceImpl.java @@ -100,7 +100,7 @@ public class AdHocReadPlatformServiceImpl implements AdHocReadPlatformService { + " r.report_run_frequency_code, r.report_run_every, r.last_run, " + " r.created_date as createdDate, r.createdby_id as createdById,cb.username as createdBy,r.lastmodifiedby_id as updatedById ,r.lastmodified_date as updatedOn " + " from m_adhoc r left join m_appuser cb on cb.id=r.createdby_id left join m_appuser mb on mb.id=r.lastmodifiedby_id"; - + } } @@ -109,5 +109,5 @@ public class AdHocReadPlatformServiceImpl implements AdHocReadPlatformService { return AdHocData.template(); } - + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocScheduledJobRunnerServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocScheduledJobRunnerServiceImpl.java index 728c33d45..fc8c124d6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocScheduledJobRunnerServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocScheduledJobRunnerServiceImpl.java @@ -45,14 +45,14 @@ public class AdHocScheduledJobRunnerServiceImpl implements AdHocScheduledJobRunn private final static Logger logger = LoggerFactory.getLogger(AdHocScheduledJobRunnerServiceImpl.class); private final AdHocReadPlatformService adHocReadPlatformService; private final JdbcTemplate jdbcTemplate; - + @Autowired public AdHocScheduledJobRunnerServiceImpl(final RoutingDataSource dataSource, final AdHocReadPlatformService adHocReadPlatformService ) { this.jdbcTemplate = new JdbcTemplate(dataSource); this.adHocReadPlatformService = adHocReadPlatformService; - + } @Transactional @@ -113,13 +113,13 @@ public class AdHocScheduledJobRunnerServiceImpl implements AdHocScheduledJobRunn } else { logger.info(ThreadLocalContextUtil.getTenant().getName() + ": Skipping execution of " + adhoc.getName() + ", scheduled for execution on " + next); } - }); + }); }else{ logger.info(ThreadLocalContextUtil.getTenant().getName() + "Nothing to update "); } - - - + + + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformService.java index 23427fcff..ae467a1dd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformService.java @@ -26,7 +26,7 @@ public interface AdHocWritePlatformService { CommandProcessingResult createAdHocQuery(JsonCommand command); CommandProcessingResult updateAdHocQuery(Long adHocId, JsonCommand command); - + CommandProcessingResult deleteAdHocQuery(Long adHocId); CommandProcessingResult disableAdHocQuery(Long adHocId); diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformServiceJpaRepositoryImpl.java index 2d202e0aa..c573b9a32 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformServiceJpaRepositoryImpl.java @@ -42,7 +42,7 @@ public class AdHocWritePlatformServiceJpaRepositoryImpl implements AdHocWritePla private final PlatformSecurityContext context; private final AdHocRepository adHocRepository; private final AdHocDataValidator adHocCommandFromApiJsonDeserializer; - + @Autowired public AdHocWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, final AdHocRepository adHocRepository, @@ -50,7 +50,7 @@ public class AdHocWritePlatformServiceJpaRepositoryImpl implements AdHocWritePla this.context = context; this.adHocRepository = adHocRepository; this.adHocCommandFromApiJsonDeserializer = adHocCommandFromApiJsonDeserializer; - + } @Transactional diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/api/BatchApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/batch/api/BatchApiResource.java index c8e6800a2..514d29d94 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/api/BatchApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/api/BatchApiResource.java @@ -50,9 +50,9 @@ import org.springframework.stereotype.Component; * forwarded to BatchApiService which finally returns a list of * {@link org.apache.fineract.batch.domain.BatchResponse} type which is then * serialized into JSON response by this Resource class. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.service.BatchApiService * @see org.apache.fineract.batch.domain.BatchRequest * @see org.apache.fineract.batch.domain.BatchResponse @@ -70,11 +70,11 @@ public class BatchApiResource { private final ToApiJsonSerializer toApiJsonSerializer; private final BatchApiService service; private final BatchRequestJsonHelper batchRequestJsonHelper; - + /** * Constructs a 'BatchApiService' with context, toApiJsonSerializer, service * and batchRequestJsonHelper. - * + * * @param context * @param toApiJsonSerializer * @param service @@ -93,7 +93,7 @@ public class BatchApiResource { /** * Rest assured POST method to get {@link BatchRequest} and returns back the * consolidated {@link BatchResponse} - * + * * @param jsonRequestString * @param enclosingTransaction * @param uriInfo diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandContext.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandContext.java index 298f2a85b..0e2a279d7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandContext.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandContext.java @@ -22,16 +22,16 @@ package org.apache.fineract.batch.command; * Provides an object to {@link org.apache.fineract.batch.service.BatchApiService} * to get the proper commandStrategy for each request in BatchRequest. It uses * Builder pattern to create object of this type. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.service.BatchApiService */ public class CommandContext { /** * Static Builder class to provide a Build method for CommandContext. - * + * * @author Rishabh Shukla */ public static class Builder { @@ -72,7 +72,7 @@ public class CommandContext { * keys in the available commandStrategies. It take CommandContext object as * parameter which contains a 'resource' member as a regex key for available * commandStrategies. - * + * * @param other * @return boolean */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandStrategy.java index 2b7740827..c58270830 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandStrategy.java @@ -26,9 +26,9 @@ import org.apache.fineract.batch.domain.BatchResponse; /** * An interface for various Command Strategies. It contains a single function * which returns appropriate response from a particular command strategy. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.command.internal.UnknownCommandStrategy */ public interface CommandStrategy { @@ -38,7 +38,7 @@ public interface CommandStrategy { * {@link org.apache.fineract.batch.domain.BatchResponse}. This takes * {@link org.apache.fineract.batch.domain.BatchRequest} as it's single * argument and provides appropriate response. - * + * * @param batchRequest * @param uriInfo * @return BatchResponse diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandStrategyProvider.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandStrategyProvider.java index 8a95fd84a..c4fcbd095 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandStrategyProvider.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandStrategyProvider.java @@ -28,9 +28,9 @@ import org.springframework.stereotype.Component; /** * Provides an appropriate CommandStrategy using the 'method' and 'resourceUrl'. * CommandStrategy bean is created using Spring Application Context. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.command.internal.UnknownCommandStrategy */ @Component @@ -44,7 +44,7 @@ public class CommandStrategyProvider { * type. It also initialize commandStrategies using init() function by * filling it with available CommandStrategies in * {@link org.apache.fineract.batch.command.internal}. - * + * * @param applicationContext */ @Autowired @@ -60,7 +60,7 @@ public class CommandStrategyProvider { * Returns an appropriate commandStrategy after determining it using the * CommandContext of the request. If no such Strategy is found then a * default strategy is returned back. - * + * * @param commandContext * @return CommandStrategy * @see org.apache.fineract.batch.command.internal.UnknownCommandStrategy diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ActivateClientCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ActivateClientCommandStrategy.java index c64b73f5b..48834a930 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ActivateClientCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ActivateClientCommandStrategy.java @@ -37,9 +37,9 @@ import org.springframework.stereotype.Component; * back the response. This class will also catch any errors raised by * {@link org.apache.fineract.portfolio.client.api.ClientsApiResource} and map * those errors to appropriate status codes in BatchResponse. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.command.CommandStrategy * @see org.apache.fineract.batch.domain.BatchRequest * @see org.apache.fineract.batch.domain.BatchResponse @@ -62,7 +62,7 @@ public class ActivateClientCommandStrategy implements CommandStrategy { response.setRequestId(request.getRequestId()); response.setHeaders(request.getHeaders()); - + final String[] pathParameters = request.getRelativeUrl().split("/"); Long clientId = Long.parseLong(pathParameters[1].substring(0, pathParameters[1].indexOf("?"))); diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApplyLoanCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApplyLoanCommandStrategy.java index 4901d2982..cc6804771 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApplyLoanCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApplyLoanCommandStrategy.java @@ -37,9 +37,9 @@ import org.springframework.stereotype.Component; * the response. This class will also catch any errors raised by * {@link org.apache.fineract.portfolio.loanaccount.api.LoansApiResource} and map those * errors to appropriate status codes in BatchResponse. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.command.CommandStrategy * @see org.apache.fineract.batch.domain.BatchRequest * @see org.apache.fineract.batch.domain.BatchResponse diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApplySavingsCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApplySavingsCommandStrategy.java index 36456b3bf..f0a7b5c7b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApplySavingsCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApplySavingsCommandStrategy.java @@ -37,9 +37,9 @@ import org.springframework.stereotype.Component; * gets back the response. This class will also catch any errors raised by * {@link org.apache.fineract.portfolio.savings.api.SavingsAccountsApiResource} and * map those errors to appropriate status codes in BatchResponse. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.command.CommandStrategy * @see org.apache.fineract.batch.domain.BatchRequest * @see org.apache.fineract.batch.domain.BatchResponse diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApproveLoanCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApproveLoanCommandStrategy.java index bd7ef146e..8fa00f254 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApproveLoanCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApproveLoanCommandStrategy.java @@ -37,9 +37,9 @@ import org.springframework.stereotype.Component; * back the response. This class will also catch any errors raised by * {@link org.apache.fineract.portfolio.loanaccount.api.LoansApiResource} and map * those errors to appropriate status codes in BatchResponse. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.command.CommandStrategy * @see org.apache.fineract.batch.domain.BatchRequest * @see org.apache.fineract.batch.domain.BatchResponse @@ -62,14 +62,14 @@ public class ApproveLoanCommandStrategy implements CommandStrategy { response.setRequestId(request.getRequestId()); response.setHeaders(request.getHeaders()); - + final String[] pathParameters = request.getRelativeUrl().split("/"); Long loanId = Long.parseLong(pathParameters[1].substring(0, pathParameters[1].indexOf("?"))); // Try-catch blocks to map exceptions to appropriate status codes try { - // Calls 'approve' function from 'LoansApiResource' to approve a loan + // Calls 'approve' function from 'LoansApiResource' to approve a loan responseBody = loansApiResource.stateTransitions(loanId, "approve", request.getBody()); response.setStatusCode(200); diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CollectChargesCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CollectChargesCommandStrategy.java index 37294ab28..dc8b79579 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CollectChargesCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CollectChargesCommandStrategy.java @@ -37,9 +37,9 @@ import org.springframework.stereotype.Component; * gets back the response. This class will also catch any errors raised by * {@link org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource} and map * those errors to appropriate status codes in BatchResponse. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.command.CommandStrategy * @see org.apache.fineract.batch.domain.BatchRequest * @see org.apache.fineract.batch.domain.BatchResponse diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateChargeCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateChargeCommandStrategy.java index eaa264dac..80ee88007 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateChargeCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateChargeCommandStrategy.java @@ -36,9 +36,9 @@ import org.springframework.stereotype.Component; * gets back the response. This class will also catch any errors raised by * {@link org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource} and map * those errors to appropriate status codes in BatchResponse. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.command.CommandStrategy * @see org.apache.fineract.batch.domain.BatchRequest * @see org.apache.fineract.batch.domain.BatchResponse diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateClientCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateClientCommandStrategy.java index cb4993e5c..af0bc0c7a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateClientCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateClientCommandStrategy.java @@ -37,9 +37,9 @@ import org.springframework.stereotype.Component; * back the response. This class will also catch any errors raised by * {@link org.apache.fineract.portfolio.client.api.ClientsApiResource} and map * those errors to appropriate status codes in BatchResponse. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.command.CommandStrategy * @see org.apache.fineract.batch.domain.BatchRequest * @see org.apache.fineract.batch.domain.BatchResponse diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DisburseLoanCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DisburseLoanCommandStrategy.java index bcff2e998..409f0a05a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DisburseLoanCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DisburseLoanCommandStrategy.java @@ -37,9 +37,9 @@ import org.springframework.stereotype.Component; * back the response. This class will also catch any errors raised by * {@link org.apache.fineract.portfolio.loanaccount.api.LoansApiResource} and map * those errors to appropriate status codes in BatchResponse. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.command.CommandStrategy * @see org.apache.fineract.batch.domain.BatchRequest * @see org.apache.fineract.batch.domain.BatchResponse @@ -62,18 +62,18 @@ public class DisburseLoanCommandStrategy implements CommandStrategy { response.setRequestId(request.getRequestId()); response.setHeaders(request.getHeaders()); - + final String[] pathParameters = request.getRelativeUrl().split("/"); Long loanId = Long.parseLong(pathParameters[1].substring(0, pathParameters[1].indexOf("?"))); // Try-catch blocks to map exceptions to appropriate status codes try { - // Calls 'disburse' function from 'LoansApiResource' to disburse a loan + // Calls 'disburse' function from 'LoansApiResource' to disburse a loan responseBody = loansApiResource.stateTransitions(loanId, "disburse", request.getBody()); response.setStatusCode(200); - + // Sets the body of the response after the successful disbursal of the loan response.setBody(responseBody); diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UnknownCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UnknownCommandStrategy.java index 5edd01062..369dd8815 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UnknownCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UnknownCommandStrategy.java @@ -29,7 +29,7 @@ import org.springframework.stereotype.Component; * Provides a default CommandStrategy by implementing * {@link org.apache.fineract.batch.command.CommandStrategy} in case there is no * appropriate command strategy with requested 'method' and 'resoureUrl'. - * + * * @author Rishabh Shukla */ @Component diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateClientCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateClientCommandStrategy.java index 82cdc537b..6ec26dc12 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateClientCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateClientCommandStrategy.java @@ -37,9 +37,9 @@ import org.springframework.stereotype.Component; * back the response. This class will also catch any errors raised by * {@link org.apache.fineract.portfolio.client.api.ClientsApiResource} and map * those errors to appropriate status codes in BatchResponse. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.command.CommandStrategy * @see org.apache.fineract.batch.domain.BatchRequest * @see org.apache.fineract.batch.domain.BatchResponse diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/domain/BatchRequest.java b/fineract-provider/src/main/java/org/apache/fineract/batch/domain/BatchRequest.java index 9a7fc5db4..b5a48ecc1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/domain/BatchRequest.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/domain/BatchRequest.java @@ -25,9 +25,9 @@ import java.util.Set; * API. A requestId is also included as data field which takes care of * dependency issues among various requests. This class also provides getter and * setter functions to access Batch Request data fields. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.api.BatchApiResource * @see Header */ @@ -43,7 +43,7 @@ public class BatchRequest { /** * Constructs a 'BatchRequest' with requestId, relativeUrl, method, headers, * reference and body of the incoming request. - * + * * @param requestId * of HTTP request. * @param relativeUrl @@ -56,7 +56,7 @@ public class BatchRequest { * of HTTP request. * @param body * of HTTP request. - * + * * @see Header */ public BatchRequest(Long requestId, String relativeUrl, String method, Set
headers, Long reference, String body) { @@ -78,7 +78,7 @@ public class BatchRequest { /** * Returns the value of 'requestId' of an object of this class. - * + * * @return requestId of the HTTP request. */ public Long getRequestId() { @@ -87,7 +87,7 @@ public class BatchRequest { /** * Sets the value of 'requestId' of an object of this class. - * + * * @param requestId */ public void setRequestId(Long requestId) { @@ -96,7 +96,7 @@ public class BatchRequest { /** * Returns the value of 'relativeUrl' of an object of this class. - * + * * @return relativeUrl of the HTTP request. */ public String getRelativeUrl() { @@ -105,7 +105,7 @@ public class BatchRequest { /** * Sets the value of 'relativeUrl' of an object of this class. - * + * * @param relativeUrl */ public void setRelativeUrl(String relativeUrl) { @@ -114,7 +114,7 @@ public class BatchRequest { /** * Returns the value of 'method' of an object of this class. - * + * * @return method of the HTTP request. */ public String getMethod() { @@ -123,7 +123,7 @@ public class BatchRequest { /** * Sets the value of 'method' of the object of this class. - * + * * @param method */ public void setMethod(String method) { @@ -133,7 +133,7 @@ public class BatchRequest { /** * Returns the values of 'headers' of {@link Header} type of an object of * this class. - * + * * @return headers of the HTTP request. * @see Header */ @@ -144,7 +144,7 @@ public class BatchRequest { /** * Sets the values of 'headers' of {@link Header} type of an object of this * class. - * + * * @param headers * @see Header */ @@ -154,7 +154,7 @@ public class BatchRequest { /** * Returns the value of 'reference' of an object of this class - * + * * @return reference of the HTTP request */ public Long getReference() { @@ -163,7 +163,7 @@ public class BatchRequest { /** * Sets the value of 'reference' of an object of this class. - * + * * @param reference */ public void setReference(Long reference) { @@ -172,7 +172,7 @@ public class BatchRequest { /** * Returns the value of 'body' of an object of this class. - * + * * @return body of the HTTP request. */ public String getBody() { @@ -181,7 +181,7 @@ public class BatchRequest { /** * Sets the value of 'body' of an object of this class. - * + * * @param body */ public void setBody(String body) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/domain/BatchResponse.java b/fineract-provider/src/main/java/org/apache/fineract/batch/domain/BatchResponse.java index 439e99bea..faf83b649 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/domain/BatchResponse.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/domain/BatchResponse.java @@ -25,9 +25,9 @@ import java.util.Set; * Batch API. It contains all the information about a particular HTTP response * in the Batch Response. Getter and Setter functions are also included to * access response data fields. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.api.BatchApiResource * @see org.apache.fineract.batch.service.BatchApiService * @see Header @@ -42,7 +42,7 @@ public class BatchResponse { /** * Constructs a 'BatchResponse' with requestId, statusCode, headers and body * of the HTTP requests. - * + * * @param requestId * @param statusCode * @param headers @@ -65,7 +65,7 @@ public class BatchResponse { /** * Returns the 'requestId' of an object of this class. - * + * * @return requestId of the HTTP request. */ public Long getRequestId() { @@ -74,7 +74,7 @@ public class BatchResponse { /** * Sets the value of 'requestId' of an object of this class. - * + * * @param requestId */ public void setRequestId(Long requestId) { @@ -83,7 +83,7 @@ public class BatchResponse { /** * Returns the 'statusCode' of an object of this class. - * + * * @return statusCode of the HTTP request. */ public Integer getStatusCode() { @@ -92,7 +92,7 @@ public class BatchResponse { /** * Sets the value of 'statusCode' of an object of this class. - * + * * @param statusCode */ public void setStatusCode(Integer statusCode) { @@ -101,7 +101,7 @@ public class BatchResponse { /** * Returns the 'headers' of {@link Header} type of an object of this class. - * + * * @return headers of the HTTP request. * @see Header */ @@ -112,7 +112,7 @@ public class BatchResponse { /** * Sets the value of 'headers' of {@link Header} type of an object of this * class. - * + * * @param headers * of {@link Header} Type * @see Header @@ -123,7 +123,7 @@ public class BatchResponse { /** * Returns the 'body' of an object of this class. - * + * * @return body of the HTTP request. */ public String getBody() { @@ -132,7 +132,7 @@ public class BatchResponse { /** * Sets the value of 'body' of an object of this class. - * + * * @param body */ public void setBody(String body) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/domain/Header.java b/fineract-provider/src/main/java/org/apache/fineract/batch/domain/Header.java index 992f5ec74..a3c029efe 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/domain/Header.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/domain/Header.java @@ -22,9 +22,9 @@ package org.apache.fineract.batch.domain; * Provides an object to handle HTTP headers as name and value pairs for Batch * API. It is used in {@link BatchRequest} and {@link BatchResponse} to store * the information regarding the headers in incoming and outgoing JSON Strings. - * + * * @author Rishabh Shukla - * + * * @see BatchRequest * @see BatchResponse */ @@ -35,7 +35,7 @@ public class Header { /** * Constructs a 'Header' with the name and value of HTTP headers. - * + * * @param name * of the HTTP header. * @param value @@ -55,7 +55,7 @@ public class Header { /** * Returns the 'name' data field of the object of this class. - * + * * @return name data field of this class */ public String getName() { @@ -64,7 +64,7 @@ public class Header { /** * Sets 'name' data field of this class. - * + * * @param name */ public void setName(String name) { @@ -73,7 +73,7 @@ public class Header { /** * Returns the 'value' data field of the object of this class. - * + * * @return value data field of this class */ public String getValue() { @@ -82,7 +82,7 @@ public class Header { /** * Sets 'value' data field of this class. - * + * * @param value */ public void setValue(String value) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/exception/ErrorHandler.java b/fineract-provider/src/main/java/org/apache/fineract/batch/exception/ErrorHandler.java index 0730d84d1..d5646b991 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/exception/ErrorHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/exception/ErrorHandler.java @@ -44,9 +44,9 @@ import com.google.gson.GsonBuilder; * class uses various subclasses of RuntimeException to check the kind of * exception raised and provide appropriate status and error codes for each one * of the raised exception. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.command.CommandStrategy * @see org.apache.fineract.batch.command.internal.CreateClientCommandStrategy */ @@ -64,7 +64,7 @@ public class ErrorHandler extends RuntimeException { /** * Returns an object of ErrorInfo type containing the information regarding * the raised error. - * + * * @param exception * @return ErrorInfo */ @@ -110,14 +110,14 @@ public class ErrorHandler extends RuntimeException { final String errorBody = jsonHelper.toJson(mapper.toResponse((LinkedAccountRequiredException) exception).getEntity()); return new ErrorInfo(403, 3002, errorBody); - + } else if (exception instanceof MultiDisbursementDataRequiredException) { final PlatformDomainRuleExceptionMapper mapper = new PlatformDomainRuleExceptionMapper(); final String errorBody = jsonHelper.toJson(mapper.toResponse((MultiDisbursementDataRequiredException) exception).getEntity()); return new ErrorInfo(403, 3003, errorBody); - + } else if (exception instanceof TransactionException) { return new ErrorInfo(400, 4001, "{\"Exception\": " + exception.getMessage()+"}"); diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/exception/ErrorInfo.java b/fineract-provider/src/main/java/org/apache/fineract/batch/exception/ErrorInfo.java index 1f320f6f1..f1d34f003 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/exception/ErrorInfo.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/exception/ErrorInfo.java @@ -21,9 +21,9 @@ package org.apache.fineract.batch.exception; /** * Provides members to hold the basic information about the exceptions raised in * commandStrategy classes. - * + * * @author Rishabh Shukla - * + * * @see ErrorHandler */ public final class ErrorInfo { @@ -34,7 +34,7 @@ public final class ErrorInfo { /** * Constructor to initialize the members of this class. - * + * * @param statusCode * @param errorCode * @param message @@ -55,7 +55,7 @@ public final class ErrorInfo { /** * Getter method to provide the statusCode for an object of this type. - * + * * @return Integer */ public Integer getStatusCode() { @@ -64,7 +64,7 @@ public final class ErrorInfo { /** * Setter method to set the statusCode for an object of this type. - * + * * @param statusCode */ public void setStatusCode(final Integer statusCode) { @@ -73,7 +73,7 @@ public final class ErrorInfo { /** * Getter method to provide the errorCode for an object of this type. - * + * * @return Integer */ public Integer getErrorCode() { @@ -82,7 +82,7 @@ public final class ErrorInfo { /** * Setter method to set the errorCode for an object of this type. - * + * * @param errorCode */ public void setErrorCode(final Integer errorCode) { @@ -92,7 +92,7 @@ public final class ErrorInfo { /** * Getter method to provide the message of the error for an object of this * type. - * + * * @return String */ public String getMessage() { @@ -101,7 +101,7 @@ public final class ErrorInfo { /** * Setter method to set the message of the error for an object of this type. - * + * * @param message */ public void setMessage(final String message) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/serialization/BatchRequestJsonHelper.java b/fineract-provider/src/main/java/org/apache/fineract/batch/serialization/BatchRequestJsonHelper.java index c0fd136ad..229f7f81b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/serialization/BatchRequestJsonHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/serialization/BatchRequestJsonHelper.java @@ -32,9 +32,9 @@ import com.google.gson.reflect.TypeToken; * {@link org.apache.fineract.infrastructure.core.serialization.FromJsonHelper} to * de-serialize the incoming String into a JSON List of type * {@link org.apache.fineract.batch.domain.BatchRequest} - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.domain.BatchRequest * @see org.apache.fineract.infrastructure.core.serialization.FromJsonHelper */ @@ -44,7 +44,7 @@ public class BatchRequestJsonHelper extends FromJsonHelper { /** * Returns a list of batchRequests after de-serializing it from the input * JSON string. - * + * * @param json * @return List<BatchRequest> */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/service/BatchApiService.java b/fineract-provider/src/main/java/org/apache/fineract/batch/service/BatchApiService.java index 29aeb0b09..c1ca205f1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/service/BatchApiService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/service/BatchApiService.java @@ -28,9 +28,9 @@ import org.apache.fineract.batch.domain.BatchResponse; /** * Provides an interface for service class, that implements the method to handle * separate Batch Requests. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.domain.BatchRequest * @see org.apache.fineract.batch.domain.BatchResponse * @see BatchApiServiceImpl @@ -42,7 +42,7 @@ public interface BatchApiService { * by getting the appropriate CommandStrategy for every * {@link org.apache.fineract.batch.domain.BatchRequest}. It will be used when * the Query Parameter "enclosingTransaction "is set to 'false'. - * + * * @param requestList * @param uriInfo * @return List<BatchResponse> @@ -56,7 +56,7 @@ public interface BatchApiService { * the Query Parameter "enclosingTransaction "is set to 'true'. If one or * more of the requests are not completed properly then whole of the * transaction will be rolled back properly. - * + * * @param requestList * @param uriInfo * @return List<BatchResponse> diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/service/BatchApiServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/batch/service/BatchApiServiceImpl.java index a5be4d12c..cafe3ebf6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/service/BatchApiServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/service/BatchApiServiceImpl.java @@ -50,9 +50,9 @@ import com.google.gson.Gson; * Implementation for {@link BatchApiService} to iterate through all the * incoming requests and obtain the appropriate CommandStrategy from * CommandStrategyProvider. - * + * * @author Rishabh Shukla - * + * * @see org.apache.fineract.batch.domain.BatchRequest * @see org.apache.fineract.batch.domain.BatchResponse * @see org.apache.fineract.batch.command.CommandStrategyProvider @@ -67,7 +67,7 @@ public class BatchApiServiceImpl implements BatchApiService { /** * Constructs a 'BatchApiServiceImpl' with an argument of * {@link org.apache.fineract.batch.command.CommandStrategyProvider} type. - * + * * @param strategyProvider * @param resolutionHelper * @param transactionTemplate @@ -84,7 +84,7 @@ public class BatchApiServiceImpl implements BatchApiService { * Returns the response list by getting a proper * {@link org.apache.fineract.batch.command.CommandStrategy}. execute() method * of acquired commandStrategy is then provided with the separate Request. - * + * * @param requestList * @param uriInfo * @return List diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/service/ResolutionHelper.java b/fineract-provider/src/main/java/org/apache/fineract/batch/service/ResolutionHelper.java index 25932b4b5..c6cdc94ee 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/service/ResolutionHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/service/ResolutionHelper.java @@ -37,7 +37,7 @@ import com.jayway.jsonpath.JsonModel; * Provides methods to create dependency map among the various batchRequests. It * also provides method that takes care of dependency resolution among related * requests. - * + * * @author Rishabh Shukla * @see BatchApiServiceImpl */ @@ -46,9 +46,9 @@ public class ResolutionHelper { /** * Provides a Node like object for the request tree. - * + * * @author Rishabh shukla - * + * */ public class BatchRequestNode { @@ -89,7 +89,7 @@ public class ResolutionHelper { * dependency relations among them. Each different list is identified with a * "Key" which is the "requestId" of the request at topmost level in * dependency hierarchy of that particular list. - * + * * @param batchRequests * @return List<ArrayList<BatchRequestNode>> */ @@ -126,7 +126,7 @@ public class ResolutionHelper { * and the response of the request it is dependent upon as its arguments and * change the body or relativeUrl of the request according to parent * Request. - * + * * @param request * @param parentResponse * @return BatchRequest @@ -164,9 +164,9 @@ public class ResolutionHelper { queryParams = relativeUrl.substring(relativeUrl.indexOf("?")); relativeUrl = relativeUrl.substring(0, relativeUrl.indexOf("?")); } - + final String[] parameters = relativeUrl.split("/"); - + for (String parameter : parameters) { if (parameter.contains("$.")) { final String resParamValue = responseJsonModel.get(parameter).toString(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/commands/domain/CommandSource.java b/fineract-provider/src/main/java/org/apache/fineract/commands/domain/CommandSource.java index 06b04b13e..a0055fb1f 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/commands/domain/CommandSource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/commands/domain/CommandSource.java @@ -92,13 +92,13 @@ public class CommandSource extends AbstractPersistableCustom { @Column(name = "product_id") private Long productId; - + @Column(name = "transaction_id", length = 100) private String transactionId; - + @Column(name="creditbureau_id") private Long creditBureauId; - + @Column(name="organisation_creditbureau_id") private Long organisationCreditBureauId; @@ -126,21 +126,21 @@ public class CommandSource extends AbstractPersistableCustom { return this.creditBureauId; } - + public void setCreditBureauId(Long creditBureauId) { this.creditBureauId = creditBureauId; } - + public Long getOrganisationCreditBureauId() { return this.organisationCreditBureauId; } - + public void setOrganisationCreditBureauId(Long OrganisationCreditBureauId) { this.organisationCreditBureauId = OrganisationCreditBureauId; } - + public void markAsChecked(final AppUser checker, final DateTime checkedOnDate) { this.checker = checker; this.checkedOnDate = checkedOnDate.toDate(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/commands/domain/CommandWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/commands/domain/CommandWrapper.java index 4590ba2c2..a9cc534f3 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/commands/domain/CommandWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/commands/domain/CommandWrapper.java @@ -130,11 +130,11 @@ public class CommandWrapper { this.creditBureauId=creditBureauId; this.organisationCreditBureauId=organisationCreditBureauId; } - + public Long getCreditBureauId() { return this.creditBureauId; } - + public Long getOrganisationCreditBureauId() { return this.organisationCreditBureauId; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/commands/exception/RollbackTransactionAsCommandIsNotApprovedByCheckerException.java b/fineract-provider/src/main/java/org/apache/fineract/commands/exception/RollbackTransactionAsCommandIsNotApprovedByCheckerException.java index c0b44bdbc..71fea23fb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/commands/exception/RollbackTransactionAsCommandIsNotApprovedByCheckerException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/commands/exception/RollbackTransactionAsCommandIsNotApprovedByCheckerException.java @@ -25,10 +25,10 @@ public class RollbackTransactionAsCommandIsNotApprovedByCheckerException extends /** * When maker-checker is configured globally and also for the current * transaction. - * + * * An initial save determines if there are any integrity rule or data * problems. - * + * * If there isn't... and the transaction is from a maker... then this roll * back is issued and the commandSourceResult is used to write the audit * entry. diff --git a/fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java index c30899801..581c6d082 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java @@ -207,7 +207,7 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService { String updatedExtraCriteria = ""; if (StringUtils.isNotBlank(extraCriteria)) { - updatedExtraCriteria = " where (" + extraCriteria + ")"; + updatedExtraCriteria = " where (" + extraCriteria + ")"; } final AuditMapper rm = new AuditMapper(); @@ -259,7 +259,7 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService { final AuditMapper rm = new AuditMapper(); String sql = "select " + rm.schema(includeJson, hierarchy); - + Boolean isLimitedChecker = false; if (useType.equals("makerchecker")) { if (currentUser.hasNotPermissionForAnyOf("ALL_FUNCTIONS", "CHECKER_SUPER_USER")) { @@ -275,7 +275,7 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService { sql += extraCriteria; if(isExtraCritereaIncluded){ this.columnValidator.validateSqlInjection(sql, extraCriteria); - } + } logger.info("sql: " + sql); return this.jdbcTemplate.query(sql, rm, new Object[] {}); diff --git a/fineract-provider/src/main/java/org/apache/fineract/commands/service/CommandProcessingService.java b/fineract-provider/src/main/java/org/apache/fineract/commands/service/CommandProcessingService.java index 01a7a72ff..e510cbc87 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/commands/service/CommandProcessingService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/commands/service/CommandProcessingService.java @@ -29,7 +29,7 @@ public interface CommandProcessingService { CommandProcessingResult processAndLogCommand(CommandWrapper wrapper, JsonCommand command, boolean isApprovedByChecker); CommandProcessingResult logCommand(CommandSource commandSourceResult); - + boolean validateCommand(final CommandWrapper commandWrapper,final AppUser user); } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java b/fineract-provider/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java index daee0818e..72bb97ac9 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java +++ b/fineract-provider/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java @@ -44,14 +44,14 @@ public class CommandWrapperBuilder { private Long templateId; private Long creditBureauId; private Long organisationCreditBureauId; - + public CommandWrapper build() { return new CommandWrapper(this.officeId, this.groupId, this.clientId, this.loanId, this.savingsId, this.actionName, this.entityName, this.entityId, this.subentityId, this.href, this.json, this.transactionId, this.productId, this.templateId,this.creditBureauId,this.organisationCreditBureauId); } - + public CommandWrapperBuilder updateCreditBureau() { this.actionName = "UPDATE"; this.entityName = "ORGANISATIONCREDITBUREAU"; @@ -59,7 +59,7 @@ public class CommandWrapperBuilder { this.href = "/creditBureauConfiguration/template"; return this; } - + public CommandWrapperBuilder updateCreditBureauLoanProductMapping() { this.actionName = "UPDATE"; this.entityName = "CREDITBUREAU_LOANPRODUCT_MAPPING"; @@ -67,7 +67,7 @@ public class CommandWrapperBuilder { this.href = "/creditBureauConfiguration/template"; return this; } - + public CommandWrapperBuilder addOrganisationCreditBureau(final long organisationCreditBureauId) { this.actionName = "CREATE"; this.entityName = "ORGANISATIONCREDITBUREAU"; @@ -76,7 +76,7 @@ public class CommandWrapperBuilder { this.organisationCreditBureauId=organisationCreditBureauId; return this; } - + public CommandWrapperBuilder createCreditBureauLoanProductMapping(final long CreditBureauId) { this.actionName = "CREATE"; this.entityName = "CREDITBUREAU_LOANPRODUCT_MAPPING"; @@ -85,7 +85,7 @@ public class CommandWrapperBuilder { this.creditBureauId=CreditBureauId; return this; } - + public CommandWrapperBuilder addClientAddress(final long clientId,final long addressTypeId) { this.actionName = "CREATE"; this.entityName = "ADDRESS"; @@ -94,7 +94,7 @@ public class CommandWrapperBuilder { this.clientId=clientId; return this; } - + public CommandWrapperBuilder updateClientAddress(final long clientId) { this.actionName = "UPDATE"; this.entityName = "ADDRESS"; @@ -102,8 +102,8 @@ public class CommandWrapperBuilder { this.clientId=clientId; return this; } - - + + public CommandWrapperBuilder addFamilyMembers(final long clientId) { this.actionName = "CREATE"; this.entityName = "FAMILYMEMBERS"; @@ -111,7 +111,7 @@ public class CommandWrapperBuilder { this.clientId=clientId; return this; } - + public CommandWrapperBuilder updateFamilyMembers(final long familyMemberId) { this.actionName = "UPDATE"; this.entityName = "FAMILYMEMBERS"; @@ -119,7 +119,7 @@ public class CommandWrapperBuilder { this.entityId=familyMemberId; return this; } - + public CommandWrapperBuilder deleteFamilyMembers(final long familyMemberId) { this.actionName = "DELETE"; this.entityName = "FAMILYMEMBERS"; @@ -127,7 +127,7 @@ public class CommandWrapperBuilder { this.entityId=familyMemberId; return this; } - + public CommandWrapperBuilder withLoanId(final Long withLoanId) { this.loanId = withLoanId; return this; @@ -2310,7 +2310,7 @@ public class CommandWrapperBuilder { this.href = "/savingsaccounts/" + accountId + "?commad=unassignSavingsOfficer"; return this; } - + public CommandWrapperBuilder SavingsInterestPostingAsOnDate(final Long accountId) { this.actionName = "POSTINTERESTASONDATE"; this.entityName = "SAVINGSACCOUNT"; @@ -2761,7 +2761,7 @@ public class CommandWrapperBuilder { this.href = "/shareproduct/" + productId + "/dividend/" + dividendId; return this; } - + public CommandWrapperBuilder deleteShareProductDividendPayoutCommand(final Long productId, final Long dividendId) { this.entityName = "SHAREPRODUCT"; this.actionName = "DELETE_DIVIDEND"; @@ -2769,7 +2769,7 @@ public class CommandWrapperBuilder { this.href = "/shareproduct/" + productId + "/dividend/" + dividendId; return this; } - + public CommandWrapperBuilder createAccountCommand(String accountType, final Long accountId, String command) { this.entityName = accountType.toUpperCase()+"ACCOUNT" ; this.actionName = command.toUpperCase(); @@ -2777,7 +2777,7 @@ public class CommandWrapperBuilder { this.href = "/accounts/" + accountType+"/"+accountId+"?command="+command; return this; } - + public CommandWrapperBuilder createTaxComponent() { this.actionName = "CREATE"; this.entityName = "TAXCOMPONENT"; @@ -2809,7 +2809,7 @@ public class CommandWrapperBuilder { this.href = "/taxes/group/" + taxGroupId; return this; } - + public CommandWrapperBuilder updateWithHoldTax(final Long accountId) { this.actionName = "UPDATEWITHHOLDTAX"; this.entityName = "SAVINGSACCOUNT"; @@ -2867,7 +2867,7 @@ public class CommandWrapperBuilder { this.href = "/reportmailingjobs"; return this; } - + public CommandWrapperBuilder updateReportMailingJob(final String entityName, final Long entityId) { this.actionName = "UPDATE"; this.entityName = entityName; @@ -2875,7 +2875,7 @@ public class CommandWrapperBuilder { this.href = "/reportmailingjobs/" + entityId; return this; } - + public CommandWrapperBuilder deleteReportMailingJob(final String entityName, final Long entityId) { this.actionName = "DELETE"; this.entityName = entityName; @@ -2883,7 +2883,7 @@ public class CommandWrapperBuilder { this.href = "/reportmailingjobs/" + entityId; return this; } - + public CommandWrapperBuilder createSmsCampaign() { this.actionName = "CREATE"; this.entityName = "SMSCAMPAIGN"; @@ -2891,7 +2891,7 @@ public class CommandWrapperBuilder { this.href = "/smscampaigns"; return this; } - + public CommandWrapperBuilder updateSmsCampaign(final Long resourceId) { this.actionName = "UPDATE"; this.entityName = "SMSCAMPAIGN"; @@ -2899,7 +2899,7 @@ public class CommandWrapperBuilder { this.href = "/smscampaigns/"+resourceId; return this; } - + public CommandWrapperBuilder activateSmsCampaign(final Long resourceId) { this.actionName = "ACTIVATE"; this.entityName = "SMSCAMPAIGN"; @@ -2922,7 +2922,7 @@ public class CommandWrapperBuilder { this.href = "/smscampaigns/"+resourceId + "?command=reactivate"; return this; } - + public CommandWrapperBuilder deleteSmsCampaign(final Long resourceId) { this.actionName = "DELETE"; this.entityName = "SMSCAMPAIGN"; @@ -3133,14 +3133,14 @@ public class CommandWrapperBuilder { this.href = "/twofactor/configure"; return this; } - + public CommandWrapperBuilder linkAccountsToPocket() { this.actionName = PocketApiConstants.linkAccountsActionName; this.entityName = PocketApiConstants.pocketEntityName; this.href = "/self/pocket?command="+PocketApiConstants.linkAccountsToPocketCommandParam; return this; } - + public CommandWrapperBuilder delinkAccountsFromPocket() { this.actionName = PocketApiConstants.delinkAccountsActionName; this.entityName = PocketApiConstants.pocketEntityName; diff --git a/fineract-provider/src/main/java/org/apache/fineract/commands/service/SynchronousCommandProcessingService.java b/fineract-provider/src/main/java/org/apache/fineract/commands/service/SynchronousCommandProcessingService.java index 64fa25dbd..fd940b6ee 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/commands/service/SynchronousCommandProcessingService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/commands/service/SynchronousCommandProcessingService.java @@ -212,7 +212,7 @@ public class SynchronousCommandProcessingService implements CommandProcessingSer final String authToken = ThreadLocalContextUtil.getAuthToken(); final String tenantIdentifier = ThreadLocalContextUtil.getTenant().getTenantIdentifier(); - final AppUser appUser = this.context.authenticatedUser(CommandWrapper.wrap(actionName, + final AppUser appUser = this.context.authenticatedUser(CommandWrapper.wrap(actionName, entityName, null, null)); final HookEventSource hookEventSource = new HookEventSource(entityName, actionName); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/data/AccountNumberFormatDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/data/AccountNumberFormatDataValidator.java index da719a244..33f138265 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/data/AccountNumberFormatDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/data/AccountNumberFormatDataValidator.java @@ -125,7 +125,7 @@ public class AccountNumberFormatDataValidator { case CENTER: validAccountNumberPrefixes = AccountNumberFormatEnumerations.accountNumberPrefixesForCenters; break; - + case GROUP: validAccountNumberPrefixes = AccountNumberFormatEnumerations.accountNumberPrefixesForGroups; break; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/domain/EntityAccountType.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/domain/EntityAccountType.java index 47835f3d3..de58ecb5c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/domain/EntityAccountType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/domain/EntityAccountType.java @@ -22,7 +22,7 @@ import java.util.HashMap; import java.util.Map; public enum EntityAccountType { - CLIENT(1, "accountType.client"), LOAN(2, "accountType.loan"), SAVINGS(3, "accountType.savings"), CENTER(4, "accountType.center"), + CLIENT(1, "accountType.client"), LOAN(2, "accountType.loan"), SAVINGS(3, "accountType.savings"), CENTER(4, "accountType.center"), GROUP(5, "accountType.group"), SHARES(6, "accountType.shares"); private final Integer value; @@ -90,11 +90,11 @@ public enum EntityAccountType { public boolean isSavingsAccount() { return this.value.equals(EntityAccountType.SAVINGS.getValue()); } - + public Boolean isCenterAccount(){ return this.value.equals(EntityAccountType.CENTER.getValue()); } - + public Boolean isGroupAccount(){ return this.value.equals(EntityAccountType.GROUP.getValue()); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/service/AccountNumberFormatWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/service/AccountNumberFormatWritePlatformServiceJpaRepositoryImpl.java index 98e39d317..d2f83d3f9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/service/AccountNumberFormatWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/service/AccountNumberFormatWritePlatformServiceJpaRepositoryImpl.java @@ -137,7 +137,7 @@ public class AccountNumberFormatWritePlatformServiceJpaRepositoryImpl implements .build(); } - + /* * Guaranteed to throw an exception no matter what the data integrity issue * is. diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/AbstractWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/AbstractWorkbookPopulator.java index 7d9d9e062..b5d4b84dd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/AbstractWorkbookPopulator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/AbstractWorkbookPopulator.java @@ -86,11 +86,11 @@ public abstract class AbstractWorkbookPopulator implements WorkbookPopulator { throw new IllegalArgumentException("ParseException"); } } - + protected void writeBigDecimal(int colIndex, Row row, BigDecimal value) { row.createCell(colIndex).setCellValue(((value != null) ? value.doubleValue() : 0)); } - + protected void setOfficeDateLookupTable(Sheet sheet, List offices, int officeNameCol, int activationDateCol,String dateFormat) { if(offices!=null){ @@ -152,7 +152,7 @@ public abstract class AbstractWorkbookPopulator implements WorkbookPopulator { if (group.getActivationDate() != null) { date = inputFormat.parse(group.getActivationDate().toString()); writeDate(activationDateCol, row, outputFormat.format(date), dateCellStyle, dateFormat); - } + } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/ExtrasSheetPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/ExtrasSheetPopulator.java index 2da7881da..21fa06843 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/ExtrasSheetPopulator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/ExtrasSheetPopulator.java @@ -41,7 +41,7 @@ public class ExtrasSheetPopulator extends AbstractWorkbookPopulator { private static final int CURRENCY_CODE_COL = 4; private static final int CURRENCY_NAME_COL = 5; - + public ExtrasSheetPopulator(List funds, List paymentTypes, List currencies) { this.funds = funds; @@ -111,6 +111,6 @@ public class ExtrasSheetPopulator extends AbstractWorkbookPopulator { return currencies.size(); } - - + + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/GroupSheetPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/GroupSheetPopulator.java index d5c601d08..d8c985edc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/GroupSheetPopulator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/GroupSheetPopulator.java @@ -34,7 +34,7 @@ import java.util.Map; public class GroupSheetPopulator extends AbstractWorkbookPopulator { private List groups; private List offices; - + private Map> officeToGroups; private Map officeNameToBeginEndIndexesOfGroups; private Map groupNameToGroupId; @@ -91,10 +91,10 @@ public class GroupSheetPopulator extends AbstractWorkbookPopulator { startIndex = rowIndex+1; writeString(OFFICE_NAME_COL, row, office.name()); ArrayList groupsList = new ArrayList<>(); - + if(officeToGroups.containsKey(office.name().trim().replaceAll("[ )(]", "_"))) groupsList = officeToGroups.get(office.name().trim().replaceAll("[ )(]", "_")); - + if(!groupsList.isEmpty()) { for(String groupName : groupsList) { writeString(GROUP_NAME_COL, row, groupName); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/LoanProductSheetPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/LoanProductSheetPopulator.java index bca076dd3..d2a05cfa1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/LoanProductSheetPopulator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/LoanProductSheetPopulator.java @@ -31,7 +31,7 @@ import java.util.List; public class LoanProductSheetPopulator extends AbstractWorkbookPopulator { private List products; - + private static final int ID_COL = 0; private static final int NAME_COL = 1; private static final int FUND_NAME_COL = 2; @@ -58,8 +58,8 @@ public class LoanProductSheetPopulator extends AbstractWorkbookPopulator { private static final int START_DATE_COL = 23; private static final int CLOSE_DATE_COL = 24; - - + + public LoanProductSheetPopulator(List products) { this.products = products; } @@ -191,7 +191,7 @@ public class LoanProductSheetPopulator extends AbstractWorkbookPopulator { } public List getProducts(){ return products; - + } public Integer getProductsSize() { return products.size(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/OfficeSheetPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/OfficeSheetPopulator.java index 9d689dc9a..a9518af6f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/OfficeSheetPopulator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/OfficeSheetPopulator.java @@ -70,7 +70,7 @@ public class OfficeSheetPopulator extends AbstractWorkbookPopulator { public List getOffices() { return offices; } - + public List getOfficeNames() { List officeNames=new ArrayList<>(); for (OfficeData office : offices) { @@ -78,5 +78,5 @@ public class OfficeSheetPopulator extends AbstractWorkbookPopulator { } return officeNames; } - + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/SharedProductsSheetPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/SharedProductsSheetPopulator.java index 33fbd8fa1..592ee75ef 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/SharedProductsSheetPopulator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/SharedProductsSheetPopulator.java @@ -53,7 +53,7 @@ public class SharedProductsSheetPopulator extends AbstractWorkbookPopulator { public SharedProductsSheetPopulator(List shareProductDataList,List chargesForShares) { this.sharedProductDataList=shareProductDataList; this.chargesForSharedProducts=chargesForShares; - + } @Override diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/centers/CentersWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/centers/CentersWorkbookPopulator.java index 3382f3683..e1ad6587f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/centers/CentersWorkbookPopulator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/centers/CentersWorkbookPopulator.java @@ -58,7 +58,7 @@ public class CentersWorkbookPopulator extends AbstractWorkbookPopulator { setLookupTable(centerSheet,dateFormat); setRules(centerSheet,dateFormat); } - + private void setLayout(Sheet worksheet) { Row rowHeader = worksheet.createRow(0); @@ -113,7 +113,7 @@ public class CentersWorkbookPopulator extends AbstractWorkbookPopulator { row = centerSheet.createRow(rowIndex); writeInt(CenterConstants.LOOKUP_REPEAT_MONTHLY_COL, row, rowIndex); } - for(rowIndex = 1; rowIndex <= 3; rowIndex++) + for(rowIndex = 1; rowIndex <= 3; rowIndex++) writeInt(CenterConstants.LOOKUP_REPEAT_NORMAL_COL, centerSheet.getRow(rowIndex), rowIndex); String[] days = new String[]{ @@ -127,7 +127,7 @@ public class CentersWorkbookPopulator extends AbstractWorkbookPopulator { for(rowIndex = 1; rowIndex <= 7; rowIndex++) writeString(CenterConstants.LOOKUP_IF_REPEAT_WEEKLY_COL, centerSheet.getRow(rowIndex), days[rowIndex-1]); - + } private void setRules(Sheet worksheet,String dateFormat) { CellRangeAddressList officeNameRange = new CellRangeAddressList(1, SpreadsheetVersion.EXCEL97.getLastRowIndex(), CenterConstants.OFFICE_NAME_COL,CenterConstants. OFFICE_NAME_COL); @@ -140,12 +140,12 @@ public class CentersWorkbookPopulator extends AbstractWorkbookPopulator { CellRangeAddressList repeatsRange = new CellRangeAddressList(1, SpreadsheetVersion.EXCEL97.getLastRowIndex(), CenterConstants.FREQUENCY_COL, CenterConstants.FREQUENCY_COL); CellRangeAddressList repeatsEveryRange = new CellRangeAddressList(1, SpreadsheetVersion.EXCEL97.getLastRowIndex(), CenterConstants.INTERVAL_COL,CenterConstants. INTERVAL_COL); CellRangeAddressList repeatsOnRange = new CellRangeAddressList(1, SpreadsheetVersion.EXCEL97.getLastRowIndex(), CenterConstants.REPEATS_ON_DAY_COL,CenterConstants. REPEATS_ON_DAY_COL); - - + + DataValidationHelper validationHelper = new HSSFDataValidationHelper((HSSFSheet)worksheet); List offices = officeSheetPopulator.getOffices(); setNames(worksheet, offices); - + DataValidationConstraint officeNameConstraint = validationHelper.createFormulaListConstraint("Office"); DataValidationConstraint staffNameConstraint = validationHelper. @@ -180,7 +180,7 @@ public class CentersWorkbookPopulator extends AbstractWorkbookPopulator { DataValidation repeatsValidation = validationHelper.createValidation(repeatsConstraint, repeatsRange); DataValidation repeatsEveryValidation = validationHelper.createValidation(repeatsEveryConstraint, repeatsEveryRange); DataValidation repeatsOnValidation = validationHelper.createValidation(repeatsOnConstraint, repeatsOnRange); - + worksheet.addValidationData(activeValidation); worksheet.addValidationData(officeValidation); @@ -193,14 +193,14 @@ public class CentersWorkbookPopulator extends AbstractWorkbookPopulator { worksheet.addValidationData(repeatsEveryValidation); worksheet.addValidationData(repeatsOnValidation); } - + private void setNames(Sheet worksheet, List offices) { Workbook centerWorkbook = worksheet.getWorkbook(); Name officeCenter = centerWorkbook.createName(); officeCenter.setNameName("Office"); officeCenter.setRefersToFormula(TemplatePopulateImportConstants.OFFICE_SHEET_NAME +"!$B$2:$B$" + (offices.size() + 1)); - - + + //Repeat constraint names Name repeatsDaily = centerWorkbook.createName(); repeatsDaily.setNameName("Daily"); @@ -217,8 +217,8 @@ public class CentersWorkbookPopulator extends AbstractWorkbookPopulator { Name repeatsOnWeekly = centerWorkbook.createName(); repeatsOnWeekly.setNameName("Weekly_Days"); repeatsOnWeekly.setRefersToFormula(TemplatePopulateImportConstants.CENTER_SHEET_NAME+"!$IV$2:$IV$8"); - - + + //Staff Names for each office for(Integer i = 0; i < offices.size(); i++) { Integer[] officeNameToBeginEndIndexesOfStaff = personnelSheetPopulator.getOfficeNameToBeginEndIndexesOfStaff().get(i); @@ -228,8 +228,8 @@ public class CentersWorkbookPopulator extends AbstractWorkbookPopulator { loanOfficerName.setRefersToFormula(TemplatePopulateImportConstants.STAFF_SHEET_NAME+"!$B$" + officeNameToBeginEndIndexesOfStaff[0] + ":$B$" + officeNameToBeginEndIndexesOfStaff[1]); } } - + } - - + + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/chartofaccounts/ChartOfAccountsWorkbook.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/chartofaccounts/ChartOfAccountsWorkbook.java index f65be136c..b4b71a9cd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/chartofaccounts/ChartOfAccountsWorkbook.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/chartofaccounts/ChartOfAccountsWorkbook.java @@ -215,7 +215,7 @@ public class ChartOfAccountsWorkbook extends AbstractWorkbookPopulator { chartOfAccountsSheet.setColumnWidth(ChartOfAcountsConstants.LOOKUP_ACCOUNT_ID_COL,TemplatePopulateImportConstants.MEDIUM_COL_SIZE); chartOfAccountsSheet.setColumnWidth(ChartOfAcountsConstants.LOOKUP_TAG_COL,TemplatePopulateImportConstants.SMALL_COL_SIZE); chartOfAccountsSheet.setColumnWidth(ChartOfAcountsConstants.LOOKUP_TAG_ID_COL,TemplatePopulateImportConstants.SMALL_COL_SIZE); - + writeString(ChartOfAcountsConstants.ACCOUNT_TYPE_COL,rowHeader,"Account Type*"); writeString(ChartOfAcountsConstants.GL_CODE_COL,rowHeader,"GL Code *"); writeString(ChartOfAcountsConstants.ACCOUNT_USAGE_COL,rowHeader,"Account Usage *"); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/client/ClientPersonWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/client/ClientPersonWorkbookPopulator.java index 69d11192a..caf8e38ca 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/client/ClientPersonWorkbookPopulator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/client/ClientPersonWorkbookPopulator.java @@ -354,7 +354,7 @@ public class ClientPersonWorkbookPopulator extends AbstractWorkbookPopulator { countryGroup.setNameName("Country"); countryGroup.setRefersToFormula(TemplatePopulateImportConstants.CLIENT_PERSON_SHEET_NAME+"!$AQ$2:$AQ$" + (countryCodeValues.size() + 1)); - + for (Integer i = 0; i < offices.size(); i++) { Integer[] officeNameToBeginEndIndexesOfStaff = personnelSheetPopulator.getOfficeNameToBeginEndIndexesOfStaff().get(i); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/group/GroupsWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/group/GroupsWorkbookPopulator.java index cfb58aff8..79759c81e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/group/GroupsWorkbookPopulator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/group/GroupsWorkbookPopulator.java @@ -116,7 +116,7 @@ public class GroupsWorkbookPopulator extends AbstractWorkbookPopulator { row = groupSheet.createRow(rowIndex); writeInt(GroupConstants.LOOKUP_REPEAT_MONTHLY_COL, row, rowIndex); } - for(rowIndex = 1; rowIndex <= 3; rowIndex++) + for(rowIndex = 1; rowIndex <= 3; rowIndex++) writeInt(GroupConstants.LOOKUP_REPEAT_NORMAL_COL, groupSheet.getRow(rowIndex), rowIndex); String[] days = new String[]{ TemplatePopulateImportConstants.MONDAY, @@ -126,10 +126,10 @@ public class GroupsWorkbookPopulator extends AbstractWorkbookPopulator { TemplatePopulateImportConstants.FRIDAY, TemplatePopulateImportConstants.SATURDAY, TemplatePopulateImportConstants.SUNDAY}; - for(rowIndex = 1; rowIndex <= 7; rowIndex++) + for(rowIndex = 1; rowIndex <= 7; rowIndex++) writeString(GroupConstants.LOOKUP_IF_REPEAT_WEEKLY_COL, groupSheet.getRow(rowIndex), days[rowIndex-1]); } - + private void setRules(Sheet worksheet,String dateFormat){ CellRangeAddressList officeNameRange = new CellRangeAddressList(1, SpreadsheetVersion.EXCEL97.getLastRowIndex(), GroupConstants.OFFICE_NAME_COL, GroupConstants.OFFICE_NAME_COL); @@ -153,11 +153,11 @@ public class GroupsWorkbookPopulator extends AbstractWorkbookPopulator { GroupConstants.INTERVAL_COL,GroupConstants. INTERVAL_COL); CellRangeAddressList repeatsOnRange = new CellRangeAddressList(1, SpreadsheetVersion.EXCEL97.getLastRowIndex(), GroupConstants.REPEATS_ON_DAY_COL, GroupConstants.REPEATS_ON_DAY_COL); - + DataValidationHelper validationHelper = new HSSFDataValidationHelper((HSSFSheet)worksheet); List offices = officeSheetPopulator.getOffices(); setNames(worksheet, offices); - + DataValidationConstraint centerNameConstraint = validationHelper.createFormulaListConstraint("INDIRECT(CONCATENATE(\"Center_\",$B1))"); DataValidationConstraint officeNameConstraint = validationHelper.createFormulaListConstraint("Office"); DataValidationConstraint staffNameConstraint = validationHelper.createFormulaListConstraint("INDIRECT(CONCATENATE(\"Staff_\",$B1))"); @@ -178,7 +178,7 @@ public class GroupsWorkbookPopulator extends AbstractWorkbookPopulator { TemplatePopulateImportConstants.FREQUENCY_YEARLY}); DataValidationConstraint repeatsEveryConstraint = validationHelper.createFormulaListConstraint("INDIRECT($K1)"); DataValidationConstraint repeatsOnConstraint = validationHelper.createFormulaListConstraint("INDIRECT(CONCATENATE($K1,\"_DAYS\"))"); - + DataValidation centerValidation=validationHelper.createValidation(centerNameConstraint, centerNameRange); DataValidation officeValidation = validationHelper.createValidation(officeNameConstraint, officeNameRange); DataValidation staffValidation = validationHelper.createValidation(staffNameConstraint, staffNameRange); @@ -190,7 +190,7 @@ public class GroupsWorkbookPopulator extends AbstractWorkbookPopulator { DataValidation repeatsValidation = validationHelper.createValidation(repeatsConstraint, repeatsRange); DataValidation repeatsEveryValidation = validationHelper.createValidation(repeatsEveryConstraint, repeatsEveryRange); DataValidation repeatsOnValidation = validationHelper.createValidation(repeatsOnConstraint, repeatsOnRange); - + worksheet.addValidationData(centerValidation); worksheet.addValidationData(activeValidation); worksheet.addValidationData(officeValidation); @@ -203,14 +203,14 @@ public class GroupsWorkbookPopulator extends AbstractWorkbookPopulator { worksheet.addValidationData(repeatsEveryValidation); worksheet.addValidationData(repeatsOnValidation); } - + private void setNames(Sheet worksheet, List offices) { Workbook centerWorkbook = worksheet.getWorkbook(); Name officeCenter = centerWorkbook.createName(); officeCenter.setNameName("Office"); officeCenter.setRefersToFormula(TemplatePopulateImportConstants.OFFICE_SHEET_NAME+"!$B$2:$B$" + (offices.size() + 1)); - - + + //Repeat constraint names Name repeatsDaily = centerWorkbook.createName(); repeatsDaily.setNameName("Daily"); @@ -227,11 +227,11 @@ public class GroupsWorkbookPopulator extends AbstractWorkbookPopulator { Name repeatsOnWeekly = centerWorkbook.createName(); repeatsOnWeekly.setNameName("Weekly_Days"); repeatsOnWeekly.setRefersToFormula(TemplatePopulateImportConstants.GROUP_SHEET_NAME+"!$IV$2:$IV$8"); - - - //Staff Names for each office & center Names for each office + + + //Staff Names for each office & center Names for each office for(Integer i = 0; i < offices.size(); i++) { - Integer[] officeNameToBeginEndIndexesOfCenters =centerSheetPopulator.getOfficeNameToBeginEndIndexesOfCenters().get(i); + Integer[] officeNameToBeginEndIndexesOfCenters =centerSheetPopulator.getOfficeNameToBeginEndIndexesOfCenters().get(i); Integer[] officeNameToBeginEndIndexesOfStaff = personnelSheetPopulator.getOfficeNameToBeginEndIndexesOfStaff().get(i); Name loanOfficerName = centerWorkbook.createName(); @@ -248,7 +248,7 @@ public class GroupsWorkbookPopulator extends AbstractWorkbookPopulator { "!$B$" + officeNameToBeginEndIndexesOfCenters[0] + ":$B$" + officeNameToBeginEndIndexesOfCenters[1]); } } - + } - + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/guarantor/GuarantorWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/guarantor/GuarantorWorkbookPopulator.java index ec02065dd..2f8dccccd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/guarantor/GuarantorWorkbookPopulator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/guarantor/GuarantorWorkbookPopulator.java @@ -113,7 +113,7 @@ public class GuarantorWorkbookPopulator extends AbstractWorkbookPopulator { writeString(GuarantorConstants.LOOKUP_ACCOUNT_NO_COL, rowHeader, "Lookup Loan Account"); writeString(GuarantorConstants.LOOKUP_SAVINGS_CLIENT_NAME_COL, rowHeader, "Savings Lookup Client"); writeString(GuarantorConstants.LOOKUP_SAVINGS_ACCOUNT_NO_COL, rowHeader, "Savings Lookup Account"); - + } private void populateSavingsTable(Sheet addGuarantorSheet,String dateFormat) { Workbook workbook = addGuarantorSheet.getWorkbook(); @@ -189,11 +189,11 @@ public class GuarantorWorkbookPopulator extends AbstractWorkbookPopulator { GuarantorConstants.GUARANTO_TYPE_COL, GuarantorConstants.GUARANTO_TYPE_COL); CellRangeAddressList guranterRelationshipTypeRange = new CellRangeAddressList(1, SpreadsheetVersion.EXCEL97.getLastRowIndex(), GuarantorConstants.CLIENT_RELATIONSHIP_TYPE_COL, GuarantorConstants.CLIENT_RELATIONSHIP_TYPE_COL); - + DataValidationHelper validationHelper = new HSSFDataValidationHelper((HSSFSheet)worksheet); - + setNames(worksheet); - + DataValidationConstraint officeNameConstraint = validationHelper.createFormulaListConstraint("Office"); DataValidationConstraint clientNameConstraint = validationHelper.createFormulaListConstraint("INDIRECT(CONCATENATE(\"Client_\",$A1))"); DataValidationConstraint accountNumberConstraint = validationHelper.createFormulaListConstraint("INDIRECT(CONCATENATE(\"Account_\",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($B1,\" \",\"_\"),\"(\",\"_\"),\")\",\"_\")))"); @@ -204,7 +204,7 @@ public class GuarantorWorkbookPopulator extends AbstractWorkbookPopulator { DataValidationConstraint guarantorRelationshipConstraint = validationHelper.createFormulaListConstraint("GuarantorRelationship"); DataValidationConstraint entityofficeNameConstraint = validationHelper.createFormulaListConstraint("Office"); DataValidationConstraint entityclientNameConstraint = validationHelper.createFormulaListConstraint("INDIRECT(CONCATENATE(\"Client_\",$F1))"); - + DataValidation officeValidation = validationHelper.createValidation(officeNameConstraint, officeNameRange); DataValidation clientValidation = validationHelper.createValidation(clientNameConstraint, clientNameRange); DataValidation accountNumberValidation = validationHelper.createValidation(accountNumberConstraint, accountNumberRange); @@ -213,8 +213,8 @@ public class GuarantorWorkbookPopulator extends AbstractWorkbookPopulator { DataValidation guarantorRelationshipValidation=validationHelper.createValidation(guarantorRelationshipConstraint,guranterRelationshipTypeRange); DataValidation entityofficeValidation = validationHelper.createValidation(entityofficeNameConstraint, entityofficeNameRange); DataValidation entityclientValidation = validationHelper.createValidation(entityclientNameConstraint, entityclientNameRange); - - + + worksheet.addValidationData(officeValidation); worksheet.addValidationData(clientValidation); worksheet.addValidationData(accountNumberValidation); @@ -223,12 +223,12 @@ public class GuarantorWorkbookPopulator extends AbstractWorkbookPopulator { worksheet.addValidationData(entityofficeValidation); worksheet.addValidationData(entityclientValidation); worksheet.addValidationData(savingsaccountNumberValidation); - + } private void setNames(Sheet worksheet) { Workbook addGurarantorWorkbook = worksheet.getWorkbook(); ArrayList officeNames = new ArrayList(officeSheetPopulator.getOfficeNames()); - + //Office Names Name officeGroup = addGurarantorWorkbook.createName(); officeGroup.setNameName("Office"); @@ -238,7 +238,7 @@ public class GuarantorWorkbookPopulator extends AbstractWorkbookPopulator { Name guarantorRelationshipsGroup = addGurarantorWorkbook.createName(); guarantorRelationshipsGroup.setNameName("GuarantorRelationship"); guarantorRelationshipsGroup.setRefersToFormula(TemplatePopulateImportConstants.GUARANTOR_SHEET_NAME+"!$CH$2:$CH$" + (guarantorRelationshipTypes.size() + 1)); - + //Clients Named after Offices for(Integer i = 0; i < officeNames.size(); i++) { Integer[] officeNameToBeginEndIndexesOfClients = clientSheetPopulator.getOfficeNameToBeginEndIndexesOfClients().get(i); @@ -249,7 +249,7 @@ public class GuarantorWorkbookPopulator extends AbstractWorkbookPopulator { ":$B$" + officeNameToBeginEndIndexesOfClients[1]); } } - + //Counting clients with active loans and starting and end addresses of cells HashMap clientNameToBeginEndIndexes = new HashMap(); ArrayList clientsWithActiveLoans = new ArrayList(); @@ -272,7 +272,7 @@ public class GuarantorWorkbookPopulator extends AbstractWorkbookPopulator { clientNameToBeginEndIndexes.put(clientName, new Integer[]{startIndex, endIndex}); } } - + //Account Number Named after Clients for(int j = 0; j < clientsWithActiveLoans.size(); j++) { Name name = addGurarantorWorkbook.createName(); @@ -308,7 +308,7 @@ public class GuarantorWorkbookPopulator extends AbstractWorkbookPopulator { name.setRefersToFormula(TemplatePopulateImportConstants.GUARANTOR_SHEET_NAME+"!$CG$" + clientNameToBeginEndIndexes.get(clientsWithActiveSavings.get(j))[0] + ":$CG$" + clientNameToBeginEndIndexes.get(clientsWithActiveSavings.get(j))[1]); } - + } } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/journalentry/JournalEntriesWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/journalentry/JournalEntriesWorkbookPopulator.java index 64a63b415..0f14d2abc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/journalentry/JournalEntriesWorkbookPopulator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/journalentry/JournalEntriesWorkbookPopulator.java @@ -34,7 +34,7 @@ import java.util.ArrayList; public class JournalEntriesWorkbookPopulator extends AbstractWorkbookPopulator { - + private OfficeSheetPopulator officeSheetPopulator; private GlAccountSheetPopulator glAccountSheetPopulator; private ExtrasSheetPopulator extrasSheetPopulator; @@ -56,7 +56,7 @@ public class JournalEntriesWorkbookPopulator extends AbstractWorkbookPopulator { setDefaults(addJournalEntriesSheet); setLayout(addJournalEntriesSheet); } - + private void setLayout(Sheet worksheet) { Row rowHeader = worksheet.createRow(TemplatePopulateImportConstants.ROWHEADER_INDEX); rowHeader.setHeight(TemplatePopulateImportConstants.ROW_HEADER_HEIGHT); @@ -95,9 +95,9 @@ public class JournalEntriesWorkbookPopulator extends AbstractWorkbookPopulator { // TODO Auto-generated method stub } - + private void setRules(Sheet worksheet) { - + CellRangeAddressList officeNameRange = new CellRangeAddressList(1, SpreadsheetVersion.EXCEL97.getLastRowIndex(), JournalEntryConstants.OFFICE_NAME_COL,JournalEntryConstants. OFFICE_NAME_COL); @@ -152,7 +152,7 @@ public class JournalEntriesWorkbookPopulator extends AbstractWorkbookPopulator { worksheet.addValidationData(glaccountCreditValidation); worksheet.addValidationData(glaccountDebitValidation); } - + private void setNames(Sheet worksheet) { Workbook addJournalEntriesWorkbook = worksheet.getWorkbook(); ArrayList officeNames = new ArrayList<>(officeSheetPopulator.getOfficeNames()); @@ -178,7 +178,7 @@ public class JournalEntriesWorkbookPopulator extends AbstractWorkbookPopulator { glaccountGroup.setRefersToFormula(TemplatePopulateImportConstants.GL_ACCOUNTS_SHEET_NAME+"!$B$2:$B$" + (glAccountSheetPopulator.getGlAccountNamesSize() + 1)); } - + private void setDefaults(Sheet worksheet) { for (Integer rowNo = 1; rowNo < 1000; rowNo++) { Row row = worksheet.createRow(rowNo); @@ -186,6 +186,6 @@ public class JournalEntriesWorkbookPopulator extends AbstractWorkbookPopulator { } - - + + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/service/BulkImportWorkbookPopulatorServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/service/BulkImportWorkbookPopulatorServiceImpl.java index a95e240f1..4b984b8a9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/service/BulkImportWorkbookPopulatorServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/service/BulkImportWorkbookPopulatorServiceImpl.java @@ -116,7 +116,7 @@ public class BulkImportWorkbookPopulatorServiceImpl implements BulkImportWorkboo private final ChargeReadPlatformService chargeReadPlatformService; private final DepositProductReadPlatformService depositProductReadPlatformService; private final RoleReadPlatformService roleReadPlatformService; - + @Autowired public BulkImportWorkbookPopulatorServiceImpl(final PlatformSecurityContext context, final OfficeReadPlatformService officeReadPlatformService, @@ -324,7 +324,7 @@ private WorkbookPopulator populateCenterWorkbook(Long officeId,Long staffId){ SearchParameters searchParameters = SearchParameters.from(null, officeId, null, null, null); centers = (List)centerReadPlatformService.retrieveAll(searchParameters,null); } - + return centers; } private List fetchClients(Long officeId) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/service/BulkImportWorkbookServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/service/BulkImportWorkbookServiceImpl.java index a99dd9089..e8b86f5fe 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/service/BulkImportWorkbookServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/service/BulkImportWorkbookServiceImpl.java @@ -103,7 +103,7 @@ public class BulkImportWorkbookServiceImpl implements BulkImportWorkbookService // extension we use this fix. throw new GeneralPlatformDomainRuleException("error.msg.invalid.file.extension", "Uploaded file extension is not recognized."); - + } Workbook workbook = new HSSFWorkbook(clonedInputStreamWorkbook); GlobalEntityType entityType=null; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/cache/service/RuntimeDelegatingCacheManager.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/cache/service/RuntimeDelegatingCacheManager.java index 9f21a5c5f..9fbcce34f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/cache/service/RuntimeDelegatingCacheManager.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/cache/service/RuntimeDelegatingCacheManager.java @@ -38,7 +38,7 @@ import org.springframework.stereotype.Component; /** * At present this implementation of {@link CacheManager} just delegates to the * real {@link CacheManager} to use. - * + * * By default it is {@link NoOpCacheManager} but we can change that by checking * some persisted configuration in the database on startup and allow user to * switch implementation through UI/API diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/constants/CampaignType.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/constants/CampaignType.java index 421882a34..f9a3295e3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/constants/CampaignType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/constants/CampaignType.java @@ -54,7 +54,7 @@ public enum CampaignType { } return type; } - + public static EnumOptionData campaignType(final Integer campaignTypeId) { return campaignType(CampaignType.fromInt(campaignTypeId)); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/ScheduledEmailConstants.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/ScheduledEmailConstants.java index 294a298a1..359b34011 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/ScheduledEmailConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/ScheduledEmailConstants.java @@ -27,11 +27,11 @@ public class ScheduledEmailConstants { // define the API resource entity name public static final String SCHEDULED_EMAIL_ENTITY_NAME = "SCHEDULEDEMAIL"; - + // general API resource request parameter constants public static final String LOCALE_PARAM_NAME = "locale"; public static final String DATE_FORMAT_PARAM_NAME = "dateFormat"; - + // parameter constants for create/update entity API request public static final String NAME_PARAM_NAME = "name"; public static final String DESCRIPTION_PARAM_NAME = "description"; @@ -44,7 +44,7 @@ public class ScheduledEmailConstants { public static final String STRETCHY_REPORT_ID_PARAM_NAME = "stretchyReportId"; public static final String STRETCHY_REPORT_PARAM_MAP_PARAM_NAME = "stretchyReportParamMap"; public static final String IS_ACTIVE_PARAM_NAME = "isActive"; - + // other parameter constants public static final String ID_PARAM_NAME = "id"; public static final String EMAIL_ATTACHMENT_FILE_FORMAT_PARAM_NAME = "emailAttachmentFileFormat"; @@ -55,29 +55,29 @@ public class ScheduledEmailConstants { public static final String PREVIOUS_RUN_ERROR_MESSAGE = "previousRunErrorMessage"; public static final String NUMBER_OF_RUNS = "numberOfRuns"; public static final String STRETCHY_REPORT_PARAM_NAME = "stretchyReport"; - + // list of permitted parameters for the create report mailing job request public static final Set CREATE_REQUEST_PARAMETERS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(LOCALE_PARAM_NAME, DATE_FORMAT_PARAM_NAME, - NAME_PARAM_NAME, DESCRIPTION_PARAM_NAME, RECURRENCE_PARAM_NAME, EMAIL_RECIPIENTS_PARAM_NAME, EMAIL_SUBJECT_PARAM_NAME, - EMAIL_MESSAGE_PARAM_NAME, EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME, STRETCHY_REPORT_ID_PARAM_NAME, + NAME_PARAM_NAME, DESCRIPTION_PARAM_NAME, RECURRENCE_PARAM_NAME, EMAIL_RECIPIENTS_PARAM_NAME, EMAIL_SUBJECT_PARAM_NAME, + EMAIL_MESSAGE_PARAM_NAME, EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME, STRETCHY_REPORT_ID_PARAM_NAME, STRETCHY_REPORT_PARAM_MAP_PARAM_NAME, IS_ACTIVE_PARAM_NAME, START_DATE_TIME_PARAM_NAME))); - + // list of permitted parameters for the update report mailing job request public static final Set UPDATE_REQUEST_PARAMETERS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(LOCALE_PARAM_NAME, DATE_FORMAT_PARAM_NAME, - NAME_PARAM_NAME, DESCRIPTION_PARAM_NAME, RECURRENCE_PARAM_NAME, EMAIL_RECIPIENTS_PARAM_NAME, EMAIL_SUBJECT_PARAM_NAME, - EMAIL_MESSAGE_PARAM_NAME, EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME, STRETCHY_REPORT_ID_PARAM_NAME, + NAME_PARAM_NAME, DESCRIPTION_PARAM_NAME, RECURRENCE_PARAM_NAME, EMAIL_RECIPIENTS_PARAM_NAME, EMAIL_SUBJECT_PARAM_NAME, + EMAIL_MESSAGE_PARAM_NAME, EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME, STRETCHY_REPORT_ID_PARAM_NAME, STRETCHY_REPORT_PARAM_MAP_PARAM_NAME, IS_ACTIVE_PARAM_NAME, START_DATE_TIME_PARAM_NAME))); - + // list of parameters that represent the properties of a report mailing job public static final Set REPORT_MAILING_JOB_DATA_PARAMETERS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(ID_PARAM_NAME, NAME_PARAM_NAME, - DESCRIPTION_PARAM_NAME, RECURRENCE_PARAM_NAME, EMAIL_RECIPIENTS_PARAM_NAME, EMAIL_SUBJECT_PARAM_NAME, EMAIL_MESSAGE_PARAM_NAME, - EMAIL_ATTACHMENT_FILE_FORMAT_PARAM_NAME, STRETCHY_REPORT_PARAM_NAME, STRETCHY_REPORT_PARAM_MAP_PARAM_NAME, IS_ACTIVE_PARAM_NAME, - START_DATE_TIME_PARAM_NAME, PREVIOUS_RUN_DATE_TIME_PARAM_NAME, NEXT_RUN_DATE_TIME_PARAM_NAME, PREVIOUS_RUN_STATUS, + DESCRIPTION_PARAM_NAME, RECURRENCE_PARAM_NAME, EMAIL_RECIPIENTS_PARAM_NAME, EMAIL_SUBJECT_PARAM_NAME, EMAIL_MESSAGE_PARAM_NAME, + EMAIL_ATTACHMENT_FILE_FORMAT_PARAM_NAME, STRETCHY_REPORT_PARAM_NAME, STRETCHY_REPORT_PARAM_MAP_PARAM_NAME, IS_ACTIVE_PARAM_NAME, + START_DATE_TIME_PARAM_NAME, PREVIOUS_RUN_DATE_TIME_PARAM_NAME, NEXT_RUN_DATE_TIME_PARAM_NAME, PREVIOUS_RUN_STATUS, PREVIOUS_RUN_ERROR_LOG, PREVIOUS_RUN_ERROR_MESSAGE, NUMBER_OF_RUNS))); - + // report mailing job configuration names public static final String GMAIL_SMTP_SERVER = "GMAIL_SMTP_SERVER"; public static final String GMAIL_SMTP_PORT = "GMAIL_SMTP_PORT"; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailCampaignValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailCampaignValidator.java index 2d42cc1c7..8eff9f592 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailCampaignValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailCampaignValidator.java @@ -37,7 +37,7 @@ import java.util.*; @Component public class EmailCampaignValidator { - + public static final String RESOURCE_NAME = "email"; public static final String campaignName = "campaignName"; @@ -89,18 +89,18 @@ public class EmailCampaignValidator { final Type typeOfMap = new TypeToken>() {}.getType(); this.fromApiJsonHelper.checkForUnsupportedParameters(typeOfMap, json, EmailCampaignValidator.supportedParams); - + final JsonElement element = this.fromApiJsonHelper.parse(json); final List dataValidationErrors = new ArrayList(); final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors) .resource(EmailCampaignValidator.RESOURCE_NAME); - + final String campaignName = this.fromApiJsonHelper.extractStringNamed(EmailCampaignValidator.campaignName,element); baseDataValidator.reset().parameter(EmailCampaignValidator.campaignName).value(campaignName).notBlank().notExceedingLengthOf(100); - - + + final Long campaignType = this.fromApiJsonHelper.extractLongNamed(EmailCampaignValidator.campaignType,element); baseDataValidator.reset().parameter(EmailCampaignValidator.campaignType).value(campaignType).notNull().integerGreaterThanZero(); @@ -117,7 +117,7 @@ public class EmailCampaignValidator { final String emailSubject = this.fromApiJsonHelper.extractStringNamed(EmailCampaignValidator.emailSubject, element); baseDataValidator.reset().parameter(EmailCampaignValidator.emailSubject).value(emailSubject).notBlank().notExceedingLengthOf(50); - + final String emailMessage = this.fromApiJsonHelper.extractStringNamed(EmailCampaignValidator.emailMessage, element); baseDataValidator.reset().parameter(EmailCampaignValidator.emailMessage).value(emailMessage).notBlank().notExceedingLengthOf(480); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailConfigurationData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailConfigurationData.java index 794669b7b..8026823d2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailConfigurationData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailConfigurationData.java @@ -24,19 +24,19 @@ package org.apache.fineract.infrastructure.campaigns.email.data; public class EmailConfigurationData { @SuppressWarnings("unused") private final Long id; - + private final String name; - + private final String value; - - /** + + /** * @return an instance of the EmailConfigurationData class **/ public static EmailConfigurationData instance(Long id, String name, String value) { return new EmailConfigurationData(id, name, value); } - - /** + + /** * EmailConfigurationData constructor **/ private EmailConfigurationData(Long id, String name, String value) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/ScheduledEmailEnumerations.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/ScheduledEmailEnumerations.java index d2843a3e3..0907cb233 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/ScheduledEmailEnumerations.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/ScheduledEmailEnumerations.java @@ -26,31 +26,31 @@ public class ScheduledEmailEnumerations { public static EnumOptionData emailAttachementFileFormat(final Integer emailAttachementFileFormatId) { return emailAttachementFileFormat(ScheduledEmailAttachmentFileFormat.instance(emailAttachementFileFormatId)); } - + public static EnumOptionData emailAttachementFileFormat(final String emailAttachementFileFormatString) { return emailAttachementFileFormat(ScheduledEmailAttachmentFileFormat.instance(emailAttachementFileFormatString)); } - + public static EnumOptionData emailAttachementFileFormat(final ScheduledEmailAttachmentFileFormat emailAttachementFileFormat) { EnumOptionData enumOptionData = null; - + if (emailAttachementFileFormat != null) { - enumOptionData = new EnumOptionData(emailAttachementFileFormat.getId().longValue(), emailAttachementFileFormat.getCode(), + enumOptionData = new EnumOptionData(emailAttachementFileFormat.getId().longValue(), emailAttachementFileFormat.getCode(), emailAttachementFileFormat.getValue()); } - + return enumOptionData; } - + public static EnumOptionData stretchyReportDateOption(final ScheduledEmailStretchyReportParamDateOption reportMailingJobStretchyReportParamDateOption) { EnumOptionData enumOptionData = null; - + if (reportMailingJobStretchyReportParamDateOption != null) { - enumOptionData = new EnumOptionData(reportMailingJobStretchyReportParamDateOption.getId().longValue(), + enumOptionData = new EnumOptionData(reportMailingJobStretchyReportParamDateOption.getId().longValue(), reportMailingJobStretchyReportParamDateOption.getCode(), reportMailingJobStretchyReportParamDateOption.getValue()); } - + return enumOptionData; } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailConfiguration.java index 2fb4a9826..adcab4872 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailConfiguration.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailConfiguration.java @@ -29,23 +29,23 @@ import javax.persistence.Table; public class EmailConfiguration extends AbstractPersistableCustom { @Column(name = "name", nullable = false) private String name; - + @Column(name = "value", nullable = false) private String value; - - /** + + /** * EmailConfiguration constructor **/ protected EmailConfiguration() {} - - /** + + /** * EmailConfiguration constructor **/ public EmailConfiguration(String name, String value) { this.name = name; this.value = value; } - + public void setValue(String value) { this.value = value; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailMessage.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailMessage.java index d514950c5..9edbcdba0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailMessage.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailMessage.java @@ -79,7 +79,7 @@ public class EmailMessage extends AbstractPersistableCustom { final String emailAddress, final String campaignName) { return new EmailMessage(group, client, staff,emailCampaign,EmailMessageStatusType.PENDING, emailSubject, message, emailAddress,campaignName); } - + public static EmailMessage instance(final Group group, final Client client, final Staff staff, final EmailCampaign emailCampaign, final EmailMessageStatusType statusType, final String emailSubject, final String message, final String sourceAddress, final String emailAddress, final String campaignName) { return new EmailMessage(group, client, staff,emailCampaign, statusType, emailSubject, message, emailAddress, campaignName); @@ -115,20 +115,20 @@ public class EmailMessage extends AbstractPersistableCustom { return actualChanges; } - + public Group getGroup() { return group; } - + public Client getClient() { return client; } - + public Staff getStaff() { return staff; } - + public Integer getStatusType() { return statusType; } @@ -137,11 +137,11 @@ public class EmailMessage extends AbstractPersistableCustom { public String getEmailAddress() {return this.emailAddress;} public String getEmailSubject() {return emailSubject; } - + public String getMessage() { return message; } - + public void setStatusType(final Integer statusType) { this.statusType = statusType; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/ScheduledEmailAttachmentFileFormat.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/ScheduledEmailAttachmentFileFormat.java index 677555a46..295a89f8e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/ScheduledEmailAttachmentFileFormat.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/ScheduledEmailAttachmentFileFormat.java @@ -33,53 +33,53 @@ public enum ScheduledEmailAttachmentFileFormat { this.code = code; this.id = id; } - + public static ScheduledEmailAttachmentFileFormat instance(final String value) { ScheduledEmailAttachmentFileFormat emailAttachmentFileFormat = INVALID; - + switch (value) { case "xls": emailAttachmentFileFormat = XLS; break; - + case "pdf": emailAttachmentFileFormat = PDF; break; - + case "csv": emailAttachmentFileFormat = CSV; break; - + default: break; } - + return emailAttachmentFileFormat; } - + public static ScheduledEmailAttachmentFileFormat instance(final Integer id) { ScheduledEmailAttachmentFileFormat emailAttachmentFileFormat = INVALID; - + switch (id) { case 1: emailAttachmentFileFormat = XLS; break; - + case 2: emailAttachmentFileFormat = PDF; break; - + case 3: emailAttachmentFileFormat = CSV; break; - + default: break; } - + return emailAttachmentFileFormat; } - + /** * @return the code */ @@ -100,8 +100,8 @@ public enum ScheduledEmailAttachmentFileFormat { public Integer getId() { return id; } - - /** + + /** * @return list of valid ScheduledEmailAttachmentFileFormat ids **/ public static Object[] validValues() { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/ScheduledEmailStretchyReportParamDateOption.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/ScheduledEmailStretchyReportParamDateOption.java index 39b6e9b7b..fb9f2cec3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/ScheduledEmailStretchyReportParamDateOption.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/ScheduledEmailStretchyReportParamDateOption.java @@ -38,55 +38,55 @@ public enum ScheduledEmailStretchyReportParamDateOption { this.code = code; this.id = id; } - + /** * @param value * @return */ public static ScheduledEmailStretchyReportParamDateOption instance(final String value) { ScheduledEmailStretchyReportParamDateOption scheduledEmailStretchyReportParamDateOption = INVALID; - + switch (value) { case "today": scheduledEmailStretchyReportParamDateOption = TODAY; break; - + // case "yesterday": // scheduledEmailStretchyReportParamDateOption = YESTERDAY; // break; - + case "tomorrow": scheduledEmailStretchyReportParamDateOption = TOMORROW; break; } - + return scheduledEmailStretchyReportParamDateOption; } - + /** * @param id * @return */ public static ScheduledEmailStretchyReportParamDateOption instance(final Integer id) { ScheduledEmailStretchyReportParamDateOption scheduledEmailStretchyReportParamDateOption = INVALID; - + switch (id) { case 1: scheduledEmailStretchyReportParamDateOption = TODAY; break; - + // case 2: // scheduledEmailStretchyReportParamDateOption = YESTERDAY; // break; - + case 3: scheduledEmailStretchyReportParamDateOption = TOMORROW; break; } - + return scheduledEmailStretchyReportParamDateOption; } - + /** * @return the code */ @@ -107,8 +107,8 @@ public enum ScheduledEmailStretchyReportParamDateOption { public Integer getId() { return id; } - - /** + + /** * @return list of valid ScheduledEmailAttachmentFileFormat values **/ public static Object[] validValues() { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailConfigurationSMTPUsernameNotValid.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailConfigurationSMTPUsernameNotValid.java index 34aab28e9..55b46c044 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailConfigurationSMTPUsernameNotValid.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/exception/EmailConfigurationSMTPUsernameNotValid.java @@ -22,7 +22,7 @@ import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainR public class EmailConfigurationSMTPUsernameNotValid extends AbstractPlatformDomainRuleException { - + public EmailConfigurationSMTPUsernameNotValid(final String smtpUsername) { super("error.msg.email.configuration.smtpusername.not.valid", "SMTP username configuration with email " + "'"+smtpUsername+"'" + " is not a valid email address "); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailCampaignWritePlatformCommandHandlerImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailCampaignWritePlatformCommandHandlerImpl.java index d1cbd2c0b..30569fa4c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailCampaignWritePlatformCommandHandlerImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailCampaignWritePlatformCommandHandlerImpl.java @@ -699,7 +699,7 @@ public class EmailCampaignWritePlatformCommandHandlerImpl implements EmailCampai /** * This generates the the report and converts it to a file by passing the * parameters below - * + * * @param emailCampaign * @param emailAttachmentFileFormat * @param reportParams @@ -744,7 +744,7 @@ public class EmailCampaignWritePlatformCommandHandlerImpl implements EmailCampai /** * This matches the the actual values to the key in the report stretchy * parameters map - * + * * @param stretchyParams * @param client * @return diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailConfigurationReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailConfigurationReadPlatformService.java index a8f3c4852..b92715b15 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailConfigurationReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailConfigurationReadPlatformService.java @@ -23,7 +23,7 @@ import org.apache.fineract.infrastructure.campaigns.email.data.EmailConfiguratio import java.util.Collection; public interface EmailConfigurationReadPlatformService { - + Collection retrieveAll(); EmailConfigurationData retrieveOne(String name); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailConfigurationReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailConfigurationReadPlatformServiceImpl.java index 8efd5e7b6..bd915e8c2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailConfigurationReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailConfigurationReadPlatformServiceImpl.java @@ -34,45 +34,45 @@ import java.util.Collection; @Service public class EmailConfigurationReadPlatformServiceImpl implements EmailConfigurationReadPlatformService { - + private final JdbcTemplate jdbcTemplate; private final EmailConfigurationRowMapper emailConfigurationRowMapper; - + @Autowired public EmailConfigurationReadPlatformServiceImpl(final RoutingDataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); this.emailConfigurationRowMapper = new EmailConfigurationRowMapper(); - + } - + private static final class EmailConfigurationRowMapper implements RowMapper { - + final String schema; - + public EmailConfigurationRowMapper() { final StringBuilder sql = new StringBuilder(300); sql.append("cnf.id as id, "); sql.append("cnf.name as name, "); sql.append("cnf.value as value "); sql.append("from scheduled_email_configuration cnf"); - + this.schema = sql.toString(); } - + public String schema() { return this.schema; } @Override public EmailConfigurationData mapRow(ResultSet rs, @SuppressWarnings("unused") int rowNum) throws SQLException { - + final Long id = JdbcSupport.getLong(rs, "id"); final String name = rs.getString("name"); final String value = rs.getString("value"); - + return EmailConfigurationData.instance(id, name, value); } - + } @Override @@ -89,9 +89,9 @@ public class EmailConfigurationReadPlatformServiceImpl implements EmailConfigura return this.jdbcTemplate.queryForObject(sql, this.emailConfigurationRowMapper, name); } - + catch(final EmptyResultDataAccessException e) { - + throw new EmailConfigurationNotFoundException(name); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailReadPlatformService.java index 961f9691f..90fe842bf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailReadPlatformService.java @@ -31,16 +31,16 @@ public interface EmailReadPlatformService { Collection retrieveAll(); EmailData retrieveOne(Long resourceId); - + Collection retrieveAllPending(final SearchParameters searchParameters); - + Collection retrieveAllSent(final SearchParameters searchParameters); - + Collection retrieveAllDelivered(Integer limit); - + Collection retrieveAllFailed(final SearchParameters searchParameters); Page retrieveEmailByStatus(Integer limit, Integer status, Date dateFrom, Date dateTo); - + List retrieveExternalIdsOfAllSent(Integer limit); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailReadPlatformServiceImpl.java index 39b6a1065..3a4007220 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailReadPlatformServiceImpl.java @@ -81,7 +81,7 @@ public class EmailReadPlatformServiceImpl implements EmailReadPlatformService { public String schema() { return this.schema; } - + public String tableName() { return "scheduled_email_messages_outbound"; } @@ -128,7 +128,7 @@ public class EmailReadPlatformServiceImpl implements EmailReadPlatformService { throw new EmailNotFoundException(resourceId); } } - + @Override public Collection retrieveAllPending(final SearchParameters searchParameters) { final String sqlPlusLimit = (searchParameters.getLimit() > 0) ? " limit 0, " + searchParameters.getLimit() : ""; @@ -152,7 +152,7 @@ public class EmailReadPlatformServiceImpl implements EmailReadPlatformService { final String sqlPlusLimit = (limit > 0) ? " limit 0, " + limit : ""; final String sql = "select external_id from " + this.emailRowMapper.tableName() + " where status_enum = " + EmailMessageStatusType.SENT.getValue() + sqlPlusLimit; - + return this.jdbcTemplate.queryForList(sql, Long.class); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/helper/SmsConfigUtils.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/helper/SmsConfigUtils.java index 8772e21aa..d6ff5769b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/helper/SmsConfigUtils.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/helper/SmsConfigUtils.java @@ -40,7 +40,7 @@ public class SmsConfigUtils { @Autowired private ExternalServicesPropertiesReadPlatformService propertiesReadPlatformService; - + //This method will return uri and HttpEntry objects with keys as uri and entity public Map getMessageGateWayRequestURI(final String apiEndPoint, String apiQueueResourceDatas) { Map httpRequestdetails = new HashMap<>(); @@ -72,5 +72,5 @@ public class SmsConfigUtils { return httpRequestdetails; } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/constants/SmsCampaignEnumerations.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/constants/SmsCampaignEnumerations.java index bbe504e84..8454c4e45 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/constants/SmsCampaignEnumerations.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/constants/SmsCampaignEnumerations.java @@ -29,7 +29,7 @@ import org.apache.fineract.portfolio.common.domain.PeriodFrequencyType; public class SmsCampaignEnumerations { - + public static EnumOptionData smscampaignTriggerType(final SmsCampaignTriggerType type) { EnumOptionData optionData = new EnumOptionData(SmsCampaignTriggerType.INVALID.getValue().longValue(), SmsCampaignTriggerType.INVALID.getCode(), "Invalid"); @@ -89,7 +89,7 @@ public class SmsCampaignEnumerations { if(!periodFrequencyType.getValue().equals(PeriodFrequencyType.INVALID.getValue())) { final EnumOptionData optionData = new EnumOptionData(periodFrequencyType.getValue().longValue(), periodFrequencyType.getCode(), periodFrequencyType.toString()); - optionDatas.add(optionData); + optionDatas.add(optionData); } } return optionDatas; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/SmsCampaignData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/SmsCampaignData.java index b3bd3ec85..a79660872 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/SmsCampaignData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/SmsCampaignData.java @@ -45,7 +45,7 @@ public class SmsCampaignData { private final String recurrence; private final Long providerId; private final boolean isNotification; - + private final Collection smsProviderOptions; @@ -62,16 +62,16 @@ public class SmsCampaignData { private final Collection frequencyTypeOptions; private final Collection periodFrequencyOptions; - + private SmsCampaignData(final Long id, final String campaignName, final EnumOptionData campaignType, final EnumOptionData triggerType, - final Long runReportId, + final Long runReportId, final String reportName, final String paramValue, final EnumOptionData campaignStatus, final String message, final DateTime nextTriggerDate, final LocalDate lastTriggerDate, final SmsCampaignTimeLine smsCampaignTimeLine, final DateTime recurrenceStartDate, final String recurrence, final Long providerId, final Collection businessRulesOptions, final Collection smsProviderOptions, final Collection campaignTypeOptions, - final Collection triggerTypeOptions, final Collection months, - final Collection weekDays, final Collection frequencyTypeOptions, + final Collection triggerTypeOptions, final Collection months, + final Collection weekDays, final Collection frequencyTypeOptions, final Collection periodFrequencyOptions, final boolean isNotification) { this.id = id; this.campaignName = campaignName; @@ -108,7 +108,7 @@ public class SmsCampaignData { } public static SmsCampaignData instance(final Long id, final String campaignName, final EnumOptionData campaignType, - final EnumOptionData triggerType, + final EnumOptionData triggerType, final Long runReportId, final String reportName, final String paramValue, final EnumOptionData campaignStatus, final String message, final DateTime nextTriggerDate, final LocalDate lastTriggerDate, final SmsCampaignTimeLine smsCampaignTimeLine, final DateTime recurrenceStartDate, final String recurrence, diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/SmsProviderData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/SmsProviderData.java index 9ae976890..a7fcfe20e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/SmsProviderData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/SmsProviderData.java @@ -23,16 +23,16 @@ public class SmsProviderData { private Long id; private String tenantId; - + private String phoneNo; - + private String providerAppKey; private String providerName; private String providerDescription; - public SmsProviderData(final Long id, final String providerAppKey, final String providerName, final String providerDescription, final String tenantId, + public SmsProviderData(final Long id, final String providerAppKey, final String providerName, final String providerDescription, final String tenantId, final String phoneNo) { this.id = id; this.providerAppKey = providerAppKey; @@ -41,9 +41,9 @@ public class SmsProviderData { this.tenantId = tenantId; this.phoneNo = phoneNo; } - + public SmsProviderData() { - + } public Long getId() { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaign.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaign.java index 91c8b7197..5fb059819 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaign.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaign.java @@ -63,10 +63,10 @@ public class SmsCampaign extends AbstractPersistableCustom { @Column(name = "campaign_type", nullable = false) private Integer campaignType ; //defines email or sms, etc.. - + @Column(name = "campaign_trigger_type", nullable = false) private Integer triggerType; //defines direct, scheduled, transaction - + @Column(name = "provider_id", nullable = true)//null for notifications private Long providerId; // defined provider details @@ -124,13 +124,13 @@ public class SmsCampaign extends AbstractPersistableCustom { @Column(name = "is_visible", nullable = true) private boolean isVisible; - + @Column(name = "is_notification", nullable = true) private boolean isNotification; public SmsCampaign() {} - private SmsCampaign(final String campaignName, final Integer campaignType, + private SmsCampaign(final String campaignName, final Integer campaignType, final Integer triggerType, final Report businessRuleId, final Long providerId, final String paramValue, final String message, final LocalDate submittedOnDate, final AppUser submittedBy, final String recurrence, final LocalDateTime localDateTime, final boolean isNotification) { @@ -168,7 +168,7 @@ public class SmsCampaign extends AbstractPersistableCustom { if(!isNotification){ providerId = command.longValueOfParameterNamed(SmsCampaignValidator.providerId); } - + final String paramValue = command.jsonFragment(SmsCampaignValidator.paramValue); final String message = command.stringValueOfParameterNamed(SmsCampaignValidator.message); @@ -177,7 +177,7 @@ public class SmsCampaign extends AbstractPersistableCustom { submittedOnDate = command.localDateValueOfParameterNamed(SmsCampaignValidator.submittedOnDateParamName); } String recurrence = null; - + LocalDateTime recurrenceStartDate = new LocalDateTime(); if (SmsCampaignTriggerType.fromInt(triggerType.intValue()).isSchedule()) { @@ -584,6 +584,6 @@ public class SmsCampaign extends AbstractPersistableCustom { public void setNotification(boolean isNotification) { this.isNotification = isNotification; } - - + + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaignRepository.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaignRepository.java index cb1cf1c9f..6b339cf64 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaignRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaignRepository.java @@ -32,11 +32,11 @@ public interface SmsCampaignRepository extends JpaRepository, Collection findByCampaignTypeAndTriggerTypeAndStatus(final Integer campaignType, final Integer triggerType, final Integer status); - + Collection findByTriggerTypeAndStatus(final Integer triggerType, final Integer status); Collection findByTriggerType(final Integer triggerType) ; - + @Query("SELECT campaign FROM SmsCampaign campaign WHERE campaign.paramValue LIKE :reportPattern AND campaign.triggerType=:triggerType AND campaign.status=300") List findActiveSmsCampaigns(@Param("reportPattern") final String reportPattern, @Param("triggerType") final Integer triggerType) ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/serialization/SmsCampaignValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/serialization/SmsCampaignValidator.java index e48e96866..9bd5f22d9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/serialization/SmsCampaignValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/serialization/SmsCampaignValidator.java @@ -146,7 +146,7 @@ public class SmsCampaignValidator { final Long runReportId = this.fromApiJsonHelper.extractLongNamed(SmsCampaignValidator.runReportId, element); baseDataValidator.reset().parameter(SmsCampaignValidator.runReportId).value(runReportId).notNull().integerGreaterThanZero(); - + final String message = this.fromApiJsonHelper.extractStringNamed(SmsCampaignValidator.message, element); baseDataValidator.reset().parameter(SmsCampaignValidator.message).value(message).notBlank().notExceedingLengthOf(480); @@ -166,7 +166,7 @@ public class SmsCampaignValidator { element); baseDataValidator.reset().parameter(SmsCampaignValidator.submittedOnDateParamName).value(submittedOnDate).notNull(); } - + if (this.fromApiJsonHelper.parameterExists(SmsCampaignValidator.isNotificationParamName, element)) { final Boolean isNotification = this.fromApiJsonHelper.extractBooleanNamed(SmsCampaignValidator.isNotificationParamName, element); @@ -320,7 +320,7 @@ public class SmsCampaignValidator { private void throwExceptionIfValidationWarningsExist(final List dataValidationErrors) { if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } } - + public boolean isValidNotificationOrSms(Client client, SmsCampaign smsCampaign, Object mobileNo) { if (smsCampaign.isNotification()) { if (client != null) { @@ -332,5 +332,5 @@ public class SmsCampaignValidator { } return (mobileNo != null); } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDomainServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDomainServiceImpl.java index a6644f55a..34097facc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDomainServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDomainServiceImpl.java @@ -67,9 +67,9 @@ import org.springframework.stereotype.Service; public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { private static final Logger logger = LoggerFactory.getLogger(SmsCampaignDomainServiceImpl.class); - + //private final static int POOL_SIZE = 5 ; - + private final SmsCampaignRepository smsCampaignRepository; private final SmsMessageRepository smsMessageRepository; private final OfficeRepository officeRepository; @@ -77,9 +77,9 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { private final SmsCampaignWritePlatformService smsCampaignWritePlatformCommandHandler; private final GroupRepository groupRepository; - private final SmsMessageScheduledJobService smsMessageScheduledJobService; + private final SmsMessageScheduledJobService smsMessageScheduledJobService; private final SmsCampaignValidator smsCampaignValidator; - + @Autowired public SmsCampaignDomainServiceImpl(final SmsCampaignRepository smsCampaignRepository, final SmsMessageRepository smsMessageRepository, final BusinessEventNotifierService businessEventNotifierService, final OfficeRepository officeRepository, @@ -138,9 +138,9 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { this.smsCampaignWritePlatformCommandHandler.insertDirectCampaignIntoSmsOutboundTable(client, campaign); } } - + } - + private void notifyClientRejected(final Client client) { List smsCampaigns = retrieveSmsCampaigns("Client Rejected"); if(smsCampaigns.size()>0){ @@ -148,9 +148,9 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { this.smsCampaignWritePlatformCommandHandler.insertDirectCampaignIntoSmsOutboundTable(client, campaign); } } - + } - + private void notifySavingsAccountActivated(final SavingsAccount savingsAccount) { List smsCampaigns = retrieveSmsCampaigns("Savings Activated"); if (smsCampaigns.size() > 0) { @@ -172,7 +172,7 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { } } - + private void sendSmsForLoanRepayment(LoanTransaction loanTransaction) { List smsCampaigns = retrieveSmsCampaigns("Loan Repayment"); if (smsCampaigns.size() > 0) { @@ -302,7 +302,7 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { } } } - + private List retrieveSmsCampaigns(String paramValue){ List smsCampaigns = smsCampaignRepository.findActiveSmsCampaigns("%"+paramValue+"%", SmsCampaignTriggerType.TRIGGERED.getValue()); return smsCampaigns; @@ -335,21 +335,21 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { smsParams.put("loanId",loan.getId()); smsParams.put("LoanAccountId", loan.getAccountNumber()); smsParams.put("officeId", client.getOffice().getId()); - + if(client.getStaff() != null) { smsParams.put("loanOfficerId", client.getStaff().getId()); }else { smsParams.put("loanOfficerId", -1); } - + smsParams.put("repaymentAmount", loanTransaction.getAmount(loan.getCurrency())); smsParams.put("RepaymentDate", loanTransaction.getCreatedDateTime().toLocalDate().toString(dateFormatter)); smsParams.put("RepaymentTime", loanTransaction.getCreatedDateTime().toLocalTime().toString(timeFormatter)); - + if(loanTransaction.getPaymentDetail() != null) { smsParams.put("receiptNumber", loanTransaction.getPaymentDetail().getReceiptNumber()); }else { - smsParams.put("receiptNumber", -1); + smsParams.put("receiptNumber", -1); } return smsParams; } @@ -357,7 +357,7 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { private HashMap processSavingsTransactionDataForSms(final SavingsAccountTransaction savingsAccountTransaction, Client client){ // {{savingsId}} {{id}} {{firstname}} {{middlename}} {{lastname}} {{FullName}} {{mobileNo}} {{savingsAccountId}} {{depositAmount}} {{balance}} - + //transactionDate HashMap smsParams = new HashMap(); SavingsAccount savingsAccount = savingsAccountTransaction.getSavingsAccount() ; @@ -376,21 +376,21 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { smsParams.put("officeId", client.getOffice().getId()); smsParams.put("transactionDate", savingsAccountTransaction.getTransactionLocalDate().toString(dateFormatter)) ; smsParams.put("savingsTransactionId", savingsAccountTransaction.getId()) ; - + if(client.getStaff() != null) { smsParams.put("loanOfficerId", client.getStaff().getId()); }else { smsParams.put("loanOfficerId", -1); } - + if(savingsAccountTransaction.getPaymentDetail() != null) { smsParams.put("receiptNumber", savingsAccountTransaction.getPaymentDetail().getReceiptNumber()); }else { - smsParams.put("receiptNumber", -1); + smsParams.put("receiptNumber", -1); } return smsParams; } - + private abstract class SmsBusinessEventAdapter implements BusinessEventListner { @Override @@ -398,7 +398,7 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { //Nothing to do } } - + private class SendSmsOnLoanApproved extends SmsBusinessEventAdapter{ @Override @@ -434,18 +434,18 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { } } } - + private class ClientActivatedListener extends SmsBusinessEventAdapter { @Override public void businessEventWasExecuted(Map businessEventEntity) { Object entity = businessEventEntity.get(BusinessEventNotificationConstants.BUSINESS_ENTITY.CLIENT); if(entity instanceof Client) { - notifyClientActivated((Client)entity); + notifyClientActivated((Client)entity); } } } - + private class ClientRejectedListener extends SmsBusinessEventAdapter { @Override @@ -454,10 +454,10 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { if(entity instanceof Client) { notifyClientRejected((Client)entity); } - + } } - + private class SavingsAccountActivatedListener extends SmsBusinessEventAdapter{ @Override @@ -466,10 +466,10 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { if(entity instanceof SavingsAccount) { notifySavingsAccountActivated((SavingsAccount)entity); } - + } } - + private class SavingsAccountRejectedListener extends SmsBusinessEventAdapter { @Override @@ -480,11 +480,11 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { } } } - + private class SavingsAccountTransactionListener extends SmsBusinessEventAdapter { final boolean isDeposit ; - + public SavingsAccountTransactionListener(final boolean isDeposit) { this.isDeposit = isDeposit ; } @@ -497,15 +497,15 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { } } } - + /*private abstract class Task implements Runnable { - + protected final FineractPlatformTenant tenant; - + protected final String reportName ; - + private final Object entity ; - + public Task(final FineractPlatformTenant tenant, final String reportName, final Object entity) { this.tenant = tenant; this.reportName = reportName ; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDropdownReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDropdownReadPlatformServiceImpl.java index 69536f89e..524b9981b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDropdownReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDropdownReadPlatformServiceImpl.java @@ -49,7 +49,7 @@ public class SmsCampaignDropdownReadPlatformServiceImpl implements SmsCampaignDr private final RestTemplate restTemplate; private final SmsConfigUtils smsConfigUtils ; - + @Autowired public SmsCampaignDropdownReadPlatformServiceImpl(final SmsConfigUtils smsConfigUtils) { this.restTemplate = new RestTemplate(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignReadPlatformServiceImpl.java index 5e15272db..fa0593407 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignReadPlatformServiceImpl.java @@ -64,7 +64,7 @@ public class SmsCampaignReadPlatformServiceImpl implements SmsCampaignReadPlatfo @Autowired public SmsCampaignReadPlatformServiceImpl(final RoutingDataSource dataSource, - SmsCampaignDropdownReadPlatformService smsCampaignDropdownReadPlatformService, + SmsCampaignDropdownReadPlatformService smsCampaignDropdownReadPlatformService, final CalendarDropdownReadPlatformService calendarDropdownReadPlatformService) { this.jdbcTemplate = new JdbcTemplate(dataSource); businessRuleMapper = new BusinessRuleMapper(); @@ -193,7 +193,7 @@ public class SmsCampaignReadPlatformServiceImpl implements SmsCampaignReadPlatfo return smsBusinessRulesDataList; } } - + private static final class SmsCampaignMapper implements RowMapper { final String schema; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignWritePlatformService.java index b045a9390..205005009 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignWritePlatformService.java @@ -53,7 +53,7 @@ public interface SmsCampaignWritePlatformService { public void storeTemplateMessageIntoSmsOutBoundTable() throws JobExecutionException; public void insertDirectCampaignIntoSmsOutboundTable(final Client client, final SmsCampaign smsCampaign) ; - + public void insertDirectCampaignIntoSmsOutboundTable(final SavingsAccount savingsAccount, final SmsCampaign smsCampaign) ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignWritePlatformServiceJpaImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignWritePlatformServiceJpaImpl.java index 96a0db344..ffe52eb65 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignWritePlatformServiceJpaImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignWritePlatformServiceJpaImpl.java @@ -113,7 +113,7 @@ public class SmsCampaignWritePlatformServiceJpaImpl implements SmsCampaignWriteP private final DeviceRegistrationRepositoryWrapper deviceRegistrationRepository; private final SmsMessageScheduledJobService smsMessageScheduledJobService; - + @Autowired public SmsCampaignWritePlatformServiceJpaImpl(final PlatformSecurityContext context, final SmsCampaignRepository smsCampaignRepository, final SmsCampaignValidator smsCampaignValidator, final ReportRepository reportRepository, @@ -260,7 +260,7 @@ public class SmsCampaignWritePlatformServiceJpaImpl implements SmsCampaignWriteP HashMap campaignParams = new ObjectMapper().readValue(smsCampaign.getParamValue(), new TypeReference>() {}); campaignParams.put("loanId", loan.getId().toString()); - + HashMap queryParamForRunReport = new ObjectMapper().readValue(smsCampaign.getParamValue(), new TypeReference>() {}); queryParamForRunReport.put("loanId", loan.getId().toString()); @@ -277,7 +277,7 @@ public class SmsCampaignWritePlatformServiceJpaImpl implements SmsCampaignWriteP for (Client client : clientSet) { campaignParams.put("clientId", client.getId().toString()); queryParamForRunReport.put("clientId", client.getId().toString()); - + List> runReportObject = this.getRunReportByServiceImpl(campaignParams.get("reportName"), queryParamForRunReport); @@ -285,7 +285,7 @@ public class SmsCampaignWritePlatformServiceJpaImpl implements SmsCampaignWriteP for (HashMap entry : runReportObject) { String textMessage = this.compileSmsTemplate(smsCampaign.getMessage(), smsCampaign.getCampaignName(), entry); Object mobileNo = entry.get("mobileNo"); - + if (this.smsCampaignValidator.isValidNotificationOrSms(client, smsCampaign, mobileNo)) { String mobileNumber = null; if(mobileNo != null){ @@ -319,10 +319,10 @@ public class SmsCampaignWritePlatformServiceJpaImpl implements SmsCampaignWriteP campaignParams.put("clientId", client.getId().toString()); HashMap queryParamForRunReport = new ObjectMapper().readValue(smsCampaign.getParamValue(), new TypeReference>() {}); - + campaignParams.put("clientId", client.getId().toString()); queryParamForRunReport.put("clientId", client.getId().toString()); - + List> runReportObject = this .getRunReportByServiceImpl(campaignParams.get("reportName"), queryParamForRunReport); @@ -355,7 +355,7 @@ public class SmsCampaignWritePlatformServiceJpaImpl implements SmsCampaignWriteP logger.error(e.getMessage()) ; } } - + @Override public void insertDirectCampaignIntoSmsOutboundTable(final SavingsAccount savingsAccount, final SmsCampaign smsCampaign) { try { @@ -365,7 +365,7 @@ public class SmsCampaignWritePlatformServiceJpaImpl implements SmsCampaignWriteP HashMap queryParamForRunReport = new ObjectMapper().readValue(smsCampaign.getParamValue(), new TypeReference>() {}); queryParamForRunReport.put("savingsId", savingsAccount.getId().toString()); - + Client client = savingsAccount.getClient() ; List> runReportObject = this .getRunReportByServiceImpl(campaignParams.get("reportName"), queryParamForRunReport); @@ -399,7 +399,7 @@ public class SmsCampaignWritePlatformServiceJpaImpl implements SmsCampaignWriteP logger.error(e.getMessage()) ; } } - + private void updateTriggerDates(Long campaignId) { final SmsCampaign smsCampaign = this.smsCampaignRepository.findById(campaignId) .orElseThrow(() -> new SmsCampaignNotFound(campaignId)); @@ -687,7 +687,7 @@ public class SmsCampaignWritePlatformServiceJpaImpl implements SmsCampaignWriteP } return today; } - + // private String formatDestinationPhoneNumber(String phoneNumber, String countryCallingCode) { // StringBuilder formatedPhoneNumber = new StringBuilder("+"); // diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/CodeConstants.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/CodeConstants.java index 182c4d858..e117294b5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/CodeConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/CodeConstants.java @@ -28,7 +28,7 @@ public class CodeConstants { * value ***/ public static enum CODEVALUE_JSON_INPUT_PARAMS { - CODEVALUE_ID("id"), NAME("name"), POSITION("position"), DESCRIPTION("description"), IS_ACTIVE("isActive"), + CODEVALUE_ID("id"), NAME("name"), POSITION("position"), DESCRIPTION("description"), IS_ACTIVE("isActive"), IS_MANDATORY("isMandatory"); private final String value; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/api/CodeValuesApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/api/CodeValuesApiResource.java index b7e03a568..0beced378 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/api/CodeValuesApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/api/CodeValuesApiResource.java @@ -65,9 +65,9 @@ public class CodeValuesApiResource { * The set of parameters that are supported in response for {@link CodeData} */ private final Set RESPONSE_DATA_PARAMETERS = new HashSet<>( - Arrays.asList(CODEVALUE_JSON_INPUT_PARAMS.CODEVALUE_ID.getValue(), - CODEVALUE_JSON_INPUT_PARAMS.NAME.getValue(), CODEVALUE_JSON_INPUT_PARAMS.POSITION.getValue(), - CODEVALUE_JSON_INPUT_PARAMS.IS_MANDATORY.getValue(), + Arrays.asList(CODEVALUE_JSON_INPUT_PARAMS.CODEVALUE_ID.getValue(), + CODEVALUE_JSON_INPUT_PARAMS.NAME.getValue(), CODEVALUE_JSON_INPUT_PARAMS.POSITION.getValue(), + CODEVALUE_JSON_INPUT_PARAMS.IS_MANDATORY.getValue(), CODEVALUE_JSON_INPUT_PARAMS.DESCRIPTION.getValue())); private final String resourceNameForPermissions = "CODEVALUE"; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/data/CodeValueData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/data/CodeValueData.java index d7a5ca0ab..3ff438b2f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/data/CodeValueData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/data/CodeValueData.java @@ -46,23 +46,23 @@ public class CodeValueData implements Serializable { this.mandatory = false; } - public static CodeValueData instance(final Long id, final String name, final Integer position, + public static CodeValueData instance(final Long id, final String name, final Integer position, final boolean isActive, final boolean mandatory) { String description = null; return new CodeValueData(id, name, position, description, isActive, mandatory); } - public static CodeValueData instance(final Long id, final String name, final String description, + public static CodeValueData instance(final Long id, final String name, final String description, final boolean isActive, final boolean mandatory) { Integer position = null; return new CodeValueData(id, name, position, description, isActive, mandatory); } - - public static CodeValueData instance(final Long id, final String name, final String description, + + public static CodeValueData instance(final Long id, final String name, final String description, final boolean isActive) { Integer position = null; boolean mandatory = false; - + return new CodeValueData(id, name, position, description, isActive, mandatory); } @@ -71,16 +71,16 @@ public class CodeValueData implements Serializable { Integer position = null; boolean isActive = false; boolean mandatory = false; - + return new CodeValueData(id, name, position, description, isActive, mandatory); } - public static CodeValueData instance(final Long id, final String name, final Integer position, + public static CodeValueData instance(final Long id, final String name, final Integer position, final String description, final boolean isActive, final boolean mandatory) { return new CodeValueData(id, name, position, description, isActive, mandatory); } - private CodeValueData(final Long id, final String name, final Integer position, final String description, + private CodeValueData(final Long id, final String name, final Integer position, final String description, final boolean active, final boolean mandatory) { this.id = id; this.name = name; @@ -97,7 +97,7 @@ public class CodeValueData implements Serializable { public String getName() { return this.name; } - + /** * @return the mandatory */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/Code.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/Code.java index 82fafb2a8..81353cfaa 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/Code.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/Code.java @@ -52,7 +52,7 @@ public class Code extends AbstractPersistableCustom { final String name = command.stringValueOfParameterNamed("name"); return new Code(name); } - + public static Code createNew(final String name) { return new Code(name); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValue.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValue.java index 8ee1ac848..29d8c0819 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValue.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValue.java @@ -53,7 +53,7 @@ public class CodeValue extends AbstractPersistableCustom { @Column(name = "is_active") private boolean isActive; - + @Column(name = "is_mandatory") private boolean mandatory; @@ -66,7 +66,7 @@ public class CodeValue extends AbstractPersistableCustom { // } - private CodeValue(final Code code, final String label, final int position, final String description, + private CodeValue(final Code code, final String label, final int position, final String description, final boolean isActive, final boolean mandatory) { this.code = code; this.label = StringUtils.defaultIfEmpty(label, null); @@ -97,15 +97,15 @@ public class CodeValue extends AbstractPersistableCustom { if (position == null) { position = new Integer(0); } - + Boolean mandatory = command.booleanPrimitiveValueOfParameterNamed( CODEVALUE_JSON_INPUT_PARAMS.IS_MANDATORY.getValue()); - + // if the "mandatory" Boolean object is null, then set it to false by default if (mandatory == null) { mandatory = false; } - + return new CodeValue(code, label, position.intValue(), description, isActive, mandatory); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValueRepository.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValueRepository.java index a9c96094e..cae081e3e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValueRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValueRepository.java @@ -24,6 +24,6 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; public interface CodeValueRepository extends JpaRepository, JpaSpecificationExecutor { CodeValue findByCodeNameAndId(String codeName, Long id); - + CodeValue findByCodeNameAndLabel (String codeName, String label); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValueRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValueRepositoryWrapper.java index 60e25eeb5..d7aed0341 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValueRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValueRepositoryWrapper.java @@ -29,7 +29,7 @@ import org.springframework.stereotype.Service; * findByCodeNameAndId repository methods and throwing an * appropriate not found exception. *

- * + * *

* This is to avoid need for checking and throwing in multiple areas of code * base where {@link CodeValueRepository} is required. @@ -54,11 +54,11 @@ public class CodeValueRepositoryWrapper { if (codeValue == null) { throw new CodeValueNotFoundException(codeName, id); } return codeValue; } - + public CodeValue findOneByCodeNameAndLabelWithNotFoundDetection(final String codeName, final String label) { final CodeValue codeValue = this.repository.findByCodeNameAndLabel(codeName, label); if (codeValue == null) { throw new CodeValueNotFoundException(codeName, label); } return codeValue; } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/exception/CodeValueNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/exception/CodeValueNotFoundException.java index f56a661e3..3b276a8eb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/exception/CodeValueNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/exception/CodeValueNotFoundException.java @@ -33,7 +33,7 @@ public class CodeValueNotFoundException extends AbstractPlatformResourceNotFound super("error.msg.codevalue.codename.id.combination.invalid", "Code value with identifier " + id + " does not exist for a code with name " + codeName, id, codeName); } - + public CodeValueNotFoundException(final String codeName, final String label) { super("error.msg.codevalue.codename.id.combination.invalid", "Code value with label " + label + " does not exist for a code with name " + codeName, label, codeName); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueReadPlatformService.java index fc93e10dd..f9cbe6a9a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueReadPlatformService.java @@ -24,18 +24,18 @@ import org.apache.fineract.infrastructure.codes.data.CodeValueData; /** * A service for retrieving code value information based on the code itself. - * + * * There are two types of code information in the platform: *

    *
  1. System defined codes
  2. *
  3. User defined codes
  4. *
- * + * *

* System defined codes cannot be altered or removed but their code values may * be allowed to be added to or removed. *

- * + * *

* User defined codes can be changed in any way by application users with system * permissions. diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueReadPlatformServiceImpl.java index 6a9d13f1b..90b0bc67a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueReadPlatformServiceImpl.java @@ -61,7 +61,7 @@ public class CodeValueReadPlatformServiceImpl implements CodeValueReadPlatformSe final String description = rs.getString("description"); final boolean isActive = rs.getBoolean("isActive"); final boolean mandatory = rs.getBoolean("mandatory"); - + return CodeValueData.instance(id, value, position, description, isActive, mandatory); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/api/GlobalConfigurationApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/api/GlobalConfigurationApiResource.java index 5f7710356..0f40f1df5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/api/GlobalConfigurationApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/api/GlobalConfigurationApiResource.java @@ -92,7 +92,7 @@ public class GlobalConfigurationApiResource { final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); return this.toApiJsonSerializer.serialize(settings, configurationData, this.RESPONSE_DATA_PARAMETERS); } - + @GET @Path("{configId}") @Consumes({ MediaType.APPLICATION_JSON }) diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/data/GlobalConfigurationDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/data/GlobalConfigurationDataValidator.java index 719a78a7a..21d8012c9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/data/GlobalConfigurationDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/data/GlobalConfigurationDataValidator.java @@ -80,7 +80,7 @@ public class GlobalConfigurationDataValidator { baseDataValidator.reset().parameter(GlobalConfigurationApiConstant.ENABLED).value(valueStr) .zeroOrPositiveAmount(); } - + if (this.fromApiJsonHelper.parameterExists(GlobalConfigurationApiConstant.DATE_VALUE, element)) { final LocalDate dateValue = this.fromApiJsonHelper .extractLocalDateNamed(GlobalConfigurationApiConstant.DATE_VALUE, element); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/data/GlobalConfigurationPropertyData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/data/GlobalConfigurationPropertyData.java index 19ce05005..dd4428b9a 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/data/GlobalConfigurationPropertyData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/data/GlobalConfigurationPropertyData.java @@ -39,7 +39,7 @@ public class GlobalConfigurationPropertyData { @SuppressWarnings("unused") private final boolean trapDoor; - public GlobalConfigurationPropertyData(final String name, final boolean enabled, final Long value, final Date dateValue, final String description, + public GlobalConfigurationPropertyData(final String name, final boolean enabled, final Long value, final Date dateValue, final String description, final boolean trapDoor) { this.name = name; this.enabled = enabled; @@ -88,6 +88,6 @@ public class GlobalConfigurationPropertyData { public boolean isTrapDoor() { return this.trapDoor; } - - + + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ConfigurationDomainService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ConfigurationDomainService.java index f2eab6429..5586bdce6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ConfigurationDomainService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ConfigurationDomainService.java @@ -65,23 +65,23 @@ public interface ConfigurationDomainService { int getRoundingMode(); boolean isBackdatePenaltiesEnabled(); - + boolean isOrganisationstartDateEnabled(); - + Date retrieveOrganisationStartDate(); - + boolean isPaymnetypeApplicableforDisbursementCharge(); boolean isInterestChargedFromDateSameAsDisbursementDate(); boolean isSkippingMeetingOnFirstDayOfMonthEnabled(); - + Long retreivePeroidInNumberOfDaysForSkipMeetingDate(); - + boolean isChangeEmiIfRepaymentDateSameAsDisbursementDateEnabled(); - + boolean isDailyTPTLimitEnabled(); - + Long getDailyTPTLimit(); void removeGlobalConfigurationPropertyDataFromCache(String propertyName); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ConfigurationDomainServiceJpa.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ConfigurationDomainServiceJpa.java index 3f9c1dad2..25e7ab52a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ConfigurationDomainServiceJpa.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ConfigurationDomainServiceJpa.java @@ -78,7 +78,7 @@ public class ConfigurationDomainServiceJpa implements ConfigurationDomainService /* * (non-Javadoc) - * + * * @see org.apache.fineract.infrastructure.configuration.domain. * ConfigurationDomainService#isHolidaysEnabled() */ @@ -238,7 +238,7 @@ public class ConfigurationDomainServiceJpa implements ConfigurationDomainService final GlobalConfigurationPropertyData property = getGlobalConfigurationPropertyData(propertyName); return property.isEnabled(); } - + @Override public boolean isSkippingMeetingOnFirstDayOfMonthEnabled() { return getGlobalConfigurationPropertyData("skip-repayment-on-first-day-of-month").isEnabled(); @@ -258,7 +258,7 @@ public class ConfigurationDomainServiceJpa implements ConfigurationDomainService final GlobalConfigurationPropertyData property = getGlobalConfigurationPropertyData(propertyName); return property.isEnabled(); } - + @Override public boolean isChangeEmiIfRepaymentDateSameAsDisbursementDateEnabled() { final String propertyName = "change-emi-if-repaymentdate-same-as-disbursementdate"; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalServicePropertiesPK.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalServicePropertiesPK.java index 4bf8454ad..fc344e674 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalServicePropertiesPK.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalServicePropertiesPK.java @@ -51,8 +51,8 @@ public class ExternalServicePropertiesPK implements Serializable { public Long getExternalService() { return externalServiceId; } - - @Override + + @Override public boolean equals(Object obj) { if (obj == null) { return false; @@ -70,7 +70,7 @@ public class ExternalServicePropertiesPK implements Serializable { .isEquals(); } - @Override + @Override public int hashCode() { return new HashCodeBuilder(17, 37) // .append(this.externalServiceId) // diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationProperty.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationProperty.java index 10f4e85be..47751ef71 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationProperty.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationProperty.java @@ -44,7 +44,7 @@ public class GlobalConfigurationProperty extends AbstractPersistableCustom @Column(name = "value", nullable = true) private Long value; - + @Column(name = "date_value", nullable = true) private Date dateValue; @@ -80,7 +80,7 @@ public class GlobalConfigurationProperty extends AbstractPersistableCustom public Long getValue() { return this.value; } - + public Date getDateValue(){ return this.dateValue; } @@ -106,7 +106,7 @@ public class GlobalConfigurationProperty extends AbstractPersistableCustom actualChanges.put(valueParamName, newValue); this.value = newValue; } - + final String dateValueParamName = "dateValue"; if(command.isChangeInDateParameterNamed(dateValueParamName, this.dateValue)){ final Date newDateValue = command.DateValueOfParameterNamed(dateValueParamName); @@ -127,12 +127,12 @@ public class GlobalConfigurationProperty extends AbstractPersistableCustom public static GlobalConfigurationProperty newSurveyConfiguration(final String name) { return new GlobalConfigurationProperty(name, false, null, null, null, false); } - + public GlobalConfigurationPropertyData toData() { return new GlobalConfigurationPropertyData(getName(), isEnabled(), getValue(), getDateValue(), this.getId(), this.description, this.isTrapDoor); } - + public String getName() { return this.name; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/exception/GlobalConfigurationPropertyCannotBeModfied.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/exception/GlobalConfigurationPropertyCannotBeModfied.java index 3e264add5..0a8964a66 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/exception/GlobalConfigurationPropertyCannotBeModfied.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/exception/GlobalConfigurationPropertyCannotBeModfied.java @@ -21,7 +21,7 @@ package org.apache.fineract.infrastructure.configuration.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; public class GlobalConfigurationPropertyCannotBeModfied extends AbstractPlatformDomainRuleException{ - + public GlobalConfigurationPropertyCannotBeModfied(final Long configId) { super("error.msg.configuration.id.not.modifiable", "Configuration identifier `" + configId + "` cannot be modified", new Object[] {configId}); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ConfigurationReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ConfigurationReadPlatformService.java index 2c9c9c11a..9f35e38fa 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ConfigurationReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ConfigurationReadPlatformService.java @@ -24,7 +24,7 @@ import org.apache.fineract.infrastructure.configuration.data.GlobalConfiguration public interface ConfigurationReadPlatformService { GlobalConfigurationPropertyData retrieveGlobalConfiguration(Long configId); - + GlobalConfigurationPropertyData retrieveGlobalConfiguration(String name); GlobalConfigurationData retrieveGlobalConfiguration(boolean survey); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ConfigurationReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ConfigurationReadPlatformServiceImpl.java index ab7f30f23..ea195b035 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ConfigurationReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ConfigurationReadPlatformServiceImpl.java @@ -59,16 +59,16 @@ public class ConfigurationReadPlatformServiceImpl implements ConfigurationReadPl sql += " JOIN x_registered_table on x_registered_table.registered_table_name = c.name "; sql += " WHERE x_registered_table.category =" + DataTableApiConstant.CATEGORY_PPI; - } + } sql += " order by c.id"; final List globalConfiguration = this.jdbcTemplate.query(sql, this.rm, new Object[] {}); return new GlobalConfigurationData(globalConfiguration); } - - - + + + @Override public GlobalConfigurationPropertyData retrieveGlobalConfiguration(String name) { @@ -95,7 +95,7 @@ public class ConfigurationReadPlatformServiceImpl implements ConfigurationReadPl return globalConfiguration; } - + private static final class GlobalConfigurationRowMapper implements RowMapper { @Override diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ExternalServicesConstants.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ExternalServicesConstants.java index 382f81cca..e6a04ffdb 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ExternalServicesConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ExternalServicesConstants.java @@ -42,12 +42,12 @@ public class ExternalServicesConstants { public static final String SMS_PORT = "port_number"; public static final String SMS_END_POINT = "end_point"; public static final String SMS_TENANT_APP_KEY = "tenant_app_key"; - + public static final String NOTIFICATION_SERVICE_NAME = "NOTIFICATION"; public static final String NOTIFICATION_SERVER_KEY = "server_key"; public static final String NOTIFICATION_GCM_END_POINT = "gcm_end_point"; public static final String NOTIFICATION_FCM_END_POINT = "fcm_end_point"; - + public static enum EXTERNALSERVICEPROPERTIES_JSON_INPUT_PARAMS { EXTERNAL_SERVICE_ID("external_service_id"), NAME("name"), VALUE("value"); @@ -109,7 +109,7 @@ public class ExternalServicesConstants { return this.value; } } - + public static enum SMS_JSON_INPUT_PARAMS { HASTNAME("host_name"), PORT("port_number"), END_POINT("end_point"), TENANT_APP_KEY("tenant_app_key"); @@ -171,7 +171,7 @@ public class ExternalServicesConstants { return this.value; } } - + public static enum NOTIFICATION_JSON_INPUT_PARAMS { SERVER_KEY("server_key"), GCM_END_POINT("gcm_end_point"), FCM_END_POINT("fcm_end_point"); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ExternalServicesPropertiesReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ExternalServicesPropertiesReadPlatformService.java index 25f4b8e76..b62669e1d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ExternalServicesPropertiesReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ExternalServicesPropertiesReadPlatformService.java @@ -35,7 +35,7 @@ public interface ExternalServicesPropertiesReadPlatformService { MessageGatewayConfigurationData getSMSGateway(); Collection retrieveOne(String serviceName); - + NotificationConfigurationData getNotificationConfiguration(); } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ExternalServicesPropertiesReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ExternalServicesPropertiesReadPlatformServiceImpl.java index 2255c3a05..002ba1a85 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ExternalServicesPropertiesReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ExternalServicesPropertiesReadPlatformServiceImpl.java @@ -199,7 +199,7 @@ public class ExternalServicesPropertiesReadPlatformServiceImpl implements Extern return this.jdbcTemplate.query(sql, mapper, new Object[] {}); } - + private static final class NotificationDataExtractor implements ResultSetExtractor { @Override diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/GlobalConfigurationWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/GlobalConfigurationWritePlatformServiceJpaRepositoryImpl.java index 55bc7c39c..142c71ea7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/GlobalConfigurationWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/GlobalConfigurationWritePlatformServiceJpaRepositoryImpl.java @@ -67,7 +67,7 @@ public class GlobalConfigurationWritePlatformServiceJpaRepositoryImpl implements this.globalConfigurationDataValidator.validateForUpdate(command); final GlobalConfigurationProperty configItemForUpdate = this.repository.findOneWithNotFoundDetection(configId); - + final Map changes = configItemForUpdate.update(command); if (!changes.isEmpty()) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/ApiParameterHelper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/ApiParameterHelper.java index 62ac66669..a52ef796a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/ApiParameterHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/ApiParameterHelper.java @@ -171,7 +171,7 @@ public class ApiParameterHelper { SQLInjectionValidator.validateSQLInput(str); return singleQuote + StringUtils.replace(str, singleQuote, twoSingleQuotes, -1) + singleQuote; } - + public static Map asMap(final MultivaluedMap queryParameters) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/JsonCommand.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/JsonCommand.java index 76f30c6eb..7782a4791 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/JsonCommand.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/JsonCommand.java @@ -44,7 +44,7 @@ import com.google.gson.reflect.TypeToken; /** * Immutable representation of a command. - * + * * Wraps the provided JSON with convenience functions for extracting parameter * values and checking for changes against an existing value. */ @@ -121,16 +121,16 @@ public final class JsonCommand { this.creditBureauId=creditBureauId; this.organisationCreditBureauId=organisationCreditBureauId; } - + public static JsonCommand fromJsonElement(final Long resourceId, final JsonElement parsedCommand) { return new JsonCommand(resourceId, parsedCommand); } - + public JsonCommand(final Long resourceId, final JsonElement parsedCommand) { this.parsedCommand = parsedCommand; this.resourceId = resourceId; this.commandId = null; - this.jsonCommand = null; + this.jsonCommand = null; this.fromApiJsonHelper = null; this.entityName = null; this.subresourceId = null; @@ -144,11 +144,11 @@ public final class JsonCommand { this.creditBureauId=null; this.organisationCreditBureauId=null; } - + public Long getOrganisationCreditBureauId() { return this.organisationCreditBureauId; } - + public Long getCreditBureauId() { return this.creditBureauId; } @@ -167,7 +167,7 @@ public final class JsonCommand { } return null; } - + public String jsonFragment(final String paramName) { String jsonFragment = null; if (this.parsedCommand.getAsJsonObject().has(paramName)) { @@ -232,7 +232,7 @@ public final class JsonCommand { return differenceExists; } - + private boolean differenceExists(final LocalDate baseValue, final LocalDate workingCopyValue) { boolean differenceExists = false; @@ -343,7 +343,7 @@ public final class JsonCommand { } return isChangeInLocalDateParameterNamed(parameterName, localDate); } - + public boolean isChangeInTimeParameterNamed(final String parameterName, final Date existingValue,final String timeFormat) { LocalDateTime time = null; if (existingValue != null) { @@ -361,7 +361,7 @@ public final class JsonCommand { } return isChanged; } - + public boolean isChangeInLocalDateParameterNamed(final String parameterName, final LocalDate existingValue) { boolean isChanged = false; if (parameterExists(parameterName)) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/JsonQuery.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/JsonQuery.java index e8580d7f4..477280915 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/JsonQuery.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/JsonQuery.java @@ -36,7 +36,7 @@ import com.google.gson.reflect.TypeToken; /** * Immutable representation of a query. - * + * * Wraps the provided JSON with convenience functions for extracting parameter * values. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/JDBCDriverConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/JDBCDriverConfig.java index 64de7aff1..51e1f625e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/JDBCDriverConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/JDBCDriverConfig.java @@ -32,14 +32,14 @@ public class JDBCDriverConfig { private final static String PROTOCOL_PROPERTYNAME = "PROTOCOL" ; private final static String SUBPROTOCOL_PROPERTYNAME = "SUB_PROTOCOL" ; private final static String PORT_PROPERTYNAME = "PORT" ; - + private String driverClassName ; private String protocol ; private String subProtocol ; private Integer port ; - + @Autowired ApplicationContext context ; - + @PostConstruct protected void init() { Environment environment = context.getEnvironment() ; @@ -48,11 +48,11 @@ public class JDBCDriverConfig { subProtocol = (String) environment.getProperty(SUBPROTOCOL_PROPERTYNAME) ; port = Integer.parseInt((String) environment.getProperty(PORT_PROPERTYNAME)) ; } - + public String getDriverClassName() { return this.driverClassName ; } - + public String getProtocol() { return this.protocol ; } @@ -60,11 +60,11 @@ public class JDBCDriverConfig { public String getSubProtocol() { return this.subProtocol ; } - + public Integer getPort() { return this.port ; } - + public String constructProtocol(String schemaServer, String schemaServerPort, String schemaName) { final String url = new StringBuilder(protocol).append(":").append(subProtocol).append("://").append(schemaServer).append(':').append(schemaServerPort) .append('/').append(schemaName).toString(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/WebXmlOauthConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/WebXmlOauthConfiguration.java index 635e298e8..1f59910cf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/WebXmlOauthConfiguration.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/WebXmlOauthConfiguration.java @@ -31,8 +31,8 @@ import org.springframework.web.servlet.DispatcherServlet; import com.sun.jersey.spi.spring.container.servlet.SpringServlet; /** - * This Configuration replaces what formerly was in web.xml. Beans are loaded only when "oauth" Profile is enabled. - * + * This Configuration replaces what formerly was in web.xml. Beans are loaded only when "oauth" Profile is enabled. + * * @see #howto-convert-an-existing-application-to-spring-boot */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/db/DataSourceConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/db/DataSourceConfiguration.java index 703f0f795..b10e5c248 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/db/DataSourceConfiguration.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/db/DataSourceConfiguration.java @@ -35,9 +35,9 @@ import org.springframework.context.annotation.Configuration; @Configuration public class DataSourceConfiguration { private static final Logger logger = LoggerFactory.getLogger(DataSourceConfiguration.class); - + @Autowired JDBCDriverConfig config ; - + @Bean public DataSourceProperties dataSourceProperties() { return new DataSourceProperties(config.getDriverClassName(), config.getProtocol(), config.getSubProtocol(), config.getPort()); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/CommandProcessingResultBuilder.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/CommandProcessingResultBuilder.java index 147df29fc..bfc357514 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/CommandProcessingResultBuilder.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/CommandProcessingResultBuilder.java @@ -65,7 +65,7 @@ public class CommandProcessingResultBuilder { this.entityId = withEntityId; return this; } - + public CommandProcessingResultBuilder withSubEntityId(final Long withSubEntityId) { this.subEntityId = withSubEntityId; return this; @@ -105,7 +105,7 @@ public class CommandProcessingResultBuilder { this.productId = productId; return this; } - + public CommandProcessingResultBuilder setRollbackTransaction(final boolean rollbackTransaction) { this.rollbackTransaction = this.rollbackTransaction || rollbackTransaction; return this; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/DataValidatorBuilder.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/DataValidatorBuilder.java index d09b48b6b..9b007a85e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/DataValidatorBuilder.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/DataValidatorBuilder.java @@ -169,11 +169,11 @@ public class DataValidatorBuilder { } return this; } - - + + public DataValidatorBuilder trueOrFalseRequired(final Object trueOfFalseField) { - + if(trueOfFalseField!=null) { if((!trueOfFalseField.toString().equalsIgnoreCase("true")) && (!trueOfFalseField.toString().equalsIgnoreCase("false")) ) @@ -184,10 +184,10 @@ public class DataValidatorBuilder { " must be set as true or false."); final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode.toString(), defaultEnglishMessage.toString(), this.parameter); - this.dataValidationErrors.add(error); + this.dataValidationErrors.add(error); } } - + return this; } @@ -235,7 +235,7 @@ public class DataValidatorBuilder { } return this; } - + public DataValidatorBuilder notExceedingLengthOf(final Integer maxLength) { if (this.value == null && this.ignoreNullValue) { return this; } @@ -565,7 +565,7 @@ public class DataValidatorBuilder { } return this; } - + public DataValidatorBuilder longGreaterThanNumber(String paramName, Long number, int index) { if (this.value == null && this.ignoreNullValue) { return this; } @@ -583,7 +583,7 @@ public class DataValidatorBuilder { } return this; } - + public DataValidatorBuilder arrayNotEmpty() { if (this.value == null && this.ignoreNullValue) { return this; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/EnumOptionData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/EnumOptionData.java index 0d656fa0d..d6e9c9fb2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/EnumOptionData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/EnumOptionData.java @@ -45,7 +45,7 @@ public class EnumOptionData implements Serializable { public String getCode() { return this.code; } - + public String getValue() { return this.value; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/PaginationParameters.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/PaginationParameters.java index 3e0c7b493..e12ce5743 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/PaginationParameters.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/PaginationParameters.java @@ -125,16 +125,16 @@ public class PaginationParameters { } return sql.toString(); } - + public String paginationSql(){ - final StringBuilder sqlBuilder = new StringBuilder(50); + final StringBuilder sqlBuilder = new StringBuilder(50); if (this.isOrderByRequested()) { sqlBuilder.append(' ').append(this.orderBySql()); - } + } if (this.isLimited()) { sqlBuilder.append(' ').append(this.limitSql()); } - + return sqlBuilder.toString(); } } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java index 028b4d5cd..7c4ce1d27 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java @@ -39,10 +39,10 @@ import org.springframework.data.jpa.domain.AbstractAuditable; /** * A custom copy of {@link AbstractAuditable} to override the column names used * on database. - * + * * Abstract base class for auditable entities. Stores the audition values in * persistent fields. - * + * * @param * the auditing type. Typically some kind of user. * @param @@ -71,7 +71,7 @@ public abstract class AbstractAuditableCustom extend /* * (non-Javadoc) - * + * * @see org.springframework.data.domain.Auditable#getCreatedBy() */ @Override @@ -81,7 +81,7 @@ public abstract class AbstractAuditableCustom extend /* * (non-Javadoc) - * + * * @see * org.springframework.data.domain.Auditable#setCreatedBy(java.lang.Object) */ @@ -93,7 +93,7 @@ public abstract class AbstractAuditableCustom extend /* * (non-Javadoc) - * + * * @see org.springframework.data.domain.Auditable#getCreatedDate() */ @Override @@ -103,7 +103,7 @@ public abstract class AbstractAuditableCustom extend /* * (non-Javadoc) - * + * * @see * org.springframework.data.domain.Auditable#setCreatedDate(T) */ @@ -114,7 +114,7 @@ public abstract class AbstractAuditableCustom extend /* * (non-Javadoc) - * + * * @see org.springframework.data.domain.Auditable#getLastModifiedBy() */ @Override @@ -124,7 +124,7 @@ public abstract class AbstractAuditableCustom extend /* * (non-Javadoc) - * + * * @see * org.springframework.data.domain.Auditable#setLastModifiedBy(java.lang * .Object) @@ -137,7 +137,7 @@ public abstract class AbstractAuditableCustom extend /* * (non-Javadoc) - * + * * @see org.springframework.data.domain.Auditable#getLastModifiedDate() */ @Override @@ -147,7 +147,7 @@ public abstract class AbstractAuditableCustom extend /* * (non-Javadoc) - * + * * @see * org.springframework.data.domain.Auditable#setLastModifiedDate(T) */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/FineractPlatformTenantConnection.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/FineractPlatformTenantConnection.java index af5d49339..54613bb1e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/FineractPlatformTenantConnection.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/FineractPlatformTenantConnection.java @@ -24,7 +24,7 @@ package org.apache.fineract.infrastructure.core.domain; * */ public class FineractPlatformTenantConnection { - + private final Long connectionId; private final String schemaServer; private final String schemaServerPort; @@ -47,12 +47,12 @@ public class FineractPlatformTenantConnection { private final int maxRetriesOnDeadlock; private final int maxIntervalBetweenRetries; private final boolean testOnBorrow; - + public FineractPlatformTenantConnection(final Long connectionId,final String schemaName, String schemaServer,final String schemaServerPort,final String schemaUsername,final String schemaPassword, final boolean autoUpdateEnabled,final int initialSize,final long validationInterval,final boolean removeAbandoned,final int removeAbandonedTimeout, final boolean logAbandoned,final int abandonWhenPercentageFull,final int maxActive,final int minIdle,final int maxIdle,final int suspectTimeout, final int timeBetweenEvictionRunsMillis,final int minEvictableIdleTimeMillis,final int maxRetriesOnDeadlock,final int maxIntervalBetweenRetries,final boolean tesOnBorrow) { - + this.connectionId = connectionId; this.schemaName =schemaName; this.schemaServer = schemaServer; @@ -84,7 +84,7 @@ public class FineractPlatformTenantConnection { .append('/').append(this.schemaName).toString(); return url; }*/ - + /** * @return the schemaServer */ @@ -92,7 +92,7 @@ public class FineractPlatformTenantConnection { return this.schemaServer; } - + /** * @return the schemaServerPort */ @@ -100,7 +100,7 @@ public class FineractPlatformTenantConnection { return this.schemaServerPort; } - + /** * @return the schemaUsername */ @@ -108,7 +108,7 @@ public class FineractPlatformTenantConnection { return this.schemaUsername; } - + /** * @return the schemaPassword */ @@ -116,7 +116,7 @@ public class FineractPlatformTenantConnection { return this.schemaPassword; } - + /** * @return the autoUpdateEnabled */ @@ -124,7 +124,7 @@ public class FineractPlatformTenantConnection { return this.autoUpdateEnabled; } - + /** * @return the initialSize */ @@ -132,7 +132,7 @@ public class FineractPlatformTenantConnection { return this.initialSize; } - + /** * @return the validationInterval */ @@ -140,7 +140,7 @@ public class FineractPlatformTenantConnection { return this.validationInterval; } - + /** * @return the removeAbandoned */ @@ -148,7 +148,7 @@ public class FineractPlatformTenantConnection { return this.removeAbandoned; } - + /** * @return the removeAbandonedTimeout */ @@ -156,7 +156,7 @@ public class FineractPlatformTenantConnection { return this.removeAbandonedTimeout; } - + /** * @return the logAbandoned */ @@ -164,7 +164,7 @@ public class FineractPlatformTenantConnection { return this.logAbandoned; } - + /** * @return the abandonWhenPercentageFull */ @@ -172,7 +172,7 @@ public class FineractPlatformTenantConnection { return this.abandonWhenPercentageFull; } - + /** * @return the maxActive */ @@ -180,7 +180,7 @@ public class FineractPlatformTenantConnection { return this.maxActive; } - + /** * @return the minIdle */ @@ -188,7 +188,7 @@ public class FineractPlatformTenantConnection { return this.minIdle; } - + /** * @return the maxIdle */ @@ -196,7 +196,7 @@ public class FineractPlatformTenantConnection { return this.maxIdle; } - + /** * @return the suspectTimeout */ @@ -204,7 +204,7 @@ public class FineractPlatformTenantConnection { return this.suspectTimeout; } - + /** * @return the timeBetweenEvictionRunsMillis */ @@ -212,7 +212,7 @@ public class FineractPlatformTenantConnection { return this.timeBetweenEvictionRunsMillis; } - + /** * @return the minEvictableIdleTimeMillis */ @@ -220,7 +220,7 @@ public class FineractPlatformTenantConnection { return this.minEvictableIdleTimeMillis; } - + /** * @return the maxRetriesOnDeadlock */ @@ -228,7 +228,7 @@ public class FineractPlatformTenantConnection { return this.maxRetriesOnDeadlock; } - + /** * @return the maxIntervalBetweenRetries */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/JdbcSupport.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/JdbcSupport.java index ca5f8cd1b..524f6eea9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/JdbcSupport.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/JdbcSupport.java @@ -70,7 +70,7 @@ public class JdbcSupport { localTime = new LocalTime(timeValue); } return localTime; - } + } public static Long getLong(final ResultSet rs, final String columnName) throws SQLException { return (Long) JdbcUtils.getResultSetValue(rs, rs.findColumn(columnName), Long.class); } @@ -83,7 +83,7 @@ public class JdbcSupport { final Integer value = (Integer) JdbcUtils.getResultSetValue(rs, rs.findColumn(columnName), Integer.class); return defaultToNullIfZero(value); } - + public static Long getLongDefaultToNullIfZero(final ResultSet rs, final String columnName) throws SQLException { final Long value = (Long) JdbcUtils.getResultSetValue(rs, rs.findColumn(columnName), Long.class); return defaultToNullIfZero(value); @@ -96,7 +96,7 @@ public class JdbcSupport { } return result; } - + private static Long defaultToNullIfZero(final Long value) { Long result = value; if (result != null && Long.valueOf(0).equals(value)) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/MySQLDictionaryCustom.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/MySQLDictionaryCustom.java index 24dc0ad85..7105a4426 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/MySQLDictionaryCustom.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/MySQLDictionaryCustom.java @@ -34,7 +34,7 @@ public class MySQLDictionaryCustom extends MySQLDictionary { this.allowsAliasInBulkClause = true ; this.useWildCardForCount = true ; } - + @Override public void connectedConfiguration(Connection conn) throws SQLException { super.connectedConfiguration(conn); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/AccessDeniedExceptionMapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/AccessDeniedExceptionMapper.java index 10e821b25..9f5651b81 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/AccessDeniedExceptionMapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/AccessDeniedExceptionMapper.java @@ -32,7 +32,7 @@ import org.springframework.stereotype.Component; /** * An {@link ExceptionMapper} to map {@link AccessDeniedException} thrown by * platform into a HTTP API friendly format. - * + * * The {@link AccessDeniedException} is thrown by spring security on platform * when an attempt is made to use functionality for which the user does have * sufficient privileges. diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/BadCredentialsExceptionMapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/BadCredentialsExceptionMapper.java index 4f63d5ba3..9b93f77e7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/BadCredentialsExceptionMapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/BadCredentialsExceptionMapper.java @@ -32,7 +32,7 @@ import org.springframework.stereotype.Component; /** * An {@link ExceptionMapper} to map {@link BadCredentialsException} thrown by * platform during authentication into a HTTP API friendly format. - * + * * The {@link BadCredentialsException} is thrown by spring security on platform * when an attempt is made to authenticate using invalid username/password * credentials. diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/InvalidTenantIdentifierExceptionMapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/InvalidTenantIdentifierExceptionMapper.java index 23e14508e..d23ced3d5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/InvalidTenantIdentifierExceptionMapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/InvalidTenantIdentifierExceptionMapper.java @@ -32,7 +32,7 @@ import org.springframework.stereotype.Component; /** * An {@link ExceptionMapper} to map {@link InvalidTenantIdentiferException} * thrown by platform during authentication into a HTTP API friendly format. - * + * * The {@link InvalidTenantIdentiferException} is thrown by spring security on * platform when a request contains an invalid tenant identifier. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/NoAuthorizationExceptionMapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/NoAuthorizationExceptionMapper.java index 53f5cfc25..f258cf9f3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/NoAuthorizationExceptionMapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/NoAuthorizationExceptionMapper.java @@ -32,7 +32,7 @@ import org.springframework.stereotype.Component; /** * An {@link ExceptionMapper} to map {@link NoAuthorizationException} thrown by * platform into a HTTP API friendly format. - * + * * The {@link NoAuthorizationException} is thrown on platform when an attempt is * made to use functionality for which the user does have sufficient privileges. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformApiDataValidationExceptionMapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformApiDataValidationExceptionMapper.java index 33bf74e07..555d27242 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformApiDataValidationExceptionMapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformApiDataValidationExceptionMapper.java @@ -32,7 +32,7 @@ import org.springframework.stereotype.Component; /** * An {@link ExceptionMapper} to map {@link PlatformApiDataValidationException} * thrown by platform into a HTTP API friendly format. - * + * * The {@link PlatformApiDataValidationException} is typically thrown in data * validation of the parameters passed in with an api request. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformDataIntegrityExceptionMapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformDataIntegrityExceptionMapper.java index edc1bf524..f9f746785 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformDataIntegrityExceptionMapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformDataIntegrityExceptionMapper.java @@ -32,7 +32,7 @@ import org.springframework.stereotype.Component; /** * An {@link ExceptionMapper} to map {@link PlatformDataIntegrityException} * thrown by platform into a HTTP API friendly format. - * + * * The {@link PlatformDataIntegrityException} is thrown when modifying api call * result in data integrity checks to be fired. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformDomainRuleExceptionMapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformDomainRuleExceptionMapper.java index e1ad3905c..bf7ced426 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformDomainRuleExceptionMapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformDomainRuleExceptionMapper.java @@ -32,7 +32,7 @@ import org.springframework.stereotype.Component; /** * An {@link ExceptionMapper} to map {@link AbstractPlatformDomainRuleException} * thrown by platform into a HTTP API friendly format. - * + * * The {@link AbstractPlatformDomainRuleException} is thrown when an api call * results is some internal business/domain logic been violated. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformInternalServerExceptionMapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformInternalServerExceptionMapper.java index 262b30215..e537d7b8b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformInternalServerExceptionMapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformInternalServerExceptionMapper.java @@ -32,7 +32,7 @@ import org.springframework.stereotype.Component; /** * An {@link ExceptionMapper} to map {@link PlatformInternalServerException} * thrown by platform into a HTTP API friendly format. - * + * * The {@link PlatformInternalServerException} is thrown when an api call * results in unexpected server side exceptions. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformResourceNotFoundExceptionMapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformResourceNotFoundExceptionMapper.java index 5485380ff..66eac6084 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformResourceNotFoundExceptionMapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformResourceNotFoundExceptionMapper.java @@ -33,7 +33,7 @@ import org.springframework.stereotype.Component; * An {@link ExceptionMapper} to map * {@link AbstractPlatformResourceNotFoundException} thrown by platform into a * HTTP API friendly format. - * + * * The {@link AbstractPlatformResourceNotFoundException} is thrown when an api * call for a resource that is expected to exist does not. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformServiceUnavailableExceptionMapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformServiceUnavailableExceptionMapper.java index a95ed1696..3b17b3345 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformServiceUnavailableExceptionMapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformServiceUnavailableExceptionMapper.java @@ -33,7 +33,7 @@ import org.springframework.stereotype.Component; * An {@link ExceptionMapper} to map * {@link AbstractPlatformServiceUnavailableException} thrown by platform into a * HTTP API friendly format. - * + * * The {@link AbstractPlatformServiceUnavailableException} is thrown when an api * call for a resource that is expected to exist does not. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnrecognizedQueryParamExceptionMapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnrecognizedQueryParamExceptionMapper.java index 429b0853b..02bf2d636 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnrecognizedQueryParamExceptionMapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnrecognizedQueryParamExceptionMapper.java @@ -36,7 +36,7 @@ import org.springframework.stereotype.Component; /** * An {@link ExceptionMapper} to map {@link UnrecognizedQueryParamException} * thrown by platform into a HTTP API friendly format. - * + * * The {@link UnrecognizedQueryParamException} is typically thrown when a * parameter is passed during and post or put that is not expected. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandProcessingResultJsonSerializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandProcessingResultJsonSerializer.java index 1c8e1dbe4..761a0c93d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandProcessingResultJsonSerializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandProcessingResultJsonSerializer.java @@ -31,10 +31,10 @@ import com.google.gson.GsonBuilder; /** *

- * A google gson implementation of + * A google gson implementation of * contract. *

- * + * *

* It serializes all fields of any Java {@link Object} passed to it. *

diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializer.java index b28ded307..b3af0d1e8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializer.java @@ -20,11 +20,11 @@ package org.apache.fineract.infrastructure.core.serialization; /** * Service for serializing commands into another format. - * + * *

* Known implementations: *

- * + * * @see CommandSerializerDefaultToJson */ public interface CommandSerializer { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson.java index a6e8e2ae4..c01d846ac 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson.java @@ -31,10 +31,10 @@ import com.google.gson.GsonBuilder; /** *

- * A google gson implementation of + * A google gson implementation of * contract. *

- * + * *

* It serializes all fields of any Java {@link Object} passed to it. *

diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/ExcludeNothingWithPrettyPrintingOnJsonSerializerGoogleGson.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/ExcludeNothingWithPrettyPrintingOnJsonSerializerGoogleGson.java index b24c20661..c0eb15f5b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/ExcludeNothingWithPrettyPrintingOnJsonSerializerGoogleGson.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/ExcludeNothingWithPrettyPrintingOnJsonSerializerGoogleGson.java @@ -31,10 +31,10 @@ import com.google.gson.GsonBuilder; /** *

- * A google gson implementation of + * A google gson implementation of * contract. *

- * + * *

* It serializes all fields of any Java {@link Object} passed to it. *

diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/FromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/FromApiJsonDeserializer.java index fe27cc8ef..20d460f2b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/FromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/FromApiJsonDeserializer.java @@ -19,7 +19,7 @@ package org.apache.fineract.infrastructure.core.serialization; /** - * + * */ public interface FromApiJsonDeserializer { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/FromCommandJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/FromCommandJsonDeserializer.java index 7b9535c1b..87cd8018d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/FromCommandJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/FromCommandJsonDeserializer.java @@ -19,7 +19,7 @@ package org.apache.fineract.infrastructure.core.serialization; /** - * + * */ public interface FromCommandJsonDeserializer { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/FromJsonHelper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/FromJsonHelper.java index 3718f2e61..560a3c140 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/FromJsonHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/FromJsonHelper.java @@ -199,7 +199,7 @@ public class FromJsonHelper { public LocalDate extractLocalDateNamed(final String parameterName, final JsonElement element) { return this.helperDelegator.extractLocalDateNamed(parameterName, element, new HashSet<>()); } - + public LocalDateTime extractLocalTimeNamed(final String parameterName, final JsonElement element) { return this.helperDelegator.extractLocalTimeNamed(parameterName, element, new HashSet<>()); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/JsonParserHelper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/JsonParserHelper.java index f4633be0a..8e7b68a4c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/JsonParserHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/serialization/JsonParserHelper.java @@ -197,7 +197,7 @@ public class JsonParserHelper { } return value; } - + public String extractTimeFormatParameter(final JsonObject element) { String value = null; if (element.isJsonObject()) { @@ -370,7 +370,7 @@ public class JsonParserHelper { } return value; } - + public LocalDateTime extractLocalTimeNamed(final String parameterName, final JsonElement element, final Set parametersPassedInCommand) { @@ -404,14 +404,14 @@ public class JsonParserHelper { final JsonObject object = element.getAsJsonObject(); if (object.has(parameterName) && object.get(parameterName).isJsonPrimitive()) { parametersPassedInCommand.add(parameterName); - + try{ DateTimeFormatter timeFormtter = DateTimeFormat.forPattern(timeFormat); final JsonPrimitive primitive = object.get(parameterName).getAsJsonPrimitive(); timeValueAsString = primitive.getAsString(); if (StringUtils.isNotBlank(timeValueAsString)) { value = LocalDateTime.parse(timeValueAsString, timeFormtter); - } + } } catch(IllegalArgumentException e ){ final List dataValidationErrors = new ArrayList<>(); @@ -423,7 +423,7 @@ public class JsonParserHelper { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", dataValidationErrors); } - + } } return value; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/AbandonedConnectionCleanupShutdownListener.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/AbandonedConnectionCleanupShutdownListener.java index 80bdf2d02..a01d5540f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/AbandonedConnectionCleanupShutdownListener.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/AbandonedConnectionCleanupShutdownListener.java @@ -45,9 +45,9 @@ public class AbandonedConnectionCleanupShutdownListener implements ApplicationLi private void shutDowncleanUpThreadAndDeregisterJDBCDriver() { /*try { - + AbandonedConnectionCleanupThread.shutdown(); tomcat memoroy leak with mysql connector. With Drizzle not required - logger.info("Shut-down of AbandonedConnectionCleanupThread successful"); + logger.info("Shut-down of AbandonedConnectionCleanupThread successful"); } catch (Throwable t) { logger.error("Exception occurred while shut-down of AbandonedConnectionCleanupThread", t); }*/ diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/GmailBackedPlatformEmailService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/GmailBackedPlatformEmailService.java index 0af09c0ef..23789778b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/GmailBackedPlatformEmailService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/GmailBackedPlatformEmailService.java @@ -30,9 +30,9 @@ import org.springframework.stereotype.Service; @Service public class GmailBackedPlatformEmailService implements PlatformEmailService { - + private final ExternalServicesPropertiesReadPlatformService externalServicesReadPlatformService; - + @Autowired public GmailBackedPlatformEmailService(final ExternalServicesPropertiesReadPlatformService externalServicesReadPlatformService){ this.externalServicesReadPlatformService = externalServicesReadPlatformService; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/RoutingDataSource.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/RoutingDataSource.java index 68af2fbbb..b6d8fa870 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/RoutingDataSource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/RoutingDataSource.java @@ -32,9 +32,9 @@ import org.springframework.stereotype.Service; * Based on springs {@link AbstractRoutingDataSource} idea, this is a * {@link DataSource} that routes or delegates to another data source depending * on the tenant details passed in the request. - * + * * The tenant details are process earlier and stored in a {@link ThreadLocal}. - * + * * The {@link RoutingDataSourceService} is responsible for returning the * appropriate {@link DataSource} for the tenant of this request. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/RoutingDataSourceServiceFactory.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/RoutingDataSourceServiceFactory.java index a99a49f05..f16a5a4d4 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/RoutingDataSourceServiceFactory.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/RoutingDataSourceServiceFactory.java @@ -25,9 +25,9 @@ import org.springframework.stereotype.Component; /** * Factory class to get data source service based on the details stored in * {@link ThreadLocal} variable for this request - * + * * {@link ThreadLocalContextUtil} is used to retrieve the Context - * + * */ @Component public class RoutingDataSourceServiceFactory { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/SearchParameters.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/SearchParameters.java index 900f194dc..bb61790e0 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/SearchParameters.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/SearchParameters.java @@ -239,7 +239,7 @@ public final class SearchParameters { return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId, accountNo, loanId, savingsId, orphansOnly, isSelfUser); } - + private SearchParameters(final String sqlSearch, final Long officeId, final String externalId, final String name, final String hierarchy, final String firstname, final String lastname, final Integer offset, final Integer limit, final String orderBy, final String sortOrder, final Long staffId, final String accountNo, final Long loanId, @@ -474,32 +474,32 @@ public final class SearchParameters { return this.isSelfUser; } - /** + /** * creates an instance of the SearchParameters from a request for the report mailing job run history - * + * * @return SearchParameters object **/ - public static SearchParameters fromReportMailingJobRunHistory(final Integer offset, + public static SearchParameters fromReportMailingJobRunHistory(final Integer offset, final Integer limit, final String orderBy, final String sortOrder) { final Integer maxLimitAllowed = getCheckedLimit(limit); - + return new SearchParameters(null, null, null, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, null, null, null, null, null, false); } - + /** * creates an instance of the {@link SearchParameters} from a request for the report mailing job - * + * * @param offset * @param limit * @param orderBy * @param sortOrder * @return {@link SearchParameters} object */ - public static SearchParameters fromReportMailingJob(final Integer offset, + public static SearchParameters fromReportMailingJob(final Integer offset, final Integer limit, final String orderBy, final String sortOrder) { final Integer maxLimitAllowed = getCheckedLimit(limit); - + return new SearchParameters(null, null, null, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, null, null, null, null, null, false); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/ThreadLocalContextUtil.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/ThreadLocalContextUtil.java index 5950517f6..2228a9bc7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/ThreadLocalContextUtil.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/ThreadLocalContextUtil.java @@ -31,9 +31,9 @@ public class ThreadLocalContextUtil { private static final ThreadLocal contextHolder = new ThreadLocal<>(); private static final ThreadLocal tenantcontext = new ThreadLocal<>(); - + private static final ThreadLocal authTokenContext = new ThreadLocal<>(); - + public static void setTenant(final FineractPlatformTenant tenant) { Assert.notNull(tenant, "tenant cannot be null"); tenantcontext.set(tenant); @@ -58,7 +58,7 @@ public class ThreadLocalContextUtil { public static void clearDataSourceContext() { contextHolder.remove(); } - + public static void setAuthToken(final String authToken) { authTokenContext.set(authToken); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/TomcatJdbcDataSourcePerTenantService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/TomcatJdbcDataSourcePerTenantService.java index ad5b49212..d842ad59e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/TomcatJdbcDataSourcePerTenantService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/TomcatJdbcDataSourcePerTenantService.java @@ -36,7 +36,7 @@ import org.springframework.stereotype.Service; * Implementation that returns a new or existing tomcat 7 jdbc connection pool * datasource based on the tenant details stored in a {@link ThreadLocal} * variable for this request. - * + * * {@link ThreadLocalContextUtil} is used to retrieve the * {@link FineractPlatformTenant} for the request. */ @@ -48,7 +48,7 @@ public class TomcatJdbcDataSourcePerTenantService implements RoutingDataSourceSe @Autowired private JDBCDriverConfig driverConfig ; - + @Autowired public TomcatJdbcDataSourcePerTenantService(final @Qualifier("tenantDataSourceJndi") DataSource tenantDataSource) { this.tenantDataSource = tenantDataSource; @@ -60,7 +60,7 @@ public class TomcatJdbcDataSourcePerTenantService implements RoutingDataSourceSe // default to tenant database datasource DataSource tenantDataSource = this.tenantDataSource; - final FineractPlatformTenant tenant = ThreadLocalContextUtil.getTenant(); + final FineractPlatformTenant tenant = ThreadLocalContextUtil.getTenant(); if (tenant != null) { final FineractPlatformTenantConnection tenantConnection = tenant.getConnection(); @@ -107,7 +107,7 @@ public class TomcatJdbcDataSourcePerTenantService implements RoutingDataSourceSe poolConfiguration.setLogAbandoned(tenantConnectionObj.isLogAbandoned()); poolConfiguration.setAbandonWhenPercentageFull(tenantConnectionObj.getAbandonWhenPercentageFull()); poolConfiguration.setDefaultAutoCommit(true); - + /** * Vishwas- Do we need to enable the below properties and add * ResetAbandonedTimer for long running batch Jobs? diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/api/CreditBureauConfigurationAPI.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/api/CreditBureauConfigurationAPI.java index d9fe5b480..3278f83e0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/api/CreditBureauConfigurationAPI.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/api/CreditBureauConfigurationAPI.java @@ -162,8 +162,8 @@ public class CreditBureauConfigurationAPI { return this.toApiJsonSerializerReport.serialize(configurationData); } - - + + @GET @Path("/loanProduct") @Consumes({ MediaType.APPLICATION_JSON }) @@ -235,6 +235,6 @@ public class CreditBureauConfigurationAPI { return this.toApiJsonSerializer.serialize(result); } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauLoanProductMapping.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauLoanProductMapping.java index 2ec8ae1b8..8ca6dd804 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauLoanProductMapping.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauLoanProductMapping.java @@ -32,13 +32,13 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; @Entity @Table(name = "m_creditbureau_loanproduct_mapping") public class CreditBureauLoanProductMapping extends AbstractPersistableCustom { - + @Column(name = "is_CreditCheck_Mandatory") private boolean isCreditCheckMandatory; - + @Column(name = "skip_CreditCheck_in_Failure") private boolean skipCreditCheckInFailure; - + @Column(name = "stale_Period") private int stalePeriod; @@ -50,7 +50,7 @@ public class CreditBureauLoanProductMapping extends AbstractPersistableCustom { this.creditBureauLoanProductMapping = creditBureauLoanProductMapping; } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauCommandFromApiJsonDeserializer.java index 6645c4978..5b9f7e9e1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauCommandFromApiJsonDeserializer.java @@ -65,7 +65,7 @@ public class CreditBureauCommandFromApiJsonDeserializer { .resource("CreditBureau"); final JsonElement element = this.fromApiJsonHelper.parse(json); - + baseDataValidator.reset().value(creditBureauId).notBlank().integerGreaterThanZero(); final String alias = this.fromApiJsonHelper.extractStringNamed("alias", element); @@ -79,39 +79,39 @@ public class CreditBureauCommandFromApiJsonDeserializer { throwExceptionIfValidationWarningsExist(dataValidationErrors); } - - - + + + public void validateForUpdate(final String json) { if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); } - + final Type typeOfMap = new TypeToken>() { }.getType(); this.fromApiJsonHelper.checkForUnsupportedParameters(typeOfMap, json, this.supportedParameters); - + final List dataValidationErrors = new ArrayList<>(); final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors) .resource("CreditBureau"); final JsonElement element = this.fromApiJsonHelper.parse(json); - - + + final String creditBureauIdParameter = "creditBureauId"; if (this.fromApiJsonHelper.parameterExists(creditBureauIdParameter, element)) { final Long creditBureauId = this.fromApiJsonHelper.extractLongNamed("creditBureauId", element); baseDataValidator.reset().parameter("creditBureauId").value(creditBureauId).notNull().notBlank().longGreaterThanZero(); } - + final String is_activeParameter = "is_active"; if (this.fromApiJsonHelper.parameterExists(is_activeParameter, element)) { final boolean is_active = this.fromApiJsonHelper.extractBooleanNamed("is_active", element); baseDataValidator.reset().parameter("is_active").value(is_active).notNull().notBlank().trueOrFalseRequired(is_active); } - - + + throwExceptionIfValidationWarningsExist(dataValidationErrors); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauLoanProductCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauLoanProductCommandFromApiJsonDeserializer.java index e256c0a60..a5d6d69c1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauLoanProductCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauLoanProductCommandFromApiJsonDeserializer.java @@ -70,47 +70,47 @@ public class CreditBureauLoanProductCommandFromApiJsonDeserializer { final long loanProductId = this.fromApiJsonHelper.extractLongNamed("loanProductId", element); baseDataValidator.reset().parameter("loanProductId").value(loanProductId).notBlank() .integerGreaterThanZero(); - - + + if(this.fromApiJsonHelper.extractBooleanNamed("isCreditcheckMandatory",element)!= null) { final boolean isCreditcheckMandatory = this.fromApiJsonHelper.extractBooleanNamed("isCreditcheckMandatory", element); baseDataValidator.reset().parameter("isCreditcheckMandatory").value(isCreditcheckMandatory).notBlank() - .trueOrFalseRequired(isCreditcheckMandatory); + .trueOrFalseRequired(isCreditcheckMandatory); } else { baseDataValidator.reset().parameter("isCreditcheckMandatory").value(this.fromApiJsonHelper.extractBooleanNamed("isCreditcheckMandatory", element)).notBlank() .trueOrFalseRequired(this.fromApiJsonHelper.extractBooleanNamed("isCreditcheckMandatory", - element)); + element)); } - - + + if( this.fromApiJsonHelper.extractBooleanNamed("skipCreditcheckInFailure", element)!=null) { final boolean skipCreditcheckInFailure = this.fromApiJsonHelper.extractBooleanNamed("skipCreditcheckInFailure", element); baseDataValidator.reset().parameter("skipCreditcheckInFailure").value(skipCreditcheckInFailure).notBlank().trueOrFalseRequired(skipCreditcheckInFailure); - + } else { - baseDataValidator.reset().parameter("skipCreditcheckInFailure").value(this.fromApiJsonHelper.extractBooleanNamed("skipCreditcheckInFailure", element)).notBlank().trueOrFalseRequired(this.fromApiJsonHelper.extractBooleanNamed("skipCreditcheckInFailure", element)); + baseDataValidator.reset().parameter("skipCreditcheckInFailure").value(this.fromApiJsonHelper.extractBooleanNamed("skipCreditcheckInFailure", element)).notBlank().trueOrFalseRequired(this.fromApiJsonHelper.extractBooleanNamed("skipCreditcheckInFailure", element)); } - + if(this.fromApiJsonHelper.extractLongNamed("stalePeriod", element)!=null) { final long stalePeriod = this.fromApiJsonHelper.extractLongNamed("stalePeriod", element); - baseDataValidator.reset().parameter("stalePeriod").value(stalePeriod).notBlank().integerGreaterThanZero(); + baseDataValidator.reset().parameter("stalePeriod").value(stalePeriod).notBlank().integerGreaterThanZero(); } else { - baseDataValidator.reset().parameter("stalePeriod").value(this.fromApiJsonHelper.extractLongNamed("stalePeriod", element)).notBlank().integerGreaterThanZero(); + baseDataValidator.reset().parameter("stalePeriod").value(this.fromApiJsonHelper.extractLongNamed("stalePeriod", element)).notBlank().integerGreaterThanZero(); } - + if(this.fromApiJsonHelper.extractBooleanNamed("is_active", element)!=null) { Boolean is_active = this.fromApiJsonHelper.extractBooleanNamed("is_active", element); @@ -119,17 +119,17 @@ public class CreditBureauLoanProductCommandFromApiJsonDeserializer { } else { baseDataValidator.reset().parameter("is_active").value(is_active).notBlank().trueOrFalseRequired(is_active); - } + } } - + throwExceptionIfValidationWarningsExist(dataValidationErrors); } - - - + + + public void validateForUpdate(final String json) { if (StringUtils.isBlank(json)) { @@ -145,23 +145,23 @@ public class CreditBureauLoanProductCommandFromApiJsonDeserializer { .resource("CREDITBUREAU_LOANPRODUCT_MAPPING"); final JsonElement element = this.fromApiJsonHelper.parse(json); - - + + final String creditbureauLoanProductMappingIdParameter = "creditbureauLoanProductMappingId"; if (this.fromApiJsonHelper.parameterExists(creditbureauLoanProductMappingIdParameter, element)) { final Long creditbureauLoanProductMappingId = this.fromApiJsonHelper.extractLongNamed("creditbureauLoanProductMappingId", element); baseDataValidator.reset().parameter("creditbureauLoanProductMappingId").value(creditbureauLoanProductMappingId).notNull().notBlank().longGreaterThanZero(); } - + final String is_activeParameter = "is_active"; if (this.fromApiJsonHelper.parameterExists(is_activeParameter, element)) { final boolean is_active = this.fromApiJsonHelper.extractBooleanNamed("is_active", element); baseDataValidator.reset().parameter("is_active").value(is_active).notNull().notBlank().trueOrFalseRequired(is_active); } - - + + throwExceptionIfValidationWarningsExist(dataValidationErrors); - + } private void throwExceptionIfValidationWarningsExist(final List dataValidationErrors) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauLoanProductMappingWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauLoanProductMappingWritePlatformServiceImpl.java index adca299ff..6415f00ec 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauLoanProductMappingWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauLoanProductMappingWritePlatformServiceImpl.java @@ -63,7 +63,7 @@ public class CreditBureauLoanProductMappingWritePlatformServiceImpl implements C @Override public CommandProcessingResult addCreditBureauLoanProductMapping(Long creditBureau_id, JsonCommand command) { this.context.authenticatedUser(); - + this.fromApiJsonDeserializer.validateForCreate(command.json(), creditBureau_id); final long lpid = command.longValueOfParameterNamed("loanProductId"); @@ -83,7 +83,7 @@ public class CreditBureauLoanProductMappingWritePlatformServiceImpl implements C @Override public CommandProcessingResult updateCreditBureauLoanProductMapping(JsonCommand command) { - + this.context.authenticatedUser(); this.fromApiJsonDeserializer.validateForUpdate(command.json()); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/OrganisationCreditBureauWritePlatflormServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/OrganisationCreditBureauWritePlatflormServiceImpl.java index d0c5ed0c6..55e158c2e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/OrganisationCreditBureauWritePlatflormServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/OrganisationCreditBureauWritePlatflormServiceImpl.java @@ -76,7 +76,7 @@ public class OrganisationCreditBureauWritePlatflormServiceImpl this.fromApiJsonDeserializer.validateForUpdate(command.json()); final long creditbureauID = command.longValueOfParameterNamed("creditBureauId"); - + final boolean is_active = command.booleanPrimitiveValueOfParameterNamed("is_active"); final OrganisationCreditBureau orgcb = organisationCreditBureauRepository.getOne(creditbureauID); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableData.java index 7e52d7f71..aba0f86a4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableData.java @@ -60,5 +60,5 @@ public class DatatableData implements Serializable { public String getRegisteredTableName(){ return registeredTableName; } - + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/Report.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/Report.java index 82c5028c1..31631ff3f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/Report.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/Report.java @@ -75,7 +75,7 @@ public final class Report extends AbstractPersistableCustom { @OneToMany(cascade = CascadeType.ALL, mappedBy = "report", orphanRemoval = true, fetch=FetchType.EAGER) private Set reportParameterUsages = new HashSet<>(); - + @Column(name = "self_service_user_report") private boolean isSelfServiceUserReport; @@ -279,7 +279,7 @@ public final class Report extends AbstractPersistableCustom { return false; } - + public Set getReportParameterUsages() { return this.reportParameterUsages; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameterUsage.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameterUsage.java index 9fab40139..368569bc4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameterUsage.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameterUsage.java @@ -86,7 +86,7 @@ public final class ReportParameterUsage extends AbstractPersistableCustom public void updateParameterName(final String parameterName) { this.reportParameterName = parameterName; } - + public String getReportParameterName() { return this.reportParameterName; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameterUsageRepository.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameterUsageRepository.java index d70071a5a..443173852 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameterUsageRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameterUsageRepository.java @@ -26,6 +26,6 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; public interface ReportParameterUsageRepository extends JpaRepository, JpaSpecificationExecutor { // no added behaviour - + List findByReport(Report report); } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportRepositoryWrapper.java index 7973f2b69..60b13e3dd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportRepositoryWrapper.java @@ -22,22 +22,22 @@ import org.apache.fineract.infrastructure.dataqueries.exception.ReportNotFoundEx import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -/** - * A wrapper class for the ReportRepository that provides a method that returns a Report entity if it exists, +/** + * A wrapper class for the ReportRepository that provides a method that returns a Report entity if it exists, * else throws "ReportNotFoundException" exception if the Report does not exist **/ @Service public class ReportRepositoryWrapper { private final ReportRepository reportRepository; - + @Autowired public ReportRepositoryWrapper(final ReportRepository reportRepository) { this.reportRepository = reportRepository; } - + /** * Retrieves an entity by its id - * + * * @param id must not be null * @throws ReportNotFoundException if entity not found * @return {@link Report} object diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingService.java index b668636b7..b9be35e51 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingService.java @@ -47,7 +47,7 @@ public interface ReadReportingService { ReportData retrieveReport(final Long id); Collection getAllowedReportTypes(); - + //needed for smsCampaign and emailCampaign jobs where securityContext is null GenericResultsetData retrieveGenericResultSetForSmsEmailCampaign(String name, String type, Map extractedQueryParams); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingServiceImpl.java index 977374d3d..668bb4248 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadReportingServiceImpl.java @@ -209,7 +209,7 @@ public class ReadReportingServiceImpl implements ReadReportingService { // (typically used to return report lists containing only reports // permitted to be run by the user sql = this.genericDataService.replace(sql, "${currentUserId}", currentUser.getId().toString()); - + sql = this.genericDataService.replace(sql, "${isSelfServiceUser}", Integer.toString(isSelfServiceUserReport ? 1 : 0)); @@ -223,7 +223,7 @@ public class ReadReportingServiceImpl implements ReadReportingService { final String inputSql = "select " + type + "_sql as the_sql from stretchy_" + type + " where " + type + "_name = '" + name + "'"; validateReportName(name); - + final String inputSqlWrapped = this.genericDataService.wrapSQL(inputSql); // the return statement contains the exact sql required @@ -239,7 +239,7 @@ public class ReadReportingServiceImpl implements ReadReportingService { final String sql = "SELECT ifnull(report_type,'') as report_type FROM `stretchy_report` where report_name = '" + reportName + "' and self_service_user_report = ?"; validateReportName(reportName); this.columnValidator.validateSqlInjection(sql, reportName); - + final String sqlWrapped = this.genericDataService.wrapSQL(sql); final SqlRowSet rs = this.jdbcTemplate.queryForRowSet(sqlWrapped, new Object [] {isSelfServiceUserReport}); @@ -519,7 +519,7 @@ public class ReadReportingServiceImpl implements ReadReportingService { logger.info("FINISHING Report/Request Name: " + name + " - " + type + " Elapsed Time: " + elapsed); return result; } - + @Override public String sqlToRunForSmsEmailCampaign(final String name, final String type, final Map queryParams) { String sql = getSql(name, type); @@ -567,7 +567,7 @@ public class ReadReportingServiceImpl implements ReadReportingService { res = manager.createDirectly(reportPath, MasterReport.class); final MasterReport masterReport = (MasterReport) res.getResource(); final DefaultReportEnvironment reportEnvironment = (DefaultReportEnvironment) masterReport.getReportEnvironment(); - + if (locale != null) { reportEnvironment.setLocale(locale); } @@ -594,7 +594,7 @@ public class ReadReportingServiceImpl implements ReadReportingService { HtmlReportUtil.createStreamHTML(masterReport, baos); return baos; } - + } catch (final ResourceException e) { errorLog.append("ReadReportingServiceImpl.generatePentahoReportAsOutputStream method threw a Pentaho ResourceException " + "exception: " + e.getMessage() + " ---------- "); @@ -612,11 +612,11 @@ public class ReadReportingServiceImpl implements ReadReportingService { errorLog.append("ReadReportingServiceImpl.generatePentahoReportAsOutputStream method threw a PlatformDataIntegrityException " + "exception: No matching Output Type: " + outputType + " ---------- "); throw new PlatformDataIntegrityException("error.msg.invalid.outputType", "No matching Output Type: " + outputType); - + */ return null ; } - + private void validateReportName(final String name) { if (!StringUtils.isBlank(name) && !name.matches(REPORT_NAME_REGEX_PATTERN)) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java index eb93877f9..f8439af2b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataServiceImpl.java @@ -247,13 +247,13 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ validateAppTable(applicationTableName); validateDatatableName(dataTableName); assertDataTableExists(dataTableName); - + Map paramMap = new HashMap<>(3); final String registerDatatableSql = "insert into x_registered_table (registered_table_name, application_table_name,category) values ( :dataTableName, :applicationTableName, :category)"; paramMap.put("dataTableName", dataTableName); paramMap.put("applicationTableName", applicationTableName); paramMap.put("category", category); - + try { this.namedParameterJdbcTemplate.update(registerDatatableSql, paramMap); this.jdbcTemplate.update(permissionsSql); @@ -271,7 +271,7 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ // show duplicate datatable error msg if (realCause.getMessage() .contains("Duplicate entry") || cause.getMessage() - .contains("Duplicate entry")) { + .contains("Duplicate entry")) { throw new PlatformDataIntegrityException("error.msg.datatable.registered", "Datatable `" + dataTableName + "` is already registered against an application table.", "dataTableName", dataTableName); } @@ -281,7 +281,7 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ }catch (final PersistenceException dve) { final Throwable cause = dve.getCause() ; if (cause.getMessage() - .contains("Duplicate entry")) { + .contains("Duplicate entry")) { throw new PlatformDataIntegrityException("error.msg.datatable.registered", "Datatable `" + dataTableName + "` is already registered against an application table.", "dataTableName", dataTableName); } @@ -557,7 +557,7 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ /*** * In cases of tables storing hierarchical entities (like m_group), * different entities would end up being stored in the same table. - * + * * Ex: Centers are a specific type of group, add abstractions for * the same ***/ @@ -835,7 +835,7 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ /** * Update data table, set column value to empty string where current value * is NULL. Run update SQL only if the "mandatory" property is set to true - * + * * @param datatableName * Name of data table * @param column @@ -1073,7 +1073,7 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ if (rowCount != 0) { throw new GeneralPlatformDomainRuleException("error.msg.non.empty.datatable.cannot.be.deleted", "Non-empty datatable cannot be deleted."); } } - + private int getRowCount(final String datatableName){ final String sql = "select count(*) from `" + datatableName + "`"; return this.jdbcTemplate.queryForObject(sql, Integer.class); @@ -1431,7 +1431,7 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ /** * This method is used special for ppi cases Where the score need to be * computed - * + * * @param columnHeaders * @param datatable * @param fkName diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/api/ImagesApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/api/ImagesApiResource.java index 39afce5db..bc7768cc0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/api/ImagesApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/api/ImagesApiResource.java @@ -189,7 +189,7 @@ public class ImagesApiResource { /** * This method is added only for consistency with other URL patterns and for * maintaining consistency of usage of the HTTP "verb" at the client side - * + * * Upload image as a Data URL (essentially a base64 encoded stream) */ @PUT diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/ContentRepositoryUtils.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/ContentRepositoryUtils.java index eb8d3220c..40527d77c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/ContentRepositoryUtils.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/ContentRepositoryUtils.java @@ -110,7 +110,7 @@ public class ContentRepositoryUtils { /** * Validates that passed in Mime type maps to known image mime types - * + * * @param mimeType */ public static void validateImageMimeType(final String mimeType) { @@ -120,7 +120,7 @@ public class ContentRepositoryUtils { /** * Extracts Image from a Data URL - * + * * @param dataURL mimeType */ public static Base64EncodedImage extractImageFromDataURL(final String dataURL) { @@ -168,7 +168,7 @@ public class ContentRepositoryUtils { /** * Generate a random String - * + * * @return */ public static String generateRandomString() { @@ -183,7 +183,7 @@ public class ContentRepositoryUtils { /** * Generate a random number between 5 to 16 - * + * * @return */ public static int generateRandomNumber() { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/FileSystemContentRepository.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/FileSystemContentRepository.java index 7baec40e5..d9fd6fec4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/FileSystemContentRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/FileSystemContentRepository.java @@ -130,7 +130,7 @@ public class FileSystemContentRepository implements ContentRepository { /** * Generate the directory path for storing the new document - * + * * @param entityType * @param entityId * @return diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/S3ContentRepository.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/S3ContentRepository.java index ba365260a..007226746 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/S3ContentRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/contentrepository/S3ContentRepository.java @@ -56,7 +56,7 @@ public class S3ContentRepository implements ContentRepository { public S3ContentRepository(final String bucketName, final String secretKey, final String accessKey) { this.s3BucketName = bucketName; - //On some AWS regions by default V4 signature is enabled. Setting this property. + //On some AWS regions by default V4 signature is enabled. Setting this property. System.setProperty(SDKGlobalConfiguration.ENABLE_S3_SIGV4_SYSTEM_PROPERTY, "true"); this.s3Client = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey)); } @@ -140,7 +140,7 @@ public class S3ContentRepository implements ContentRepository { public ImageData fetchImage(final ImageData imageData) { try { final S3Object s3object = this.s3Client.getObject(new GetObjectRequest(this.s3BucketName, imageData.location())); - imageData.updateContent(s3object.getObjectContent()); + imageData.updateContent(s3object.getObjectContent()); }catch(AmazonS3Exception e) { logger.error(e.getMessage()); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/ImageReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/ImageReadPlatformServiceImpl.java index c62fc91aa..38e3ff6a6 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/ImageReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/ImageReadPlatformServiceImpl.java @@ -103,7 +103,7 @@ public class ImageReadPlatformServiceImpl implements ImageReadPlatformService { final ContentRepository contentRepository = this.contentRepositoryFactory.getRepository(imageData.storageType()); final ImageData result = contentRepository.fetchImage(imageData); - //Once we read content EofSensorInputStream, the wrappedStream object is becoming null. So further image source is becoming null + //Once we read content EofSensorInputStream, the wrappedStream object is becoming null. So further image source is becoming null //For Amazon S3. If file is not present, already S3ContentRepository would have thrown this exception. if (!result.available()) { throw new ImageNotFoundException(entityType, entityId); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityAccessData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityAccessData.java index 492827b8a..bb095e1cf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityAccessData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityAccessData.java @@ -25,7 +25,7 @@ public class FineractEntityAccessData { private FineractEntity firstEntity; private FineractEntityAccessType accessType; private FineractEntity secondEntity; - + public FineractEntityAccessData ( FineractEntity firstEntity, FineractEntityAccessType accessType, @@ -35,15 +35,15 @@ public class FineractEntityAccessData { this.accessType = accessType; this.secondEntity = secondEntity; } - + public FineractEntity getFirstEntity() { return this.firstEntity; } - + public FineractEntityAccessType getAccessType() { return this.accessType; } - + public FineractEntity getSecondEntity() { return this.secondEntity; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityToEntityMappingData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityToEntityMappingData.java index f24b86e55..48f226222 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityToEntityMappingData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityToEntityMappingData.java @@ -89,5 +89,5 @@ public class FineractEntityToEntityMappingData implements Serializable { return fromEntity; } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntity.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntity.java index da2a29c70..26a3c3845 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntity.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntity.java @@ -21,20 +21,20 @@ package org.apache.fineract.infrastructure.entityaccess.domain; public class FineractEntity { private Long entityId; private FineractEntityType type; - + @SuppressWarnings("unused") private FineractEntity() { } - + public FineractEntity(Long entityId, FineractEntityType type) { this.entityId = entityId; this.type = type; } - + public Long getId () { return this.entityId; } - + public FineractEntityType getType () { return this.type; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccess.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccess.java index 33a158d4f..7d05fb411 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccess.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccess.java @@ -35,20 +35,20 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; @Entity @Table(name = "m_entity_to_entity_access") public class FineractEntityAccess extends AbstractPersistableCustom { - + @Column(name = "entity_type", length = 50) private String entityType; - + @Column(name = "entity_id") private Long entityId; - + @ManyToOne @JoinColumn(name = "access_type_code_value_id", nullable = false) private CodeValue accessType; @Column(name = "second_entity_type", length = 50) private String secondEntityType; - + @Column(name = "second_entity_id") private Long secondEntityId; @@ -82,7 +82,7 @@ public class FineractEntityAccess extends AbstractPersistableCustom { FineractEntityAccessConstants.ENTITY_ACCESS_JSON_INPUT_PARAMS.SECOND_ENTITY_ID.getValue()); final Long secondEntityId = command.longValueOfParameterNamed( FineractEntityAccessConstants.ENTITY_ACCESS_JSON_INPUT_PARAMS.SECOND_ENTITY_ID.getValue()); - + return new FineractEntityAccess (entityType, entityId, accessType, secondEntityType, secondEntityId); @@ -101,18 +101,18 @@ public class FineractEntityAccess extends AbstractPersistableCustom { this.entityType = newValue; } - paramName = FineractEntityAccessConstants.ENTITY_ACCESS_JSON_INPUT_PARAMS.ENTITY_ID.getValue(); + paramName = FineractEntityAccessConstants.ENTITY_ACCESS_JSON_INPUT_PARAMS.ENTITY_ID.getValue(); if (command.isChangeInLongParameterNamed(paramName, getEntityId())) { this.entityId = command.longValueOfParameterNamed(paramName); actualChanges.put(paramName, this.entityId); } - + Long existingAccessTypeId = null; if (this.accessType != null) { existingAccessTypeId = this.accessType.getId(); } - - paramName = FineractEntityAccessConstants.ENTITY_ACCESS_JSON_INPUT_PARAMS.ENTITY_ACCESS_TYPE_ID.getValue(); + + paramName = FineractEntityAccessConstants.ENTITY_ACCESS_JSON_INPUT_PARAMS.ENTITY_ACCESS_TYPE_ID.getValue(); if (command.isChangeInLongParameterNamed(paramName, existingAccessTypeId)) { final Long newValue = command.longValueOfParameterNamed(paramName); actualChanges.put(paramName, newValue); @@ -125,12 +125,12 @@ public class FineractEntityAccess extends AbstractPersistableCustom { this.secondEntityType = newValue; } - paramName = FineractEntityAccessConstants.ENTITY_ACCESS_JSON_INPUT_PARAMS.SECOND_ENTITY_ID.getValue(); + paramName = FineractEntityAccessConstants.ENTITY_ACCESS_JSON_INPUT_PARAMS.SECOND_ENTITY_ID.getValue(); if (command.isChangeInLongParameterNamed(paramName, getSecondEntityId())) { this.secondEntityId = command.longValueOfParameterNamed(paramName); actualChanges.put(paramName, this.secondEntityId); } - + return actualChanges; } @@ -149,7 +149,7 @@ public class FineractEntityAccess extends AbstractPersistableCustom { public void updateAccessType(final CodeValue accessType) { this.accessType = accessType; } - + public String getSecondEntityType() { return this.secondEntityType; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccessType.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccessType.java index e23dd9bd6..dd070aeae 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccessType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccessType.java @@ -19,33 +19,33 @@ package org.apache.fineract.infrastructure.entityaccess.domain; public class FineractEntityAccessType { - + private String str; - + public static final FineractEntityAccessType OFFICE_ACCESS_TO_LOAN_PRODUCTS = new FineractEntityAccessType("office_access_to_loan_products"); public static final FineractEntityAccessType OFFICE_ACCESS_TO_SAVINGS_PRODUCTS = new FineractEntityAccessType("office_access_to_savings_products"); public static final FineractEntityAccessType OFFICE_ACCESS_TO_CHARGES = new FineractEntityAccessType("office_access_to_fees/charges"); - + private FineractEntityAccessType (String str) { this.str = str; } - + public String toStr () { return this.str; } - + public static FineractEntityAccessType get (String type) { - + FineractEntityAccessType retType = null; - + if (type.equals(OFFICE_ACCESS_TO_LOAN_PRODUCTS.str)) { retType = OFFICE_ACCESS_TO_LOAN_PRODUCTS; } else if (type.equals(OFFICE_ACCESS_TO_SAVINGS_PRODUCTS.str)) { retType = OFFICE_ACCESS_TO_SAVINGS_PRODUCTS; - } else if (type.equals(OFFICE_ACCESS_TO_CHARGES.str)) { + } else if (type.equals(OFFICE_ACCESS_TO_CHARGES.str)) { retType = OFFICE_ACCESS_TO_CHARGES; } - + return retType; } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelation.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelation.java index 0ca00ffc6..b9c344cd9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelation.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelation.java @@ -35,7 +35,7 @@ public class FineractEntityRelation extends AbstractPersistableCustom { @OneToMany(cascade = CascadeType.ALL, mappedBy = "relationId", orphanRemoval = true) private Set fineractEntityToEntityMapping = new HashSet<>(); - + @Column(name = "from_entity_type", nullable = false, length = 10) private String fromEntityType; @@ -50,63 +50,63 @@ public class FineractEntityRelation extends AbstractPersistableCustom { this.toEntityType = toEntityType; this.codeName = codeName; }*/ - - + + public FineractEntityRelation() { // TODO Auto-generated constructor stub } - + public Set getFineractEntityToEntityMapping() { return this.fineractEntityToEntityMapping; } - + public void setFineractEntityToEntityMapping(Set fineractEntityToEntityMapping) { this.fineractEntityToEntityMapping = fineractEntityToEntityMapping; } - + public String getFromEntityType() { return this.fromEntityType; } - + public void setFromEntityType(String fromEntityType) { this.fromEntityType = fromEntityType; } - + public String getToEntityType() { return this.toEntityType; } - + public void setToEntityType(String toEntityType) { this.toEntityType = toEntityType; } - + public String getCodeName() { return this.codeName; } - + public void setCodeName(String codeName) { this.codeName = codeName; } - - - - - + + + + + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepositoryWrapper.java index 41a2b2767..f57e5b24b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepositoryWrapper.java @@ -32,12 +32,12 @@ public class FineractEntityRelationRepositoryWrapper { this.fineractEntityRelationRepository = fineractEntityRelationRepository; } - + public FineractEntityRelation findOneWithNotFoundDetection(final Long id) { return this.fineractEntityRelationRepository.findById(id) .orElseThrow(() -> new FineractEntityAccessNotFoundException(id)); } - + public FineractEntityRelation findOneByCodeName(final String codeName) { final FineractEntityRelation fineractEntityRelation = this.fineractEntityRelationRepository.findOneByCodeName(codeName) ; if (fineractEntityRelation == null) { throw new FineractEntityAccessNotFoundException(codeName); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMappingRepository.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMappingRepository.java index c58319c01..fb60f3bdd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMappingRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMappingRepository.java @@ -21,11 +21,11 @@ package org.apache.fineract.infrastructure.entityaccess.domain; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; - + public interface FineractEntityToEntityMappingRepository extends JpaRepository{ - - + + @Query("select feem from FineractEntityToEntityMapping feem where feem.fromId= :fromId and feem.toId= :toId and feem.relationId= :relId") FineractEntityToEntityMapping findListByProductId(@Param("relId")FineractEntityRelation relId, @Param("toId")Long toId, @Param("fromId")Long fromId ); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityType.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityType.java index c637998c0..6176673e7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityType.java @@ -22,7 +22,7 @@ public class FineractEntityType { private String type; private String description; private String table_name; - + public static final FineractEntityType OFFICE = new FineractEntityType ("office", "Offices", "m_office"); public static final FineractEntityType LOAN_PRODUCT = new FineractEntityType ("loan_product", "Loan Products", "m_product_loan"); @@ -31,32 +31,32 @@ public class FineractEntityType { public static final FineractEntityType CHARGE = new FineractEntityType ("charge", "Fees/Charges", "m_charge"); public static final FineractEntityType SHARE_PRODUCT = new FineractEntityType("shares_product", "Shares Products", "m_share_product") ; - + private FineractEntityType (String type, String description, String table_name) { this.type = type; this.description = description; this.table_name = table_name; } - + public String getType () { return this.type; } - + public String getDescription () { return this.description; } - + public String getTable () { return this.table_name; } - + public static FineractEntityType get (String type) { FineractEntityType retType = null; - + if (type.equals(OFFICE.type)) { retType = OFFICE; - } else if (type.equals(LOAN_PRODUCT.type)) { + } else if (type.equals(LOAN_PRODUCT.type)) { retType = LOAN_PRODUCT; } else if (type.equals(SAVINGS_PRODUCT.type)) { retType = SAVINGS_PRODUCT; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityAccessConfigurationException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityAccessConfigurationException.java index 66c5fa4e4..3ee3e55bb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityAccessConfigurationException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityAccessConfigurationException.java @@ -29,7 +29,7 @@ public class FineractEntityAccessConfigurationException extends AbstractPlatform final FineractEntityAccessType accessType, final FineractEntityType entityType2) { super("error.msg.entityaccess.config", - "Error while getting entity access configuration for " + entityType1.getType() + ":" + firstEntityId + + "Error while getting entity access configuration for " + entityType1.getType() + ":" + firstEntityId + " with type " + accessType.toStr() + " against " + entityType2.getType()); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityAccessNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityAccessNotFoundException.java index 9d79da876..60dad533e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityAccessNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityAccessNotFoundException.java @@ -28,7 +28,7 @@ public class FineractEntityAccessNotFoundException extends AbstractPlatformResou public FineractEntityAccessNotFoundException(final Long id) { super("error.msg.entityaccess.id.invalid", "FineractEntityAccess with identifier " + id + " does not exist", id); } - + public FineractEntityAccessNotFoundException(final String codeName) { super("error.msg.entityaccess.id.invalid", "FineractEntityAccess with identifier " + codeName + " does not exist"); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/NotOfficeSpecificProductException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/NotOfficeSpecificProductException.java index 24243aede..47ac00f3d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/NotOfficeSpecificProductException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/NotOfficeSpecificProductException.java @@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainR * some domain rule. */ public class NotOfficeSpecificProductException extends AbstractPlatformDomainRuleException { - + public NotOfficeSpecificProductException(final Long productId, final Long officeId) { super("error.msg.office.product.not.found", "Product with productId " + productId + " not office Specific Product in offfice with officeId", officeId); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/handler/CreateEntityToEntityMappingCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/handler/CreateEntityToEntityMappingCommandHandler.java index 2ab414360..7e7b75f6d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/handler/CreateEntityToEntityMappingCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/handler/CreateEntityToEntityMappingCommandHandler.java @@ -30,7 +30,7 @@ import org.springframework.transaction.annotation.Transactional; @Service @CommandType(entity = "ENTITYMAPPING", action = "CREATE") public class CreateEntityToEntityMappingCommandHandler implements NewCommandSourceHandler { - + private final FineractEntityAccessWriteService fineractEntityAccessWriteService; @Autowired diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/handler/UpdateEntityToEntityMappingCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/handler/UpdateEntityToEntityMappingCommandHandler.java index 5e04af511..26764444b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/handler/UpdateEntityToEntityMappingCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/handler/UpdateEntityToEntityMappingCommandHandler.java @@ -30,7 +30,7 @@ import org.springframework.transaction.annotation.Transactional; @Service @CommandType(entity = "ENTITYMAPPING", action = "UPDATE") public class UpdateEntityToEntityMappingCommandHandler implements NewCommandSourceHandler { - + private final FineractEntityAccessWriteService fineractEntityAccessWriteService; @Autowired diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessReadServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessReadServiceImpl.java index 79952242f..e634efb76 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessReadServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessReadServiceImpl.java @@ -63,7 +63,7 @@ public class FineractEntityAccessReadServiceImpl implements FineractEntityAccess /* * (non-Javadoc) - * + * * @see org.apache.fineract.infrastructure.entityaccess.service. * FineractEntityAccessReadService#getSQLQueryWithListOfIDsForEntityAccess * (Long, @@ -72,23 +72,23 @@ public class FineractEntityAccessReadServiceImpl implements FineractEntityAccess * FineractEntityAccessType, * org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityType, * boolean) - * + * * This method returns the list of entity IDs as a comma separated list Or * null if there is no entity restrictions or if there */ @Override public String getSQLQueryInClause_WithListOfIDsForEntityAccess( FineractEntityType firstEntityType, final Long relId, final Long fromEntityId, boolean includeAllOffices) { - Collection accesslist = retrieveEntityAccessFor(firstEntityType, relId, fromEntityId, + Collection accesslist = retrieveEntityAccessFor(firstEntityType, relId, fromEntityId, includeAllOffices); String returnIdListStr = null; StringBuffer accessListCSVStrBuf = null; if ((accesslist != null) && (accesslist.size() > 0)) { for(FineractEntityToEntityMappingData accessData: accesslist){ - if (accessData == null) { + if (accessData == null) { throw new FineractEntityMappingConfigurationException(); } - + if(accessListCSVStrBuf == null){ accessListCSVStrBuf = new StringBuffer() ; }else{ @@ -96,13 +96,13 @@ public class FineractEntityAccessReadServiceImpl implements FineractEntityAccess } accessListCSVStrBuf.append(accessData.getToId()); if(accessData.getToId() == 0){ - accessListCSVStrBuf =null; + accessListCSVStrBuf =null; break; } } } else { - + accessListCSVStrBuf = new StringBuffer(); accessListCSVStrBuf.append("false"); // Append false so that no rows // will be returned @@ -127,7 +127,7 @@ public class FineractEntityAccessReadServiceImpl implements FineractEntityAccess hierarchySearchString = hierarchy + "%"; } String sql = getSQLForRetriveEntityAccessFor(); - + Collection entityAccessData = null; GetOneEntityMapper mapper = new GetOneEntityMapper(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessUtil.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessUtil.java index c7ece69ad..288902cf6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessUtil.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessUtil.java @@ -45,7 +45,7 @@ import org.springframework.transaction.annotation.Transactional; @Service public class FineractEntityAccessUtil { - + private final PlatformSecurityContext context; private final GlobalConfigurationRepositoryWrapper globalConfigurationRepository; private final CodeValueReadPlatformService codeValueReadPlatformService; @@ -75,26 +75,26 @@ public class FineractEntityAccessUtil { this.fineractEntityToEntityMappingRepository = fineractEntityToEntityMappingRepository; } - + @Transactional public void checkConfigurationAndAddProductResrictionsForUserOffice ( final FineractEntityAccessType fineractEntityAccessType, final Long productOrChargeId) { - + AppUser thisUser = this.context.authenticatedUser(); - + // check if the office specific products are enabled. If yes, then save this product or charge against a specific office // i.e. this product or charge is specific for this office. - + final GlobalConfigurationProperty property = this.globalConfigurationRepository .findOneByNameWithNotFoundDetection( FineractEntityAccessConstants.GLOBAL_CONFIG_FOR_OFFICE_SPECIFIC_PRODUCTS); if (property.isEnabled() ) { - // If this property is enabled, then Fineract need to restrict access to this loan product to only the office of the current user + // If this property is enabled, then Fineract need to restrict access to this loan product to only the office of the current user final GlobalConfigurationProperty restrictToUserOfficeProperty = this.globalConfigurationRepository .findOneByNameWithNotFoundDetection( FineractEntityAccessConstants.GLOBAL_CONFIG_FOR_RESTRICT_PRODUCTS_TO_USER_OFFICE); - + if (restrictToUserOfficeProperty.isEnabled() ) { final Long officeId = thisUser.getOffice().getId(); Date startDateFormapping = null; @@ -109,17 +109,17 @@ public class FineractEntityAccessUtil { this.fineractEntityToEntityMappingRepository.save(newMap); } } - + } - + public String getSQLWhereClauseForProductIDsForUserOffice_ifGlobalConfigEnabled ( FineractEntityType fineractEntityType) { String inClause = ""; - + final GlobalConfigurationProperty property = this.globalConfigurationRepository .findOneByNameWithNotFoundDetection( FineractEntityAccessConstants.GLOBAL_CONFIG_FOR_OFFICE_SPECIFIC_PRODUCTS); - + if (property.isEnabled() ) { // Get 'SQL In Clause' for fetching only products/charges that are relevant for current user's office if (fineractEntityType.equals(FineractEntityType.SAVINGS_PRODUCT)) { @@ -138,5 +138,5 @@ public class FineractEntityAccessUtil { } return inClause; } - + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessWriteService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessWriteService.java index 721148e80..054c093b5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessWriteService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessWriteService.java @@ -38,7 +38,7 @@ public interface FineractEntityAccessWriteService { /* * CommandProcessingResult updateEntityAccess ( final Long entityAccessId, * final JsonCommand command); - * + * * CommandProcessingResult removeEntityAccess ( final String entityType, * final Long entityId, final Long accessType, final String * secondEntityType, final Long secondEntityId); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessWriteServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessWriteServiceImpl.java index e008cd4e2..c43ac2704 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessWriteServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessWriteServiceImpl.java @@ -187,7 +187,7 @@ public class FineractEntityAccessWriteServiceImpl implements FineractEntityAcces * @Override public CommandProcessingResult updateEntityAccess(Long * entityAccessId, JsonCommand command) { // TODO Auto-generated method stub * return null; } - * + * * @Override public CommandProcessingResult removeEntityAccess(String * entityType, Long entityId, Long accessType, String secondEntityType, Long * secondEntityId) { // TODO Auto-generated method stub return null; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/GcmConstants.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/GcmConstants.java index 8ff0e375b..554aafe21 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/GcmConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/GcmConstants.java @@ -22,19 +22,19 @@ package org.apache.fineract.infrastructure.gcm; * Constants used on GCM service communication. */ public final class GcmConstants { - - + + /** * Title for notification - */ + */ public static final String title = "Hello !"; - + /** * icon for notification. */ public static final String defaultIcon = "default"; - + /** * Parameter for to field. */ @@ -97,7 +97,7 @@ public final class GcmConstants { * Value used to set message priority to high. */ public static final String MESSAGE_PRIORITY_HIGH = "high"; - + /** * A particular message could not be sent because the GCM servers were not * available. Used only on JSON requests, as in plain text requests @@ -237,6 +237,6 @@ public final class GcmConstants { private GcmConstants() { throw new UnsupportedOperationException(); } - + public static final Integer TIME_TO_LIVE = 30; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/api/DeviceRegistrationApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/api/DeviceRegistrationApiResource.java index 45332deea..6fc175485 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/api/DeviceRegistrationApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/api/DeviceRegistrationApiResource.java @@ -144,13 +144,13 @@ public class DeviceRegistrationApiResource { @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) public String delete(@PathParam("id") final Long id) { - + this.context.authenticatedUser(); this.deviceRegistrationWritePlatformService.deleteDeviceRegistration(id); return responseMap(id); - + } - + public String responseMap(Long id){ HashMap responseMap = new HashMap<>(); responseMap.put("resource", id); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/Message.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/Message.java index 83dc3bacb..6101dc912 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/Message.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/Message.java @@ -33,16 +33,16 @@ import org.apache.fineract.infrastructure.gcm.GcmConstants; * {@link Builder}. Examples: * * Simplest message: - * + * *
  * 
  * Message message = new Message.Builder().build();
  * 
- * + * * * * Message with optional attributes: - * + * *
  * 
  * Message message = new Message.Builder()
@@ -53,11 +53,11 @@ import org.apache.fineract.infrastructure.gcm.GcmConstants;
  *    .restrictedPackageName(restrictedPackageName)
  *    .build();
  * 
- * + * * * * Message with optional attributes and payload data: - * + * *
  * 
  * Message message = new Message.Builder()
@@ -71,7 +71,7 @@ import org.apache.fineract.infrastructure.gcm.GcmConstants;
  *    .addData("key2", "value2")
  *    .build();
  * 
- * + * * */ public final class Message implements Serializable { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/Notification.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/Notification.java index 219f3765a..0183b24b3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/Notification.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/Notification.java @@ -30,16 +30,16 @@ import java.util.List; * {@link Builder}. Examples: * * Simplest notification: - * + * *
  * 
  * Notification notification = new Notification.Builder("myicon").build();
  * 
- * + * * * * Notification with optional attributes: - * + * *
  * 
  * Notification notification = new Notification.Builder("myicon")
@@ -47,7 +47,7 @@ import java.util.List;
  *    .body("Here is a more detailed description")
  *    .build();
  * 
- * + * * */ public final class Notification implements Serializable { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/NotificationConfigurationData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/NotificationConfigurationData.java index 6133cc37a..9761d6552 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/NotificationConfigurationData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/NotificationConfigurationData.java @@ -19,7 +19,7 @@ package org.apache.fineract.infrastructure.gcm.domain; public class NotificationConfigurationData { - + private final Long id; private final String serverKey; private final String gcmEndPoint; @@ -36,14 +36,14 @@ public class NotificationConfigurationData { public String getServerKey() { return serverKey; } - + public String getGcmEndPoint() { return gcmEndPoint; } public String getFcmEndPoint() { return fcmEndPoint; } - - + + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/Result.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/Result.java index 6f390f187..e618d8a37 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/Result.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/Result.java @@ -35,10 +35,10 @@ import java.util.List; * created, but GCM has a canonical registration id for that device. In this * case, the server should update the registration id to avoid rejected requests * in the future. - * + * *

* In a nutshell, the workflow to handle a result is: - * + * *

  *   - Call {@link #getMessageId()}:
  *     - {@literal null} means error, call {@link #getErrorCodeName()}
@@ -93,7 +93,7 @@ public final class Result implements Serializable {
             failure = value;
             return this;
         }
-        
+
         public Builder status(int value) {
             status = value;
             return this;
@@ -181,7 +181,7 @@ public final class Result implements Serializable {
     public int getStatus() {
         return this.status;
     }
-    
-    
+
+
 
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/Sender.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/Sender.java
index 14e3f2411..4bc3ca28c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/Sender.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/Sender.java
@@ -60,7 +60,7 @@ public class Sender {
 
     private int connectTimeout;
     private int readTimeout;
-    
+
     /**
      * Full options constructor.
      *
@@ -441,7 +441,7 @@ public class Sender {
         if (responseBody == null) {
             return null;
         }
-        
+
         JsonParser parser = new JsonParser();
         JsonObject jsonResponse;
         try {
@@ -512,7 +512,7 @@ public class Sender {
         Map map = new HashMap<>();
         map.put("responseBody", responseBody);
         map.put("status", status);
-        
+
         return map;
     }
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookConfiguration.java
index 8b31c9021..377cb417c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookConfiguration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookConfiguration.java
@@ -48,7 +48,7 @@ public class HookConfiguration extends AbstractPersistableCustom {
             final String fieldValue) {
         return new HookConfiguration(null, fieldType, fieldName, fieldValue);
     }
-    
+
     public static HookConfiguration createNew(final Hook hook, final String fieldType,
             final String fieldName, final String fieldValue) {
         return new HookConfiguration(hook, fieldType, fieldName, fieldValue);
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/processor/data/SmsProviderData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/processor/data/SmsProviderData.java
index 2e4547555..34363a8ce 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/processor/data/SmsProviderData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/processor/data/SmsProviderData.java
@@ -35,13 +35,13 @@ public class SmsProviderData {
     private String smsProvider;
     private String smsProviderAccountId;
     private String smsProviderToken;
-    
+
     private String tenantId;
     private String mifosToken;
     private String endpoint;
-    
+
     public SmsProviderData(final Set config) {
-        
+
         for (final HookConfiguration conf : config) {
             final String fieldName = conf.getFieldName();
             if (fieldName.equals(payloadURLName)) {
@@ -65,7 +65,7 @@ public class SmsProviderData {
     public String getUrl() {
         return url;
     }
-    
+
     public void setUrl(String url) {
         this.url = url;
     }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/annotation/CronTarget.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/annotation/CronTarget.java
index efc4468e5..5afa0d66e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/annotation/CronTarget.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/annotation/CronTarget.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.jobs.service.JobName;
 
 /**
  * Annotation that marks a method to be picked while scheduling a cron jobs.
- * 
+ *
  */
 
 @Target(ElementType.METHOD)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobName.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobName.java
index 09266ce27..999e29613 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobName.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobName.java
@@ -44,7 +44,7 @@ public enum JobName {
     ADD_PERIODIC_ACCRUAL_ENTRIES_FOR_LOANS_WITH_INCOME_POSTED_AS_TRANSACTIONS("Add Accrual Transactions For Loans With Income Posted As Transactions"),
     EXECUTE_REPORT_MAILING_JOBS("Execute Report Mailing Jobs"),
     UPDATE_SMS_OUTBOUND_WITH_CAMPAIGN_MESSAGE("Update SMS Outbound with Campaign Message"),
-    SEND_MESSAGES_TO_SMS_GATEWAY("Send Messages to SMS Gateway"), 
+    SEND_MESSAGES_TO_SMS_GATEWAY("Send Messages to SMS Gateway"),
     GET_DELIVERY_REPORTS_FROM_SMS_GATEWAY("Get Delivery Reports from SMS Gateway"),
     GENERATE_ADHOCCLIENT_SCEHDULE("Generate AdhocClient Schedule"),
     SEND_MESSAGES_TO_EMAIL_GATEWAY("Send messages to Email gateway"),
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobListener.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobListener.java
index 6397c6dcf..e4c5b4fef 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobListener.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobListener.java
@@ -41,7 +41,7 @@ import org.springframework.stereotype.Component;
  * Global job Listener class to set Tenant details to
  * {@link ThreadLocalContextUtil} for batch Job and stores the batch job status
  * to database after the execution
- * 
+ *
  */
 @Component
 public class SchedulerJobListener implements JobListener {
@@ -53,9 +53,9 @@ public class SchedulerJobListener implements JobListener {
     private final SchedularWritePlatformService schedularService;
 
     private final AppUserRepositoryWrapper userRepository ;
-    
+
     private final GrantedAuthoritiesMapper authoritiesMapper = new NullAuthoritiesMapper();
-    
+
     @Autowired
     public SchedulerJobListener(final SchedularWritePlatformService schedularService,
             final AppUserRepositoryWrapper userRepository) {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadServiceImpl.java
index 962271e66..52a6f88f5 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadServiceImpl.java
@@ -126,7 +126,7 @@ public class SchedulerJobRunnerReadServiceImpl implements SchedulerJobRunnerRead
         }catch(EmptyResultDataAccessException e){
             return isJobPresent;
         }
-        
+
     }
 
     private static final class JobDetailMapper implements RowMapper {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerTriggerListener.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerTriggerListener.java
index b5a1c4b01..b2d791ea5 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerTriggerListener.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerTriggerListener.java
@@ -37,7 +37,7 @@ import org.springframework.stereotype.Component;
 public class SchedulerTriggerListener implements TriggerListener {
 
     private final static Logger logger = LoggerFactory.getLogger(SchedulerTriggerListener.class);
-    
+
     private final String name = "Global trigger Listner";
 
     private final SchedularWritePlatformService schedularService;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/ReportMailingJobConstants.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/ReportMailingJobConstants.java
index 8560c644b..738e7eaee 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/ReportMailingJobConstants.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/ReportMailingJobConstants.java
@@ -28,17 +28,17 @@ public class ReportMailingJobConstants implements Serializable {
 
     // define the API resource entity name
     public static final String REPORT_MAILING_JOB_ENTITY_NAME = "REPORTMAILINGJOB";
-    
+
     // define the API resource name for the report mailing job resource
     public static final String REPORT_MAILING_JOB_RESOURCE_NAME = "reportmailingjobs";
-    
+
     // define the API resource name for the report mailing job history resource
     public static final String REPORT_MAILING_JOB_RUN_HISTORY_RESOURCE_NAME = "reportmailingjobrunhistory";
-    
+
     // general API resource request parameter constants
     public static final String LOCALE_PARAM_NAME = "locale";
     public static final String DATE_FORMAT_PARAM_NAME = "dateFormat";
-    
+
     // parameter constants for create/update entity API request
     public static final String NAME_PARAM_NAME = "name";
     public static final String DESCRIPTION_PARAM_NAME = "description";
@@ -51,7 +51,7 @@ public class ReportMailingJobConstants implements Serializable {
     public static final String STRETCHY_REPORT_ID_PARAM_NAME = "stretchyReportId";
     public static final String STRETCHY_REPORT_PARAM_MAP_PARAM_NAME = "stretchyReportParamMap";
     public static final String IS_ACTIVE_PARAM_NAME = "isActive";
-    
+
     // other parameter constants
     public static final String ID_PARAM_NAME = "id";
     public static final String EMAIL_ATTACHMENT_FILE_FORMAT_PARAM_NAME = "emailAttachmentFileFormat";
@@ -62,7 +62,7 @@ public class ReportMailingJobConstants implements Serializable {
     public static final String PREVIOUS_RUN_ERROR_MESSAGE = "previousRunErrorMessage";
     public static final String NUMBER_OF_RUNS = "numberOfRuns";
     public static final String STRETCHY_REPORT_PARAM_NAME = "stretchyReport";
-    
+
     // list of permitted parameters for the create report mailing job request
     public static final Set CREATE_REQUEST_PARAMETERS =
             Collections.unmodifiableSet(new HashSet<>(Arrays.asList(LOCALE_PARAM_NAME, DATE_FORMAT_PARAM_NAME,
@@ -73,18 +73,18 @@ public class ReportMailingJobConstants implements Serializable {
     // list of permitted parameters for the update report mailing job request
     public static final Set UPDATE_REQUEST_PARAMETERS =
             Collections.unmodifiableSet(new HashSet<>(Arrays.asList(LOCALE_PARAM_NAME, DATE_FORMAT_PARAM_NAME,
-            NAME_PARAM_NAME, DESCRIPTION_PARAM_NAME, RECURRENCE_PARAM_NAME, EMAIL_RECIPIENTS_PARAM_NAME, EMAIL_SUBJECT_PARAM_NAME, 
-            EMAIL_MESSAGE_PARAM_NAME, EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME, STRETCHY_REPORT_ID_PARAM_NAME, 
+            NAME_PARAM_NAME, DESCRIPTION_PARAM_NAME, RECURRENCE_PARAM_NAME, EMAIL_RECIPIENTS_PARAM_NAME, EMAIL_SUBJECT_PARAM_NAME,
+            EMAIL_MESSAGE_PARAM_NAME, EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME, STRETCHY_REPORT_ID_PARAM_NAME,
             STRETCHY_REPORT_PARAM_MAP_PARAM_NAME, IS_ACTIVE_PARAM_NAME, START_DATE_TIME_PARAM_NAME)));
-    
+
     // list of parameters that represent the properties of a report mailing job
     public static final Set REPORT_MAILING_JOB_DATA_PARAMETERS =
             Collections.unmodifiableSet(new HashSet<>(Arrays.asList(ID_PARAM_NAME, NAME_PARAM_NAME,
-            DESCRIPTION_PARAM_NAME, RECURRENCE_PARAM_NAME, EMAIL_RECIPIENTS_PARAM_NAME, EMAIL_SUBJECT_PARAM_NAME, EMAIL_MESSAGE_PARAM_NAME, 
-            EMAIL_ATTACHMENT_FILE_FORMAT_PARAM_NAME, STRETCHY_REPORT_PARAM_NAME, STRETCHY_REPORT_PARAM_MAP_PARAM_NAME, IS_ACTIVE_PARAM_NAME, 
-            START_DATE_TIME_PARAM_NAME, PREVIOUS_RUN_DATE_TIME_PARAM_NAME, NEXT_RUN_DATE_TIME_PARAM_NAME, PREVIOUS_RUN_STATUS, 
+            DESCRIPTION_PARAM_NAME, RECURRENCE_PARAM_NAME, EMAIL_RECIPIENTS_PARAM_NAME, EMAIL_SUBJECT_PARAM_NAME, EMAIL_MESSAGE_PARAM_NAME,
+            EMAIL_ATTACHMENT_FILE_FORMAT_PARAM_NAME, STRETCHY_REPORT_PARAM_NAME, STRETCHY_REPORT_PARAM_MAP_PARAM_NAME, IS_ACTIVE_PARAM_NAME,
+            START_DATE_TIME_PARAM_NAME, PREVIOUS_RUN_DATE_TIME_PARAM_NAME, NEXT_RUN_DATE_TIME_PARAM_NAME, PREVIOUS_RUN_STATUS,
             PREVIOUS_RUN_ERROR_LOG, PREVIOUS_RUN_ERROR_MESSAGE, NUMBER_OF_RUNS)));
-    
+
     // report mailing job configuration names
     public static final String GMAIL_SMTP_SERVER = "GMAIL_SMTP_SERVER";
     public static final String GMAIL_SMTP_PORT = "GMAIL_SMTP_PORT";
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/api/ReportMailingJobApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/api/ReportMailingJobApiResource.java
index 89d45a62c..601402d78 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/api/ReportMailingJobApiResource.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/api/ReportMailingJobApiResource.java
@@ -63,12 +63,12 @@ public class ReportMailingJobApiResource {
     private final ApiRequestParameterHelper apiRequestParameterHelper;
     private final DefaultToApiJsonSerializer reportMailingToApiJsonSerializer;
     private final ReportMailingJobReadPlatformService reportMailingJobReadPlatformService;
-    
+
     @Autowired
-    public ReportMailingJobApiResource(final PlatformSecurityContext platformSecurityContext, 
-            final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService, 
-            final ApiRequestParameterHelper apiRequestParameterHelper, 
-            final DefaultToApiJsonSerializer reportMailingToApiJsonSerializer, 
+    public ReportMailingJobApiResource(final PlatformSecurityContext platformSecurityContext,
+            final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService,
+            final ApiRequestParameterHelper apiRequestParameterHelper,
+            final DefaultToApiJsonSerializer reportMailingToApiJsonSerializer,
             final ReportMailingJobReadPlatformService reportMailingJobReadPlatformService) {
         this.platformSecurityContext = platformSecurityContext;
         this.commandsSourceWritePlatformService = commandsSourceWritePlatformService;
@@ -76,7 +76,7 @@ public class ReportMailingJobApiResource {
         this.reportMailingToApiJsonSerializer = reportMailingToApiJsonSerializer;
         this.reportMailingJobReadPlatformService = reportMailingJobReadPlatformService;
     }
-    
+
     @POST
     @Consumes({ MediaType.APPLICATION_JSON })
     @Produces({ MediaType.APPLICATION_JSON })
@@ -87,12 +87,12 @@ public class ReportMailingJobApiResource {
         final CommandWrapper commandWrapper = new CommandWrapperBuilder().
                 createReportMailingJob(ReportMailingJobConstants.REPORT_MAILING_JOB_ENTITY_NAME).
                 withJson(apiRequestBodyAsJson).build();
-        
+
         final CommandProcessingResult commandProcessingResult = this.commandsSourceWritePlatformService.logCommandSource(commandWrapper);
-        
+
         return this.reportMailingToApiJsonSerializer.serialize(commandProcessingResult);
     }
-    
+
     @PUT
     @Path("{entityId}")
     @Consumes({ MediaType.APPLICATION_JSON })
@@ -104,12 +104,12 @@ public class ReportMailingJobApiResource {
         final CommandWrapper commandWrapper = new CommandWrapperBuilder().
                 updateReportMailingJob(ReportMailingJobConstants.REPORT_MAILING_JOB_ENTITY_NAME, entityId).
                 withJson(apiRequestBodyAsJson).build();
-        
+
         final CommandProcessingResult commandProcessingResult = this.commandsSourceWritePlatformService.logCommandSource(commandWrapper);
-        
+
         return this.reportMailingToApiJsonSerializer.serialize(commandProcessingResult);
     }
-    
+
     @DELETE
     @Path("{entityId}")
     @Consumes({ MediaType.APPLICATION_JSON })
@@ -121,12 +121,12 @@ public class ReportMailingJobApiResource {
         final CommandWrapper commandWrapper = new CommandWrapperBuilder().
                 deleteReportMailingJob(ReportMailingJobConstants.REPORT_MAILING_JOB_ENTITY_NAME, entityId).
                 withJson(apiRequestBodyAsJson).build();
-        
+
         final CommandProcessingResult commandProcessingResult = this.commandsSourceWritePlatformService.logCommandSource(commandWrapper);
-        
+
         return this.reportMailingToApiJsonSerializer.serialize(commandProcessingResult);
     }
-    
+
     @GET
     @Path("{entityId}")
     @Consumes({ MediaType.APPLICATION_JSON })
@@ -135,18 +135,18 @@ public class ReportMailingJobApiResource {
     @ApiResponses({@ApiResponse(code = 200, message = "", response = ReportMailingJobApiResourceSwagger.GetReportMailingJobsResponse.class)})
     public String retrieveReportMailingJob(@PathParam("entityId") @ApiParam(value = "entityId") final Long entityId, @Context final UriInfo uriInfo) {
         this.platformSecurityContext.authenticatedUser().validateHasReadPermission(ReportMailingJobConstants.REPORT_MAILING_JOB_ENTITY_NAME);
-        
+
         final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
         ReportMailingJobData reportMailingJobData = this.reportMailingJobReadPlatformService.retrieveReportMailingJob(entityId);
-        
+
         if (settings.isTemplate()) {
             final ReportMailingJobData ReportMailingJobDataOptions = this.reportMailingJobReadPlatformService.retrieveReportMailingJobEnumOptions();
             reportMailingJobData = ReportMailingJobData.newInstance(reportMailingJobData, ReportMailingJobDataOptions);
         }
-        
+
         return this.reportMailingToApiJsonSerializer.serialize(settings, reportMailingJobData, ReportMailingJobConstants.REPORT_MAILING_JOB_DATA_PARAMETERS);
     }
-    
+
     @GET
     @Path("template")
     @Consumes({ MediaType.APPLICATION_JSON })
@@ -155,28 +155,28 @@ public class ReportMailingJobApiResource {
     @ApiResponses({@ApiResponse(code = 200, message = "", response = ReportMailingJobApiResourceSwagger.GetReportMailingJobsTemplate.class)})
     public String retrieveReportMailingJobTemplate(@Context final UriInfo uriInfo) {
         this.platformSecurityContext.authenticatedUser().validateHasReadPermission(ReportMailingJobConstants.REPORT_MAILING_JOB_ENTITY_NAME);
-        
+
         final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
         final ReportMailingJobData ReportMailingJobDataOptions = this.reportMailingJobReadPlatformService.retrieveReportMailingJobEnumOptions();
-        
+
         return this.reportMailingToApiJsonSerializer.serialize(settings, ReportMailingJobDataOptions, ReportMailingJobConstants.REPORT_MAILING_JOB_DATA_PARAMETERS);
     }
-    
+
     @GET
     @Consumes({ MediaType.APPLICATION_JSON })
     @Produces({ MediaType.APPLICATION_JSON })
     @ApiOperation(value = "List Report Mailing Jobs", notes = "Example Requests:\n" + "\n" + "reportmailingjobs")
     @ApiResponses({@ApiResponse(code = 200, message = "", response = ReportMailingJobApiResourceSwagger.GetReportMailingJobsResponse.class, responseContainer = "list")})
-    public String retrieveAllReportMailingJobs(@Context final UriInfo uriInfo, 
+    public String retrieveAllReportMailingJobs(@Context final UriInfo uriInfo,
             @QueryParam("offset") @ApiParam(value = "offset") final Integer offset,
             @QueryParam("limit") @ApiParam(value = "limit") final Integer limit, @QueryParam("orderBy") @ApiParam(value = "orderBy") final String orderBy,
             @QueryParam("sortOrder") @ApiParam(value = "sortOrder") final String sortOrder) {
         this.platformSecurityContext.authenticatedUser().validateHasReadPermission(ReportMailingJobConstants.REPORT_MAILING_JOB_ENTITY_NAME);
-        
+
         final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
         final SearchParameters searchParameters = SearchParameters.fromReportMailingJob(offset, limit, orderBy, sortOrder);
         final Page reportMailingJobData = this.reportMailingJobReadPlatformService.retrieveAllReportMailingJobs(searchParameters);
-        
+
         return this.reportMailingToApiJsonSerializer.serialize(settings, reportMailingJobData, ReportMailingJobConstants.REPORT_MAILING_JOB_DATA_PARAMETERS);
     }
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/api/ReportMailingJobRunHistoryApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/api/ReportMailingJobRunHistoryApiResource.java
index d58e28acf..1b519b553 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/api/ReportMailingJobRunHistoryApiResource.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/api/ReportMailingJobRunHistoryApiResource.java
@@ -48,23 +48,23 @@ import org.springframework.stereotype.Component;
         @Tag(name = "List Report Mailing Job History", description = "")
 })
 public class ReportMailingJobRunHistoryApiResource {
-    
+
     private final PlatformSecurityContext platformSecurityContext;
     private final ApiRequestParameterHelper apiRequestParameterHelper;
     private final DefaultToApiJsonSerializer reportMailingToApiJsonSerializer;
     private final ReportMailingJobRunHistoryReadPlatformService reportMailingJobRunHistoryReadPlatformService;
-    
+
     @Autowired
-    public ReportMailingJobRunHistoryApiResource(final PlatformSecurityContext platformSecurityContext, 
-            final ApiRequestParameterHelper apiRequestParameterHelper, 
-            final DefaultToApiJsonSerializer reportMailingToApiJsonSerializer, 
+    public ReportMailingJobRunHistoryApiResource(final PlatformSecurityContext platformSecurityContext,
+            final ApiRequestParameterHelper apiRequestParameterHelper,
+            final DefaultToApiJsonSerializer reportMailingToApiJsonSerializer,
             final ReportMailingJobRunHistoryReadPlatformService reportMailingJobRunHistoryReadPlatformService) {
         this.platformSecurityContext = platformSecurityContext;
         this.apiRequestParameterHelper = apiRequestParameterHelper;
         this.reportMailingToApiJsonSerializer = reportMailingToApiJsonSerializer;
         this.reportMailingJobRunHistoryReadPlatformService = reportMailingJobRunHistoryReadPlatformService;
     }
-    
+
     @GET
     @Consumes({ MediaType.APPLICATION_JSON })
     @Produces({ MediaType.APPLICATION_JSON })
@@ -78,11 +78,11 @@ public class ReportMailingJobRunHistoryApiResource {
                                                   @QueryParam("sortOrder") @ApiParam(value = "sortOrder") final String sortOrder) {
         this.platformSecurityContext.authenticatedUser().validateHasReadPermission(ReportMailingJobConstants.REPORT_MAILING_JOB_ENTITY_NAME);
         final SearchParameters searchParameters = SearchParameters.fromReportMailingJobRunHistory(offset, limit, orderBy, sortOrder);
-        
+
         final Page reportMailingJobRunHistoryData = this.reportMailingJobRunHistoryReadPlatformService.
                 retrieveRunHistoryByJobId(reportMailingJobId, searchParameters);
         final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
-        
+
         return this.reportMailingToApiJsonSerializer.serialize(settings, reportMailingJobRunHistoryData);
     }
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobConfigurationData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobConfigurationData.java
index 48d075aef..8a6eaa9f4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobConfigurationData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobConfigurationData.java
@@ -18,26 +18,26 @@
  */
 package org.apache.fineract.infrastructure.reportmailingjob.data;
 
-/** 
- * Immutable data object representing report mailing job configuration data. 
+/**
+ * Immutable data object representing report mailing job configuration data.
  **/
 public class ReportMailingJobConfigurationData {
     private final int id;
     private final String name;
     private final String value;
-    
-    /** 
-     * ReportMailingJobConfigurationData private constructor 
+
+    /**
+     * ReportMailingJobConfigurationData private constructor
      **/
     private ReportMailingJobConfigurationData(final int id, final String name, final String value) {
         this.id = id;
         this.name = name;
         this.value = value;
     }
-    
-    /** 
+
+    /**
      * creates an instance of the ReportMailingJobConfigurationData class
-     * 
+     *
      * @return ReportMailingJobConfigurationData object
      **/
     public static ReportMailingJobConfigurationData newInstance(final int id, final String name, final String value) {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobData.java
index aa5172f2f..0c03f2d71 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobData.java
@@ -24,8 +24,8 @@ import org.apache.fineract.infrastructure.core.data.EnumOptionData;
 import org.apache.fineract.infrastructure.dataqueries.data.ReportData;
 import org.joda.time.DateTime;
 
-/** 
- * Immutable data object representing report mailing job data. 
+/**
+ * Immutable data object representing report mailing job data.
  **/
 public class ReportMailingJobData {
     private final Long id;
@@ -50,12 +50,12 @@ public class ReportMailingJobData {
     private final List emailAttachmentFileFormatOptions;
     private final List stretchyReportParamDateOptions;
     private final Long runAsUserId;
-    
-    private ReportMailingJobData(final Long id, final String name, final String description, final DateTime startDateTime, 
-            final String recurrence, final ReportMailingJobTimelineData timeline, final String emailRecipients, final String emailSubject, 
-            final String emailMessage, final EnumOptionData emailAttachmentFileFormat, final ReportData stretchyReport, final String stretchyReportParamMap, 
-            final DateTime previousRunDateTime, final DateTime nextRunDateTime, final String previousRunStatus, final String previousRunErrorLog, 
-            final String previousRunErrorMessage, final Integer numberOfRuns, final boolean isActive, final List emailAttachmentFileFormatOptions, 
+
+    private ReportMailingJobData(final Long id, final String name, final String description, final DateTime startDateTime,
+            final String recurrence, final ReportMailingJobTimelineData timeline, final String emailRecipients, final String emailSubject,
+            final String emailMessage, final EnumOptionData emailAttachmentFileFormat, final ReportData stretchyReport, final String stretchyReportParamMap,
+            final DateTime previousRunDateTime, final DateTime nextRunDateTime, final String previousRunStatus, final String previousRunErrorLog,
+            final String previousRunErrorMessage, final Integer numberOfRuns, final boolean isActive, final List emailAttachmentFileFormatOptions,
             final List stretchyReportParamDateOptions, final Long runAsUserId) {
         this.id = id;
         this.name = name;
@@ -80,39 +80,39 @@ public class ReportMailingJobData {
         this.stretchyReportParamDateOptions = stretchyReportParamDateOptions;
         this.runAsUserId = runAsUserId;
     }
-    
-    /** 
-     * @return an instance of the ReportMailingJobData class 
+
+    /**
+     * @return an instance of the ReportMailingJobData class
      **/
-    public static ReportMailingJobData newInstance(final Long id, final String name, final String description, final DateTime startDateTime, 
-            final String recurrence, final ReportMailingJobTimelineData timeline, final String emailRecipients, final String emailSubject, 
-            final String emailMessage, final EnumOptionData emailAttachmentFileFormat, final ReportData stretchyReport, final String stretchyReportParamMap, 
-            final DateTime previousRunDateTime, final DateTime nextRunDateTime, final String previousRunStatus, final String previousRunErrorLog, 
+    public static ReportMailingJobData newInstance(final Long id, final String name, final String description, final DateTime startDateTime,
+            final String recurrence, final ReportMailingJobTimelineData timeline, final String emailRecipients, final String emailSubject,
+            final String emailMessage, final EnumOptionData emailAttachmentFileFormat, final ReportData stretchyReport, final String stretchyReportParamMap,
+            final DateTime previousRunDateTime, final DateTime nextRunDateTime, final String previousRunStatus, final String previousRunErrorLog,
             final String previousRunErrorMessage, final Integer numberOfRuns, final boolean isActive, final Long runAsUserId) {
-        return new ReportMailingJobData(id, name, description, startDateTime, recurrence, timeline, emailRecipients, emailSubject, 
-                emailMessage, emailAttachmentFileFormat, stretchyReport, stretchyReportParamMap, previousRunDateTime, nextRunDateTime, 
+        return new ReportMailingJobData(id, name, description, startDateTime, recurrence, timeline, emailRecipients, emailSubject,
+                emailMessage, emailAttachmentFileFormat, stretchyReport, stretchyReportParamMap, previousRunDateTime, nextRunDateTime,
                 previousRunStatus, previousRunErrorLog, previousRunErrorMessage, numberOfRuns, isActive, null, null, runAsUserId);
     }
-    
-    /** 
-     * @return an instance of the ReportMailingJobData class 
+
+    /**
+     * @return an instance of the ReportMailingJobData class
      **/
-    public static ReportMailingJobData newInstance(final List emailAttachmentFileFormatOptions, 
+    public static ReportMailingJobData newInstance(final List emailAttachmentFileFormatOptions,
             final List stretchyReportParamDateOptions) {
-        return new ReportMailingJobData(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
+        return new ReportMailingJobData(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                 null, false, emailAttachmentFileFormatOptions, stretchyReportParamDateOptions, null);
     }
-    
-    /** 
-     * @return an instance of the ReportMailingJobData class 
+
+    /**
+     * @return an instance of the ReportMailingJobData class
      **/
     public static ReportMailingJobData newInstance(final ReportMailingJobData dataWithoutEnumOptions, final ReportMailingJobData dataWithEnumOptions) {
-        return new ReportMailingJobData(dataWithoutEnumOptions.id, dataWithoutEnumOptions.name, dataWithoutEnumOptions.description, dataWithoutEnumOptions.startDateTime, 
-                dataWithoutEnumOptions.recurrence, dataWithoutEnumOptions.timeline, dataWithoutEnumOptions.emailRecipients, dataWithoutEnumOptions.emailSubject, 
-                dataWithoutEnumOptions.emailMessage, dataWithoutEnumOptions.emailAttachmentFileFormat, dataWithoutEnumOptions.stretchyReport, 
-                dataWithoutEnumOptions.stretchyReportParamMap, dataWithoutEnumOptions.previousRunDateTime, dataWithoutEnumOptions.nextRunDateTime, 
-                dataWithoutEnumOptions.previousRunStatus, dataWithoutEnumOptions.previousRunErrorLog, dataWithoutEnumOptions.previousRunErrorMessage, 
-                dataWithoutEnumOptions.numberOfRuns, dataWithoutEnumOptions.isActive, dataWithEnumOptions.emailAttachmentFileFormatOptions, 
+        return new ReportMailingJobData(dataWithoutEnumOptions.id, dataWithoutEnumOptions.name, dataWithoutEnumOptions.description, dataWithoutEnumOptions.startDateTime,
+                dataWithoutEnumOptions.recurrence, dataWithoutEnumOptions.timeline, dataWithoutEnumOptions.emailRecipients, dataWithoutEnumOptions.emailSubject,
+                dataWithoutEnumOptions.emailMessage, dataWithoutEnumOptions.emailAttachmentFileFormat, dataWithoutEnumOptions.stretchyReport,
+                dataWithoutEnumOptions.stretchyReportParamMap, dataWithoutEnumOptions.previousRunDateTime, dataWithoutEnumOptions.nextRunDateTime,
+                dataWithoutEnumOptions.previousRunStatus, dataWithoutEnumOptions.previousRunErrorLog, dataWithoutEnumOptions.previousRunErrorMessage,
+                dataWithoutEnumOptions.numberOfRuns, dataWithoutEnumOptions.isActive, dataWithEnumOptions.emailAttachmentFileFormatOptions,
                 dataWithEnumOptions.stretchyReportParamDateOptions, dataWithoutEnumOptions.runAsUserId);
     }
 
@@ -248,8 +248,8 @@ public class ReportMailingJobData {
     public List getEmailAttachmentFileFormatOptions() {
         return emailAttachmentFileFormatOptions;
     }
-    
-    /** 
+
+    /**
      * @return the stretchyReportParamDateOptions
      **/
     public List getStretchyReportParamDateOptions() {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobEmailAttachmentFileFormat.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobEmailAttachmentFileFormat.java
index 24e2a6c60..4bea20714 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobEmailAttachmentFileFormat.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobEmailAttachmentFileFormat.java
@@ -29,26 +29,26 @@ public enum ReportMailingJobEmailAttachmentFileFormat {
     XLS(1, "ReportMailingJobEmailAttachmentFileFormat.XLS", "XLS"),
     PDF(2, "ReportMailingJobEmailAttachmentFileFormat.PDF", "PDF"),
     CSV(3, "ReportMailingJobEmailAttachmentFileFormat.CSV", "CSV");
-    
+
     private String code;
     private String value;
     private Integer id;
-    
+
     ReportMailingJobEmailAttachmentFileFormat(final Integer id, final String code, final String value) {
         this.value = value;
         this.code = code;
         this.id = id;
     }
-    
+
     /**
      * Creates a new {@link ReportMailingJobEmailAttachmentFileFormat} object
-     * 
+     *
      * @param value the value of the enum constant
      * @return {@link ReportMailingJobEmailAttachmentFileFormat} object
      */
     public static ReportMailingJobEmailAttachmentFileFormat newInstance(final String value) {
         ReportMailingJobEmailAttachmentFileFormat emailAttachmentFileFormat = INVALID;
-        
+
         if (StringUtils.equalsIgnoreCase(value, XLS.value)) {
             emailAttachmentFileFormat = XLS;
         } else if (StringUtils.equalsIgnoreCase(value, PDF.value)) {
@@ -56,19 +56,19 @@ public enum ReportMailingJobEmailAttachmentFileFormat {
         } else if (StringUtils.equalsIgnoreCase(value, CSV.value)) {
             emailAttachmentFileFormat = CSV;
         }
-        
+
         return emailAttachmentFileFormat;
     }
-    
+
     /**
      * Creates a new {@link ReportMailingJobEmailAttachmentFileFormat} object
-     * 
+     *
      * @param id the id of the enum constant
      * @return {@link ReportMailingJobEmailAttachmentFileFormat} object
      */
     public static ReportMailingJobEmailAttachmentFileFormat newInstance(final Integer id) {
         ReportMailingJobEmailAttachmentFileFormat emailAttachmentFileFormat = INVALID;
-        
+
         if (id.equals(XLS.id)) {
             emailAttachmentFileFormat = XLS;
         } else if (id.equals(PDF.id)) {
@@ -76,10 +76,10 @@ public enum ReportMailingJobEmailAttachmentFileFormat {
         } else if (id.equals(CSV.id)) {
             emailAttachmentFileFormat = CSV;
         }
-        
+
         return emailAttachmentFileFormat;
     }
-    
+
     /**
      * @return the code
      */
@@ -100,77 +100,77 @@ public enum ReportMailingJobEmailAttachmentFileFormat {
     public Integer getId() {
         return id;
     }
-    
-    /** 
+
+    /**
      * @return true if the enum is equals to "INVALID"
      */
     public boolean isInvalid() {
         return this.equals(INVALID);
     }
-    
+
     /**
      * @return true if the enum is not equals to "INVALID"
      */
     public boolean isValid() {
         return !this.isInvalid();
     }
-    
-    /** 
+
+    /**
      * @return list of valid ReportMailingJobEmailAttachmentFileFormat values
      **/
     public static Object[] validValues() {
         List validValues = new ArrayList<>();
-        
+
         for (ReportMailingJobEmailAttachmentFileFormat constant : ReportMailingJobEmailAttachmentFileFormat.values()) {
             if (constant.isValid()) {
                 validValues.add(constant.value);
             }
         }
-        
+
         return validValues.toArray();
     }
-    
-    /** 
+
+    /**
      * @return list of valid ReportMailingJobEmailAttachmentFileFormat values
      **/
     public static Object[] validIds() {
         List validValues = new ArrayList<>();
-        
+
         for (ReportMailingJobEmailAttachmentFileFormat constant : ReportMailingJobEmailAttachmentFileFormat.values()) {
             if (constant.isValid()) {
                 validValues.add(constant.id);
             }
         }
-        
+
         return validValues.toArray();
     }
-    
+
     /**
      * get a {@link EnumOptionData} representation of the {@link ReportMailingJobEmailAttachmentFileFormat} object
-     * 
+     *
      * @return {@link EnumOptionData} object
      */
     public EnumOptionData toEnumOptionData() {
         // get the long value of the enum id
         final Long id = (this.id != null) ? this.id.longValue() : null;
-        
+
         return new EnumOptionData(id, code, value);
     }
-    
+
     /**
      * get the {@link EnumOptionData} representation of all valid {@link ReportMailingJobEmailAttachmentFileFormat} objects
-     * 
+     *
      * @return List of {@link EnumOptionData} objects
      */
     public static List validOptions() {
         List options = new ArrayList<>();
-        
+
         for (ReportMailingJobEmailAttachmentFileFormat constant : ReportMailingJobEmailAttachmentFileFormat.values()) {
             if (constant.isValid()) {
                 options.add(constant.toEnumOptionData());
             }
         }
-        
+
         return options;
     }
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobEmailData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobEmailData.java
index dda7e2df3..f85c5bd37 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobEmailData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobEmailData.java
@@ -20,15 +20,15 @@ package org.apache.fineract.infrastructure.reportmailingjob.data;
 
 import java.io.File;
 
-/** 
- * Immutable data object representing report mailing job email data. 
+/**
+ * Immutable data object representing report mailing job email data.
  **/
 public class ReportMailingJobEmailData {
     private final String to;
     private final String text;
     private final String subject;
     private final File attachment;
-    
+
     public ReportMailingJobEmailData(final String to, final String text, final String subject, final File attachment) {
         this.to = to;
         this.text = text;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobPreviousRunStatus.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobPreviousRunStatus.java
index 3f49cd994..64c2f3f44 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobPreviousRunStatus.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobPreviousRunStatus.java
@@ -24,32 +24,32 @@ public enum ReportMailingJobPreviousRunStatus {
     INVALID(-1, "ReportMailingJobPreviousRunStatus.INVALID", "Invalid"),
     SUCCESS(1, "ReportMailingJobPreviousRunStatus.SUCCESS", "Success"),
     ERROR(0, "ReportMailingJobPreviousRunStatus.ERROR", "Error");
-    
+
     private final String code;
     private final String value;
     private final Integer id;
-    
+
     private ReportMailingJobPreviousRunStatus(final Integer id, final String code, final String value) {
         this.value = value;
         this.code = code;
         this.id = id;
     }
-    
+
     /**
      * Creates a {@link ReportMailingJobPreviousRunStatus} object
-     * 
+     *
      * @param value the value of the enum constant
      * @return {@link ReportMailingJobPreviousRunStatus} object
      */
     public static ReportMailingJobPreviousRunStatus newInstance(final String value) {
         ReportMailingJobPreviousRunStatus previousRunStatus = INVALID;
-        
+
         if (StringUtils.equalsIgnoreCase(value, SUCCESS.value)) {
             previousRunStatus = SUCCESS;
         } else if (StringUtils.equalsIgnoreCase(value, ERROR.value)) {
             previousRunStatus = ERROR;
         }
-        
+
         return previousRunStatus;
     }
 
@@ -66,23 +66,23 @@ public enum ReportMailingJobPreviousRunStatus {
     public String getValue() {
         return value;
     }
-    
+
     /**
      * @return the id
      */
     public Integer getId() {
         return id;
     }
-    
-    /** 
-     * @return true/false 
+
+    /**
+     * @return true/false
      **/
     public boolean isSuccess() {
         return this.value.equals(SUCCESS.getValue());
     }
-    
-    /** 
-     * @return boolean true/false 
+
+    /**
+     * @return boolean true/false
      **/
     public boolean isError() {
         return this.value.equals(ERROR.getValue());
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobRunHistoryData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobRunHistoryData.java
index 0642f7b0e..91d8a1fc3 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobRunHistoryData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobRunHistoryData.java
@@ -20,8 +20,8 @@ package org.apache.fineract.infrastructure.reportmailingjob.data;
 
 import org.joda.time.DateTime;
 
-/** 
- * Immutable data object representing report mailing job run history data. 
+/**
+ * Immutable data object representing report mailing job run history data.
  **/
 public class ReportMailingJobRunHistoryData {
     private final Long id;
@@ -31,9 +31,9 @@ public class ReportMailingJobRunHistoryData {
     private final String status;
     private final String errorMessage;
     private final String errorLog;
-    
-    /** 
-     * ReportMailingJobRunHistoryData private constructor 
+
+    /**
+     * ReportMailingJobRunHistoryData private constructor
      **/
     private ReportMailingJobRunHistoryData(Long id, Long reportMailingJobId, DateTime startDateTime,
             DateTime endDateTime, String status, String errorMessage, String errorLog) {
@@ -45,10 +45,10 @@ public class ReportMailingJobRunHistoryData {
         this.errorMessage = errorMessage;
         this.errorLog = errorLog;
     }
-    
-    /** 
+
+    /**
      * creates an instance of the ReportMailingJobRunHistoryData class
-     * 
+     *
      * @return ReportMailingJobRunHistoryData object
      **/
     public static ReportMailingJobRunHistoryData newInstance(Long id, Long reportMailingJobId, DateTime startDateTime,
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobStretchyReportParamDateOption.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobStretchyReportParamDateOption.java
index 6959d83b7..d8feb7777 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobStretchyReportParamDateOption.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobStretchyReportParamDateOption.java
@@ -29,11 +29,11 @@ public enum ReportMailingJobStretchyReportParamDateOption {
     TODAY(1, "ReportMailingJobStretchyReportParamDateOption.TODAY", "Today"),
     YESTERDAY(2, "ReportMailingJobStretchyReportParamDateOption.YESTERDAY", "Yesterday"),
     TOMORROW(3, "ReportMailingJobStretchyReportParamDateOption.TOMORROW", "Tomorrow");
-    
+
     private String code;
     private String value;
     private Integer id;
-    
+
     /**
      * @param id
      * @param code
@@ -44,16 +44,16 @@ public enum ReportMailingJobStretchyReportParamDateOption {
         this.code = code;
         this.id = id;
     }
-    
+
     /**
      * Creates a new {@link ReportMailingJobStretchyReportParamDateOption} object
-     * 
+     *
      * @param value value of the enum constant
      * @return {@link ReportMailingJobStretchyReportParamDateOption} object
      */
     public static ReportMailingJobStretchyReportParamDateOption newInstance(final String value) {
         ReportMailingJobStretchyReportParamDateOption reportMailingJobStretchyReportParamDateOption = INVALID;
-        
+
         if (StringUtils.equalsIgnoreCase(value, TODAY.value)) {
             reportMailingJobStretchyReportParamDateOption = TODAY;
         } else if (StringUtils.equalsIgnoreCase(value, YESTERDAY.value)) {
@@ -61,19 +61,19 @@ public enum ReportMailingJobStretchyReportParamDateOption {
         } else if (StringUtils.equalsIgnoreCase(value, TOMORROW.value)) {
             reportMailingJobStretchyReportParamDateOption = TOMORROW;
         }
-        
+
         return reportMailingJobStretchyReportParamDateOption;
     }
-    
+
     /**
      * Creates a new {@link ReportMailingJobStretchyReportParamDateOption} object
-     * 
+     *
      * @param id id of the enum constant
      * @return {@link ReportMailingJobStretchyReportParamDateOption} object
      */
     public static ReportMailingJobStretchyReportParamDateOption newInstance(final Integer id) {
         ReportMailingJobStretchyReportParamDateOption reportMailingJobStretchyReportParamDateOption = INVALID;
-        
+
         if (id.equals(TODAY.id)) {
             reportMailingJobStretchyReportParamDateOption = TODAY;
         } else if (id.equals(YESTERDAY.id)) {
@@ -81,10 +81,10 @@ public enum ReportMailingJobStretchyReportParamDateOption {
         } else if (id.equals(TOMORROW.id)) {
             reportMailingJobStretchyReportParamDateOption = TOMORROW;
         }
-        
+
         return reportMailingJobStretchyReportParamDateOption;
     }
-    
+
     /**
      * @return the code
      */
@@ -105,62 +105,62 @@ public enum ReportMailingJobStretchyReportParamDateOption {
     public Integer getId() {
         return id;
     }
-    
-    /** 
+
+    /**
      * @return true if the enum is equals to "INVALID"
      */
     public boolean isInvalid() {
         return this.equals(INVALID);
     }
-    
+
     /**
      * @return true if the enum is not equals to "INVALID"
      */
     public boolean isValid() {
         return !this.isInvalid();
     }
-    
-    /** 
+
+    /**
      * @return list of valid ReportMailingJobStretchyReportParamDateOption values
      **/
     public static Object[] validValues() {
         List validValues = new ArrayList<>();
-        
+
         for (ReportMailingJobStretchyReportParamDateOption constant :  ReportMailingJobStretchyReportParamDateOption.values()) {
             if (constant.isValid()) {
                 validValues.add(constant.value);
             }
         }
-        
+
         return validValues.toArray();
     }
-    
+
     /**
      * get a {@link EnumOptionData} representation of the {@link ReportMailingJobStretchyReportParamDateOption} object
-     * 
+     *
      * @return {@link EnumOptionData} object
      */
     public EnumOptionData toEnumOptionData() {
         // get the long value of the enum id
         final Long id = (this.id != null) ? this.id.longValue() : null;
-        
+
         return new EnumOptionData(id, code, value);
     }
-    
+
     /**
      * get the {@link EnumOptionData} representation of all valid {@link ReportMailingJobStretchyReportParamDateOption} objects
-     * 
+     *
      * @return List of {@link EnumOptionData} objects
      */
     public static List validOptions() {
         List options = new ArrayList<>();
-        
+
         for (ReportMailingJobStretchyReportParamDateOption constant : ReportMailingJobStretchyReportParamDateOption.values()) {
             if (constant.isValid()) {
                 options.add(constant.toEnumOptionData());
             }
         }
-        
+
         return options;
     }
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobTimelineData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobTimelineData.java
index 032009762..9a22262a3 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobTimelineData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobTimelineData.java
@@ -20,7 +20,7 @@ package org.apache.fineract.infrastructure.reportmailingjob.data;
 
 import org.joda.time.LocalDate;
 
-/** 
+/**
  * Immutable data object represent the timeline events of a report mailing job (creation)
  **/
 @SuppressWarnings("unused")
@@ -33,7 +33,7 @@ public class ReportMailingJobTimelineData {
     private final String updatedByUsername;
     private final String updatedByFirstname;
     private final String updatedByLastname;
-    
+
     /**
      * @param createdOnDate
      * @param createdByUsername
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJob.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJob.java
index 0a29c560b..da0bd8189 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJob.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJob.java
@@ -48,91 +48,91 @@ import org.joda.time.format.DateTimeFormatter;
 @Table(name = "m_report_mailing_job", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "unique_name") })
 public class ReportMailingJob extends AbstractAuditableCustom {
     private static final long serialVersionUID = -2197602941230009227L;
-    
+
     @Column(name = "name", nullable = false)
     private String name;
-    
+
     @Column(name = "description", nullable = true)
     private String description;
-    
+
     @Column(name = "start_datetime", nullable = false)
     @Temporal(TemporalType.TIMESTAMP)
     private Date startDateTime;
-    
+
     @Column(name = "recurrence", nullable = true)
     private String recurrence;
-    
+
     @Column(name = "email_recipients", nullable = false)
     private String emailRecipients;
-    
+
     @Column(name = "email_subject", nullable = false)
     private String emailSubject;
-    
+
     @Column(name = "email_message", nullable = false)
     private String emailMessage;
-    
+
     @Column(name = "email_attachment_file_format", nullable = false)
     private String emailAttachmentFileFormat;
-    
+
     @ManyToOne
     @JoinColumn(name = "stretchy_report_id", nullable = false)
     private Report stretchyReport;
-    
+
     @Column(name = "stretchy_report_param_map", nullable = true)
     private String stretchyReportParamMap;
-    
+
     @Column(name = "previous_run_datetime", nullable = true)
     @Temporal(TemporalType.TIMESTAMP)
     private Date previousRunDateTime;
-    
+
     @Column(name = "next_run_datetime", nullable = true)
     @Temporal(TemporalType.TIMESTAMP)
     private Date nextRunDateTime;
-    
+
     @Column(name = "previous_run_status", nullable = true)
     private String previousRunStatus;
-    
+
     @Column(name = "previous_run_error_log", nullable = true)
     private String previousRunErrorLog;
-    
+
     @Column(name = "previous_run_error_message", nullable = true)
     private String previousRunErrorMessage;
-    
+
     @Column(name = "number_of_runs", nullable = false)
     private Integer numberOfRuns;
-    
+
     @Column(name = "is_active", nullable = false)
     private boolean isActive;
-    
+
     @Column(name = "is_deleted", nullable = false)
     private boolean isDeleted;
-    
+
     @ManyToOne(optional = false)
     @JoinColumn(name = "run_as_userid", nullable = false)
     private AppUser runAsUser;
-    
-    /** 
+
+    /**
      * ReportMailingJob protected constructor
      **/
     protected ReportMailingJob() { }
-    
-    /** 
-     * ReportMailingJob private constructor 
+
+    /**
+     * ReportMailingJob private constructor
      **/
-    private ReportMailingJob(final String name, final String description, final LocalDateTime startDateTime, 
-            final String recurrence, final String emailRecipients, final String emailSubject, 
-            final String emailMessage, final ReportMailingJobEmailAttachmentFileFormat emailAttachmentFileFormat, 
-            final Report stretchyReport, final String stretchyReportParamMap, final LocalDateTime previousRunDateTime, final LocalDateTime nextRunDateTime, 
-            final ReportMailingJobPreviousRunStatus previousRunStatus, final String previousRunErrorLog, final String previousRunErrorMessage, 
-            final boolean isActive, final boolean isDeleted, final AppUser runAsUser) { 
+    private ReportMailingJob(final String name, final String description, final LocalDateTime startDateTime,
+            final String recurrence, final String emailRecipients, final String emailSubject,
+            final String emailMessage, final ReportMailingJobEmailAttachmentFileFormat emailAttachmentFileFormat,
+            final Report stretchyReport, final String stretchyReportParamMap, final LocalDateTime previousRunDateTime, final LocalDateTime nextRunDateTime,
+            final ReportMailingJobPreviousRunStatus previousRunStatus, final String previousRunErrorLog, final String previousRunErrorMessage,
+            final boolean isActive, final boolean isDeleted, final AppUser runAsUser) {
         this.name = name;
         this.description = description;
         this.startDateTime = null;
-        
+
         if (startDateTime != null) {
             this.startDateTime = startDateTime.toDate();
         }
-        
+
         this.recurrence = recurrence;
         this.emailRecipients = emailRecipients;
         this.emailSubject = emailSubject;
@@ -141,53 +141,53 @@ public class ReportMailingJob extends AbstractAuditableCustom {
         this.stretchyReport = stretchyReport;
         this.stretchyReportParamMap = stretchyReportParamMap;
         this.previousRunDateTime = null;
-        
+
         if (previousRunDateTime != null) {
             this.previousRunDateTime = previousRunDateTime.toDate();
         }
-        
+
         this.nextRunDateTime = null;
-        
+
         if (nextRunDateTime != null) {
             this.nextRunDateTime = nextRunDateTime.toDate();
         }
-        
+
         this.previousRunStatus = null;
-        
+
         if (previousRunStatus != null) {
             this.previousRunStatus = previousRunStatus.getValue();
         }
-        
+
         if (numberOfRuns == null) {
             this.numberOfRuns = 0;
         }
-        
+
         this.previousRunErrorLog = previousRunErrorLog;
         this.previousRunErrorMessage = previousRunErrorMessage;
         this.isActive = isActive;
         this.isDeleted = isDeleted;
         this.runAsUser = runAsUser;
     }
-    
-    /** 
+
+    /**
      * create a new instance of the ReportMailingJob for a new entry
-     * 
+     *
      * @return ReportMailingJob object
      **/
-    public static ReportMailingJob newInstance(final String name, final String description, final LocalDateTime startDateTime, final String recurrence, 
-            final String emailRecipients, final String emailSubject, final String emailMessage, 
-            final ReportMailingJobEmailAttachmentFileFormat emailAttachmentFileFormat, final Report stretchyReport, final String stretchyReportParamMap, 
+    public static ReportMailingJob newInstance(final String name, final String description, final LocalDateTime startDateTime, final String recurrence,
+            final String emailRecipients, final String emailSubject, final String emailMessage,
+            final ReportMailingJobEmailAttachmentFileFormat emailAttachmentFileFormat, final Report stretchyReport, final String stretchyReportParamMap,
             final boolean isActive, final AppUser runAsUser) {
-        return new ReportMailingJob(name, description, startDateTime, recurrence, emailRecipients, emailSubject, 
+        return new ReportMailingJob(name, description, startDateTime, recurrence, emailRecipients, emailSubject,
                 emailMessage, emailAttachmentFileFormat, stretchyReport, stretchyReportParamMap, null, null, null, null, null, isActive, false, runAsUser);
     }
-    
-    /** 
-     * create a new instance of the ReportmailingJob for a new entry 
-     * 
+
+    /**
+     * create a new instance of the ReportmailingJob for a new entry
+     *
      * @return ReportMailingJob object
      **/
-    public static ReportMailingJob newInstance(JsonCommand jsonCommand, final Report stretchyReport, 
+    public static ReportMailingJob newInstance(JsonCommand jsonCommand, final Report stretchyReport,
             final AppUser runAsUser) {
         final String name = jsonCommand.stringValueOfParameterNamed(ReportMailingJobConstants.NAME_PARAM_NAME);
         final String description = jsonCommand.stringValueOfParameterNamed(ReportMailingJobConstants.DESCRIPTION_PARAM_NAME);
@@ -200,198 +200,198 @@ public class ReportMailingJob extends AbstractAuditableCustom {
         final Integer emailAttachmentFileFormatId = jsonCommand.integerValueOfParameterNamed(ReportMailingJobConstants.EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME);
         final ReportMailingJobEmailAttachmentFileFormat emailAttachmentFileFormat = ReportMailingJobEmailAttachmentFileFormat.newInstance(emailAttachmentFileFormatId);
         LocalDateTime startDateTime = new LocalDateTime();
-        
+
         if (jsonCommand.hasParameter(ReportMailingJobConstants.START_DATE_TIME_PARAM_NAME)) {
             final String startDateTimeString = jsonCommand.stringValueOfParameterNamed(ReportMailingJobConstants.START_DATE_TIME_PARAM_NAME);
-            
+
             if (startDateTimeString != null) {
                 final DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(jsonCommand.dateFormat()).withLocale(jsonCommand.extractLocale());
-                startDateTime = LocalDateTime.parse(startDateTimeString, dateTimeFormatter); 
+                startDateTime = LocalDateTime.parse(startDateTimeString, dateTimeFormatter);
             }
         }
-        
-        return new ReportMailingJob(name, description, startDateTime, recurrence, emailRecipients, emailSubject, 
+
+        return new ReportMailingJob(name, description, startDateTime, recurrence, emailRecipients, emailSubject,
                 emailMessage, emailAttachmentFileFormat, stretchyReport, stretchyReportParamMap, null, startDateTime, null, null, null, isActive, false, runAsUser);
     }
-    
-    /** 
-     * Update the ReportMailingJob entity 
-     * 
+
+    /**
+     * Update the ReportMailingJob entity
+     *
      * @param jsonCommand JsonCommand object
      * @return map of string to object
      **/
     public Map update(final JsonCommand jsonCommand) {
         final Map actualChanges = new LinkedHashMap<>();
-        
+
         if (jsonCommand.isChangeInStringParameterNamed(ReportMailingJobConstants.NAME_PARAM_NAME, this.name)) {
             final String name = jsonCommand.stringValueOfParameterNamed(ReportMailingJobConstants.NAME_PARAM_NAME);
             actualChanges.put(ReportMailingJobConstants.NAME_PARAM_NAME, name);
-            
+
             this.name = name;
         }
-        
+
         if (jsonCommand.isChangeInStringParameterNamed(ReportMailingJobConstants.DESCRIPTION_PARAM_NAME, this.description)) {
             final String description = jsonCommand.stringValueOfParameterNamed(ReportMailingJobConstants.DESCRIPTION_PARAM_NAME);
             actualChanges.put(ReportMailingJobConstants.DESCRIPTION_PARAM_NAME, description);
-            
+
             this.description = description;
         }
-        
+
         if (jsonCommand.isChangeInStringParameterNamed(ReportMailingJobConstants.RECURRENCE_PARAM_NAME, this.recurrence)) {
             final String recurrence = jsonCommand.stringValueOfParameterNamed(ReportMailingJobConstants.RECURRENCE_PARAM_NAME);
             actualChanges.put(ReportMailingJobConstants.RECURRENCE_PARAM_NAME, recurrence);
-            
+
             this.recurrence = recurrence;
         }
-        
+
         if (jsonCommand.isChangeInBooleanParameterNamed(ReportMailingJobConstants.IS_ACTIVE_PARAM_NAME, this.isActive)) {
             final boolean isActive = jsonCommand.booleanPrimitiveValueOfParameterNamed(ReportMailingJobConstants.IS_ACTIVE_PARAM_NAME);
             actualChanges.put(ReportMailingJobConstants.IS_ACTIVE_PARAM_NAME, isActive);
-            
+
             this.isActive = isActive;
         }
-        
+
         if (jsonCommand.isChangeInStringParameterNamed(ReportMailingJobConstants.EMAIL_RECIPIENTS_PARAM_NAME, this.emailRecipients)) {
             final String emailRecipients = jsonCommand.stringValueOfParameterNamed(ReportMailingJobConstants.EMAIL_RECIPIENTS_PARAM_NAME);
             actualChanges.put(ReportMailingJobConstants.EMAIL_RECIPIENTS_PARAM_NAME, emailRecipients);
-            
+
             this.emailRecipients = emailRecipients;
         }
-        
+
         if (jsonCommand.isChangeInStringParameterNamed(ReportMailingJobConstants.EMAIL_SUBJECT_PARAM_NAME, this.emailSubject)) {
             final String emailSubject = jsonCommand.stringValueOfParameterNamed(ReportMailingJobConstants.EMAIL_SUBJECT_PARAM_NAME);
             actualChanges.put(ReportMailingJobConstants.EMAIL_SUBJECT_PARAM_NAME, emailSubject);
-            
+
             this.emailSubject = emailSubject;
         }
-        
+
         if (jsonCommand.isChangeInStringParameterNamed(ReportMailingJobConstants.EMAIL_MESSAGE_PARAM_NAME, this.emailMessage)) {
             final String emailMessage = jsonCommand.stringValueOfParameterNamed(ReportMailingJobConstants.EMAIL_MESSAGE_PARAM_NAME);
             actualChanges.put(ReportMailingJobConstants.EMAIL_MESSAGE_PARAM_NAME, emailMessage);
-            
+
             this.emailMessage = emailMessage;
         }
-        
+
         if (jsonCommand.isChangeInStringParameterNamed(ReportMailingJobConstants.STRETCHY_REPORT_PARAM_MAP_PARAM_NAME, this.stretchyReportParamMap)) {
             final String stretchyReportParamMap = jsonCommand.stringValueOfParameterNamed(ReportMailingJobConstants.STRETCHY_REPORT_PARAM_MAP_PARAM_NAME);
             actualChanges.put(ReportMailingJobConstants.STRETCHY_REPORT_PARAM_MAP_PARAM_NAME, stretchyReportParamMap);
-            
+
             this.stretchyReportParamMap = stretchyReportParamMap;
         }
-        
+
         final ReportMailingJobEmailAttachmentFileFormat emailAttachmentFileFormat = ReportMailingJobEmailAttachmentFileFormat.newInstance(this.emailAttachmentFileFormat);
-        
+
         if (jsonCommand.isChangeInIntegerParameterNamed(ReportMailingJobConstants.EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME, emailAttachmentFileFormat.getId())) {
             final Integer emailAttachmentFileFormatId = jsonCommand.integerValueOfParameterNamed(ReportMailingJobConstants.EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME);
             actualChanges.put(ReportMailingJobConstants.EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME, emailAttachmentFileFormatId);
-            
+
             final ReportMailingJobEmailAttachmentFileFormat newEmailAttachmentFileFormat = ReportMailingJobEmailAttachmentFileFormat.newInstance(emailAttachmentFileFormatId);
             this.emailAttachmentFileFormat = newEmailAttachmentFileFormat.getValue();
         }
-        
+
         final String newStartDateTimeString = jsonCommand.stringValueOfParameterNamed(ReportMailingJobConstants.START_DATE_TIME_PARAM_NAME);
-        
+
         if (!StringUtils.isEmpty(newStartDateTimeString)) {
             final DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(jsonCommand.dateFormat()).withLocale(jsonCommand.extractLocale());
             final LocalDateTime newStartDateTime = LocalDateTime.parse(newStartDateTimeString, dateTimeFormatter);
             final LocalDateTime oldStartDateTime = (this.startDateTime != null) ? new LocalDateTime(this.startDateTime) : null;
-            
+
             if ((oldStartDateTime != null) && !newStartDateTime.equals(oldStartDateTime)) {
                 actualChanges.put(ReportMailingJobConstants.START_DATE_TIME_PARAM_NAME, newStartDateTimeString);
-                
+
                 this.startDateTime = newStartDateTime.toDate();
             }
         }
-        
+
         Long currentStretchyReportId = null;
-        
+
         if (this.stretchyReport != null) {
             currentStretchyReportId = this.stretchyReport.getId();
         }
-        
+
         if (jsonCommand.isChangeInLongParameterNamed(ReportMailingJobConstants.STRETCHY_REPORT_ID_PARAM_NAME, currentStretchyReportId)) {
             final Long updatedStretchyReportId = jsonCommand.longValueOfParameterNamed(
                     ReportMailingJobConstants.STRETCHY_REPORT_ID_PARAM_NAME);
             actualChanges.put(ReportMailingJobConstants.STRETCHY_REPORT_ID_PARAM_NAME, updatedStretchyReportId);
         }
-        
+
         return actualChanges;
     }
-    
-    /** 
-     * update the stretchy report entity associated with the credit check 
-     * 
+
+    /**
+     * update the stretchy report entity associated with the credit check
+     *
      * @param stretchyReport -- Report entity
-     * 
+     *
      **/
     public void update(final Report stretchyReport) {
         if (stretchyReport != null) {
             this.stretchyReport = stretchyReport;
         }
     }
-    
-    /** 
-     * delete the report mailing job, set the isDeleted property to 1 and alter the name 
-     * 
-     * 
+
+    /**
+     * delete the report mailing job, set the isDeleted property to 1 and alter the name
+     *
+     *
      **/
     public void delete() {
         this.isDeleted = true;
         this.isActive = false;
         this.name = this.name + "_deleted_" + this.getId();
     }
-    
-    /** 
-     * @return the value of the name property 
+
+    /**
+     * @return the value of the name property
      **/
     public String getName() {
         return this.name;
     }
-    
-    /** 
-     * @return the value of the description property 
+
+    /**
+     * @return the value of the description property
      **/
     public String getDescription() {
         return this.description;
     }
-    
-    /** 
-     * @return the value of the startDateTime property 
+
+    /**
+     * @return the value of the startDateTime property
      **/
     public DateTime getStartDateTime() {
         return (this.startDateTime != null) ? new DateTime(this.startDateTime) : null;
     }
-    
-    /** 
-     * @return the value of the recurrence property 
+
+    /**
+     * @return the value of the recurrence property
      **/
     public String getRecurrence() {
         return this.recurrence;
     }
-    
-    /** 
-     * @return value of the isDeleted property 
+
+    /**
+     * @return value of the isDeleted property
      **/
     public boolean isDeleted() {
         return this.isDeleted;
     }
-    
-    /** 
-     * @return boolean true if isDeleted property equals 0, else false 
+
+    /**
+     * @return boolean true if isDeleted property equals 0, else false
      **/
     public boolean isNotDeleted() {
         return !this.isDeleted;
     }
-    
-    /** 
-     * @return the value of the isActive property 
+
+    /**
+     * @return the value of the isActive property
      **/
     public boolean isActive() {
         return this.isActive;
     }
-    
-    /** 
-     * @return boolean true if isActive property equals 0, else false 
+
+    /**
+     * @return boolean true if isActive property equals 0, else false
      **/
     public boolean isNotActive() {
         return !this.isActive;
@@ -487,70 +487,70 @@ public class ReportMailingJob extends AbstractAuditableCustom {
     public AppUser getRunAsUser() {
         return runAsUser;
     }
-    
-    /** 
-     * increase the numberOfRuns by 1 
-     * 
-     * 
+
+    /**
+     * increase the numberOfRuns by 1
+     *
+     *
      **/
     public void increaseNumberOfRunsByOne() {
         this.numberOfRuns++;
     }
-    
-    /** 
-     * update the previousRunStatus 
-     * 
+
+    /**
+     * update the previousRunStatus
+     *
      * @param previousRunStatus -- the status of the previous job execution
-     * 
+     *
      **/
     public void updatePreviousRunStatus(final String previousRunStatus) {
         if (!StringUtils.isEmpty(previousRunStatus)) {
             this.previousRunStatus = previousRunStatus;
         }
     }
-    
-    /** 
+
+    /**
      * update the previousRunDateTime
-     * 
+     *
      * @param previousRunDateTime -- previous run date
-     * 
+     *
      **/
     public void updatePreviousRunDateTime(final DateTime previousRunDateTime) {
         if (previousRunDateTime != null) {
             this.previousRunDateTime = previousRunDateTime.toDate();
         }
     }
-    
-    /** 
+
+    /**
      * update the nextRunDateTime
-     * 
+     *
      * @param nextRunDateTime -- the next run DateTime
-     * 
+     *
      **/
     public void updateNextRunDateTime(final DateTime nextRunDateTime) {
         if (nextRunDateTime != null) {
             this.nextRunDateTime = nextRunDateTime.toDate();
         }
-        
+
         else {
             this.nextRunDateTime = null;
         }
     }
-    
-    /** 
-     * deactivate the report mailing job by setting the isActive property to 0 
-     * 
-     * 
+
+    /**
+     * deactivate the report mailing job by setting the isActive property to 0
+     *
+     *
      **/
     public void deactivate() {
         this.isActive = false;
     }
-    
-    /** 
+
+    /**
      * update the previousRunErrorLog property
-     * 
+     *
      * @param previousRunErrorLog -- the previous job run error log
-     * 
+     *
      **/
     public void updatePreviousRunErrorLog(final String previousRunErrorLog) {
         this.previousRunErrorLog = previousRunErrorLog;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobConfiguration.java
index b14c8331b..ff0d03077 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobConfiguration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobConfiguration.java
@@ -32,26 +32,26 @@ public class ReportMailingJobConfiguration extends AbstractPersistableCustom, 
+public interface ReportMailingJobConfigurationRepository extends JpaRepository,
         JpaSpecificationExecutor {
-    
-    /** 
-     * find ReportMailingJobConfiguration by name 
+
+    /**
+     * find ReportMailingJobConfiguration by name
      **/
     ReportMailingJobConfiguration findByName(final String name);
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobEmailAttachmentFileFormat.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobEmailAttachmentFileFormat.java
index ef24a20d2..b014cac4e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobEmailAttachmentFileFormat.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobEmailAttachmentFileFormat.java
@@ -23,63 +23,63 @@ public enum ReportMailingJobEmailAttachmentFileFormat {
     XLS(1, "ReportMailingJobEmailAttachmentFileFormat.xls", "xls"),
     PDF(2, "ReportMailingJobEmailAttachmentFileFormat.pdf", "pdf"),
     CSV(3, "ReportMailingJobEmailAttachmentFileFormat.csv", "csv");
-    
+
     private String code;
     private String value;
     private Integer id;
-    
+
     private ReportMailingJobEmailAttachmentFileFormat(final Integer id, final String code, final String value) {
         this.value = value;
         this.code = code;
         this.id = id;
     }
-    
+
     public static ReportMailingJobEmailAttachmentFileFormat instance(final String value) {
         ReportMailingJobEmailAttachmentFileFormat emailAttachmentFileFormat = INVALID;
-        
+
         switch (value) {
             case "xls":
                 emailAttachmentFileFormat = XLS;
                 break;
-                
+
             case "pdf":
                 emailAttachmentFileFormat = PDF;
                 break;
-                
+
             case "csv":
                 emailAttachmentFileFormat = CSV;
                 break;
-                
+
             default:
                 break;
         }
-        
+
         return emailAttachmentFileFormat;
     }
-    
+
     public static ReportMailingJobEmailAttachmentFileFormat instance(final Integer id) {
         ReportMailingJobEmailAttachmentFileFormat emailAttachmentFileFormat = INVALID;
-        
+
         switch (id) {
             case 1:
                 emailAttachmentFileFormat = XLS;
                 break;
-                
+
             case 2:
                 emailAttachmentFileFormat = PDF;
                 break;
-                
+
             case 3:
                 emailAttachmentFileFormat = CSV;
                 break;
-                
+
             default:
                 break;
         }
-        
+
         return emailAttachmentFileFormat;
     }
-    
+
     /**
      * @return the code
      */
@@ -100,8 +100,8 @@ public enum ReportMailingJobEmailAttachmentFileFormat {
     public Integer getId() {
         return id;
     }
-    
-    /** 
+
+    /**
      * @return list of valid ReportMailingJobEmailAttachmentFileFormat ids
      **/
     public static Object[] validValues() {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRepository.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRepository.java
index 94268d837..3f46718ee 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRepository.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRepository.java
@@ -26,7 +26,7 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 public interface ReportMailingJobRepository extends JpaRepository, JpaSpecificationExecutor {
     /**
      * Returns all instances of {@link ReportMailingJob} where isActive is true and isDeleted is false
-     * 
+     *
      * @return instances of {@link ReportMailingJob}
      */
     public Collection findByIsActiveTrueAndIsDeletedFalse();
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRepositoryWrapper.java
index 18072e0af..5e91124de 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRepositoryWrapper.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRepositoryWrapper.java
@@ -25,30 +25,30 @@ import org.springframework.stereotype.Service;
 @Service
 public class ReportMailingJobRepositoryWrapper {
     private final ReportMailingJobRepository reportMailingJobRepository;
-    
+
     @Autowired
     public ReportMailingJobRepositoryWrapper(final ReportMailingJobRepository reportMailingJobRepository) {
         this.reportMailingJobRepository = reportMailingJobRepository;
     }
-    
-    /** 
+
+    /**
      * find report mailing job by ID, throw a "entity not found" exception if the job does not exist
-     * 
+     *
      * @param id -- the identifier of the report mailing job to be found
      * @return ReportMailingJob object
      **/
     public ReportMailingJob findOneThrowExceptionIfNotFound(final Long id) {
         final ReportMailingJob reportMailingJob = this.reportMailingJobRepository.findById(id)
                 .orElseThrow(() -> new ReportMailingJobNotFoundException(id));
-        
+
         if (reportMailingJob.isDeleted()) {
             throw new ReportMailingJobNotFoundException(id);
         }
-        
+
         return reportMailingJob;
     }
-    
-    /** 
+
+    /**
      * @return ReportMailingJobRepository Jpa Repository object
      **/
     public ReportMailingJobRepository getReportMailingJobRepository() {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRunHistory.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRunHistory.java
index 99d1ef927..bce05e665 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRunHistory.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRunHistory.java
@@ -39,58 +39,58 @@ public class ReportMailingJobRunHistory extends AbstractPersistableCustom
     @ManyToOne
     @JoinColumn(name = "job_id", nullable = false)
     private ReportMailingJob reportMailingJob;
-    
+
     @Column(name = "start_datetime", nullable = false)
     @Temporal(TemporalType.TIMESTAMP)
     private Date startDateTime;
-    
+
     @Column(name = "end_datetime", nullable = false)
     @Temporal(TemporalType.TIMESTAMP)
     private Date endDateTime;
-    
+
     @Column(name = "status", nullable = false)
     private String status;
-    
+
     @Column(name = "error_message", nullable = false)
     private String errorMessage;
-    
+
     @Column(name = "error_log", nullable = false)
     private String errorLog;
-    
-    /** 
-     * ReportMailingJobRunHistory protected constructor 
+
+    /**
+     * ReportMailingJobRunHistory protected constructor
      **/
     protected ReportMailingJobRunHistory() { }
 
-    /** 
+    /**
      * ReportMailingJobRunHistory private constructor
      **/
     private ReportMailingJobRunHistory(final ReportMailingJob reportMailingJob, final DateTime startDateTime, final DateTime endDateTime, final String status,
             final String errorMessage, final String errorLog) {
         this.reportMailingJob = reportMailingJob;
         this.startDateTime = null;
-        
+
         if (startDateTime != null) {
             this.startDateTime = startDateTime.toDate();
         }
-        
+
         this.endDateTime = null;
-        
+
         if (endDateTime != null) {
             this.endDateTime = endDateTime.toDate();
         }
-        
+
         this.status = status;
         this.errorMessage = errorMessage;
         this.errorLog = errorLog;
-    } 
-    
-    /** 
+    }
+
+    /**
      * Creates an instance of the ReportMailingJobRunHistory class
-     * 
+     *
      * @return ReportMailingJobRunHistory object
      **/
-    public static ReportMailingJobRunHistory newInstance(final ReportMailingJob reportMailingJob, final DateTime startDateTime, final DateTime endDateTime, 
+    public static ReportMailingJobRunHistory newInstance(final ReportMailingJob reportMailingJob, final DateTime startDateTime, final DateTime endDateTime,
             final String status, final String errorMessage, final String errorLog) {
         return new ReportMailingJobRunHistory(reportMailingJob, startDateTime, endDateTime, status, errorMessage, errorLog);
     }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/exception/ReportMailingJobConfigurationNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/exception/ReportMailingJobConfigurationNotFoundException.java
index 9d45449eb..701d0a42d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/exception/ReportMailingJobConfigurationNotFoundException.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/exception/ReportMailingJobConfigurationNotFoundException.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourc
 public class ReportMailingJobConfigurationNotFoundException extends AbstractPlatformResourceNotFoundException {
 
     public ReportMailingJobConfigurationNotFoundException(final String name) {
-        super("error.msg.report.mailing.job.configuration.name.invalid", "Report mailing job configuration with name " + name + 
+        super("error.msg.report.mailing.job.configuration.name.invalid", "Report mailing job configuration with name " + name +
                 " does not exist", name);
     }
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/exception/ReportMailingJobNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/exception/ReportMailingJobNotFoundException.java
index b8e662681..1ac264833 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/exception/ReportMailingJobNotFoundException.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/exception/ReportMailingJobNotFoundException.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourc
 public class ReportMailingJobNotFoundException extends AbstractPlatformResourceNotFoundException {
 
     public ReportMailingJobNotFoundException(final Long reportMailingJobId) {
-        super("error.msg.report.mailing.job.id.invalid", "Report mailing job with identifier " + reportMailingJobId + 
+        super("error.msg.report.mailing.job.id.invalid", "Report mailing job with identifier " + reportMailingJobId +
                 " does not exist", reportMailingJobId);
     }
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/handler/CreateReportMailingJobCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/handler/CreateReportMailingJobCommandHandler.java
index 501caedca..f6b1c334d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/handler/CreateReportMailingJobCommandHandler.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/handler/CreateReportMailingJobCommandHandler.java
@@ -32,7 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
 @CommandType(entity = ReportMailingJobConstants.REPORT_MAILING_JOB_ENTITY_NAME, action = "CREATE")
 public class CreateReportMailingJobCommandHandler implements NewCommandSourceHandler {
     private final ReportMailingJobWritePlatformService reportMailingJobWritePlatformService;
-    
+
     @Autowired
     public CreateReportMailingJobCommandHandler(final ReportMailingJobWritePlatformService reportMailingJobWritePlatformService) {
         this.reportMailingJobWritePlatformService = reportMailingJobWritePlatformService;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/handler/DeleteReportMailingJobCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/handler/DeleteReportMailingJobCommandHandler.java
index 51d57d756..081565dc0 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/handler/DeleteReportMailingJobCommandHandler.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/handler/DeleteReportMailingJobCommandHandler.java
@@ -32,7 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
 @CommandType(entity = ReportMailingJobConstants.REPORT_MAILING_JOB_ENTITY_NAME, action = "DELETE")
 public class DeleteReportMailingJobCommandHandler implements NewCommandSourceHandler {
     private final ReportMailingJobWritePlatformService reportMailingJobWritePlatformService;
-    
+
     @Autowired
     public DeleteReportMailingJobCommandHandler(final ReportMailingJobWritePlatformService reportMailingJobWritePlatformService) {
         this.reportMailingJobWritePlatformService = reportMailingJobWritePlatformService;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/handler/UpdateReportMailingJobCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/handler/UpdateReportMailingJobCommandHandler.java
index 7622ca6a2..30a9682cb 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/handler/UpdateReportMailingJobCommandHandler.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/handler/UpdateReportMailingJobCommandHandler.java
@@ -32,7 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
 @CommandType(entity = ReportMailingJobConstants.REPORT_MAILING_JOB_ENTITY_NAME, action = "UPDATE")
 public class UpdateReportMailingJobCommandHandler implements NewCommandSourceHandler {
     private final ReportMailingJobWritePlatformService reportMailingJobWritePlatformService;
-    
+
     @Autowired
     public UpdateReportMailingJobCommandHandler(final ReportMailingJobWritePlatformService reportMailingJobWritePlatformService) {
         this.reportMailingJobWritePlatformService = reportMailingJobWritePlatformService;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/helper/IPv4Helper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/helper/IPv4Helper.java
index 2281416e1..e67ecb45e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/helper/IPv4Helper.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/helper/IPv4Helper.java
@@ -39,25 +39,25 @@ public class IPv4Helper {
         if (ipAddress == null || ipAddress.isEmpty()) {
             throw new IllegalArgumentException("ip address cannot be null or empty");
         }
-        
+
         String[] octets = ipAddress.split(java.util.regex.Pattern.quote("."));
-        
+
         if (octets.length != 4) {
             throw new IllegalArgumentException("invalid ip address");
         }
-        
+
         long ip = 0;
-        
+
         for (int i = 3; i >= 0; i--) {
             long octet = Long.parseLong(octets[3 - i]);
-            
+
             if (octet > 255 || octet < 0) {
                 throw new IllegalArgumentException("invalid ip address");
             }
-            
+
             ip |= octet << (i * 8);
         }
-        
+
         return ip;
     }
 
@@ -73,9 +73,9 @@ public class IPv4Helper {
         if (ip > 4294967295l || ip < 0) {
             throw new IllegalArgumentException("invalid ip");
         }
-        
+
         StringBuilder ipAddress = new StringBuilder();
-        
+
         for (int i = 3; i >= 0; i--) {
             int shift = i * 8;
             ipAddress.append((ip & (0xff << shift)) >> shift);
@@ -83,13 +83,13 @@ public class IPv4Helper {
                 ipAddress.append(".");
             }
         }
-        
+
         return ipAddress.toString();
     }
-    
-    /** 
+
+    /**
      * check if an IP Address is within a given range of IP Addresses
-     * 
+     *
      * @param ipAddress -- the IP Address to be checked
      * @param startOfRange -- the first IP address in the range
      * @param endOfRange -- the last IP address in the range
@@ -99,42 +99,42 @@ public class IPv4Helper {
         final long ipAddressToLong = ipAddressToLong(ipAddress);
         final long startOfRangeToLong = ipAddressToLong(startOfRange);
         final long endOfRangeToLong = ipAddressToLong(endOfRange);
-        
+
         long diff = ipAddressToLong - startOfRangeToLong;
-        
+
         return (diff >= 0 && (diff <= (endOfRangeToLong - startOfRangeToLong)));
     }
-    
-    /** 
+
+    /**
      * check if the java application is running on a local machine
-     * 
+     *
      * @return true if the application is running on a local machine else false
      **/
     public static boolean applicationIsRunningOnLocalMachine() {
         boolean isRunningOnLocalMachine = false;
-        
+
         try {
             final InetAddress localHost = InetAddress.getLocalHost();
-            
+
             if (localHost != null) {
                 final String hostAddress = localHost.getHostAddress();
                 final String startOfIpAddressRange = "127.0.0.0";
                 final String endOfIpAddressRange = "127.255.255.255";
-                
+
                 if (StringUtils.isNotEmpty(hostAddress)) {
                     isRunningOnLocalMachine = ipAddressIsInRange(hostAddress, startOfIpAddressRange, endOfIpAddressRange);
                 }
             }
         }
-        
+
         catch (Exception exception) { }
-                
+
         return isRunningOnLocalMachine;
     }
-    
-    /** 
+
+    /**
      * check if the java application is not running on a local machine
-     * 
+     *
      * @return true if the application is not running on a local machine else false
      **/
     public static boolean applicationIsNotRunningOnLocalMachine() {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobConfigurationReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobConfigurationReadPlatformService.java
index 4812ae070..f79cd4bcd 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobConfigurationReadPlatformService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobConfigurationReadPlatformService.java
@@ -23,16 +23,16 @@ import java.util.Collection;
 import org.apache.fineract.infrastructure.reportmailingjob.data.ReportMailingJobConfigurationData;
 
 public interface ReportMailingJobConfigurationReadPlatformService {
-    /** 
+    /**
      * Retrieve all report mailing job configurations
-     * 
+     *
      * @return ReportMailingJobConfigurationData object
      **/
     Collection retrieveAllReportMailingJobConfigurations();
-    
-    /** 
+
+    /**
      * Retrieve report mailing job configuration by name
-     * 
+     *
      * @return ReportMailingJobConfigurationData object
      **/
     ReportMailingJobConfigurationData retrieveReportMailingJobConfiguration(final String name);
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobConfigurationReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobConfigurationReadPlatformServiceImpl.java
index fd8dfac66..f98176443 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobConfigurationReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobConfigurationReadPlatformServiceImpl.java
@@ -35,20 +35,20 @@ import org.springframework.stereotype.Service;
 @Service
 public class ReportMailingJobConfigurationReadPlatformServiceImpl implements ReportMailingJobConfigurationReadPlatformService {
     private final JdbcTemplate jdbcTemplate;
-    
-    /** 
+
+    /**
      * ReportMailingJobConfigurationReadPlatformServiceImpl constructor
      **/
     @Autowired
     public ReportMailingJobConfigurationReadPlatformServiceImpl(final RoutingDataSource dataSource) {
         this.jdbcTemplate = new JdbcTemplate(dataSource);
     }
-    
+
     @Override
     public Collection retrieveAllReportMailingJobConfigurations() {
         final ReportMailingJobConfigurationMapper mapper = new ReportMailingJobConfigurationMapper();
         final String sql = "select " + mapper.ReportMailingJobConfigurationSchema();
-        
+
         return this.jdbcTemplate.query(sql, mapper, new Object[] {});
     }
 
@@ -57,27 +57,27 @@ public class ReportMailingJobConfigurationReadPlatformServiceImpl implements Rep
         try {
             final ReportMailingJobConfigurationMapper mapper = new ReportMailingJobConfigurationMapper();
             final String sql = "select " + mapper.ReportMailingJobConfigurationSchema() + " where rmjc.name = ?";
-            
+
             return this.jdbcTemplate.queryForObject(sql, mapper, new Object[] { name });
         }
-        
+
         catch (final EmptyResultDataAccessException ex) {
             throw new ReportMailingJobConfigurationNotFoundException(name);
         }
     }
-    
+
     private static final class ReportMailingJobConfigurationMapper implements RowMapper {
         public String ReportMailingJobConfigurationSchema() {
             return "rmjc.id, rmjc.name, rmjc.value "
                     + "from m_report_mailing_job_configuration rmjc";
         }
-        
+
         @Override
         public ReportMailingJobConfigurationData mapRow(ResultSet rs, int rowNum) throws SQLException {
             final Integer id = JdbcSupport.getInteger(rs, "id");
             final String name = rs.getString("name");
             final String value = rs.getString("value");
-            
+
             return ReportMailingJobConfigurationData.newInstance(id, name, value);
         }
     }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobEmailService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobEmailService.java
index 5df05a31b..42e70c41f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobEmailService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobEmailService.java
@@ -23,7 +23,7 @@ import org.apache.fineract.infrastructure.reportmailingjob.data.ReportMailingJob
 public interface ReportMailingJobEmailService {
     /**
      * Handles request to send an email with attachment
-     * 
+     *
      * @param reportMailingJobEmailData {@link ReportMailingJobEmailData} object
      */
     void sendEmailWithAttachment(final ReportMailingJobEmailData reportMailingJobEmailData);
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobEmailServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobEmailServiceImpl.java
index 58bb09a6d..5fb23414e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobEmailServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobEmailServiceImpl.java
@@ -37,14 +37,14 @@ import org.springframework.stereotype.Service;
 public class ReportMailingJobEmailServiceImpl implements ReportMailingJobEmailService {
     private final ReportMailingJobConfigurationReadPlatformService reportMailingJobConfigurationReadPlatformService;
     private Collection reportMailingJobConfigurationDataCollection;
-    
-    /** 
+
+    /**
      * ReportMailingJobEmailServiceImpl constructor
      **/
     @Autowired
     public ReportMailingJobEmailServiceImpl(final ReportMailingJobConfigurationReadPlatformService reportMailingJobConfigurationReadPlatformService) {
         this.reportMailingJobConfigurationReadPlatformService = reportMailingJobConfigurationReadPlatformService;
-        
+
     }
 
     @Override
@@ -53,110 +53,110 @@ public class ReportMailingJobEmailServiceImpl implements ReportMailingJobEmailSe
             // get all ReportMailingJobConfiguration objects from the database
             this.reportMailingJobConfigurationDataCollection = this.reportMailingJobConfigurationReadPlatformService.
                     retrieveAllReportMailingJobConfigurations();
-            
+
             JavaMailSenderImpl javaMailSenderImpl = new JavaMailSenderImpl();
             javaMailSenderImpl.setHost(this.getGmailSmtpServer());
             javaMailSenderImpl.setPort(this.getGmailSmtpPort());
             javaMailSenderImpl.setUsername(this.getGmailSmtpUsername());
             javaMailSenderImpl.setPassword(this.getGmailSmtpPassword());
             javaMailSenderImpl.setJavaMailProperties(this.getJavaMailProperties());
-            
+
             MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();
-            
+
             // use the true flag to indicate you need a multipart message
             MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
-            
+
             mimeMessageHelper.setTo(reportMailingJobEmailData.getTo());
             mimeMessageHelper.setText(reportMailingJobEmailData.getText());
             mimeMessageHelper.setSubject(reportMailingJobEmailData.getSubject());
-            
+
             if (reportMailingJobEmailData.getAttachment() != null) {
                 mimeMessageHelper.addAttachment(reportMailingJobEmailData.getAttachment().getName(), reportMailingJobEmailData.getAttachment());
             }
-            
+
             javaMailSenderImpl.send(mimeMessage);
-        } 
-        
+        }
+
         catch (MessagingException e) {
             // handle the exception
             e.printStackTrace();
         }
     }
-    
-    /** 
-     * @return Properties object containing JavaMail properties 
+
+    /**
+     * @return Properties object containing JavaMail properties
      **/
     private Properties getJavaMailProperties() {
         Properties properties = new Properties();
-        
+
         properties.setProperty("mail.smtp.auth", "true");
         properties.setProperty("mail.smtp.starttls.enable", "true");
         properties.setProperty("mail.smtp.ssl.trust", this.getGmailSmtpServer());
-        
+
         return properties;
     }
-    
-    /** 
-     * get a report mailing job configuration object by name from collection of objects 
-     * 
+
+    /**
+     * get a report mailing job configuration object by name from collection of objects
+     *
      * @param name -- the value of the name property
      * @return ReportMailingJobConfigurationData object
      **/
     private ReportMailingJobConfigurationData getReportMailingJobConfigurationData(final String name) {
         ReportMailingJobConfigurationData reportMailingJobConfigurationData = null;
-        
+
         if (this.reportMailingJobConfigurationDataCollection != null && !this.reportMailingJobConfigurationDataCollection.isEmpty()) {
             for (ReportMailingJobConfigurationData reportMailingJobConfigurationDataObject : this.reportMailingJobConfigurationDataCollection) {
                 String configurationName = reportMailingJobConfigurationDataObject.getName();
-                
+
                 if (!StringUtils.isEmpty(configurationName) && configurationName.equals(name)) {
                     reportMailingJobConfigurationData = reportMailingJobConfigurationDataObject;
                     break;
                 }
             }
         }
-        
+
         return reportMailingJobConfigurationData;
     }
-    
-    /** 
-     * @return Gmail smtp server name 
+
+    /**
+     * @return Gmail smtp server name
      **/
     private String getGmailSmtpServer() {
         final ReportMailingJobConfigurationData reportMailingJobConfigurationData = this.getReportMailingJobConfigurationData
                 (ReportMailingJobConstants.GMAIL_SMTP_SERVER);
-        
+
         return (reportMailingJobConfigurationData != null) ? reportMailingJobConfigurationData.getValue() : null;
     }
-    
-    /** 
-     * @return Gmail smtp server port number 
+
+    /**
+     * @return Gmail smtp server port number
      **/
     private Integer getGmailSmtpPort() {
         final ReportMailingJobConfigurationData reportMailingJobConfigurationData = this.getReportMailingJobConfigurationData
                 (ReportMailingJobConstants.GMAIL_SMTP_PORT);
         final String portNumber = (reportMailingJobConfigurationData != null) ? reportMailingJobConfigurationData.getValue() : null;
-        
+
         return (portNumber != null) ? Integer.parseInt(portNumber) : null;
     }
-    
-    /** 
-     * @return Gmail smtp username 
+
+    /**
+     * @return Gmail smtp username
      **/
     private String getGmailSmtpUsername() {
         final ReportMailingJobConfigurationData reportMailingJobConfigurationData = this.getReportMailingJobConfigurationData
                 (ReportMailingJobConstants.GMAIL_SMTP_USERNAME);
-        
+
         return (reportMailingJobConfigurationData != null) ? reportMailingJobConfigurationData.getValue() : null;
     }
-    
-    /** 
-     * @return Gmail smtp password 
+
+    /**
+     * @return Gmail smtp password
      **/
     private String getGmailSmtpPassword() {
         final ReportMailingJobConfigurationData reportMailingJobConfigurationData = this.getReportMailingJobConfigurationData
                 (ReportMailingJobConstants.GMAIL_SMTP_PASSWORD);
-        
+
         return (reportMailingJobConfigurationData != null) ? reportMailingJobConfigurationData.getValue() : null;
     }
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobReadPlatformService.java
index 3ac274d4a..e242638f7 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobReadPlatformService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobReadPlatformService.java
@@ -25,23 +25,23 @@ import org.apache.fineract.infrastructure.core.service.SearchParameters;
 import org.apache.fineract.infrastructure.reportmailingjob.data.ReportMailingJobData;
 
 public interface ReportMailingJobReadPlatformService {
-    /** 
-     * Retrieve all report mailing jobs that have the isDeleted property set to 0  
+    /**
+     * Retrieve all report mailing jobs that have the isDeleted property set to 0
      **/
     Page retrieveAllReportMailingJobs(SearchParameters searchParameters);
-    
-    /** 
-     * Retrieve a report mailing job that has the isDeleted property set to 0 
+
+    /**
+     * Retrieve a report mailing job that has the isDeleted property set to 0
      **/
     ReportMailingJobData retrieveReportMailingJob(Long reportMailingJobId);
-    
-    /** 
-     * Retrieve the report mailing job enumeration/dropdown options 
+
+    /**
+     * Retrieve the report mailing job enumeration/dropdown options
      **/
     ReportMailingJobData retrieveReportMailingJobEnumOptions();
 
-    /** 
-     * Retrieve all active report mailing jobs that have their isDeleted property set to 0 
+    /**
+     * Retrieve all active report mailing jobs that have their isDeleted property set to 0
      **/
     Collection retrieveAllActiveReportMailingJobs();
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobReadPlatformServiceImpl.java
index 7e208bb7c..b36399728 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobReadPlatformServiceImpl.java
@@ -49,7 +49,7 @@ import org.springframework.stereotype.Service;
 public class ReportMailingJobReadPlatformServiceImpl implements ReportMailingJobReadPlatformService {
     private final JdbcTemplate jdbcTemplate;
     private final ColumnValidator columnValidator;
-    
+
     @Autowired
     public ReportMailingJobReadPlatformServiceImpl(final RoutingDataSource dataSource,
             final ColumnValidator columnValidator) {
@@ -63,11 +63,11 @@ public class ReportMailingJobReadPlatformServiceImpl implements ReportMailingJob
         final List queryParameters = new ArrayList<>();
         final ReportMailingJobMapper mapper = new ReportMailingJobMapper();
         final PaginationHelper paginationHelper = new PaginationHelper<>();
-        
+
         sqlStringBuilder.append("select SQL_CALC_FOUND_ROWS ");
         sqlStringBuilder.append(mapper.ReportMailingJobSchema());
         sqlStringBuilder.append(" where rmj.is_deleted = 0");
-        
+
         if (searchParameters.isOrderByRequested()) {
             sqlStringBuilder.append(" order by ").append(searchParameters.getOrderBy());
             this.columnValidator.validateSqlInjection(sqlStringBuilder.toString(), searchParameters.getOrderBy());
@@ -81,22 +81,22 @@ public class ReportMailingJobReadPlatformServiceImpl implements ReportMailingJob
 
         if (searchParameters.isLimited()) {
             sqlStringBuilder.append(" limit ").append(searchParameters.getLimit());
-            
+
             if (searchParameters.isOffset()) {
                 sqlStringBuilder.append(" offset ").append(searchParameters.getOffset());
             }
         }
-        
-        return paginationHelper.fetchPage(this.jdbcTemplate, "SELECT FOUND_ROWS()", sqlStringBuilder.toString(), 
+
+        return paginationHelper.fetchPage(this.jdbcTemplate, "SELECT FOUND_ROWS()", sqlStringBuilder.toString(),
                 queryParameters.toArray(), mapper);
     }
-    
+
     @Override
     public Collection retrieveAllActiveReportMailingJobs() {
         final ReportMailingJobMapper mapper = new ReportMailingJobMapper();
         final String sql = "select " + mapper.ReportMailingJobSchema() + " where rmj.is_deleted = 0 and is_active = 1"
                 + " order by rmj.name";
-        
+
         return this.jdbcTemplate.query(sql, mapper, new Object[] {});
     }
 
@@ -105,10 +105,10 @@ public class ReportMailingJobReadPlatformServiceImpl implements ReportMailingJob
         try {
             final ReportMailingJobMapper mapper = new ReportMailingJobMapper();
             final String sql = "select " + mapper.ReportMailingJobSchema() + " where rmj.id = ? and rmj.is_deleted = 0";
-            
+
             return this.jdbcTemplate.queryForObject(sql, mapper, new Object[] { reportMailingJobId });
         }
-        
+
         catch (final EmptyResultDataAccessException ex) {
             throw new ReportMailingJobNotFoundException(reportMailingJobId);
         }
@@ -118,10 +118,10 @@ public class ReportMailingJobReadPlatformServiceImpl implements ReportMailingJob
     public ReportMailingJobData retrieveReportMailingJobEnumOptions() {
         final List emailAttachmentFileFormatOptions = ReportMailingJobEmailAttachmentFileFormat.validOptions();
         final List stretchyReportParamDateOptions = ReportMailingJobStretchyReportParamDateOption.validOptions();
-        
+
         return ReportMailingJobData.newInstance(emailAttachmentFileFormatOptions, stretchyReportParamDateOptions);
     }
-    
+
     private static final class ReportMailingJobMapper implements RowMapper {
         public String ReportMailingJobSchema() {
             return "rmj.id, rmj.name, rmj.description, rmj.start_datetime as startDateTime, rmj.recurrence, rmj.created_date as createdOnDate, "
@@ -161,13 +161,13 @@ public class ReportMailingJobReadPlatformServiceImpl implements ReportMailingJob
             final String emailMessage = rs.getString("emailMessage");
             final String emailAttachmentFileFormatString = rs.getString("emailAttachmentFileFormat");
             EnumOptionData emailAttachmentFileFormat = null;
-            
+
             if (emailAttachmentFileFormatString != null) {
                 ReportMailingJobEmailAttachmentFileFormat format = ReportMailingJobEmailAttachmentFileFormat.newInstance(emailAttachmentFileFormatString);
-                
+
                 emailAttachmentFileFormat = format.toEnumOptionData();
             }
-            
+
             final String stretchyReportParamMap = rs.getString("stretchyReportParamMap");
             final DateTime previousRunDateTime = JdbcSupport.getDateTime(rs, "previousRunDateTime");
             final DateTime nextRunDateTime = JdbcSupport.getDateTime(rs, "nextRunDateTime");
@@ -182,10 +182,10 @@ public class ReportMailingJobReadPlatformServiceImpl implements ReportMailingJob
             final String updatedByUsername = rs.getString("updatedByUsername");
             final String updatedByFirstname = rs.getString("updatedByFirstname");
             final String updatedByLastname = rs.getString("updatedByLastname");
-            final ReportMailingJobTimelineData timeline = new ReportMailingJobTimelineData(createdOnDate, createdByUsername, 
+            final ReportMailingJobTimelineData timeline = new ReportMailingJobTimelineData(createdOnDate, createdByUsername,
                     createdByFirstname, createdByLastname, updatedOnDate, updatedByUsername, updatedByFirstname, updatedByLastname);
             final Long runAsUserId = JdbcSupport.getLong(rs, "runAsUserId");
-            
+
             final Long reportId = JdbcSupport.getLong(rs, "reportId");
             final String reportName = rs.getString("reportName");
             final String reportType = rs.getString("reportType");
@@ -195,13 +195,13 @@ public class ReportMailingJobReadPlatformServiceImpl implements ReportMailingJob
             final String reportDescription = rs.getString("reportDescription");
             final boolean coreReport = rs.getBoolean("coreReport");
             final boolean useReport = rs.getBoolean("useReport");
-            
-            final ReportData stretchyReport = new ReportData(reportId, reportName, reportType, reportSubType, reportCategory, 
+
+            final ReportData stretchyReport = new ReportData(reportId, reportName, reportType, reportSubType, reportCategory,
                     reportDescription, reportSql, coreReport, useReport, null);
-            
-            return ReportMailingJobData.newInstance(id, name, description, startDateTime, recurrence, timeline, emailRecipients, 
-                    emailSubject, emailMessage, emailAttachmentFileFormat, stretchyReport, stretchyReportParamMap, previousRunDateTime, 
-                    nextRunDateTime, previousRunStatus, previousRunErrorLog, previousRunErrorMessage, numberOfRuns, isActive, 
+
+            return ReportMailingJobData.newInstance(id, name, description, startDateTime, recurrence, timeline, emailRecipients,
+                    emailSubject, emailMessage, emailAttachmentFileFormat, stretchyReport, stretchyReportParamMap, previousRunDateTime,
+                    nextRunDateTime, previousRunStatus, previousRunErrorLog, previousRunErrorMessage, numberOfRuns, isActive,
                     runAsUserId);
         }
     }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobRunHistoryReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobRunHistoryReadPlatformService.java
index 9f4a20412..ecd8a083f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobRunHistoryReadPlatformService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobRunHistoryReadPlatformService.java
@@ -23,9 +23,9 @@ import org.apache.fineract.infrastructure.core.service.SearchParameters;
 import org.apache.fineract.infrastructure.reportmailingjob.data.ReportMailingJobRunHistoryData;
 
 public interface ReportMailingJobRunHistoryReadPlatformService {
-    /** 
+    /**
      * Retrieve all report mailing run history with similar job id to the one passed
-     * 
+     *
      * @param reportMailingJobId ReportMailingJob identifier
      * @param searchParameters {@link SearchParameters} object
      * @return collection of {@link ReportMailingJobRunHistoryData} objects
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobRunHistoryReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobRunHistoryReadPlatformServiceImpl.java
index 36c96e796..68fe1feb1 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobRunHistoryReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobRunHistoryReadPlatformServiceImpl.java
@@ -42,7 +42,7 @@ public class ReportMailingJobRunHistoryReadPlatformServiceImpl implements Report
     private final ReportMailingJobRunHistoryMapper reportMailingJobRunHistoryMapper;
     private final ColumnValidator columnValidator;
     private final PaginationHelper paginationHelper = new PaginationHelper<>();
-    
+
     @Autowired
     public ReportMailingJobRunHistoryReadPlatformServiceImpl(final RoutingDataSource dataSource,
             final ColumnValidator columnValidator) {
@@ -50,21 +50,21 @@ public class ReportMailingJobRunHistoryReadPlatformServiceImpl implements Report
         this.reportMailingJobRunHistoryMapper = new ReportMailingJobRunHistoryMapper();
         this.columnValidator = columnValidator;
     }
-    
+
     @Override
-    public Page retrieveRunHistoryByJobId(final Long reportMailingJobId, 
+    public Page retrieveRunHistoryByJobId(final Long reportMailingJobId,
             final SearchParameters searchParameters) {
         final StringBuilder sqlStringBuilder = new StringBuilder(200);
         final List queryParameters = new ArrayList<>();
-        
+
         sqlStringBuilder.append("select SQL_CALC_FOUND_ROWS ");
         sqlStringBuilder.append(this.reportMailingJobRunHistoryMapper.ReportMailingJobRunHistorySchema());
-        
+
         if (reportMailingJobId != null) {
             sqlStringBuilder.append(" where rmjrh.job_id = ? ");
             queryParameters.add(reportMailingJobId);
         }
-        
+
         if (searchParameters.isOrderByRequested()) {
             sqlStringBuilder.append(" order by ").append(searchParameters.getOrderBy());
             this.columnValidator.validateSqlInjection(sqlStringBuilder.toString(), searchParameters.getOrderBy());
@@ -76,16 +76,16 @@ public class ReportMailingJobRunHistoryReadPlatformServiceImpl implements Report
 
         if (searchParameters.isLimited()) {
             sqlStringBuilder.append(" limit ").append(searchParameters.getLimit());
-            
+
             if (searchParameters.isOffset()) {
                 sqlStringBuilder.append(" offset ").append(searchParameters.getOffset());
             }
         }
-        
-        return this.paginationHelper.fetchPage(this.jdbcTemplate, "SELECT FOUND_ROWS()", sqlStringBuilder.toString(), 
+
+        return this.paginationHelper.fetchPage(this.jdbcTemplate, "SELECT FOUND_ROWS()", sqlStringBuilder.toString(),
                 queryParameters.toArray(), this.reportMailingJobRunHistoryMapper);
     }
-    
+
     private static final class ReportMailingJobRunHistoryMapper implements RowMapper {
         public String ReportMailingJobRunHistorySchema() {
             return "rmjrh.id, rmjrh.job_id as reportMailingJobId, rmjrh.start_datetime as startDateTime, "
@@ -93,7 +93,7 @@ public class ReportMailingJobRunHistoryReadPlatformServiceImpl implements Report
                     + "rmjrh.error_log as errorLog "
                     + "from m_report_mailing_job_run_history rmjrh";
         }
-        
+
         @Override
         public ReportMailingJobRunHistoryData mapRow(ResultSet rs, int rowNum) throws SQLException {
             final Long id = JdbcSupport.getLong(rs, "id");
@@ -103,8 +103,8 @@ public class ReportMailingJobRunHistoryReadPlatformServiceImpl implements Report
             final String status = rs.getString("status");
             final String errorMessage = rs.getString("errorMessage");
             final String errorLog = rs.getString("errorLog");
-            
-            return ReportMailingJobRunHistoryData.newInstance(id, reportMailingJobId, startDateTime, endDateTime, status, 
+
+            return ReportMailingJobRunHistoryData.newInstance(id, reportMailingJobId, startDateTime, endDateTime, status,
                     errorMessage, errorLog);
         }
     }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobWritePlatformServiceImpl.java
index 881c74247..21d887dd6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobWritePlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobWritePlatformServiceImpl.java
@@ -75,7 +75,7 @@ import com.sun.jersey.core.util.MultivaluedMapImpl;
 
 @Service
 public class ReportMailingJobWritePlatformServiceImpl implements ReportMailingJobWritePlatformService {
-    
+
     private final static Logger logger = LoggerFactory.getLogger(ReportMailingJobWritePlatformServiceImpl.class);
     private final ReportRepositoryWrapper reportRepositoryWrapper;
     private final ReportMailingJobValidator reportMailingJobValidator;
@@ -87,16 +87,16 @@ public class ReportMailingJobWritePlatformServiceImpl implements ReportMailingJo
     private final ReportingProcessServiceProvider reportingProcessServiceProvider;
     private final ReportMailingJobRunHistoryRepository reportMailingJobRunHistoryRepository;
     private final static String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
-    
+
     @Autowired
-    public ReportMailingJobWritePlatformServiceImpl(final ReportRepositoryWrapper reportRepositoryWrapper, 
-            final ReportMailingJobValidator reportMailingJobValidator, 
-            final ReportMailingJobRepositoryWrapper reportMailingJobRepositoryWrapper, 
-            final ReportMailingJobRepository reportMailingJobRepository, 
-            final PlatformSecurityContext platformSecurityContext, 
-            final ReportMailingJobEmailService reportMailingJobEmailService,  
-            final ReadReportingService readReportingService, 
-            final ReportMailingJobRunHistoryRepository reportMailingJobRunHistoryRepository, 
+    public ReportMailingJobWritePlatformServiceImpl(final ReportRepositoryWrapper reportRepositoryWrapper,
+            final ReportMailingJobValidator reportMailingJobValidator,
+            final ReportMailingJobRepositoryWrapper reportMailingJobRepositoryWrapper,
+            final ReportMailingJobRepository reportMailingJobRepository,
+            final PlatformSecurityContext platformSecurityContext,
+            final ReportMailingJobEmailService reportMailingJobEmailService,
+            final ReadReportingService readReportingService,
+            final ReportMailingJobRunHistoryRepository reportMailingJobRunHistoryRepository,
             final ReportingProcessServiceProvider reportingProcessServiceProvider) {
         this.reportRepositoryWrapper = reportRepositoryWrapper;
         this.reportMailingJobValidator = reportMailingJobValidator;
@@ -115,24 +115,24 @@ public class ReportMailingJobWritePlatformServiceImpl implements ReportMailingJo
         try {
             // validate the create request
             this.reportMailingJobValidator.validateCreateRequest(jsonCommand);
-            
+
             final AppUser appUser = this.platformSecurityContext.authenticatedUser();
-            
+
             // get the stretchy Report object
             final Report stretchyReport = this.reportRepositoryWrapper.findOneThrowExceptionIfNotFound(jsonCommand.longValueOfParameterNamed(
                     ReportMailingJobConstants.STRETCHY_REPORT_ID_PARAM_NAME));
-            
+
             // create an instance of ReportMailingJob class from the JsonCommand object
             final ReportMailingJob reportMailingJob = ReportMailingJob.newInstance(jsonCommand, stretchyReport, appUser);
-            
+
             // save entity
             this.reportMailingJobRepository.save(reportMailingJob);
-            
+
             return new CommandProcessingResultBuilder().withCommandId(jsonCommand.commandId()).
                     withEntityId(reportMailingJob.getId()).build();
         } catch (final DataIntegrityViolationException dve) {
             handleDataIntegrityIssues(jsonCommand, dve);
-            
+
             return CommandProcessingResult.empty();
         }
     }
@@ -143,77 +143,77 @@ public class ReportMailingJobWritePlatformServiceImpl implements ReportMailingJo
         try {
             // validate the update request
             this.reportMailingJobValidator.validateUpdateRequest(jsonCommand);
-            
+
             // retrieve the ReportMailingJob object from the database
             final ReportMailingJob reportMailingJob = this.reportMailingJobRepositoryWrapper.findOneThrowExceptionIfNotFound(reportMailingJobId);
-            
+
             final Map changes = reportMailingJob.update(jsonCommand);
-            
+
             // get the recurrence rule string
             final String recurrence = reportMailingJob.getRecurrence();
-            
+
             // get the next run DateTime from the ReportMailingJob entity
             DateTime nextRunDateTime = reportMailingJob.getNextRunDateTime();
-            
+
             // check if the stretchy report id was updated
             if (changes.containsKey(ReportMailingJobConstants.STRETCHY_REPORT_ID_PARAM_NAME)) {
                 final Long stretchyReportId = (Long) changes.get(ReportMailingJobConstants.STRETCHY_REPORT_ID_PARAM_NAME);
                 final Report stretchyReport = this.reportRepositoryWrapper.findOneThrowExceptionIfNotFound(stretchyReportId);
-                
+
                 // update the stretchy report
                 reportMailingJob.update(stretchyReport);
             }
-            
+
             // check if the recurrence was updated
             if (changes.containsKey(ReportMailingJobConstants.RECURRENCE_PARAM_NAME)) {
-                
+
                 // go ahead if the recurrence is not null
                 if (StringUtils.isNotBlank(recurrence)) {
                     // set the start DateTime to the current tenant date time
                     DateTime startDateTime = DateUtils.getLocalDateTimeOfTenant().toDateTime();
-                    
+
                     // check if the start DateTime was updated
                     if (changes.containsKey(ReportMailingJobConstants.START_DATE_TIME_PARAM_NAME)) {
                         // get the updated start DateTime
                         startDateTime = reportMailingJob.getStartDateTime();
                     }
-                    
+
                     startDateTime = reportMailingJob.getStartDateTime();
-                    
+
                     // get the next recurring DateTime
                     final DateTime nextRecurringDateTime = this.createNextRecurringDateTime(recurrence, startDateTime);
-                    
+
                     // update the next run time property
                     reportMailingJob.updateNextRunDateTime(nextRecurringDateTime);
-                    
+
                  // check if the next run DateTime is not empty and the recurrence is empty
                 } else if (StringUtils.isBlank(recurrence) && (nextRunDateTime != null)) {
                     // the next run DateTime should be set to null
                     reportMailingJob.updateNextRunDateTime(null);
                 }
             }
-            
+
             if (changes.containsKey(ReportMailingJobConstants.START_DATE_TIME_PARAM_NAME)) {
                 final DateTime startDateTime = reportMailingJob.getStartDateTime();
-                
+
                 // initially set the next recurring date time to the new start date time
                 DateTime nextRecurringDateTime = startDateTime;
-                
+
                 // ensure that the recurrence pattern string is not empty
                 if (StringUtils.isNotBlank(recurrence)) {
                     // get the next recurring DateTime
                     nextRecurringDateTime = this.createNextRecurringDateTime(recurrence, startDateTime);
                 }
-                
+
                 // update the next run time property
                 reportMailingJob.updateNextRunDateTime(nextRecurringDateTime);
             }
-            
+
             if (!changes.isEmpty()) {
                 // save and flush immediately so any data integrity exception can be handled in the "catch" block
                 this.reportMailingJobRepository.saveAndFlush(reportMailingJob);
             }
-            
+
             return new CommandProcessingResultBuilder().
                     withCommandId(jsonCommand.commandId()).
                     withEntityId(reportMailingJob.getId()).
@@ -221,7 +221,7 @@ public class ReportMailingJobWritePlatformServiceImpl implements ReportMailingJo
                     build();
         } catch (final DataIntegrityViolationException dve) {
             handleDataIntegrityIssues(jsonCommand, dve);
-            
+
             return CommandProcessingResult.empty();
         }
     }
@@ -231,31 +231,31 @@ public class ReportMailingJobWritePlatformServiceImpl implements ReportMailingJo
     public CommandProcessingResult deleteReportMailingJob(Long reportMailingJobId) {
         // retrieve the ReportMailingJob object from the database
         final ReportMailingJob reportMailingJob = this.reportMailingJobRepositoryWrapper.findOneThrowExceptionIfNotFound(reportMailingJobId);
-        
+
         // delete the report mailing job by setting the isDeleted property to 1 and altering the name
         reportMailingJob.delete();
-        
+
         // save the report mailing job entity
         this.reportMailingJobRepository.save(reportMailingJob);
-        
+
         return new CommandProcessingResultBuilder().withEntityId(reportMailingJobId).build();
     }
-    
+
     @Override
     @CronTarget(jobName = JobName.EXECUTE_REPORT_MAILING_JOBS)
     public void executeReportMailingJobs() throws JobExecutionException {
         final Collection reportMailingJobCollection = this.reportMailingJobRepository.findByIsActiveTrueAndIsDeletedFalse();
-        
+
         for (ReportMailingJob reportMailingJob : reportMailingJobCollection) {
             // get the tenant's date as a DateTime object
             final DateTime localDateTimeOftenant = DateUtils.getLocalDateTimeOfTenant().toDateTime();
             final DateTime nextRunDateTime = reportMailingJob.getNextRunDateTime();
-            
+
             if (nextRunDateTime != null && nextRunDateTime.isBefore(localDateTimeOftenant)) {
                 // get the emailAttachmentFileFormat enum object
                 final ReportMailingJobEmailAttachmentFileFormat emailAttachmentFileFormat = ReportMailingJobEmailAttachmentFileFormat.
                         newInstance(reportMailingJob.getEmailAttachmentFileFormat());
-                
+
                 if (emailAttachmentFileFormat != null && emailAttachmentFileFormat.isValid()) {
                     final Report stretchyReport = reportMailingJob.getStretchyReport();
                     final String reportName = (stretchyReport != null) ? stretchyReport.getReportName() : null;
@@ -263,139 +263,139 @@ public class ReportMailingJobWritePlatformServiceImpl implements ReportMailingJo
                     final Map validateStretchyReportParamMap = this.reportMailingJobValidator.
                             validateStretchyReportParamMap(reportMailingJob.getStretchyReportParamMap());
                     MultivaluedMap reportParams = new MultivaluedMapImpl();
-                    
+
                     if (validateStretchyReportParamMap != null) {
                         Iterator> validateStretchyReportParamMapEntries = validateStretchyReportParamMap.entrySet().iterator();
-                        
+
                         while (validateStretchyReportParamMapEntries.hasNext()) {
                             Map.Entry validateStretchyReportParamMapEntry = validateStretchyReportParamMapEntries.next();
                             String key = validateStretchyReportParamMapEntry.getKey();
                             String value = validateStretchyReportParamMapEntry.getValue();
-                            
+
                             if (StringUtils.containsIgnoreCase(key, "date")) {
-                                ReportMailingJobStretchyReportParamDateOption reportMailingJobStretchyReportParamDateOption = 
+                                ReportMailingJobStretchyReportParamDateOption reportMailingJobStretchyReportParamDateOption =
                                         ReportMailingJobStretchyReportParamDateOption.newInstance(value);
-                                
+
                                 if (reportMailingJobStretchyReportParamDateOption.isValid()) {
                                     value = ReportMailingJobDateUtil.getDateAsString(reportMailingJobStretchyReportParamDateOption);
                                 }
                             }
-                            
+
                             reportParams.add(key, value);
                         }
                     }
-                    
+
                     // generate the report output stream, method in turn call another that sends the file to the email recipients
                     this.generateReportOutputStream(reportMailingJob, emailAttachmentFileFormat, reportParams, reportName, errorLog);
-                    
+
                     // update the previous run time, next run time, status, error log properties
                     this.updateReportMailingJobAfterJobExecution(reportMailingJob, errorLog, localDateTimeOftenant);
                 }
             }
         }
     }
-    
-    /** 
-     * update the report mailing job entity after job execution 
-     * 
+
+    /**
+     * update the report mailing job entity after job execution
+     *
      * @param reportMailingJob -- the report mailing job entity
      * @param errorLog -- StringBuilder object containing the error log if any
      * @param jobStartDateTime -- the start DateTime of the job
-     * 
+     *
      **/
-    private void updateReportMailingJobAfterJobExecution(final ReportMailingJob reportMailingJob, final StringBuilder errorLog, 
+    private void updateReportMailingJobAfterJobExecution(final ReportMailingJob reportMailingJob, final StringBuilder errorLog,
             final DateTime jobStartDateTime) {
         final String recurrence = reportMailingJob.getRecurrence();
         final DateTime nextRunDateTime = reportMailingJob.getNextRunDateTime();
         ReportMailingJobPreviousRunStatus reportMailingJobPreviousRunStatus = ReportMailingJobPreviousRunStatus.SUCCESS;
-        
+
         reportMailingJob.updatePreviousRunErrorLog(null);
-        
+
         if (errorLog != null && errorLog.length() > 0) {
             reportMailingJobPreviousRunStatus = ReportMailingJobPreviousRunStatus.ERROR;
             reportMailingJob.updatePreviousRunErrorLog(errorLog.toString());
         }
-        
+
         reportMailingJob.increaseNumberOfRunsByOne();
         reportMailingJob.updatePreviousRunStatus(reportMailingJobPreviousRunStatus.getValue());
         reportMailingJob.updatePreviousRunDateTime(reportMailingJob.getNextRunDateTime());
-        
+
         // check if the job has a recurrence pattern, if not deactivate the job. The job will only run once
         if (StringUtils.isEmpty(recurrence)) {
             // deactivate job
             reportMailingJob.deactivate();
-            
+
             // job will only run once, no next run time
             reportMailingJob.updateNextRunDateTime(null);
         } else if (nextRunDateTime != null) {
             final DateTime nextRecurringDateTime = this.createNextRecurringDateTime(recurrence, nextRunDateTime);
-            
+
             // finally update the next run date time property
             reportMailingJob.updateNextRunDateTime(nextRecurringDateTime);
         }
-        
+
         // save the ReportMailingJob entity
         this.reportMailingJobRepository.save(reportMailingJob);
-        
+
         // create a new report mailing job run history entity
-        this.createReportMailingJobRunHistroryAfterJobExecution(reportMailingJob, errorLog, jobStartDateTime, 
+        this.createReportMailingJobRunHistroryAfterJobExecution(reportMailingJob, errorLog, jobStartDateTime,
                 reportMailingJobPreviousRunStatus.getValue());
     }
-    
+
     /**
      * create the next recurring DateTime from recurrence pattern, start DateTime and current DateTime
-     * 
+     *
      * @param recurrencePattern
      * @param startDateTime
      * @return DateTime object
      */
     private DateTime createNextRecurringDateTime(final String recurrencePattern, final DateTime startDateTime) {
         DateTime nextRecurringDateTime = null;
-        
+
         // the recurrence pattern/rule cannot be empty
         if (StringUtils.isNotBlank(recurrencePattern) && startDateTime != null) {
             final LocalDate nextDayLocalDate = startDateTime.plus(1).toLocalDate();
-            final LocalDate nextRecurringLocalDate = CalendarUtils.getNextRecurringDate(recurrencePattern, startDateTime.toLocalDate(), 
+            final LocalDate nextRecurringLocalDate = CalendarUtils.getNextRecurringDate(recurrencePattern, startDateTime.toLocalDate(),
                     nextDayLocalDate);
-            final String nextDateTimeString = nextRecurringLocalDate + " " + startDateTime.getHourOfDay() + ":" + startDateTime.getMinuteOfHour() 
+            final String nextDateTimeString = nextRecurringLocalDate + " " + startDateTime.getHourOfDay() + ":" + startDateTime.getMinuteOfHour()
                     + ":" + startDateTime.getSecondOfMinute();
             final DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(DATETIME_FORMAT);
-            
+
             nextRecurringDateTime = DateTime.parse(nextDateTimeString, dateTimeFormatter);
         }
-        
+
         return nextRecurringDateTime;
     }
-    
-    /** 
+
+    /**
      * create a new report mailing job run history entity after job execution
-     * 
+     *
      * @param reportMailingJob -- the report mailing job entity
      * @param errorLog -- StringBuilder object containing the error log if any
      * @param jobStartDateTime -- the start DateTime of the job
      * @param jobRunStatus -- the status of the job (success/error)
-     * 
+     *
      **/
-    private void createReportMailingJobRunHistroryAfterJobExecution(final ReportMailingJob reportMailingJob, final StringBuilder errorLog, 
+    private void createReportMailingJobRunHistroryAfterJobExecution(final ReportMailingJob reportMailingJob, final StringBuilder errorLog,
             final DateTime jobStartDateTime, final String jobRunStatus) {
         final DateTime jobEndDateTime = DateUtils.getLocalDateTimeOfTenant().toDateTime();
         final String errorLogToString = (errorLog != null) ? errorLog.toString() : null;
-        final ReportMailingJobRunHistory reportMailingJobRunHistory = ReportMailingJobRunHistory.newInstance(reportMailingJob, jobStartDateTime, 
+        final ReportMailingJobRunHistory reportMailingJobRunHistory = ReportMailingJobRunHistory.newInstance(reportMailingJob, jobStartDateTime,
                 jobEndDateTime, jobRunStatus, null, errorLogToString);
-        
+
         this.reportMailingJobRunHistoryRepository.save(reportMailingJobRunHistory);
     }
 
-    /** 
-     * Handle any SQL data integrity issue 
+    /**
+     * Handle any SQL data integrity issue
      *
      * @param jsonCommand -- JsonCommand object
      * @param dve -- data integrity exception object
-     * 
+     *
      **/
     private void handleDataIntegrityIssues(final JsonCommand jsonCommand, final DataIntegrityViolationException dve) {
         final Throwable realCause = dve.getMostSpecificCause();
-        
+
         if (realCause.getMessage().contains(ReportMailingJobConstants.NAME_PARAM_NAME)) {
             final String name = jsonCommand.stringValueOfParameterNamed(ReportMailingJobConstants.NAME_PARAM_NAME);
             throw new PlatformDataIntegrityException("error.msg.report.mailing.job.duplicate.name", "Report mailing job with name `" + name + "` already exists",
@@ -403,14 +403,14 @@ public class ReportMailingJobWritePlatformServiceImpl implements ReportMailingJo
         }
 
         logger.error(dve.getMessage(), dve);
-        
+
         throw new PlatformDataIntegrityException("error.msg.charge.unknown.data.integrity.issue",
                 "Unknown data integrity issue with resource: " + realCause.getMessage());
     }
-    
-    /** 
+
+    /**
      * generate the report output stream
-     * 
+     *
      * @param reportMailingJob
      * @param emailAttachmentFileFormat
      * @param reportParams
@@ -418,33 +418,33 @@ public class ReportMailingJobWritePlatformServiceImpl implements ReportMailingJo
      * @param errorLog
      * @return the error log StringBuilder object
      */
-    private StringBuilder generateReportOutputStream(final ReportMailingJob reportMailingJob, final ReportMailingJobEmailAttachmentFileFormat emailAttachmentFileFormat, 
+    private StringBuilder generateReportOutputStream(final ReportMailingJob reportMailingJob, final ReportMailingJobEmailAttachmentFileFormat emailAttachmentFileFormat,
             final MultivaluedMap reportParams, final String reportName, final StringBuilder errorLog) {
-        
+
         try {
             final boolean isSelfServiceUserReport = false;
             final String reportType = this.readReportingService.getReportType(reportName, isSelfServiceUserReport);
             final ReportingProcessService reportingProcessService = this.reportingProcessServiceProvider.findReportingProcessService(reportType);
-            
+
             if (reportingProcessService != null) {
                 final Response processReport = reportingProcessService.processRequest(reportName, reportParams);
                 final Object reponseObject = (processReport != null) ? processReport.getEntity() : null;
-                
+
                 if (reponseObject != null && reponseObject.getClass().equals(ByteArrayOutputStream.class)) {
                     final ByteArrayOutputStream byteArrayOutputStream = ByteArrayOutputStream.class.cast(reponseObject);
                     final String fileLocation = FileSystemContentRepository.FINERACT_BASE_DIR + File.separator + "";
                     final String fileNameWithoutExtension = fileLocation + File.separator + reportName;
-                    
+
                     // check if file directory exists, if not create directory
                     if (!new File(fileLocation).isDirectory()) {
                         new File(fileLocation).mkdirs();
                     }
-                    
+
                     if ((byteArrayOutputStream == null) || byteArrayOutputStream.size() == 0) {
                         errorLog.append("Report processing failed, empty output stream created");
                     } else if ((errorLog != null && errorLog.length() == 0) && (byteArrayOutputStream.size() > 0)) {
                         final String fileName = fileNameWithoutExtension + "." + emailAttachmentFileFormat.getValue();
-                        
+
                         // send the file to email recipients
                         this.sendReportFileToEmailRecipients(reportMailingJob, fileName, byteArrayOutputStream, errorLog);
                     }
@@ -458,36 +458,36 @@ public class ReportMailingJobWritePlatformServiceImpl implements ReportMailingJo
             errorLog.append("The ReportMailingJobWritePlatformServiceImpl.generateReportOutputStream method threw an Exception: "
                     + e + " ---------- ");
         }
-        
+
         return errorLog;
     }
-    
-    /** 
+
+    /**
      * send report file to email recipients
-     * 
+     *
      * @param reportMailingJob
      * @param fileName
      * @param byteArrayOutputStream
      * @param errorLog
      */
-    private void sendReportFileToEmailRecipients(final ReportMailingJob reportMailingJob, final String fileName, 
+    private void sendReportFileToEmailRecipients(final ReportMailingJob reportMailingJob, final String fileName,
             final ByteArrayOutputStream byteArrayOutputStream, final StringBuilder errorLog) {
         final Set emailRecipients = this.reportMailingJobValidator.validateEmailRecipients(reportMailingJob.getEmailRecipients());
-        
+
         try {
             final File file = new File(fileName);
             final FileOutputStream outputStream = new FileOutputStream(file);
             byteArrayOutputStream.writeTo(outputStream);
-            
+
             for (String emailRecipient : emailRecipients) {
-                final ReportMailingJobEmailData reportMailingJobEmailData = new ReportMailingJobEmailData(emailRecipient, 
+                final ReportMailingJobEmailData reportMailingJobEmailData = new ReportMailingJobEmailData(emailRecipient,
                         reportMailingJob.getEmailMessage(), reportMailingJob.getEmailSubject(), file);
-                
+
                 this.reportMailingJobEmailService.sendEmailWithAttachment(reportMailingJobEmailData);
             }
-            
+
             outputStream.close();
-            
+
         } catch (IOException e) {
             errorLog.append("The ReportMailingJobWritePlatformServiceImpl.sendReportFileToEmailRecipients method threw an IOException "
                     + "exception: " + e + " ---------- ");
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/util/ReportMailingJobDateUtil.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/util/ReportMailingJobDateUtil.java
index a1d97fa92..8c1f46c14 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/util/ReportMailingJobDateUtil.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/util/ReportMailingJobDateUtil.java
@@ -26,89 +26,89 @@ import org.apache.fineract.infrastructure.reportmailingjob.data.ReportMailingJob
 
 public class ReportMailingJobDateUtil {
     public static final String MYSQL_DATE_FORMAT = "yyyy-MM-dd";
-    
-    /** 
-     * get the current date as string using the mysql date format yyyy-MM-dd 
+
+    /**
+     * get the current date as string using the mysql date format yyyy-MM-dd
      **/
     public static String getTodayDateAsString() {
         // get a calendar instance, which defaults to "now"
         Calendar calendar = Calendar.getInstance();
-        
+
         // get a date to represent "today"
         Date today = calendar.getTime();
-        
+
         // get a SimpleDateFormat instance, passing the mysql date format as parameter
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat(MYSQL_DATE_FORMAT);
-        
+
         // return date as string
         return simpleDateFormat.format(today);
     }
-    
-    /** 
-     * get the yesterday's date as string using the mysql date format yyyy-MM-dd 
+
+    /**
+     * get the yesterday's date as string using the mysql date format yyyy-MM-dd
      **/
     public static String getYesterdayDateAsString() {
         // get a calendar instance, which defaults to "now"
         Calendar calendar = Calendar.getInstance();
-        
+
         // add one day to the date/calendar
         calendar.add(Calendar.DAY_OF_YEAR, -1);
-         
+
         // now get "yesterday"
         Date yesterday = calendar.getTime();
-        
+
         // get a SimpleDateFormat instance, passing the mysql date format as parameter
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat(MYSQL_DATE_FORMAT);
-        
+
         // return date as string
         return simpleDateFormat.format(yesterday);
     }
-    
-    /** 
-     * get the tomorrow's date as string using the mysql date format yyyy-MM-dd 
+
+    /**
+     * get the tomorrow's date as string using the mysql date format yyyy-MM-dd
      **/
     public static String getTomorrowDateAsString() {
         // get a calendar instance, which defaults to "now"
         Calendar calendar = Calendar.getInstance();
-        
+
         // add one day to the date/calendar
         calendar.add(Calendar.DAY_OF_YEAR, 1);
-         
+
         // now get "tomorrow"
         Date tomorrow = calendar.getTime();
-        
+
         // get a SimpleDateFormat instance, passing the mysql date format as parameter
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat(MYSQL_DATE_FORMAT);
-        
+
         // return date as string
         return simpleDateFormat.format(tomorrow);
     }
-    
-    /** 
+
+    /**
      * get date as string based on the value of the {@link ReportMailingJobStretchyReportParamDateOption} object
-     * 
+     *
      * @param reportMailingJobStretchyReportParamDateOption {@link ReportMailingJobStretchyReportParamDateOption} Enum
      **/
     public static String getDateAsString(final ReportMailingJobStretchyReportParamDateOption reportMailingJobStretchyReportParamDateOption) {
         String dateAsString = null;
-        
+
         switch (reportMailingJobStretchyReportParamDateOption) {
             case TODAY:
                 dateAsString = getTodayDateAsString();
                 break;
-                
+
             case YESTERDAY:
                 dateAsString = getYesterdayDateAsString();
                 break;
-                
+
             case TOMORROW:
                 dateAsString = getTomorrowDateAsString();
                 break;
-                
+
             default:
                 break;
         }
-        
+
         return dateAsString;
     }
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/validation/ReportMailingJobValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/validation/ReportMailingJobValidator.java
index d87140426..62ca2f320 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/validation/ReportMailingJobValidator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/validation/ReportMailingJobValidator.java
@@ -53,61 +53,61 @@ public class ReportMailingJobValidator {
     private final FromJsonHelper fromJsonHelper;
     private static final String EMAIL_REGEX = "^[\\w!#$%&’*+/=?`{|}~^-]+(?:\\.[\\w!#$%&’*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$";
     private static final Pattern EMAIL_PATTERN = Pattern.compile(EMAIL_REGEX);
-    
+
     @Autowired
     public ReportMailingJobValidator(final FromJsonHelper fromJsonHelper) {
         this.fromJsonHelper = fromJsonHelper;
     }
-    
-    /** 
-     * validate the request to create a new report mailing job 
-     * 
+
+    /**
+     * validate the request to create a new report mailing job
+     *
      * @param jsonCommand -- the JSON command object (instance of the JsonCommand class)
-     * 
+     *
      **/
     public void validateCreateRequest(final JsonCommand jsonCommand) {
         final String jsonString = jsonCommand.json();
         final JsonElement jsonElement = jsonCommand.parsedJson();
 
-        if (StringUtils.isBlank(jsonString)) { 
-            throw new InvalidJsonException(); 
+        if (StringUtils.isBlank(jsonString)) {
+            throw new InvalidJsonException();
         }
-        
+
         final Type typeToken = new TypeToken>() {}.getType();
         this.fromJsonHelper.checkForUnsupportedParameters(typeToken, jsonString,
                 ReportMailingJobConstants.CREATE_REQUEST_PARAMETERS);
-        
+
         final List dataValidationErrors = new ArrayList<>();
         final DataValidatorBuilder dataValidatorBuilder = new DataValidatorBuilder(dataValidationErrors).
                 resource(StringUtils.lowerCase(ReportMailingJobConstants.REPORT_MAILING_JOB_RESOURCE_NAME));
-        
+
         final String name = this.fromJsonHelper.extractStringNamed(ReportMailingJobConstants.NAME_PARAM_NAME, jsonElement);
         dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.NAME_PARAM_NAME).value(name).notBlank().notExceedingLengthOf(100);
-        
-        final String startDateTime = this.fromJsonHelper.extractStringNamed(ReportMailingJobConstants.START_DATE_TIME_PARAM_NAME, 
+
+        final String startDateTime = this.fromJsonHelper.extractStringNamed(ReportMailingJobConstants.START_DATE_TIME_PARAM_NAME,
                 jsonElement);
         dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.START_DATE_TIME_PARAM_NAME).value(startDateTime).notBlank();
-        
-        final Integer stretchyReportId = this.fromJsonHelper.extractIntegerWithLocaleNamed(ReportMailingJobConstants.STRETCHY_REPORT_ID_PARAM_NAME, 
+
+        final Integer stretchyReportId = this.fromJsonHelper.extractIntegerWithLocaleNamed(ReportMailingJobConstants.STRETCHY_REPORT_ID_PARAM_NAME,
                 jsonElement);
         dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.STRETCHY_REPORT_ID_PARAM_NAME).value(stretchyReportId).notNull().
                 integerGreaterThanZero();
-        
+
         final String emailRecipients = this.fromJsonHelper.extractStringNamed(ReportMailingJobConstants.EMAIL_RECIPIENTS_PARAM_NAME, jsonElement);
         dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.EMAIL_RECIPIENTS_PARAM_NAME).value(emailRecipients).notBlank();
-        
+
         final String emailSubject = this.fromJsonHelper.extractStringNamed(ReportMailingJobConstants.EMAIL_SUBJECT_PARAM_NAME, jsonElement);
         dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.EMAIL_SUBJECT_PARAM_NAME).value(emailSubject).notBlank().notExceedingLengthOf(100);
-        
+
         final String emailMessage = this.fromJsonHelper.extractStringNamed(ReportMailingJobConstants.EMAIL_MESSAGE_PARAM_NAME, jsonElement);
         dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.EMAIL_MESSAGE_PARAM_NAME).value(emailMessage).notBlank();
-        
+
         if (this.fromJsonHelper.parameterExists(ReportMailingJobConstants.IS_ACTIVE_PARAM_NAME, jsonElement)) {
-            final Boolean isActive = this.fromJsonHelper.extractBooleanNamed(ReportMailingJobConstants.IS_ACTIVE_PARAM_NAME, 
+            final Boolean isActive = this.fromJsonHelper.extractBooleanNamed(ReportMailingJobConstants.IS_ACTIVE_PARAM_NAME,
                     jsonElement);
             dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.IS_ACTIVE_PARAM_NAME).value(isActive).notNull();
         }
-        
+
         final Integer emailAttachmentFileFormatId = this.fromJsonHelper.extractIntegerSansLocaleNamed(
                 ReportMailingJobConstants.EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME, jsonElement);
         dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME).
@@ -117,123 +117,123 @@ public class ReportMailingJobValidator {
             dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME).value(emailAttachmentFileFormatId).
                     isOneOfTheseValues(ReportMailingJobEmailAttachmentFileFormat.validIds());
         }
-        
+
         final String dateFormat = jsonCommand.dateFormat();
         dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.DATE_FORMAT_PARAM_NAME).value(dateFormat).notBlank();
-        
+
         if (StringUtils.isNotEmpty(dateFormat)) {
-            
+
             try {
                 final DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(dateFormat).withLocale(jsonCommand.extractLocale());
-                
+
                 // try to parse the date time string
                 LocalDateTime.parse(startDateTime, dateTimeFormatter);
             }
-            
+
             catch(IllegalArgumentException ex) {
                 dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.DATE_FORMAT_PARAM_NAME).value(dateFormat).failWithCode("invalid.date.format");
             }
         }
-        
+
         throwExceptionIfValidationWarningsExist(dataValidationErrors);
     }
-    
-    /** 
-     * validate the request to update a report mailing job 
-     * 
+
+    /**
+     * validate the request to update a report mailing job
+     *
      * @param jsonCommand -- the JSON command object (instance of the JsonCommand class)
-     * 
+     *
      **/
     public void validateUpdateRequest(final JsonCommand jsonCommand) {
         final String jsonString = jsonCommand.json();
         final JsonElement jsonElement = jsonCommand.parsedJson();
 
-        if (StringUtils.isBlank(jsonString)) { 
-            throw new InvalidJsonException(); 
+        if (StringUtils.isBlank(jsonString)) {
+            throw new InvalidJsonException();
         }
-        
+
         final Type typeToken = new TypeToken>() {}.getType();
         this.fromJsonHelper.checkForUnsupportedParameters(typeToken, jsonString,
                 ReportMailingJobConstants.UPDATE_REQUEST_PARAMETERS);
-        
+
         final List dataValidationErrors = new ArrayList<>();
         final DataValidatorBuilder dataValidatorBuilder = new DataValidatorBuilder(dataValidationErrors).
                 resource(StringUtils.lowerCase(ReportMailingJobConstants.REPORT_MAILING_JOB_RESOURCE_NAME));
-        
+
         if (this.fromJsonHelper.parameterExists(ReportMailingJobConstants.NAME_PARAM_NAME, jsonElement)) {
             final String name = this.fromJsonHelper.extractStringNamed(ReportMailingJobConstants.NAME_PARAM_NAME, jsonElement);
             dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.NAME_PARAM_NAME).value(name).notBlank().notExceedingLengthOf(100);
         }
-        
+
         if (this.fromJsonHelper.parameterExists(ReportMailingJobConstants.STRETCHY_REPORT_ID_PARAM_NAME, jsonElement)) {
-            final Integer stretchyReportId = this.fromJsonHelper.extractIntegerWithLocaleNamed(ReportMailingJobConstants.STRETCHY_REPORT_ID_PARAM_NAME, 
+            final Integer stretchyReportId = this.fromJsonHelper.extractIntegerWithLocaleNamed(ReportMailingJobConstants.STRETCHY_REPORT_ID_PARAM_NAME,
                 jsonElement);
             dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.STRETCHY_REPORT_ID_PARAM_NAME).value(stretchyReportId).notNull().
                 integerGreaterThanZero();
         }
-        
+
         if (this.fromJsonHelper.parameterExists(ReportMailingJobConstants.EMAIL_RECIPIENTS_PARAM_NAME, jsonElement)) {
             final String emailRecipients = this.fromJsonHelper.extractStringNamed(ReportMailingJobConstants.EMAIL_RECIPIENTS_PARAM_NAME, jsonElement);
             dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.EMAIL_RECIPIENTS_PARAM_NAME).value(emailRecipients).notBlank();
         }
-        
+
         if (this.fromJsonHelper.parameterExists(ReportMailingJobConstants.EMAIL_SUBJECT_PARAM_NAME, jsonElement)) {
             final String emailSubject = this.fromJsonHelper.extractStringNamed(ReportMailingJobConstants.EMAIL_SUBJECT_PARAM_NAME, jsonElement);
             dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.EMAIL_SUBJECT_PARAM_NAME).value(emailSubject).notBlank().notExceedingLengthOf(100);
         }
-        
+
         if (this.fromJsonHelper.parameterExists(ReportMailingJobConstants.EMAIL_MESSAGE_PARAM_NAME, jsonElement)) {
             final String emailMessage = this.fromJsonHelper.extractStringNamed(ReportMailingJobConstants.EMAIL_MESSAGE_PARAM_NAME, jsonElement);
             dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.EMAIL_MESSAGE_PARAM_NAME).value(emailMessage).notBlank();
         }
-        
+
         if (this.fromJsonHelper.parameterExists(ReportMailingJobConstants.IS_ACTIVE_PARAM_NAME, jsonElement)) {
-            final Boolean isActive = this.fromJsonHelper.extractBooleanNamed(ReportMailingJobConstants.IS_ACTIVE_PARAM_NAME, 
+            final Boolean isActive = this.fromJsonHelper.extractBooleanNamed(ReportMailingJobConstants.IS_ACTIVE_PARAM_NAME,
                     jsonElement);
             dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.IS_ACTIVE_PARAM_NAME).value(isActive).notNull();
         }
-        
+
         if (this.fromJsonHelper.parameterExists(ReportMailingJobConstants.EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME, jsonElement)) {
             final Integer emailAttachmentFileFormatId = this.fromJsonHelper.extractIntegerSansLocaleNamed(
                 ReportMailingJobConstants.EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME, jsonElement);
             dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME).
                     value(emailAttachmentFileFormatId).notNull();
-            
+
             if (emailAttachmentFileFormatId != null) {
                 dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.EMAIL_ATTACHMENT_FILE_FORMAT_ID_PARAM_NAME).value(emailAttachmentFileFormatId).
                         isOneOfTheseValues(ReportMailingJobEmailAttachmentFileFormat.validIds());
             }
         }
-        
+
         if (this.fromJsonHelper.parameterExists(ReportMailingJobConstants.START_DATE_TIME_PARAM_NAME, jsonElement)) {
             final String dateFormat = jsonCommand.dateFormat();
             dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.DATE_FORMAT_PARAM_NAME).value(dateFormat).notBlank();
-            
-            final String startDateTime = this.fromJsonHelper.extractStringNamed(ReportMailingJobConstants.START_DATE_TIME_PARAM_NAME, 
+
+            final String startDateTime = this.fromJsonHelper.extractStringNamed(ReportMailingJobConstants.START_DATE_TIME_PARAM_NAME,
                 jsonElement);
             dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.START_DATE_TIME_PARAM_NAME).value(startDateTime).notBlank();
-            
+
             if (StringUtils.isNotEmpty(dateFormat)) {
-                
+
                 try {
                     final DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(dateFormat).withLocale(jsonCommand.extractLocale());
-                    
+
                     // try to parse the date time string
                     LocalDateTime.parse(startDateTime, dateTimeFormatter);
                 }
-                
+
                 catch(IllegalArgumentException ex) {
                     dataValidatorBuilder.reset().parameter(ReportMailingJobConstants.DATE_FORMAT_PARAM_NAME).value(dateFormat).failWithCode("invalid.date.format");
                 }
             }
         }
-        
+
         throwExceptionIfValidationWarningsExist(dataValidationErrors);
     }
-    
-    /** 
-     * check if string is a valid email address 
-     * 
+
+    /**
+     * check if string is a valid email address
+     *
      * @param email -- string to be validated
      * @return true if string is a valid email address
      **/
@@ -242,78 +242,78 @@ public class ReportMailingJobValidator {
         if (email == null) {
             return false;
         }
-        
+
         // this is another easy check
         if (email.endsWith(".")) {
             return false;
         }
-        
+
         // Check the whole email address structure
         Matcher emailMatcher = EMAIL_PATTERN.matcher(email);
-        
+
         // check if the Matcher matches the email pattern
         if (!emailMatcher.matches()) {
             return false;
         }
-        
+
         return true;
     }
-    
-    /** 
-     * Validate the email recipients string 
-     * 
+
+    /**
+     * Validate the email recipients string
+     *
      * @param emailRecipients -- the email recipients string to be validated
      * @return a hashset containing valid email addresses
      **/
     public Set validateEmailRecipients(String emailRecipients) {
         Set emailRecipientsSet = new HashSet<>();
-        
+
         if (emailRecipients != null) {
             String[] split = emailRecipients.split(",");
-            
+
             for (String emailAddress : split) {
                 emailAddress = emailAddress.trim();
-                
+
                 if (this.isValidEmail(emailAddress)) {
                     emailRecipientsSet.add(emailAddress);
                 }
             }
         }
-        
+
         return emailRecipientsSet;
     }
-    
-    /** 
-     * validate the stretchy report param json string 
-     * 
+
+    /**
+     * validate the stretchy report param json string
+     *
      * @param stretchyReportParamMap -- json string to be validated
      * @return if string is valid or empty, a HashMap object, else null
      **/
     public HashMap validateStretchyReportParamMap(String stretchyReportParamMap) {
         HashMap stretchyReportParamHashMap = new HashMap<>();
-        
+
         if (!StringUtils.isEmpty(stretchyReportParamMap)) {
             try {
                 stretchyReportParamHashMap = new ObjectMapper().readValue(stretchyReportParamMap, new TypeReference>(){});
             }
-            
+
             catch(Exception e) {
                 stretchyReportParamHashMap = null;
             }
         }
-        
+
         return stretchyReportParamHashMap;
     }
-    
-    /** 
+
+    /**
      * throw a PlatformApiDataValidationException exception if there are validation errors
-     * 
+     *
      * @param dataValidationErrors -- list of ApiParameterError objects
-     * 
+     *
      **/
     private void throwExceptionIfValidationWarningsExist(final List dataValidationErrors) {
-        if (!dataValidationErrors.isEmpty()) { 
-            throw new PlatformApiDataValidationException(dataValidationErrors); 
+        if (!dataValidationErrors.isEmpty()) {
+            throw new PlatformApiDataValidationException(dataValidationErrors);
         }
     }
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResource.java
index 5e5cf8738..656d93c6b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResource.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/api/UserDetailsApiResource.java
@@ -48,7 +48,7 @@ import org.springframework.security.oauth2.provider.token.ResourceServerTokenSer
 import org.springframework.stereotype.Component;
 
 /*
- * Implementation of Oauth2 authentication APIs, loaded only when "oauth" profile is enabled. 
+ * Implementation of Oauth2 authentication APIs, loaded only when "oauth" profile is enabled.
  */
 @Path("/userdetails")
 @Component
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/ForcePasswordResetException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/ForcePasswordResetException.java
index 32efda76c..c2eddd998 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/ForcePasswordResetException.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/ForcePasswordResetException.java
@@ -21,7 +21,7 @@ package org.apache.fineract.infrastructure.security.exception;
 import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException;
 
 public class ForcePasswordResetException extends AbstractPlatformDomainRuleException {
-    
+
     public ForcePasswordResetException(){
         super("error.msg.password.reset.days.value.must.be.greater.than.zero" , "For enabling 'Force Password Reset Days' configuration , the value (number of days after which a user is forced to reset his password) must be set to a number greater than 0.");
     }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidTenantIdentiferException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidTenantIdentiferException.java
index d2d7a8781..314c14aad 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidTenantIdentiferException.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidTenantIdentiferException.java
@@ -21,8 +21,8 @@ package org.apache.fineract.infrastructure.security.exception;
 /**
  * {@link RuntimeException} thrown when an invalid tenant identifier is used in
  * request to platform.
- * 
- * 
+ *
+ *
  */
 public class InvalidTenantIdentiferException extends RuntimeException {
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java
index 0323fcf01..6931685de 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java
@@ -54,16 +54,16 @@ import org.springframework.stereotype.Service;
 
 /**
  * A customised version of spring security's {@link BasicAuthenticationFilter}.
- * 
+ *
  * This filter is responsible for extracting multi-tenant and basic auth
  * credentials from the request and checking that the details provided are
  * valid.
- * 
+ *
  * If multi-tenant and basic auth credentials are valid, the details of the
  * tenant are stored in {@link FineractPlatformTenant} and stored in a
  * {@link ThreadLocal} variable for this request using
  * {@link ThreadLocalContextUtil}.
- * 
+ *
  * If multi-tenant and basic auth credentials are invalid, a http error response
  * is returned.
  */
@@ -160,7 +160,7 @@ public class TenantAwareBasicAuthenticationFilter extends BasicAuthenticationFil
             logger.debug(this.toApiJsonSerializer.serialize(log));
         }
     }
-    
+
     @Override
     protected void onSuccessfulAuthentication(HttpServletRequest request,
             HttpServletResponse response, Authentication authResult)
@@ -173,13 +173,13 @@ public class TenantAwareBasicAuthenticationFilter extends BasicAuthenticationFil
         } else {
             response.addHeader("X-Notification-Refresh", "false");
         }
-        
+
         String pathURL = request.getRequestURI();
         boolean isSelfServiceRequest = (pathURL != null && pathURL.contains("/self/"));
 
         boolean notAllowed = ((isSelfServiceRequest && !user.isSelfServiceUser())
                 ||(!isSelfServiceRequest && user.isSelfServiceUser()));
-        
+
         if(notAllowed){
             throw new BadCredentialsException("User not authorised to use the requested resource.");
         }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareTenantIdentifierFilter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareTenantIdentifierFilter.java
index 896f697ce..481aeb4b4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareTenantIdentifierFilter.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareTenantIdentifierFilter.java
@@ -46,16 +46,16 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.filter.GenericFilterBean;
 
 /**
- * 
+ *
  * This filter is responsible for extracting multi-tenant from the request and
- * setting Cross-Origin details to response. 
- * 
+ * setting Cross-Origin details to response.
+ *
  * If multi-tenant are valid, the details of the tenant are stored in
  * {@link FineractPlatformTenant} and stored in a {@link ThreadLocal} variable for
  * this request using {@link ThreadLocalContextUtil}.
- * 
+ *
  * If multi-tenant are invalid, a http error response is returned.
- * 
+ *
  * Used to support Oauth2 authentication and the service is loaded only when "oauth" profile is active.
  */
 @Service(value = "tenantIdentifierProcessingFilter")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/CustomAuthenticationFailureHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/CustomAuthenticationFailureHandler.java
index 6016a1206..4e6d0100d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/CustomAuthenticationFailureHandler.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/CustomAuthenticationFailureHandler.java
@@ -101,7 +101,7 @@ public class CustomAuthenticationFailureHandler implements AuthenticationFailure
 
     /**
      * The URL which will be used as the failure destination.
-     * 
+     *
      * @param defaultFailureUrl
      *            the failure URL, for example "/loginFailed.jsp".
      */
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/JdbcTenantDetailsService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/JdbcTenantDetailsService.java
index d7433da11..e699f5836 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/JdbcTenantDetailsService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/JdbcTenantDetailsService.java
@@ -112,7 +112,7 @@ public class JdbcTenantDetailsService implements TenantDetailsService {
                     schemaPassword, autoUpdateEnabled, initialSize, validationInterval, removeAbandoned, removeAbandonedTimeout,
                     logAbandoned, abandonWhenPercentageFull, maxActive, minIdle, maxIdle, suspectTimeout, timeBetweenEvictionRunsMillis,
                     minEvictableIdleTimeMillis, maxRetriesOnDeadlock, maxIntervalBetweenRetries, testOnBorrow);
-            
+
         }
 
         private int bindValueInMinMaxRange(final int value, int min, int max) {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/PlatformSecurityContext.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/PlatformSecurityContext.java
index 379e0806a..34b9938de 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/PlatformSecurityContext.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/PlatformSecurityContext.java
@@ -28,10 +28,10 @@ public interface PlatformSecurityContext {
     /**
      * Convenience method returns null (does not throw an exception) if an
      * authenticated user is not present
-     * 
+     *
      * To be used only in service layer methods that can be triggered via both
      * the API and batch Jobs (which do not have an authenticated user)
-     * 
+     *
      * @return
      */
     AppUser getAuthenticatedUserIfPresent();
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/SQLInjectionValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/SQLInjectionValidator.java
index 2ccc3c1e9..9ab9187d9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/SQLInjectionValidator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/SQLInjectionValidator.java
@@ -52,7 +52,7 @@ public class SQLInjectionValidator {
             }
         }
 
-        //Removing the space before and after '=' operator 
+        //Removing the space before and after '=' operator
         //String s = "          \"              OR 1    =    1"; For the cases like this
         boolean injectionFound = false;
         String inputSqlString = lowerCaseSQL;
@@ -107,7 +107,7 @@ public class SQLInjectionValidator {
         if (injectionFound) {
             throw new SQLInjectionException();
         }
-        
+
         Pattern pattern = Pattern.compile(SQL_PATTERN);
         Matcher matcher = pattern.matcher(sqlSearch);
         if (!matcher.matches()) {
@@ -122,14 +122,14 @@ public class SQLInjectionValidator {
             }
         }
 
-        
+
         for (String comments : COMMENTS) {
             if (lowerCaseSQL.contains(comments)) {
                 throw new SQLInjectionException();
             }
         }
 
-        //Removing the space before and after '=' operator 
+        //Removing the space before and after '=' operator
         //String s = "          \"              OR 1    =    1"; For the cases like this
         boolean injectionFound = false;
         String inputSqlString = lowerCaseSQL;
@@ -184,7 +184,7 @@ public class SQLInjectionValidator {
         if (injectionFound) {
             throw new SQLInjectionException();
         }
-        
+
         Pattern pattern = Pattern.compile(SQL_PATTERN);
         Matcher matcher = pattern.matcher(sqlSearch);
         if (!matcher.matches()) {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/vote/SelfServiceUserAccessVote.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/vote/SelfServiceUserAccessVote.java
index ef5ea38a2..8ae88d4a6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/vote/SelfServiceUserAccessVote.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/vote/SelfServiceUserAccessVote.java
@@ -44,13 +44,13 @@ public class SelfServiceUserAccessVote implements AccessDecisionVoter attributes) {
         if(!"OPTIONS".equalsIgnoreCase(fi.getHttpRequest().getMethod())){
             AppUser user = (AppUser) authentication.getPrincipal();
-            
+
             String pathURL = fi.getRequestUrl();
             boolean isSelfServiceRequest = (pathURL != null && pathURL.contains("/self/"));
 
             boolean notAllowed = ((isSelfServiceRequest && !user.isSelfServiceUser())
                     ||(!isSelfServiceRequest && user.isSelfServiceUser()));
-            
+
             if(notAllowed){
                 return ACCESS_DENIED;
             }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsMessageApiReportResourceData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsMessageApiReportResourceData.java
index a83c6ce30..984c3d634 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsMessageApiReportResourceData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsMessageApiReportResourceData.java
@@ -22,28 +22,28 @@ import java.util.List;
 
 import com.google.gson.Gson;
 
-/** 
+/**
  * Immutable data object representing the API request body sent in the POST request to
- * the "/report" resource 
+ * the "/report" resource
  **/
 public class SmsMessageApiReportResourceData {
     private List externalIds;
     private String mifosTenantIdentifier;
-    
-    /** 
-     * SmsMessageApiReportResourceData constructor 
+
+    /**
+     * SmsMessageApiReportResourceData constructor
      **/
     private SmsMessageApiReportResourceData(List externalIds, String mifosTenantIdentifier) {
         this.externalIds = externalIds;
         this.mifosTenantIdentifier = mifosTenantIdentifier;
     }
-    
-    /** 
-     * SmsMessageApiReportResourceData constructor 
+
+    /**
+     * SmsMessageApiReportResourceData constructor
      **/
     protected SmsMessageApiReportResourceData() {}
-    
-    /** 
+
+    /**
      * @return new instance of the SmsMessageApiReportResourceData class
      **/
     public static final SmsMessageApiReportResourceData instance(List externalIds, String mifosTenantIdentifier) {
@@ -63,13 +63,13 @@ public class SmsMessageApiReportResourceData {
     public String getMifosTenantIdentifier() {
         return mifosTenantIdentifier;
     }
-    
-    /** 
-     * @return JSON representation of the object 
+
+    /**
+     * @return JSON representation of the object
      **/
     public String toJsonString() {
         Gson gson = new Gson();
-        
+
         return gson.toJson(this);
     }
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsMessageApiResponseData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsMessageApiResponseData.java
index ea5ca42b0..62618ab1f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsMessageApiResponseData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsMessageApiResponseData.java
@@ -20,31 +20,31 @@ package org.apache.fineract.infrastructure.sms.data;
 
 import java.util.List;
 
-/** 
- * Immutable data object representing an outbound SMS message API response data 
+/**
+ * Immutable data object representing an outbound SMS message API response data
  **/
 public class SmsMessageApiResponseData {
     private Integer httpStatusCode;
     private List data;
-    
-    /** 
+
+    /**
      * SmsMessageApiResponseData constructor
-     * 
-     *  
+     *
+     *
      **/
     private SmsMessageApiResponseData(Integer httpStatusCode, List data) {
         this.httpStatusCode = httpStatusCode;
         this.data = data;
     }
-    
-    /** 
-     * Default SmsMessageApiResponseData constructor 
-     * 
-     * 
+
+    /**
+     * Default SmsMessageApiResponseData constructor
+     *
+     *
      **/
     protected SmsMessageApiResponseData() {}
-    
-    /** 
+
+    /**
      * @return an instance of the SmsMessageApiResponseData class
      **/
     public static SmsMessageApiResponseData getInstance(Integer httpStatusCode, List data) {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsMessageDeliveryReportData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsMessageDeliveryReportData.java
index 680fb5a52..d4bd68a28 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsMessageDeliveryReportData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsMessageDeliveryReportData.java
@@ -18,8 +18,8 @@
  */
 package org.apache.fineract.infrastructure.sms.data;
 
-/** 
- * Immutable data object representing an outbound SMS message delivery report data 
+/**
+ * Immutable data object representing an outbound SMS message delivery report data
  **/
 public class SmsMessageDeliveryReportData {
     private Long id;
@@ -29,13 +29,13 @@ public class SmsMessageDeliveryReportData {
     private Integer deliveryStatus;
     private Boolean hasError;
     private String errorMessage;
-    
-    /** 
+
+    /**
      * SmsMessageDeliveryReportData constructor
-     * 
-     *  
+     *
+     *
      **/
-    private SmsMessageDeliveryReportData(Long id, String externalId, String addedOnDate, String deliveredOnDate, 
+    private SmsMessageDeliveryReportData(Long id, String externalId, String addedOnDate, String deliveredOnDate,
             Integer deliveryStatus, Boolean hasError, String errorMessage) {
         this.id = id;
         this.externalId = externalId;
@@ -45,20 +45,20 @@ public class SmsMessageDeliveryReportData {
         this.hasError = hasError;
         this.errorMessage = errorMessage;
     }
-    
-    /** 
-     * Default SmsMessageDeliveryReportData constructor 
-     * 
-     * 
+
+    /**
+     * Default SmsMessageDeliveryReportData constructor
+     *
+     *
      **/
     protected SmsMessageDeliveryReportData() {}
-    
-    /** 
+
+    /**
      * @return an instance of the SmsMessageDeliveryReportData class
      **/
-    public static SmsMessageDeliveryReportData getInstance(Long id, String externalId, String addedOnDate, String deliveredOnDate, 
+    public static SmsMessageDeliveryReportData getInstance(Long id, String externalId, String addedOnDate, String deliveredOnDate,
             Integer deliveryStatus, Boolean hasError, String errorMessage) {
-        
+
         return new SmsMessageDeliveryReportData(id, externalId, addedOnDate, deliveredOnDate, deliveryStatus, hasError, errorMessage);
     }
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessage.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessage.java
index 573098672..55dbe25f6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessage.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessage.java
@@ -84,8 +84,8 @@ public class SmsMessage extends AbstractPersistableCustom {
 
     @Column(name = "delivered_on_date", nullable = true)
     @Temporal(TemporalType.TIMESTAMP)
-    private Date deliveredOnDate; 
-    
+    private Date deliveredOnDate;
+
     @Column(name = "is_notification", nullable = true)
     private boolean isNotification;
 
@@ -195,6 +195,6 @@ public class SmsMessage extends AbstractPersistableCustom {
     public void setNotification(boolean isNotification) {
         this.isNotification = isNotification;
     }
-    
-    
+
+
 }
\ No newline at end of file
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessageStatusType.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessageStatusType.java
index a97c2c6f1..687bdd32f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessageStatusType.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessageStatusType.java
@@ -22,7 +22,7 @@ public enum SmsMessageStatusType {
 
     INVALID(0, "smsMessageStatusType.invalid"), //
     PENDING(100, "smsMessageStatusType.pending"), //
-    WAITING_FOR_DELIVERY_REPORT(150, "smsMessageStatusType.waitingForDeliveryReport"), 
+    WAITING_FOR_DELIVERY_REPORT(150, "smsMessageStatusType.waitingForDeliveryReport"),
     SENT(200, "smsMessageStatusType.sent"), //
     DELIVERED(300, "smsMessageStatusType.delivered"), //
     FAILED(400, "smsMessageStatusType.failed");
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java
index 6f3121d92..c035ba14d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java
@@ -78,8 +78,8 @@ public class SmsMessageScheduledJobServiceImpl implements SmsMessageScheduledJob
     private ExecutorService triggeredExecutorService ;
     private final SmsConfigUtils smsConfigUtils ;
     private final NotificationSenderService notificationSenderService;
-    
-    
+
+
     /**
      * SmsMessageScheduledJobServiceImpl constructor
      **/
@@ -138,7 +138,7 @@ public class SmsMessageScheduledJobServiceImpl implements SmsMessageScheduledJob
                         this.smsMessageRepository.saveAll(toSaveMessages);
                         this.smsMessageRepository.flush();
                         this.genericExecutorService.execute(new SmsTask(ThreadLocalContextUtil.getTenant(), apiQueueResourceDatas));
-                    }                    
+                    }
                     if(!toSendNotificationMessages.isEmpty()){
                         this.notificationSenderService.sendNotification(toSendNotificationMessages);
                     }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/service/SmsReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/service/SmsReadPlatformServiceImpl.java
index 69fe96a11..9c53d2dc4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/service/SmsReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/service/SmsReadPlatformServiceImpl.java
@@ -84,7 +84,7 @@ public class SmsReadPlatformServiceImpl implements SmsReadPlatformService {
         public String schema() {
             return this.schema;
         }
-        
+
         public String tableName() {
             return "sms_messages_outbound";
     }
@@ -104,7 +104,7 @@ public class SmsReadPlatformServiceImpl implements SmsReadPlatformService {
             final EnumOptionData status = SmsMessageEnumerations.status(statusId);
 
             final Long providerId = JdbcSupport.getLong(rs, "providerId");
-            
+
             final String campaignName = rs.getString("campaignName");
 
             return SmsData.instance(id, groupId, clientId, staffId, status, mobileNo, message, providerId, campaignName);
@@ -167,7 +167,7 @@ public class SmsReadPlatformServiceImpl implements SmsReadPlatformService {
         final String sql = "select id from " + this.smsRowMapper.tableName() + " where status_enum = "
                 + SmsMessageStatusType.WAITING_FOR_DELIVERY_REPORT.getValue() + sqlPlusLimit;
         final String sqlCountRows = "SELECT FOUND_ROWS()";
-        return this.paginationHelper.fetchPage(jdbcTemplate, sql, sqlCountRows, Long.class); 
+        return this.paginationHelper.fetchPage(jdbcTemplate, sql, sqlCountRows, Long.class);
         //(this.jdbcTemplate, sqlCountRows, new Object [] {}, Long.class); this.jdbcTemplate.queryForList(sql, Long.class);
     }
 
@@ -221,7 +221,7 @@ public class SmsReadPlatformServiceImpl implements SmsReadPlatformService {
             sqlBuilder.append(" and smo.submittedon_date >= ? and smo.submittedon_date <= ? ");
             objectArray[arrayPos] = fromDateString;
             arrayPos = arrayPos + 1;
-            
+
             objectArray[arrayPos] = toDateString;
             arrayPos = arrayPos + 1;
         }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/service/ReadSurveyServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/service/ReadSurveyServiceImpl.java
index 0dfc80694..94c4e1e6f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/service/ReadSurveyServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/service/ReadSurveyServiceImpl.java
@@ -128,7 +128,7 @@ public class ReadSurveyServiceImpl implements ReadSurveyService {
     public List retrieveClientSurveyScoreOverview(String surveyName, Long clientId) {
 
         final String sql = "SELECT  tz.id, lkh.name, lkh.code, poverty_line, tz.date, tz.score FROM ? tz"
-                + " JOIN ppi_likelihoods_ppi lkp on lkp.ppi_name = ? AND enabled = ? " 
+                + " JOIN ppi_likelihoods_ppi lkp on lkp.ppi_name = ? AND enabled = ? "
                 + " JOIN ppi_scores sc on score_from  <= tz.score AND score_to >=tz.score"
                 + " JOIN ppi_poverty_line pvl on pvl.likelihood_ppi_id = lkp.id AND pvl.score_id = sc.id"
                 + " JOIN ppi_likelihoods lkh on lkh.id = lkp.likelihood_id " + " WHERE  client_id = ? ";
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropQuoteResponseData.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropQuoteResponseData.java
index a20576ac2..aa1dc3ccc 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropQuoteResponseData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropQuoteResponseData.java
@@ -34,7 +34,7 @@ public class InteropQuoteResponseData extends InteropResponseData {
 
     private MoneyData fspCommission;
 
-    
+
     private InteropQuoteResponseData(Long resourceId, Long officeId, Long commandId, Map changesOnly,
                                      @NotNull String transactionCode, @NotNull InteropActionState state, LocalDateTime expiration,
                                      List extensionList, @NotNull String quoteCode, MoneyData fspFee, MoneyData fspCommission) {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/mix/service/XBRLBuilder.java b/fineract-provider/src/main/java/org/apache/fineract/mix/service/XBRLBuilder.java
index eb25a5b99..72010aeab 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/mix/service/XBRLBuilder.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/mix/service/XBRLBuilder.java
@@ -165,7 +165,7 @@ public class XBRLBuilder {
 
     /**
      * Adds the currency unit to the document
-     * 
+     *
      * @param currencyCode
      */
     public void addCurrencyUnit(final String currencyCode) {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/config/MessagingConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/notification/config/MessagingConfiguration.java
index 24e597b19..f13fde5b1 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/config/MessagingConfiguration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/config/MessagingConfiguration.java
@@ -36,10 +36,10 @@ import org.springframework.jms.listener.DefaultMessageListenerContainer;
 
 @Configuration
 public class MessagingConfiguration {
-    
+
     @Autowired
     private Environment env;
-    
+
     @Autowired
     private NotificationEventListener notificationEventListener;
 
@@ -47,7 +47,7 @@ public class MessagingConfiguration {
       public Logger loggerBean() { return LoggerFactory.getLogger(TenantDataSourcePortFixService.class); }
 
     private static final String DEFAULT_BROKER_URL = "tcp://localhost:61616";
-    
+
     @Bean
     public ActiveMQConnectionFactory amqConnectionFactory(){
         ActiveMQConnectionFactory amqConnectionFactory = new ActiveMQConnectionFactory();
@@ -58,13 +58,13 @@ public class MessagingConfiguration {
         }
         return amqConnectionFactory;
     }
-    
+
     @Bean
     public CachingConnectionFactory connectionFactory() {
         CachingConnectionFactory connectionFactory = new CachingConnectionFactory(amqConnectionFactory());
         return connectionFactory;
     }
-    
+
     @Bean
     public JmsTemplate jmsTemplate(){
         JmsTemplate jmsTemplate ;
@@ -72,10 +72,10 @@ public class MessagingConfiguration {
             jmsTemplate.setConnectionFactory(connectionFactory());
             return jmsTemplate;
     }
-    
+
     @Bean
-    public DefaultMessageListenerContainer messageListenerContainer() { 
-        
+    public DefaultMessageListenerContainer messageListenerContainer() {
+
         DefaultMessageListenerContainer messageListenerContainer = new DefaultMessageListenerContainer();
         messageListenerContainer.setConnectionFactory(connectionFactory());
         messageListenerContainer.setDestinationName("NotificationQueue");
@@ -86,9 +86,9 @@ public class MessagingConfiguration {
             {
                 loggerBean().error("Network Error: ActiveMQ Broker Unavailable.");
                 messageListenerContainer.shutdown();
-            } 
+            }
         });
         return messageListenerContainer;
     }
-    
+
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/data/NotificationData.java b/fineract-provider/src/main/java/org/apache/fineract/notification/data/NotificationData.java
index 9626e9ebc..a7f97f9b9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/data/NotificationData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/data/NotificationData.java
@@ -125,7 +125,7 @@ public class NotificationData implements Serializable {
     public void setContent(String content) {
         this.content = content;
     }
-    
+
     public boolean isRead() {
         return this.isRead;
     }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/data/TopicSubscriberData.java b/fineract-provider/src/main/java/org/apache/fineract/notification/data/TopicSubscriberData.java
index 64009bcf6..0cce5da4d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/data/TopicSubscriberData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/data/TopicSubscriberData.java
@@ -21,12 +21,12 @@ package org.apache.fineract.notification.data;
 import org.joda.time.LocalDate;
 
 public class TopicSubscriberData {
-    
+
     private final Long id;
     private final Long topicId;
     private final Long userId;
     private final LocalDate subscriptionDate;
-    
+
     public TopicSubscriberData(Long id, Long topicId, Long userId, LocalDate subscriptionDate) {
         this.id = id;
         this.topicId = topicId;
@@ -56,5 +56,5 @@ public class TopicSubscriberData {
     public LocalDate getSubscriptionDate() {
         return this.subscriptionDate;
     }
-    
+
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/domain/Topic.java b/fineract-provider/src/main/java/org/apache/fineract/notification/domain/Topic.java
index 3c579f8e2..e1582d3d4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/domain/Topic.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/domain/Topic.java
@@ -30,22 +30,22 @@ public class Topic extends AbstractPersistableCustom {
 
     @Column(name = "title", unique = true, nullable = false, length = 100)
     private String title;
-    
+
     @Column(name = "enabled", nullable = false)
     private Boolean enabled;
-    
+
     @Column(name = "entity_id", nullable = false)
     private Long entityId;
-    
+
     @Column(name = "entity_type")
     private String entityType;
-    
+
     @Column(name = "member_type")
     private String memberType;
-    
+
     public Topic() {
     }
-    
+
     public Topic(String title, Boolean enabled, Long entityId, String entityType, String memberType) {
         this.title = title.trim();
         this.enabled = enabled;
@@ -60,7 +60,7 @@ public class Topic extends AbstractPersistableCustom {
         Long entityId = 0L;
         String entityType = "";
         String memberType = "";
-        
+
         if (command.hasParameter("title")) {
             title = command.stringValueOfParameterNamed("title");
         }
@@ -118,5 +118,5 @@ public class Topic extends AbstractPersistableCustom {
     public void setMemberType(String memberType) {
         this.memberType = memberType;
     }
-    
+
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/domain/TopicSubscriber.java b/fineract-provider/src/main/java/org/apache/fineract/notification/domain/TopicSubscriber.java
index 4a39db8b3..89db102c9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/domain/TopicSubscriber.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/domain/TopicSubscriber.java
@@ -36,11 +36,11 @@ public class TopicSubscriber extends AbstractPersistableCustom {
     @ManyToOne
     @JoinColumn(name = "topic_id")
     private Topic topic;
-    
+
     @ManyToOne
     @JoinColumn(name = "user_id")
     private AppUser subscriber;
-    
+
     @Column(name = "subscription_date")
     private Date subscriptionDate;
 
@@ -76,5 +76,5 @@ public class TopicSubscriber extends AbstractPersistableCustom {
     public void setSubscriptionDate(Date subscriptionDate) {
         this.subscriptionDate = subscriptionDate;
     }
-    
+
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringEvent.java b/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringEvent.java
index 9650c04b5..ea67efe56 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringEvent.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringEvent.java
@@ -25,14 +25,14 @@ import org.springframework.context.ApplicationEvent;
 public class SpringEvent extends ApplicationEvent {
 
     private NotificationData notificationData;
-     
+
     public SpringEvent(Object source, NotificationData notificationData) {
         super(source);
         this.notificationData = notificationData;
     }
-    
+
     public NotificationData getNotificationData() {
         return notificationData;
     }
-    
+
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringEventListener.java b/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringEventListener.java
index 6cd7a2b64..338cfe018 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringEventListener.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringEventListener.java
@@ -35,13 +35,13 @@ import org.springframework.stereotype.Component;
 
 @Component
 public class SpringEventListener implements ApplicationListener {
-    
+
     private final BasicAuthTenantDetailsService basicAuthTenantDetailsService;
 
     private final NotificationWritePlatformService notificationWritePlatformService;
 
     private final AppUserRepository appUserRepository;
-    
+
     @Autowired
     public SpringEventListener(BasicAuthTenantDetailsService basicAuthTenantDetailsService,
                                      NotificationWritePlatformService notificationWritePlatformService,
@@ -54,7 +54,7 @@ public class SpringEventListener implements ApplicationListener {
     @Override
     public void onApplicationEvent(SpringEvent event) {
         NotificationData notificationData = event.getNotificationData();
-        
+
         final FineractPlatformTenant tenant = this.basicAuthTenantDetailsService
                 .loadTenantById(notificationData.getTenantIdentifier(), false);
         ThreadLocalContextUtil.setTenant(tenant);
@@ -86,7 +86,7 @@ public class SpringEventListener implements ApplicationListener {
                 notificationData.getContent(),
                 notificationData.isSystemGenerated()
         );
-        
+
     }
 
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringEventPublisher.java b/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringEventPublisher.java
index 8d4d0390f..2efc079e0 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringEventPublisher.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringEventPublisher.java
@@ -27,7 +27,7 @@ import org.springframework.stereotype.Service;
 public class SpringEventPublisher {
     @Autowired
     private ApplicationEventPublisher applicationEventPublisher;
-    
+
     public void broadcastNotification(final NotificationData notificationData) {
         SpringEvent event = new SpringEvent(this, notificationData);
         applicationEventPublisher.publishEvent(event);
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/service/NotificationDomainServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/notification/service/NotificationDomainServiceImpl.java
index 6dee234f5..37e8f56a1 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/service/NotificationDomainServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/service/NotificationDomainServiceImpl.java
@@ -66,14 +66,14 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
     private final TopicSubscriberReadPlatformService topicSubscriberReadPlatformService;
     private final NotificationEventService notificationEvent;
     private final SpringEventPublisher springEventPublisher;
-    
+
     @Autowired
     public NotificationDomainServiceImpl(final BusinessEventNotifierService businessEventNotifierService,
             final PlatformSecurityContext context, final RoleRepository roleRepository,
             final TopicSubscriberReadPlatformService topicSubscriberReadPlatformService,
             final OfficeRepository officeRepository, final NotificationEventService notificationEvent,
             final SpringEventPublisher springEventPublisher) {
-        
+
         this.businessEventNotifierService = businessEventNotifierService;
         this.context = context;
         this.roleRepository = roleRepository;
@@ -82,7 +82,7 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
         this.notificationEvent = notificationEvent;
         this.springEventPublisher = springEventPublisher;
     }
-    
+
     @PostConstruct
     public void addListeners() {
         businessEventNotifierService.addBusinessEventPostListners(BUSINESS_EVENTS.CLIENTS_CREATE,
@@ -124,13 +124,13 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
          businessEventNotifierService.addBusinessEventPostListners(BUSINESS_EVENTS.SHARE_ACCOUNT_APPROVE,
                  new ShareAccountApprovedListener());
     }
-    
+
     private abstract class NotificationBusinessEventAdapter implements BusinessEventListner {
         @Override
         public void businessEventToBeExecuted(Map businessEventEntity) {
         }
     }
-    
+
     private class ClientCreatedListener extends  NotificationBusinessEventAdapter {
 
         @Override
@@ -149,11 +149,11 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
                         client.getOffice().getId()
                 );
             }
-        }    
+        }
     }
-    
+
     private class CenterCreatedListener extends NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
             CommandProcessingResult commandProcessingResult;
@@ -172,9 +172,9 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-    
+
     private class GroupCreatedListener extends  NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
             CommandProcessingResult commandProcessingResult;
@@ -193,9 +193,9 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-    
+
     private class SavingsAccountDepositListener extends  NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
             SavingsAccountTransaction savingsAccountTransaction;
@@ -214,9 +214,9 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-    
+
     private class ShareProductDividendCreatedListener extends NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
             Long shareProductId;
@@ -235,9 +235,9 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-    
+
     private class FixedDepositAccountCreatedListener extends NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
             FixedDepositAccount fixedDepositAccount;
@@ -256,9 +256,9 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-    
+
     private class RecurringDepositAccountCreatedListener extends NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
             RecurringDepositAccount recurringDepositAccount;
@@ -277,9 +277,9 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-    
+
     private class SavingsAccountApprovedListener extends NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
             SavingsAccount  savingsAccount;
@@ -287,7 +287,7 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             if (entity != null) {
                 savingsAccount = (SavingsAccount) entity;
                 if (savingsAccount.depositAccountType().equals(DepositAccountType.FIXED_DEPOSIT)) {
-                    
+
                     buildNotification(
                             "ACTIVATE_FIXEDDEPOSITACCOUNT",
                             "fixedDeposit",
@@ -296,9 +296,9 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
                             "approved",
                             context.authenticatedUser().getId(),
                             savingsAccount.officeId()
-                    );                    
+                    );
                 } else if (savingsAccount.depositAccountType().equals(DepositAccountType.RECURRING_DEPOSIT)) {
-                    
+
                     buildNotification(
                             "ACTIVATE_RECURRINGDEPOSITACCOUNT",
                             "recurringDepositAccount",
@@ -309,7 +309,7 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
                             savingsAccount.officeId()
                     );
                 } else if (savingsAccount.depositAccountType().equals(DepositAccountType.SAVINGS_DEPOSIT)) {
-                    
+
                     buildNotification(
                             "ACTIVATE_SAVINGSACCOUNT",
                             "savingsAccount",
@@ -323,9 +323,9 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-    
+
     private class SavingsPostInterestListener extends NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
             SavingsAccount savingsAccount;
@@ -344,9 +344,9 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-    
+
     private class LoanCreatedListener extends NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
             Loan loan;
@@ -363,12 +363,12 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
                         loan.getOfficeId()
                 );
             }
-            
+
         }
     }
-    
+
     private class LoanApprovedListener extends NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
             Loan loan;
@@ -387,12 +387,12 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-    
+
     private class LoanClosedListener extends NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
-            
+
             Loan loan;
             Object entity = businessEventEntity.get(BUSINESS_ENTITY.LOAN);
             if (entity != null) {
@@ -409,9 +409,9 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-        
+
     private class LoanCloseAsRescheduledListener extends NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
             Loan loan;
@@ -430,9 +430,9 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-        
+
     private class LoanMakeRepaymentListener extends NotificationBusinessEventAdapter {
-            
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
             Loan loan;
@@ -451,12 +451,12 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-    
+
     private class LoanProductCreatedListener extends NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
-            
+
             LoanProduct loanProduct;
             Object entity = businessEventEntity.get(BUSINESS_ENTITY.LOAN_PRODUCT);
             if (entity != null) {
@@ -473,9 +473,9 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-    
+
     private class SavingsAccountCreatedListener extends NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
             SavingsAccount  savingsAccount;
@@ -494,9 +494,9 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-    
+
     private class SavingsAccountClosedListener extends NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
             SavingsAccount  savingsAccount;
@@ -515,9 +515,9 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-    
+
     private class ShareAccountCreatedListener extends NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
             ShareAccount shareAccount;
@@ -536,9 +536,9 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-    
+
     private class ShareAccountApprovedListener extends NotificationBusinessEventAdapter {
-        
+
         @Override
         public void businessEventWasExecuted(Map businessEventEntity) {
             ShareAccount shareAccount;
@@ -557,10 +557,10 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             }
         }
     }
-    
-    private void buildNotification(String permission, String objectType, Long objectIdentifier, 
+
+    private void buildNotification(String permission, String objectType, Long objectIdentifier,
             String notificationContent, String eventType,  Long appUserId, Long officeId) {
-        
+
         String tenantIdentifier = ThreadLocalContextUtil.getTenant().getTenantIdentifier();
         Queue queue = new ActiveMQQueue("NotificationQueue");
         List userIds = retrieveSubscribers(officeId, permission);
@@ -582,9 +582,9 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
             this.springEventPublisher.broadcastNotification(notificationData);
         }
     }
-    
+
     private List retrieveSubscribers(Long officeId, String permission) {
-        
+
         Set topicSubscribers = new HashSet<>();
         List subscriberIds = new ArrayList<>();
         Long entityId = officeId;
@@ -601,7 +601,7 @@ public class NotificationDomainServiceImpl implements NotificationDomainService
                 topicSubscribers.addAll(topicSubscriberReadPlatformService.getSubscribers(entityId, entityType, memberType));
             }
         }
-        
+
         for (TopicSubscriberData topicSubscriber : topicSubscribers) {
             subscriberIds.add(topicSubscriber.getUserId());
          }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicDomainService.java b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicDomainService.java
index bc4baf0f0..f380b9d44 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicDomainService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicDomainService.java
@@ -25,21 +25,21 @@ import org.apache.fineract.useradministration.domain.AppUser;
 import org.apache.fineract.useradministration.domain.Role;
 
 public interface TopicDomainService {
-    
+
     public void createTopic( Office newOffice );
-    
+
     public void createTopic( Role newRole );
-    
+
     public void updateTopic( Office updatedOffice, Map changes );
-    
+
     public void updateTopic( String previousRolename, Role updatedRole, Map changes );
-    
+
     public void deleteTopic( Role role );
-    
+
     public void subscribeUserToTopic( AppUser newUser );
-    
+
     public void updateUserSubscription( AppUser userToUpdate, Map changes );
-    
+
     public void unsubcribeUserFromTopic( AppUser user );
-    
+
 }
\ No newline at end of file
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicDomainServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicDomainServiceImpl.java
index 8308f11ce..3ba2d9afc 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicDomainServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicDomainServiceImpl.java
@@ -45,23 +45,23 @@ public class TopicDomainServiceImpl implements TopicDomainService {
     private final TopicRepository topicRepository;
     private final OfficeRepository officeRepository;
     private final TopicSubscriberRepository topicSubscriberRepository;
-    
+
     @Autowired
     public TopicDomainServiceImpl(RoleRepository roleRepository, TopicRepository topicRepository,
             OfficeRepository officeRepository, TopicSubscriberRepository topicSubscriberRepository) {
-        
+
         this.roleRepository = roleRepository;
         this.topicRepository = topicRepository;
         this.officeRepository = officeRepository;
         this.topicSubscriberRepository = topicSubscriberRepository;
     }
-    
+
     @Override
     public void createTopic( Office newOffice ) {
-        
+
         Long entityId = newOffice.getId();
         String entityType = this.getEntityType(newOffice);
-        
+
         List allRoles = roleRepository.findAll();
         for(Role role : allRoles) {
             String memberType = role.getName().toUpperCase();
@@ -70,12 +70,12 @@ public class TopicDomainServiceImpl implements TopicDomainService {
             topicRepository.save(newTopic);
         }
     }
-    
+
     @Override
     public void createTopic( Role newRole ) {
-        
+
         List offices = officeRepository.findAll();
-        
+
         for (Office office : offices){
             String entityType = this.getEntityType(office);
             String title = newRole.getName() + " of " + office.getName();
@@ -83,14 +83,14 @@ public class TopicDomainServiceImpl implements TopicDomainService {
             topicRepository.save(newTopic);
         }
     }
-    
+
     @Override
     public void updateTopic( Office updatedOffice, Map changes ) {
-        
+
         List entityTopics = topicRepository.findByEntityId(updatedOffice.getId());
-        
+
         if (changes.containsKey("parentId")) {
-            
+
             String entityType = this.getEntityType(updatedOffice);
             for (Topic topic : entityTopics) {
                 topic.setEntityType(entityType);
@@ -98,7 +98,7 @@ public class TopicDomainServiceImpl implements TopicDomainService {
             }
         }
         if (changes.containsKey("name")) {
-            
+
             for (Topic topic: entityTopics) {
                 Role role = roleRepository.getRoleByName(topic.getMemberType());
                 String title = role.getName() + " of " + updatedOffice.getName();
@@ -107,7 +107,7 @@ public class TopicDomainServiceImpl implements TopicDomainService {
             }
         }
     }
-    
+
     @Override
     public void updateTopic( String previousRolename, Role updatedRole, Map changes ) {
 
@@ -122,21 +122,21 @@ public class TopicDomainServiceImpl implements TopicDomainService {
             }
         }
     }
-    
+
     @Override
     public void deleteTopic( Role role ) {
-        
+
         List topics = topicRepository.findByMemberType(role.getName().toUpperCase());
         for (Topic topic : topics) {
             topicRepository.delete(topic);
         }
     }
-    
+
     @Override
     public void subscribeUserToTopic( AppUser newUser ) {
-        
+
         List possibleTopics = topicRepository.findByEntityId(newUser.getOffice().getId());
-        
+
         if (!possibleTopics.isEmpty()) {
             Set userRoles = newUser.getRoles();
             for (Role role : userRoles) {
@@ -149,17 +149,17 @@ public class TopicDomainServiceImpl implements TopicDomainService {
             }
         }
     }
-    
+
     @Override
     public void updateUserSubscription( AppUser userToUpdate, Map changes ) {
-        
+
         List oldSubscriptions = topicSubscriberRepository.findBySubscriber(userToUpdate);
         if (changes.containsKey("officeId")) {
             final Long oldOfficeId = userToUpdate.getOffice().getId();
             final Long newOfficeId = (Long) changes.get("officeId");
             List oldTopics = topicRepository.findByEntityId(oldOfficeId);
             List newTopics = topicRepository.findByEntityId(newOfficeId);
-            
+
             for (TopicSubscriber subscriber : oldSubscriptions) {
                 for (Topic topic : oldTopics) {
                     if (subscriber.getTopic().getId().equals(topic.getId())) {
@@ -167,7 +167,7 @@ public class TopicDomainServiceImpl implements TopicDomainService {
                     }
                 }
             }
-            
+
             Set userRoles = userToUpdate.getRoles();
             for (Role role : userRoles) {
                 for (Topic topic : newTopics) {
@@ -178,16 +178,16 @@ public class TopicDomainServiceImpl implements TopicDomainService {
                 }
             }
         }
-        
+
         if (changes.containsKey("roles")) {
-            
+
             final Set oldRoles = userToUpdate.getRoles() ;
             final Set tempOldRoles = new HashSet<>(oldRoles);
-            
+
             final String[] roleIds = (String[]) changes.get("roles");
             final Set updatedRoles = assembleSetOfRoles(roleIds);
             final Set tempUpdatedRoles = new HashSet<>(updatedRoles);
-            
+
             tempOldRoles.removeAll(updatedRoles);
             for (TopicSubscriber subscriber : oldSubscriptions) {
                 Topic topic = subscriber.getTopic();
@@ -197,7 +197,7 @@ public class TopicDomainServiceImpl implements TopicDomainService {
                     }
                 }
             }
-            
+
             tempUpdatedRoles.removeAll(oldRoles);
             List newTopics = topicRepository.findByEntityId(userToUpdate.getOffice().getId());
             for (Topic topic : newTopics) {
@@ -210,26 +210,26 @@ public class TopicDomainServiceImpl implements TopicDomainService {
             }
         }
     }
-    
+
     @Override
     public void unsubcribeUserFromTopic( AppUser user ) {
-        
+
         List subscriptions = topicSubscriberRepository.findBySubscriber(user);
         for (TopicSubscriber subscription : subscriptions) {
             topicSubscriberRepository.delete(subscription);
         }
     }
-    
+
 
     private String getEntityType( Office office ) {
-        
+
         if (office.getParent() == null) {
             return "OFFICE";
         } else {
             return "BRANCH";
         }
     }
-    
+
     private Set assembleSetOfRoles(final String[] rolesArray) {
 
         final Set allRoles = new HashSet<>();
@@ -245,5 +245,5 @@ public class TopicDomainServiceImpl implements TopicDomainService {
 
         return allRoles;
     }
-    
+
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicReadPlatformService.java
index 72f47f170..616cb8036 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicReadPlatformService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicReadPlatformService.java
@@ -22,11 +22,11 @@ import java.util.Collection;
 import org.apache.fineract.notification.data.TopicData;
 
 public interface TopicReadPlatformService {
-    
+
     Collection getAllTopics();
-    
+
     Collection getAllEnabledTopics();
 
     TopicData findById(Long id);
-    
+
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicReadPlatformServiceImpl.java
index 998952d65..d6289f5b8 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicReadPlatformServiceImpl.java
@@ -33,14 +33,14 @@ import org.springframework.stereotype.Service;
 
 @Service
 public class TopicReadPlatformServiceImpl implements TopicReadPlatformService {
-    
+
     private final JdbcTemplate jdbcTemplate;
-    
+
     @Autowired
     public TopicReadPlatformServiceImpl(final RoutingDataSource dataSource) {
         this.jdbcTemplate = new JdbcTemplate(dataSource);
     }
-    
+
     private static final class TopicMapper implements RowMapper {
 
         private final String schema;
@@ -68,7 +68,7 @@ public class TopicReadPlatformServiceImpl implements TopicReadPlatformService {
 
             return new TopicData(id, title, enabled, entityId, entityType, memberType);
         }
-        
+
     }
 
     @Override
@@ -94,5 +94,5 @@ public class TopicReadPlatformServiceImpl implements TopicReadPlatformService {
         } catch (final EmptyResultDataAccessException e) {
             throw new TopicNotFoundException(topicId);
         }
-    }    
+    }
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberReadPlatformService.java
index 04954910e..b4f98f8a4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberReadPlatformService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberReadPlatformService.java
@@ -23,7 +23,7 @@ import java.util.Collection;
 import org.apache.fineract.notification.data.TopicSubscriberData;
 
 public interface TopicSubscriberReadPlatformService {
-    
+
     Collection getSubscribers(Long entityId, String entityType, String memberType);
-    
+
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberReadPlatformServiceImpl.java
index 03995ede7..cc89afbe0 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberReadPlatformServiceImpl.java
@@ -34,12 +34,12 @@ import org.springframework.stereotype.Service;
 public class TopicSubscriberReadPlatformServiceImpl implements TopicSubscriberReadPlatformService{
 
     private final JdbcTemplate jdbcTemplate;
-    
+
     @Autowired
     public TopicSubscriberReadPlatformServiceImpl(final RoutingDataSource dataSource) {
         this.jdbcTemplate = new JdbcTemplate(dataSource);
     }
-    
+
     private static final class TopicSubscriberMapper implements RowMapper {
 
         private final String schema;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberWritePlatformService.java
index 28e81e15d..4cca2cd46 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberWritePlatformService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberWritePlatformService.java
@@ -21,7 +21,7 @@ package org.apache.fineract.notification.service;
 import org.apache.fineract.notification.domain.TopicSubscriber;
 
 public interface TopicSubscriberWritePlatformService {
-    
+
     Long create(TopicSubscriber topicSubscriber);
 
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberWritePlatformServiceJpaRepositoryImpl.java
index 24788a54c..64bef4a1f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberWritePlatformServiceJpaRepositoryImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberWritePlatformServiceJpaRepositoryImpl.java
@@ -27,12 +27,12 @@ import org.springframework.stereotype.Service;
 public class TopicSubscriberWritePlatformServiceJpaRepositoryImpl implements TopicSubscriberWritePlatformService {
 
 private final TopicSubscriberRepository topicSubscriberRepository;
-    
+
     @Autowired
     public TopicSubscriberWritePlatformServiceJpaRepositoryImpl(TopicSubscriberRepository topicSubscriberRepository) {
         this.topicSubscriberRepository = topicSubscriberRepository;
     }
-    
+
     @Override
     public Long create(TopicSubscriber topicSubscriber) {
         topicSubscriberRepository.save(topicSubscriber);
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicWritePlatformService.java
index 48bcdb0e1..dfc09e611 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicWritePlatformService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicWritePlatformService.java
@@ -21,7 +21,7 @@ package org.apache.fineract.notification.service;
 import org.apache.fineract.notification.domain.Topic;
 
 public interface TopicWritePlatformService {
-    
+
     Long create(Topic topic);
-    
+
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicWritePlatformServiceJpaRepositoryImpl.java
index 844f1b7dd..153c08342 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicWritePlatformServiceJpaRepositoryImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicWritePlatformServiceJpaRepositoryImpl.java
@@ -27,7 +27,7 @@ import org.springframework.stereotype.Service;
 public class TopicWritePlatformServiceJpaRepositoryImpl implements TopicWritePlatformService {
 
     private final TopicRepository topicRepository;
-    
+
     @Autowired
     public TopicWritePlatformServiceJpaRepositoryImpl(TopicRepository topicRepository) {
         this.topicRepository = topicRepository;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/api/HolidaysApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/api/HolidaysApiResource.java
index 3762229b1..ebc14251b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/api/HolidaysApiResource.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/api/HolidaysApiResource.java
@@ -200,7 +200,7 @@ public class HolidaysApiResource {
         final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
         return this.toApiJsonSerializer.serialize(settings, holidays, HOLIDAY_RESPONSE_DATA_PARAMETERS);
     }
-    
+
     @GET
     @Path("/template")
     @Consumes({MediaType.APPLICATION_JSON})
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/data/HolidayDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/data/HolidayDataValidator.java
index 97415a75d..b36348d7b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/data/HolidayDataValidator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/data/HolidayDataValidator.java
@@ -82,12 +82,12 @@ public class HolidayDataValidator {
 
         final LocalDate toDate = this.fromApiJsonHelper.extractLocalDateNamed(HolidayApiConstants.toDateParamName, element);
         baseDataValidator.reset().parameter(HolidayApiConstants.toDateParamName).value(toDate).notNull();
-        
+
         Integer reschedulingType = null;
         if(this.fromApiJsonHelper.parameterExists(HolidayApiConstants.reschedulingType, element)){
             reschedulingType = this.fromApiJsonHelper.extractIntegerNamed(HolidayApiConstants.reschedulingType, element, Locale.ENGLISH);
         }
-       
+
         LocalDate repaymentsRescheduledTo = null;
         if(reschedulingType == null || reschedulingType.equals(RescheduleType.RESCHEDULETOSPECIFICDATE.getValue())){
             repaymentsRescheduledTo = this.fromApiJsonHelper.extractLocalDateNamed(
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/Holiday.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/Holiday.java
index c25a3bfc2..77626fea8 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/Holiday.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/Holiday.java
@@ -76,7 +76,7 @@ public class Holiday extends AbstractPersistableCustom {
     @Column(name = "repayments_rescheduled_to", nullable = true)
     @Temporal(TemporalType.DATE)
     private Date repaymentsRescheduledTo;
-    
+
     @Column(name = "rescheduling_type", nullable = false)
     private int reschedulingType;
 
@@ -110,7 +110,7 @@ public class Holiday extends AbstractPersistableCustom {
         final boolean processed = false;// default it to false. Only batch job
                                         // should update this field.
         final String description = command.stringValueOfParameterNamed(HolidayApiConstants.descriptionParamName);
-        
+
         return new Holiday(name, fromDate, toDate, repaymentsRescheduledTo, status, processed, description, offices, reschedulingType);
     }
 
@@ -136,8 +136,8 @@ public class Holiday extends AbstractPersistableCustom {
             actualChanges.put(descriptionParamName, newValue);
             this.description = StringUtils.defaultIfEmpty(newValue, null);
         }
-        
-        
+
+
         if (command.isChangeInIntegerParameterNamed(HolidayApiConstants.reschedulingType,this.reschedulingType)) {
             final Integer newValue =command.integerValueOfParameterNamed(HolidayApiConstants.reschedulingType);
             actualChanges.put(HolidayApiConstants.reschedulingType, newValue);
@@ -145,7 +145,7 @@ public class Holiday extends AbstractPersistableCustom {
             if(newValue.equals(RescheduleType.RESCHEDULETONEXTREPAYMENTDATE.getValue())){
                 this.repaymentsRescheduledTo = null;
             }
-        } 
+        }
 
         if (currentStatus.isPendingActivation()) {
             if (command.isChangeInLocalDateParameterNamed(fromDateParamName, getFromDateLocalDate())) {
@@ -320,7 +320,7 @@ public class Holiday extends AbstractPersistableCustom {
         }
         this.status = HolidayStatusType.DELETED.getValue();
     }
-    
+
     public RescheduleType getReScheduleType() {
         return RescheduleType.fromInt(this.reschedulingType);
     }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/RescheduleType.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/RescheduleType.java
index a87b6589d..0c04d6ced 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/RescheduleType.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/RescheduleType.java
@@ -47,12 +47,12 @@ public enum RescheduleType {
     public boolean isRescheduleToSpecificDate(){
             return this.value.equals(RescheduleType.RESCHEDULETOSPECIFICDATE.getValue());
     }
-    
+
     public boolean isResheduleToNextRepaymentDate(){
             return this.value.equals(RescheduleType.RESCHEDULETONEXTREPAYMENTDATE.getValue());
     }
 
-    
+
     public Integer getValue() {
             return this.value;
     }
@@ -60,5 +60,5 @@ public enum RescheduleType {
     public String getCode() {
             return this.code;
     }
-    
+
 }
\ No newline at end of file
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayEnumerations.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayEnumerations.java
index 176a3c8df..63b7c37bd 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayEnumerations.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayEnumerations.java
@@ -50,12 +50,12 @@ public class HolidayEnumerations {
         }
         return optionData;
     }
-    
+
     public static EnumOptionData rescheduleType(final int id) {
         return rescheduleType(RescheduleType.fromInt(id));
     }
 
-    
+
     public static EnumOptionData rescheduleType(final RescheduleType type) {
         EnumOptionData optionData = null;
         switch (type) {
@@ -67,7 +67,7 @@ public class HolidayEnumerations {
                 optionData = new EnumOptionData(RescheduleType.RESCHEDULETOSPECIFICDATE.getValue().longValue(),
                         RescheduleType.RESCHEDULETOSPECIFICDATE.getCode(), "Reschedule to specified date");
             break;
-           
+
             default:
                 optionData = new EnumOptionData(RescheduleType.INVALID.getValue().longValue(),
                         RescheduleType.INVALID.getCode(), "Invalid");
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayReadPlatformService.java
index 9ca4b3ffe..460d805c3 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayReadPlatformService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayReadPlatformService.java
@@ -30,6 +30,6 @@ public interface HolidayReadPlatformService {
     Collection retrieveAllHolidaysBySearchParamerters(final Long officeId, Date fromDate, Date toDate);
 
     HolidayData retrieveHoliday(final Long holidayId);
-    
+
     List retrieveRepaymentScheduleUpdationTyeOptions();
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayReadPlatformServiceImpl.java
index 96ccb7213..502c6f2f4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayReadPlatformServiceImpl.java
@@ -136,10 +136,10 @@ public class HolidayReadPlatformServiceImpl implements HolidayReadPlatformServic
             throw new HolidayNotFoundException(holidayId);
         }
     }
-    
+
     @Override
     public List retrieveRepaymentScheduleUpdationTyeOptions(){
-        
+
         final List repSchUpdationTypeOptions = Arrays.asList(
                 HolidayEnumerations.rescheduleType(RescheduleType.RESCHEDULETOSPECIFICDATE),
                 HolidayEnumerations.rescheduleType(RescheduleType.RESCHEDULETONEXTREPAYMENTDATE));
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayUtil.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayUtil.java
index ba729f0fb..7bba27f7b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayUtil.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayUtil.java
@@ -57,7 +57,7 @@ public class HolidayUtil {
 
         return false;
     }
-    
+
     public static Holiday getApplicableHoliday(final LocalDate repaymentDate, final List holidays) {
         Holiday referedHoliday = null;
         for (final Holiday holiday : holidays) {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrencyRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrencyRepositoryWrapper.java
index 564bd44fb..0ee770ac2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrencyRepositoryWrapper.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrencyRepositoryWrapper.java
@@ -29,7 +29,7 @@ import org.springframework.stereotype.Service;
  * findOne repository method and throwing an appropriate not found
  * exception.
  * 

- * + * *

* This is to avoid need for checking and throwing in multiple areas of code * base where {@link ApplicationCurrencyRepository} is required. diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/MoneyHelper.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/MoneyHelper.java index 83e5f5651..0748944ee 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/MoneyHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/MoneyHelper.java @@ -46,7 +46,7 @@ public class MoneyHelper { staticConfigurationDomainService = configurationDomainService; } - + public static RoundingMode getRoundingMode() { if (roundingMode == null) { roundingMode = RoundingMode.valueOf(staticConfigurationDomainService.getRoundingMode()); diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/Office.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/Office.java index 5e241ba8b..44b8a396f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/Office.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/Office.java @@ -209,7 +209,7 @@ public class Office extends AbstractPersistableCustom implements Serializa public Office getParent() { return this.parent; } - + public boolean hasParentOf(final Office office) { boolean isParent = false; if (this.parent != null) { @@ -243,7 +243,7 @@ public class Office extends AbstractPersistableCustom implements Serializa return match; } - + public void loadLazyCollections() { this.children.size() ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OfficeRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OfficeRepositoryWrapper.java index b193fd31b..f61d1892f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OfficeRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OfficeRepositoryWrapper.java @@ -50,7 +50,7 @@ public class OfficeRepositoryWrapper { .orElseThrow(() -> new OfficeNotFoundException(id)); office.loadLazyCollections(); return office ; - + } public Office save(final Office entity) { return this.repository.save(entity); diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OrganisationCurrencyRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OrganisationCurrencyRepositoryWrapper.java index 861018db0..fe9e26bec 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OrganisationCurrencyRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OrganisationCurrencyRepositoryWrapper.java @@ -28,7 +28,7 @@ import org.springframework.stereotype.Service; * {@link OrganisationCurrency} is returned when using findOne * repository method and throwing an appropriate not found exception. *

- * + * *

* This is to avoid need for checking and throwing in multiple areas of code * base where {@link OrganisationCurrency} is required. diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/service/OfficeWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/service/OfficeWritePlatformServiceJpaRepositoryImpl.java index 76f152aaf..c64fa4306 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/service/OfficeWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/service/OfficeWritePlatformServiceJpaRepositoryImpl.java @@ -104,7 +104,7 @@ public class OfficeWritePlatformServiceJpaRepositoryImpl implements OfficeWriteP office.generateHierarchy(); this.officeRepositoryWrapper.save(office); - + this.topicDomainService.createTopic(office); return new CommandProcessingResultBuilder() // @@ -151,7 +151,7 @@ public class OfficeWritePlatformServiceJpaRepositoryImpl implements OfficeWriteP if (!changes.isEmpty()) { this.officeRepositoryWrapper.saveAndFlush(office); - + this.topicDomainService.updateTopic(office, changes); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/api/ProvisioningCriteriaApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/api/ProvisioningCriteriaApiResource.java index e8c3ec167..5e1aadac4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/api/ProvisioningCriteriaApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/api/ProvisioningCriteriaApiResource.java @@ -101,7 +101,7 @@ public class ProvisioningCriteriaApiResource { ProvisioningCriteriaData data = this.provisioningCriteriaReadPlatformService.retrievePrivisiongCriteriaTemplate(); return this.toApiJsonSerializer.serialize(settings, data, PROVISIONING_CRITERIA_TEMPLATE_PARAMETER); } - + @GET @Path("{criteriaId}") @Consumes({ MediaType.APPLICATION_JSON }) @@ -113,11 +113,11 @@ public class ProvisioningCriteriaApiResource { ProvisioningCriteriaData criteria = this.provisioningCriteriaReadPlatformService.retrieveProvisioningCriteria(criteriaId) ; final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); if(settings.isTemplate()) { - criteria = this.provisioningCriteriaReadPlatformService.retrievePrivisiongCriteriaTemplate(criteria); + criteria = this.provisioningCriteriaReadPlatformService.retrievePrivisiongCriteriaTemplate(criteria); } return this.toApiJsonSerializer.serialize(settings, criteria, PROVISIONING_CRITERIA_PARAMETERS); } - + @GET @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) @@ -129,7 +129,7 @@ public class ProvisioningCriteriaApiResource { final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); return this.toApiJsonSerializer.serialize(settings, data, ALL_PROVISIONING_CRITERIA_PARAMETERS); } - + @POST @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) @@ -143,7 +143,7 @@ public class ProvisioningCriteriaApiResource { final CommandProcessingResult commandProcessingResult = this.commandsSourceWritePlatformService.logCommandSource(commandWrapper); return this.toApiJsonSerializer.serialize(commandProcessingResult); } - + @PUT @Path("{criteriaId}") @Consumes({ MediaType.APPLICATION_JSON }) @@ -158,7 +158,7 @@ public class ProvisioningCriteriaApiResource { final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); return this.toApiJsonSerializer.serialize(result); } - + @DELETE @Path("{criteriaId}") @Consumes({ MediaType.APPLICATION_JSON }) diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaData.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaData.java index af6c7c703..eeda4fea7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaData.java @@ -78,7 +78,7 @@ public class ProvisioningCriteriaData implements Comparable definitions, final Collection loanProducts, final Collection glAccounts) { return new ProvisioningCriteriaData(data, loanProducts, glAccounts); diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaDefinitionData.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaDefinitionData.java index f3ed09c8f..e8c5b3670 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaDefinitionData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaDefinitionData.java @@ -35,9 +35,9 @@ public final class ProvisioningCriteriaDefinitionData implements Comparable } protected ProvisioningCriteria() { - + } - + public ProvisioningCriteria(String criteriaName, AppUser createdBy, DateTime createdDate, AppUser lastModifiedBy, DateTime lastModifiedDate) { this.criteriaName = criteriaName; setCreatedBy(createdBy) ; @@ -73,7 +73,7 @@ public class ProvisioningCriteria extends AbstractAuditableCustom this.loanProductMapping.clear(); this.loanProductMapping.addAll(loanProductMapping); } - + public Map update(JsonCommand command, List loanProducts) { final Map actualChanges = new LinkedHashMap<>(7); if(command.isChangeInStringParameterNamed(ProvisioningCriteriaConstants.JSON_CRITERIANAME_PARAM, criteriaName)) { @@ -84,7 +84,7 @@ public class ProvisioningCriteria extends AbstractAuditableCustom Set temp = new HashSet<>() ; Set productsTemp = new HashSet<>() ; - + for(LoanProductProvisionCriteria mapping: loanProductMapping) { if(!loanProducts.contains(mapping.getLoanProduct())) { temp.add(mapping) ; @@ -93,17 +93,17 @@ public class ProvisioningCriteria extends AbstractAuditableCustom } } loanProductMapping.removeAll(temp) ; - + for(LoanProduct loanProduct: loanProducts) { if(!productsTemp.contains(loanProduct)) { - this.loanProductMapping.add( new LoanProductProvisionCriteria(this, loanProduct)) ; + this.loanProductMapping.add( new LoanProductProvisionCriteria(this, loanProduct)) ; } } - + actualChanges.put(ProvisioningCriteriaConstants.JSON_LOANPRODUCTS_PARAM, loanProductMapping); return actualChanges ; } - + public void update(ProvisioningCriteriaDefinitionData data, GLAccount liability, GLAccount expense) { for(ProvisioningCriteriaDefinition def: provisioningCriteriaDefinition) { if(data.getId().equals(def.getId())) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCriteriaDefinition.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCriteriaDefinition.java index 28e065797..83601abc6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCriteriaDefinition.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCriteriaDefinition.java @@ -37,7 +37,7 @@ public class ProvisioningCriteriaDefinition extends AbstractPersistableCustom dataValidationErrors = new ArrayList<>(); final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("provisioningcategories"); final JsonElement element = this.fromApiJsonHelper.parse(json); - + final String name = this.fromApiJsonHelper.extractStringNamed("categoryname", element); baseDataValidator.reset().parameter("categoryname").value(name).notBlank().notExceedingLengthOf(100); if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } @@ -75,12 +75,12 @@ public class ProvisioningCategoryDefinitionJsonDeserializer { final List dataValidationErrors = new ArrayList<>(); final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("provisioningcategories"); final JsonElement element = this.fromApiJsonHelper.parse(json); - + if (this.fromApiJsonHelper.parameterExists("categoryname", element)) { final String categoryName = this.fromApiJsonHelper.extractStringNamed("categoryname", element); baseDataValidator.reset().parameter("categoryname").value(categoryName).notBlank().notExceedingLengthOf(100); } - + if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/serialization/ProvisioningCriteriaDefinitionJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/serialization/ProvisioningCriteriaDefinitionJsonDeserializer.java index 5d95293bd..6e9f38110 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/serialization/ProvisioningCriteriaDefinitionJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/serialization/ProvisioningCriteriaDefinitionJsonDeserializer.java @@ -126,7 +126,7 @@ public class ProvisioningCriteriaDefinitionJsonDeserializer implements Provision .parameterAtIndexArray(ProvisioningCriteriaConstants.JSON_MAXIMUM_AGE_PARAM, i + 1).value(maximumAge).notNull() .longGreaterThanNumber(ProvisioningCriteriaConstants.JSON_MINIMUM_AGE_PARAM, minimumAge, (i+1)); - + BigDecimal provisioningpercentage = this.fromApiJsonHelper.extractBigDecimalNamed( ProvisioningCriteriaConstants.JSON_PROVISIONING_PERCENTAGE_PARAM, jsonObject, locale); baseDataValidator.reset().parameter(ProvisioningCriteriaConstants.JSON_PROVISIONING_PERCENTAGE_PARAM) @@ -165,13 +165,13 @@ public class ProvisioningCriteriaDefinitionJsonDeserializer implements Provision final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("provisioningcriteria"); final JsonElement element = this.fromApiJsonHelper.parse(json); final Locale locale = this.fromApiJsonHelper.extractLocaleParameter(element.getAsJsonObject()); - + if(this.fromApiJsonHelper.parameterExists(ProvisioningCriteriaConstants.JSON_CRITERIANAME_PARAM, element)) { final String name = this.fromApiJsonHelper.extractStringNamed(ProvisioningCriteriaConstants.JSON_CRITERIANAME_PARAM, element); baseDataValidator.reset().parameter(ProvisioningCriteriaConstants.JSON_CRITERIANAME_PARAM).value(name).notBlank() - .notExceedingLengthOf(200); + .notExceedingLengthOf(200); } - + // if the param present, then we should have the loan product ids. If // not we will load all loan products @@ -235,7 +235,7 @@ public class ProvisioningCriteriaDefinitionJsonDeserializer implements Provision } if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } - + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryWritePlatformService.java index 1de05e6d7..4e7021026 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryWritePlatformService.java @@ -25,8 +25,8 @@ import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; public interface ProvisioningCategoryWritePlatformService { CommandProcessingResult createProvisioningCateogry(JsonCommand command); - + CommandProcessingResult updateProvisioningCategory(final Long categoryId, JsonCommand command) ; - + CommandProcessingResult deleteProvisioningCateogry(JsonCommand command) ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryWritePlatformServiceJpaRepositoryImpl.java index 1aeaa13e4..5c0b543ba 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryWritePlatformServiceJpaRepositoryImpl.java @@ -50,7 +50,7 @@ public class ProvisioningCategoryWritePlatformServiceJpaRepositoryImpl implement private final ProvisioningCategoryDefinitionJsonDeserializer fromApiJsonDeserializer; private final JdbcTemplate jdbcTemplate; - + @Autowired public ProvisioningCategoryWritePlatformServiceJpaRepositoryImpl(final ProvisioningCategoryRepository provisioningCategoryRepository, final ProvisioningCategoryDefinitionJsonDeserializer fromApiJsonDeserializer, final RoutingDataSource dataSource) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaAssembler.java index 80e51938e..49e9d4c65 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaAssembler.java @@ -81,11 +81,11 @@ public class ProvisioningCriteriaAssembler { } return loanProducts ; } - + private void validateRange(Set criteriaDefinitions) { List def = new ArrayList<>() ; def.addAll(criteriaDefinitions) ; - + for (int i = 0; i < def.size(); i++) { for (int j = i + 1; j < def.size(); j++) { if (def.get(i).isOverlapping(def.get(j))) { @@ -94,12 +94,12 @@ public class ProvisioningCriteriaAssembler { } } } - + public ProvisioningCriteria fromParsedJson(final JsonElement jsonElement) { ProvisioningCriteria provisioningCriteria = createCriteria(jsonElement); final Locale locale = this.fromApiJsonHelper.extractLocaleParameter(jsonElement.getAsJsonObject()); List loanProducts = parseLoanProducts(jsonElement) ; - + Set criteriaDefinitions = new HashSet<>(); JsonArray jsonProvisioningCriteria = this.fromApiJsonHelper.extractJsonArrayNamed( ProvisioningCriteriaConstants.JSON_PROVISIONING_DEFINITIONS_PARAM, jsonElement); diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformService.java index 3b9431271..5ea76ab21 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformService.java @@ -26,10 +26,10 @@ import org.apache.fineract.organisation.provisioning.data.ProvisioningCriteriaDa public interface ProvisioningCriteriaReadPlatformService { public ProvisioningCriteriaData retrievePrivisiongCriteriaTemplate() ; - + public ProvisioningCriteriaData retrieveProvisioningCriteria(Long criteriaId) ; - + public Collection retrieveAllProvisioningCriterias() ; - + public ProvisioningCriteriaData retrievePrivisiongCriteriaTemplate(ProvisioningCriteriaData data) ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformServiceImpl.java index cf7600ccf..e11620a01 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaReadPlatformServiceImpl.java @@ -83,7 +83,7 @@ public class ProvisioningCriteriaReadPlatformServiceImpl implements Provisioning final Collection glAccounts = this.glAccountReadPlatformService.retrieveAllEnabledDetailGLAccounts(); return ProvisioningCriteriaData.toTemplate(data, constructCriteriaTemplate(categories), allLoanProducts, glAccounts); } - + private Collection constructCriteriaTemplate(Collection categories) { List definitions = new ArrayList<>(); for (ProvisioningCategoryData data : categories) { @@ -97,7 +97,7 @@ public class ProvisioningCriteriaReadPlatformServiceImpl implements Provisioning final String sql = "select " + mapper.schema() ; return this.jdbcTemplate.query(sql, mapper, new Object[] {}); } - + private static final class ProvisioningCriteriaRowMapper implements RowMapper { @Override @@ -124,7 +124,7 @@ public class ProvisioningCriteriaReadPlatformServiceImpl implements Provisioning }catch(EmptyResultDataAccessException e) { throw new ProvisioningCriteriaNotFoundException(criteriaId) ; } - + } private List retrieveProvisioningDefinitions(Long criteriaId) { @@ -160,7 +160,7 @@ public class ProvisioningCriteriaReadPlatformServiceImpl implements Provisioning Long expenseAccount = rs.getLong("expense_account"); String expenseAccountCode = rs.getString("expensecode"); String expenseAccountName = rs.getString("expensename") ; - + return new ProvisioningCriteriaDefinitionData(id, categoryId, categoryName, minAge, maxAge, provisioningPercentage, liabilityAccount, liabilityAccountCode, liabilityAccountName, expenseAccount, expenseAccountCode, expenseAccountName); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaWritePlatformService.java index d92206a43..2cef66374 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaWritePlatformService.java @@ -25,8 +25,8 @@ import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; public interface ProvisioningCriteriaWritePlatformService { CommandProcessingResult createProvisioningCriteria(JsonCommand command); - + CommandProcessingResult updateProvisioningCriteria(final Long categoryId, JsonCommand command) ; - + CommandProcessingResult deleteProvisioningCriteria(Long entryId) ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaWritePlatformServiceJpaRepositoryImpl.java index a1fc12dc6..3c5376ec5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaWritePlatformServiceJpaRepositoryImpl.java @@ -64,7 +64,7 @@ public class ProvisioningCriteriaWritePlatformServiceJpaRepositoryImpl implement private final FromJsonHelper fromApiJsonHelper; private final GLAccountRepository glAccountRepository; private final ProvisioningEntriesReadPlatformService provisioningEntriesReadPlatformService ; - + @Autowired public ProvisioningCriteriaWritePlatformServiceJpaRepositoryImpl(final ProvisioningCriteriaDefinitionJsonDeserializer fromApiJsonDeserializer, final ProvisioningCriteriaAssembler provisioningCriteriaAssembler, final ProvisioningCriteriaRepository provisioningCriteriaRepository, @@ -75,7 +75,7 @@ public class ProvisioningCriteriaWritePlatformServiceJpaRepositoryImpl implement this.provisioningCriteriaAssembler = provisioningCriteriaAssembler; this.provisioningCriteriaRepository = provisioningCriteriaRepository; this.fromApiJsonHelper = fromApiJsonHelper ; - this.glAccountRepository = glAccountRepository ; + this.glAccountRepository = glAccountRepository ; this.provisioningEntriesReadPlatformService = provisioningEntriesReadPlatformService ; } @@ -119,9 +119,9 @@ public class ProvisioningCriteriaWritePlatformServiceJpaRepositoryImpl implement final Map changes = provisioningCriteria.update(command, products) ; if(!changes.isEmpty()) { updateProvisioningCriteriaDefinitions(provisioningCriteria, command) ; - provisioningCriteriaRepository.saveAndFlush(provisioningCriteria) ; + provisioningCriteriaRepository.saveAndFlush(provisioningCriteria) ; } - return new CommandProcessingResultBuilder().withCommandId(command.commandId()).withEntityId(provisioningCriteria.getId()).build(); + return new CommandProcessingResultBuilder().withCommandId(command.commandId()).withEntityId(provisioningCriteria.getId()).build(); } catch (final DataIntegrityViolationException dve) { handleDataIntegrityIssues(command, dve.getMostSpecificCause(), dve); return CommandProcessingResult.empty(); @@ -151,13 +151,13 @@ public class ProvisioningCriteriaWritePlatformServiceJpaRepositoryImpl implement String categoryName = null ; String liabilityAccountName = null ; String expenseAccountName = null ; - ProvisioningCriteriaDefinitionData data = new ProvisioningCriteriaDefinitionData(id, categoryId, - categoryName, minimumAge, maximumAge, provisioningpercentage, + ProvisioningCriteriaDefinitionData data = new ProvisioningCriteriaDefinitionData(id, categoryId, + categoryName, minimumAge, maximumAge, provisioningpercentage, liabilityAccount.getId(), liabilityAccount.getGlCode(), liabilityAccountName, expenseAccount.getId(), expenseAccount.getGlCode(), expenseAccountName) ; provisioningCriteria.update(data, liabilityAccount, expenseAccount) ; } } - + /* * Guaranteed to throw an exception no matter what the data integrity issue * is. diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/serialization/StaffCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/serialization/StaffCommandFromApiJsonDeserializer.java index 892e2d286..e0f06511f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/serialization/StaffCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/serialization/StaffCommandFromApiJsonDeserializer.java @@ -51,7 +51,7 @@ public final class StaffCommandFromApiJsonDeserializer { "mobileNo", "isLoanOfficer", "isActive", "joiningDate", "dateFormat", "locale", "forceStatus")); private final FromJsonHelper fromApiJsonHelper; - + private final StaffReadPlatformService staffReadPlatformService; @@ -59,7 +59,7 @@ public final class StaffCommandFromApiJsonDeserializer { public StaffCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper, final StaffReadPlatformService staffReadPlatformService) { this.fromApiJsonHelper = fromApiJsonHelper; - this.staffReadPlatformService = staffReadPlatformService; + this.staffReadPlatformService = staffReadPlatformService; } public void validateForCreate(final String json) { @@ -97,15 +97,15 @@ public final class StaffCommandFromApiJsonDeserializer { final Boolean activeFlag = this.fromApiJsonHelper.extractBooleanNamed("isActive", element); baseDataValidator.reset().parameter("isActive").value(activeFlag).notNull(); } - + final LocalDate joiningDate = this.fromApiJsonHelper.extractLocalDateNamed("joiningDate", element); baseDataValidator.reset().parameter("joiningDate").value(joiningDate).notNull(); - + if (this.fromApiJsonHelper.parameterExists("dateFormat", element)) { final String dateFormat = this.fromApiJsonHelper.extractStringNamed("dateFormat", element); baseDataValidator.reset().parameter("dateFormat").value(dateFormat).notBlank(); } - + if (this.fromApiJsonHelper.parameterExists("locale", element)) { final String locale = this.fromApiJsonHelper.extractStringNamed("locale", element); baseDataValidator.reset().parameter("locale").value(locale).notBlank(); @@ -115,9 +115,9 @@ public final class StaffCommandFromApiJsonDeserializer { } public void validateForUpdate(final String json) { - validateForUpdate(json, null); + validateForUpdate(json, null); } - + public void validateForUpdate(final String json,Long staffId) { if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); } @@ -157,18 +157,18 @@ public final class StaffCommandFromApiJsonDeserializer { final Boolean activeFlag = this.fromApiJsonHelper.extractBooleanNamed("isActive", element); //Need to add here check to see if any clients, group, account and loans are assigned to this staff if staff is being set to inactive --LJB final Boolean forceStatus = this.fromApiJsonHelper.extractBooleanNamed("forceStatus", element); - if ((!activeFlag && forceStatus == null) || - (!activeFlag && forceStatus)) { + if ((!activeFlag && forceStatus == null) || + (!activeFlag && forceStatus)) { Object[] result = staffReadPlatformService.hasAssociatedItems(staffId); - + if (result != null && result.length > 0) { baseDataValidator.reset().parameter("isactive").failWithCode("staff.is.assigned",result); } - + } baseDataValidator.reset().parameter("isActive").value(activeFlag).notNull(); } - + if (this.fromApiJsonHelper.parameterExists("joiningDate", element)) { final LocalDate joiningDate = this.fromApiJsonHelper.extractLocalDateNamed("joiningDate", element); baseDataValidator.reset().parameter("joiningDate").value(joiningDate).notNull(); @@ -178,7 +178,7 @@ public final class StaffCommandFromApiJsonDeserializer { final String dateFormat = this.fromApiJsonHelper.extractStringNamed("dateFormat", element); baseDataValidator.reset().parameter("dateFormat").value(dateFormat).notBlank(); } - + if (this.fromApiJsonHelper.parameterExists("locale", element)) { final String locale = this.fromApiJsonHelper.extractStringNamed("locale", element); baseDataValidator.reset().parameter("locale").value(locale).notBlank(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/service/StaffReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/service/StaffReadPlatformService.java index f56c6ccf5..3b17fb583 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/service/StaffReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/service/StaffReadPlatformService.java @@ -37,6 +37,6 @@ public interface StaffReadPlatformService { Collection retrieveAllStaffInOfficeAndItsParentOfficeHierarchy(Long officeId, boolean loanOfficersOnly); Collection retrieveAllStaff(String sqlSearch, Long officeId, boolean loanOfficersOnly, String status); - + Object[] hasAssociatedItems(final Long staffId); } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/service/StaffReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/service/StaffReadPlatformServiceImpl.java index 48bc9b43a..f49abd6ee 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/service/StaffReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/service/StaffReadPlatformServiceImpl.java @@ -166,7 +166,7 @@ public class StaffReadPlatformServiceImpl implements StaffReadPlatformService { @Override public Collection retrieveAllStaffForDropdown(final Long officeId) { - + //adding the Authorization criteria so that a user cannot see an employee who does not belong to his office or a sub office for his office. final String hierarchy = this.context.authenticatedUser().getOffice().getHierarchy()+"%"; @@ -187,10 +187,10 @@ public class StaffReadPlatformServiceImpl implements StaffReadPlatformService { @Override public StaffData retrieveStaff(final Long staffId) { - + //adding the Authorization criteria so that a user cannot see an employee who does not belong to his office or a sub office for his office. final String hierarchy = this.context.authenticatedUser().getOffice().getHierarchy()+ "%"; - + try { final StaffMapper rm = new StaffMapper(); @@ -210,17 +210,17 @@ public class StaffReadPlatformServiceImpl implements StaffReadPlatformService { } private Collection retrieveAllStaff(final String extraCriteria, Long officeId) { - + final StaffMapper rm = new StaffMapper(); String sql = "select " + rm.schema(); final String hierarchy = this.context.authenticatedUser().getOffice().getHierarchy()+"%"; if (StringUtils.isNotBlank(extraCriteria)){ - sql += " where " + extraCriteria; + sql += " where " + extraCriteria; } sql = sql + " order by s.lastname"; if(officeId==null){ return this.jdbcTemplate.query(sql, rm, new Object[] {hierarchy }); - } + } return this.jdbcTemplate.query(sql, rm, new Object[] {officeId, hierarchy }); } @@ -252,13 +252,13 @@ public class StaffReadPlatformServiceImpl implements StaffReadPlatformService { } } //adding the Authorization criteria so that a user cannot see an employee who does not belong to his office or a sub office for his office. - + extraCriteria.append(" and o.hierarchy like ? "); if (StringUtils.isNotBlank(extraCriteria.toString())) { extraCriteria.delete(0, 4); } - + // remove begin four letter including a space from the string. return extraCriteria.toString(); } @@ -270,21 +270,21 @@ public class StaffReadPlatformServiceImpl implements StaffReadPlatformService { sql = sql + " order by s.lastname"; return this.jdbcTemplate.query(sql, this.staffInOfficeHierarchyMapper, new Object[] { officeId }); } - + @Override public Object[] hasAssociatedItems(final Long staffId){ - ArrayList params = new ArrayList(); - + ArrayList params = new ArrayList(); + String sql = "select c.display_name as client, g.display_name as grp,l.loan_officer_id as loan, s.field_officer_id as sav"+ " from m_staff staff "+ " left outer join m_client c on staff.id = c.staff_id AND c.status_enum < ? "+ " left outer join m_group g on staff.id = g.staff_id " + " left outer join m_loan l on staff.id = l.loan_officer_id and l.loan_status_id < ? " + - " left outer join m_savings_account s on c.staff_id = s.field_officer_id and s.status_enum < ? "+ + " left outer join m_savings_account s on c.staff_id = s.field_officer_id and s.status_enum < ? "+ " where staff.id = ? "+ " group by staff.id, client, grp, loan, sav"; - - + + List> result = this.jdbcTemplate.queryForList( sql, new Object[] { @@ -306,9 +306,9 @@ public class StaffReadPlatformServiceImpl implements StaffReadPlatformService { if (map.get("sav") != null) { params.add("savings account"); } - } + } } return params.toArray(); - + } } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/api/TellerApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/api/TellerApiResource.java index 3b5d0d499..ccf419ea1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/api/TellerApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/api/TellerApiResource.java @@ -316,7 +316,7 @@ public class TellerApiResource { final Date fromDate = null; final Date toDate = null; - + final SearchParameters searchParameters = SearchParameters.forPagination(offset, limit, orderBy, sortOrder); final CashierTransactionsWithSummaryData cashierTxnWithSummary = this.readPlatformService.retrieveCashierTransactionsWithSummary( diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/CashierData.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/CashierData.java index e16704f62..290f35942 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/CashierData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/CashierData.java @@ -46,7 +46,7 @@ public final class CashierData implements Serializable { private final Boolean isFullDay; private final String startTime; private final String endTime; - + // Template fields private final String officeName; private final String tellerName; @@ -56,7 +56,7 @@ public final class CashierData implements Serializable { /* * Creates a new cashier. */ - private CashierData(final Long id, final Long officeId, String officeName, + private CashierData(final Long id, final Long officeId, String officeName, final Long staffId, final String staffName, final Long tellerId, final String tellerName, final String description, final Date startDate, final Date endDate, final Boolean isFullDay, @@ -71,20 +71,20 @@ public final class CashierData implements Serializable { this.isFullDay = isFullDay; this.startTime = startTime; this.endTime = endTime; - + this.officeName = officeName; this.tellerName = tellerName; this.staffName = staffName; this.staffOptions = staffOptions; - + } /** * Creates a new cashier. - * + * *

The valid from/to dates may be used to define a time period in which * the cashier is assignable to a teller.

- * + * *

The start/end times may be used to define a time period in which * the cashier works part time.

* @@ -103,20 +103,20 @@ public final class CashierData implements Serializable { * @param endTime the end time of this cashier * @return */ - public static CashierData instance(final Long id, final Long officeId, String officeName, + public static CashierData instance(final Long id, final Long officeId, String officeName, final Long staffId, final String staffName, final Long tellerId, final String tellerName, final String description, final Date startDate, final Date endDate, final Boolean isFullDay, final String startTime, final String endTime) { - return new CashierData(id, officeId, officeName, staffId, staffName, tellerId, tellerName, + return new CashierData(id, officeId, officeName, staffId, staffName, tellerId, tellerName, description, startDate, endDate, isFullDay, startTime, endTime, null); } - + /* * Creates a new cashier. */ - public static CashierData template (final Long officeId, final String officeName, + public static CashierData template (final Long officeId, final String officeName, final Long tellerId, final String tellerName, final Collection staffOptions) { - return new CashierData(null, officeId, officeName, null, null, tellerId, tellerName, + return new CashierData(null, officeId, officeName, null, null, tellerId, tellerName, null, null, null, null, null, null, staffOptions); } @@ -167,7 +167,7 @@ public final class CashierData implements Serializable { /** * Returns the valid from date of this cashier. - * + * *

The valid from/to dates may be used to define a time period in which * the cashier is assignable to a teller.

* @@ -179,7 +179,7 @@ public final class CashierData implements Serializable { /** * Returns the valid to date of this cashier. - * + * *

The valid from/to dates may be used to define a time period in which * the cashier is assignable to a teller.

* @@ -200,7 +200,7 @@ public final class CashierData implements Serializable { /** * Returns the start time of this cashier. - * + * *

The start/end times may be used to define a time period in which * the cashier works part time.

* @@ -212,7 +212,7 @@ public final class CashierData implements Serializable { /** * Returns the end time of this cashier. - * + * *

The start/end times may be used to define a time period in which * the cashier works part time.

* @@ -229,7 +229,7 @@ public final class CashierData implements Serializable { public String getTellerName() { return tellerName; } - + public String getStaffName() { return staffName; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/CashierTransactionData.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/CashierTransactionData.java index 89c81a9a3..66322585a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/CashierTransactionData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/CashierTransactionData.java @@ -37,26 +37,26 @@ public final class CashierTransactionData implements Serializable { private final String entityType; private final String txnNote; private final Date createdDate; - + // Template fields private final Long officeId; private final String officeName; private final Long tellerId; private final String tellerName; private final String cashierName; - + private final CashierData cashierData; private final Date startDate; private final Date endDate; - + private final Collection currencyOptions; /* * Creates a new cashier. */ - private CashierTransactionData(final Long id, final Long cashierId, CashierTxnType txnType, - final BigDecimal txnAmount, final Date txnDate, String txnNote, - String entityType, Long entityId, Date createdDate, + private CashierTransactionData(final Long id, final Long cashierId, CashierTxnType txnType, + final BigDecimal txnAmount, final Date txnDate, String txnNote, + String entityType, Long entityId, Date createdDate, Long officeId, String officeName, Long tellerId, String tellerName, String cashierName, CashierData cashierData, Date startDate, Date endDate, final Collection currencyOptions) { this.id = id; @@ -68,17 +68,17 @@ public final class CashierTransactionData implements Serializable { this.entityType = entityType; this.entityId = entityId; this.createdDate = createdDate; - + this.officeId = officeId; this.officeName = officeName; this.tellerId = tellerId; this.tellerName = tellerName; this.cashierName = cashierName; this.cashierData = cashierData; - + this.startDate = startDate; this.endDate = endDate; - + this.currencyOptions = currencyOptions; } @@ -88,16 +88,16 @@ public final class CashierTransactionData implements Serializable { final Long officeId, final String officeName, final Long tellerId, final String tellerName, final String cashierName, final CashierData cashierData, Date startDate, Date endDate) { - return new CashierTransactionData(id, cashierId, txnType, txnAmount, txnDate, txnNote, entityType, + return new CashierTransactionData(id, cashierId, txnType, txnAmount, txnDate, txnNote, entityType, entityId, createdDate, officeId, officeName, tellerId, tellerName, cashierName, cashierData, startDate, endDate, null); } - - public static CashierTransactionData template (final Long cashierId, + + public static CashierTransactionData template (final Long cashierId, final Long tellerId, final String tellerName, final Long officeId, final String officeName, final String cashierName, final CashierData cashierData, Date startDate, Date endDate, final Collection currencyOptions) { - return new CashierTransactionData(null, cashierId, null, null, null, null, null, + return new CashierTransactionData(null, cashierId, null, null, null, null, null, null, null, officeId, officeName, tellerId, tellerName, cashierName, cashierData, startDate, endDate, currencyOptions); } @@ -109,27 +109,27 @@ public final class CashierTransactionData implements Serializable { public Long getCashierId() { return cashierId; } - + public CashierTxnType getTxnType() { return txnType; } - + public BigDecimal getTxnAmount() { return txnAmount; } - + public Date getTxnDate() { return txnDate; } - + public String getTxnNote() { return txnNote; } - + public String getEntityType() { return entityType; } - + public Long getEntityId() { return entityId; } @@ -141,7 +141,7 @@ public final class CashierTransactionData implements Serializable { public Long getOfficeId() { return officeId; } - + public String getOfficeName() { return officeName; } @@ -149,7 +149,7 @@ public final class CashierTransactionData implements Serializable { public Long getTellerId() { return tellerId; } - + public String getTellerName() { return tellerName; } @@ -157,11 +157,11 @@ public final class CashierTransactionData implements Serializable { public String getCashierName() { return cashierName; } - + public Date getStartDate() { return startDate; } - + public Date getEndDate() { return endDate; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/CashierTransactionTypeTotalsData.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/CashierTransactionTypeTotalsData.java index a4a576a82..6e08a000c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/CashierTransactionTypeTotalsData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/CashierTransactionTypeTotalsData.java @@ -26,7 +26,7 @@ public final class CashierTransactionTypeTotalsData implements Serializable { private final BigDecimal cashTotal; private CashierTransactionTypeTotalsData ( - final Integer cashierTxnType, + final Integer cashierTxnType, final BigDecimal cashTotal ) { this.cashierTxnType = cashierTxnType; @@ -34,7 +34,7 @@ public final class CashierTransactionTypeTotalsData implements Serializable { } public static CashierTransactionTypeTotalsData instance( - final Integer cashierTxnType, + final Integer cashierTxnType, final BigDecimal cashTotal ) { return new CashierTransactionTypeTotalsData( @@ -44,7 +44,7 @@ public final class CashierTransactionTypeTotalsData implements Serializable { public Integer getCashierTxnType() { return cashierTxnType; } - + public BigDecimal getCashTotal() { return cashTotal; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/CashierTransactionsWithSummaryData.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/CashierTransactionsWithSummaryData.java index 9854eee40..bc07e99cf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/CashierTransactionsWithSummaryData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/CashierTransactionsWithSummaryData.java @@ -24,7 +24,7 @@ import java.math.BigDecimal; import org.apache.fineract.infrastructure.core.service.Page; public final class CashierTransactionsWithSummaryData implements Serializable { - + private final BigDecimal sumCashAllocation; private final BigDecimal sumInwardCash; private final BigDecimal sumOutwardCash; @@ -39,7 +39,7 @@ public final class CashierTransactionsWithSummaryData implements Serializable { private final Page cashierTransactions; private CashierTransactionsWithSummaryData( - final Page cashierTransactions, + final Page cashierTransactions, final BigDecimal sumCashAllocation, final BigDecimal sumInwardCash, final BigDecimal sumOutwardCash, @@ -65,7 +65,7 @@ public final class CashierTransactionsWithSummaryData implements Serializable { } public static CashierTransactionsWithSummaryData instance( - final Page cashierTransactions, + final Page cashierTransactions, final BigDecimal sumCashAllocation, final BigDecimal sumInwardCash, final BigDecimal sumOutwardCash, @@ -76,13 +76,13 @@ public final class CashierTransactionsWithSummaryData implements Serializable { final Long cashierId, final String cashierName ) { - - final BigDecimal netCash = + + final BigDecimal netCash = sumCashAllocation.add(sumInwardCash). subtract(sumOutwardCash). - subtract(sumCashSettlement); + subtract(sumCashSettlement); return new CashierTransactionsWithSummaryData( - cashierTransactions, + cashierTransactions, sumCashAllocation, sumInwardCash, sumOutwardCash, @@ -109,15 +109,15 @@ public final class CashierTransactionsWithSummaryData implements Serializable { public BigDecimal getNetCash() { return netCash; } - + public String getOfficeName() { return officeName; } - + public Long getTellerId() { return tellerId; } - + public String getTellerName() { return tellerName; } @@ -125,12 +125,12 @@ public final class CashierTransactionsWithSummaryData implements Serializable { public Long getCashierId() { return cashierId; } - + public String getCashierName() { return cashierName; } public Page getCashierTransactions() { return cashierTransactions; } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/TellerData.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/TellerData.java index 439fb72e2..7fa4f1fd1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/TellerData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/data/TellerData.java @@ -44,16 +44,16 @@ public final class TellerData implements Serializable { private final Long debitAccountId; private final Long creditAccountId; private final String name; - + private final String description; private final LocalDate startDate; private final LocalDate endDate; private final TellerStatus status; private final Boolean hasTransactions; private final Boolean hasMappedCashiers; - + private String officeName; - + private final Collection officeOptions; private final Collection staffOptions; @@ -105,7 +105,7 @@ public final class TellerData implements Serializable { tellerData.officeName = officeName; return tellerData; } - + public static TellerData lookup(final Long id, final String name) { return new TellerData(id, null, null, null, name, null, null, null, null, null, null); } @@ -129,7 +129,7 @@ public final class TellerData implements Serializable { public String getName() { return this.name; } - + public String getOfficeName() { return this.officeName; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/Cashier.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/Cashier.java index 64ba634c2..b4c9b5244 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/Cashier.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/Cashier.java @@ -33,7 +33,7 @@ import java.util.Map; * Provides the base model for a cashier. Represents a row in the * "m_cashiers" database table, with each column mapped to a property * of this class. - * + * * @author Markus Geiss * @since 2.0.0 */ @@ -206,7 +206,7 @@ public class Cashier extends AbstractPersistableCustom { /** * Returns the office of this cashier. - * + * * @return the office of this cashier * @see org.apache.fineract.organisation.office.domain.Office */ @@ -252,7 +252,7 @@ public class Cashier extends AbstractPersistableCustom { /** * Sets the office of this cashier. - * + * * @param office * the office of this cashier * @see org.apache.fineract.organisation.office.domain.Office @@ -263,7 +263,7 @@ public class Cashier extends AbstractPersistableCustom { /** * Returns the staff of this cashier. - * + * * @return the staff of this cashier * @see org.apache.fineract.organisation.staff.domain.Staff */ @@ -273,7 +273,7 @@ public class Cashier extends AbstractPersistableCustom { /** * Sets the staff of this cashier. - * + * * @param staff * the staff of this cashier * @see org.apache.fineract.organisation.staff.domain.Staff @@ -284,7 +284,7 @@ public class Cashier extends AbstractPersistableCustom { /** * Returns the teller of this cashier. - * + * * @return the teller of this cashier * @see org.apache.fineract.organisation.teller.domain.Teller */ @@ -294,7 +294,7 @@ public class Cashier extends AbstractPersistableCustom { /** * Sets the teller of this cashier. - * + * * @param teller * the teller of this cashier * @see org.apache.fineract.organisation.teller.domain.Teller @@ -305,7 +305,7 @@ public class Cashier extends AbstractPersistableCustom { /** * Returns the description of this cashier. . - * + * * @return the description of this cashier or {@code null} if not present. */ public String getDescription() { @@ -314,7 +314,7 @@ public class Cashier extends AbstractPersistableCustom { /** * Sets the description of this cashier. - * + * * @param description * the description of this cashier */ @@ -324,12 +324,12 @@ public class Cashier extends AbstractPersistableCustom { /** * Returns the valid from date of this cashier. - * + * *

* The valid from/to dates may be used to define a time period in which the * cashier is assignable to a teller. *

- * + * * @return the valid from date of this cashier */ public Date getStartDate() { @@ -346,12 +346,12 @@ public class Cashier extends AbstractPersistableCustom { /** * Sets the valid from date of this cashier. - * + * *

* The valid from/to dates may be used to define a time period in which the * cashier is assignable to a teller. *

- * + * * @param startDate validFrom * the valid from date of this cashier */ @@ -361,12 +361,12 @@ public class Cashier extends AbstractPersistableCustom { /** * Returns the valid to date of this cashier. - * + * *

* The valid from/to dates may be used to define a time period in which the * cashier is assignable to a teller. *

- * + * * @return the valid to date of this cashier */ public Date getEndDate() { @@ -383,12 +383,12 @@ public class Cashier extends AbstractPersistableCustom { /** * Sets the valid to date of this cashier. - * + * *

* The valid from/to dates may be used to define a time period in which the * cashier is assignable to a teller. *

- * + * * @param endDate validTo * the valid to date of this cashier */ @@ -398,7 +398,7 @@ public class Cashier extends AbstractPersistableCustom { /** * Returns whether this cashier works part time or not. - * + * * @return {@code true} if this cashier works part time; {@code false} * otherwise */ @@ -408,7 +408,7 @@ public class Cashier extends AbstractPersistableCustom { /** * Sets the part time flag of this cashier. - * + * * @param isFullDay partTime * the part time flag of this cashier */ @@ -418,12 +418,12 @@ public class Cashier extends AbstractPersistableCustom { /** * Returns the start time of this cashier. - * + * *

* The start/end times may be used to define a time period in which the * cashier works part time. *

- * + * * @return the start time of this cashier */ public String getStartTime() { @@ -432,12 +432,12 @@ public class Cashier extends AbstractPersistableCustom { /** * Set the start time of this cashier. - * + * *

* The start/end times may be used to define a time period in which the * cashier works part time. *

- * + * * @param startTime * the start time of this cashier */ @@ -447,12 +447,12 @@ public class Cashier extends AbstractPersistableCustom { /** * Returns the end time of this cashier. - * + * *

* The start/end times may be used to define a time period in which the * cashier works part time. *

- * + * * @return the end time of this cashier */ public String getEndTime() { @@ -461,12 +461,12 @@ public class Cashier extends AbstractPersistableCustom { /** * Sets the end time of this cashier. - * + * *

* The start/end times may be used to define a time period in which the * cashier works part time. *

- * + * * @param endTime * the end time of this cashier */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTransaction.java index aa57d1d7d..19b60c3eb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTransaction.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTransaction.java @@ -37,37 +37,37 @@ public class CashierTransaction extends AbstractPersistableCustom { @Transient private Office office; - + @Transient private Teller teller; - + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "cashier_id", nullable = false) private Cashier cashier; - + @Column(name = "txn_type", nullable = false) private Integer txnType; - + @Temporal(TemporalType.TIMESTAMP) @Column(name = "txn_date", nullable = false) private Date txnDate; @Column(name = "txn_amount", scale = 6, precision = 19, nullable = false) private BigDecimal txnAmount; - + @Column(name = "txn_note", nullable = true) private String txnNote; - + @Column(name = "entity_type", nullable = true) private String entityType; - + @Column(name = "entity_id", nullable = true) private Long entityId; @Temporal(TemporalType.TIMESTAMP) @Column(name = "created_date", nullable = false) private Date createdDate; - + @Column(name = "currency_code", nullable = true) private String currencyCode; @@ -77,7 +77,7 @@ public class CashierTransaction extends AbstractPersistableCustom { public CashierTransaction() { super(); } - + public static CashierTransaction fromJson( final Cashier cashier, final JsonCommand command) { @@ -90,12 +90,12 @@ public class CashierTransaction extends AbstractPersistableCustom { final String currencyCode = command.stringValueOfParameterNamed("currencyCode"); // TODO: get client/loan/savings details - return new CashierTransaction (cashier, txnType, txnAmount, txnDate, + return new CashierTransaction (cashier, txnType, txnAmount, txnDate, entityType, entityId, txnNote, currencyCode); - + } - - public CashierTransaction (Cashier cashier, Integer txnType, BigDecimal txnAmount, + + public CashierTransaction (Cashier cashier, Integer txnType, BigDecimal txnAmount, LocalDate txnDate, String entityType, Long entityId, String txnNote, String currencyCode) { this.cashier = cashier; this.txnType = txnType; @@ -106,17 +106,17 @@ public class CashierTransaction extends AbstractPersistableCustom { this.entityType = entityType; this.entityId = entityId; this.txnNote = txnNote; - this.createdDate = new Date(); + this.createdDate = new Date(); this.currencyCode = currencyCode; } - + public Map update(final JsonCommand command) { final Map actualChanges = new LinkedHashMap<>(7); final String dateFormatAsInput = command.dateFormat(); - final String localeAsInput = command.locale(); - + final String localeAsInput = command.locale(); + final String txnTypeParamName = "txnType"; if (command.isChangeInIntegerParameterNamed(txnTypeParamName, this.txnType)) { final Integer newValue = command.integerValueOfParameterNamed(txnTypeParamName); @@ -134,28 +134,28 @@ public class CashierTransaction extends AbstractPersistableCustom { final LocalDate newValue = command.localDateValueOfParameterNamed(txnDateParamName); this.txnDate = newValue.toDate(); } - + final String txnAmountParamName = "txnAmount"; if (command.isChangeInBigDecimalParameterNamed(txnAmountParamName, this.txnAmount)) { final BigDecimal newValue = command.bigDecimalValueOfParameterNamed(txnAmountParamName); actualChanges.put(txnAmountParamName, newValue); this.txnAmount = newValue; } - + final String txnNoteParamName = "txnNote"; if (command.isChangeInStringParameterNamed(txnNoteParamName, this.txnNote)) { final String newValue = command.stringValueOfParameterNamed(txnNoteParamName); actualChanges.put(txnNoteParamName, newValue); this.txnNote = newValue; } - + final String currencyCodeParamName = "currencyCode"; if (command.isChangeInStringParameterNamed(currencyCodeParamName, this.currencyCode)) { final String newValue = command.stringValueOfParameterNamed(currencyCodeParamName); actualChanges.put(currencyCodeParamName, newValue); this.currencyCode = newValue; } - + return actualChanges; } @@ -227,7 +227,7 @@ public class CashierTransaction extends AbstractPersistableCustom { public Date getTxnDate() { return txnDate; } - + public LocalDate getTxnLocalDate() { LocalDate txnLocalDate = null; if (this.txnDate != null) { @@ -264,7 +264,7 @@ public class CashierTransaction extends AbstractPersistableCustom { public String getTxnNote() { return txnNote; } - + public BigDecimal getTxnAmount() { return txnAmount; } @@ -272,11 +272,11 @@ public class CashierTransaction extends AbstractPersistableCustom { public void setTxnNote (String txnNote) { this.txnNote = txnNote; } - + public String getCurrencyCode() { return this.currencyCode; } - + public void setCurrencyCode(String currencyCode) { this.currencyCode = currencyCode; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTxnType.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTxnType.java index 8883efa5c..e307e27b7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTxnType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTxnType.java @@ -21,42 +21,42 @@ package org.apache.fineract.organisation.teller.domain; import java.io.Serializable; public class CashierTxnType implements Serializable { - + private Integer id; private String value; - + public static final CashierTxnType ALLOCATE = new CashierTxnType (101, "Allocate Cash"); public static final CashierTxnType SETTLE = new CashierTxnType (102, "Settle Cash"); public static final CashierTxnType INWARD_CASH_TXN = new CashierTxnType (103, "Cash In"); public static final CashierTxnType OUTWARD_CASH_TXN = new CashierTxnType (104, "Cash Out"); - + private CashierTxnType () { } - + private CashierTxnType (Integer id, String value) { this.id = id; this.value = value; } - + public Integer getId () { return id; } - + public String getValue () { return value; } - + public static CashierTxnType getCashierTxnType (Integer id) { CashierTxnType retVal = null; - + switch(id) { - case 101: + case 101: retVal = ALLOCATE; break; - case 102: + case 102: retVal = SETTLE; break; - case 103: + case 103: retVal = INWARD_CASH_TXN; break; - case 104: + case 104: retVal = OUTWARD_CASH_TXN; break; default: break; diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/Teller.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/Teller.java index 53152bf4e..cd0b484b3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/Teller.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/Teller.java @@ -82,10 +82,10 @@ public class Teller extends AbstractPersistableCustom { public Teller() { super(); } - - private Teller (final Office staffOffice, final String name, final String description, final LocalDate startDate, + + private Teller (final Office staffOffice, final String name, final String description, final LocalDate startDate, final LocalDate endDate, final TellerStatus status) { - + this.name = StringUtils.defaultIfEmpty(name, null); this.description = StringUtils.defaultIfEmpty(description, null); if (startDate != null) { @@ -98,14 +98,14 @@ public class Teller extends AbstractPersistableCustom { this.status = status.getValue(); } this.office = staffOffice; - + /* if (StringUtils.isNotBlank(name)) { this.name = name.trim(); } else { this.name = null; } - + if (StringUtils.isNotBlank(description)) { this.description = description.trim(); } else { @@ -114,7 +114,7 @@ public class Teller extends AbstractPersistableCustom { } - + public static Teller fromJson(final Office tellerOffice, final JsonCommand command) { final String name = command.stringValueOfParameterNamed("name"); final String description = command.stringValueOfParameterNamed("description"); @@ -125,14 +125,14 @@ public class Teller extends AbstractPersistableCustom { return new Teller (tellerOffice, name, description, startDate, endDate, status); } - + public Map update(Office tellerOffice, final JsonCommand command) { final Map actualChanges = new LinkedHashMap<>(7); final String dateFormatAsInput = command.dateFormat(); final String localeAsInput = command.locale(); - + final String officeIdParamName = "officeId"; if (command.isChangeInLongParameterNamed(officeIdParamName, this.officeId())) { final long newValue = command.longValueOfParameterNamed(officeIdParamName); @@ -146,7 +146,7 @@ public class Teller extends AbstractPersistableCustom { actualChanges.put(nameParamName, newValue); this.name = newValue; } - + final String descriptionParamName = "description"; if (command.isChangeInStringParameterNamed(descriptionParamName, this.description)) { final String newValue = command.stringValueOfParameterNamed(descriptionParamName); @@ -175,7 +175,7 @@ public class Teller extends AbstractPersistableCustom { final LocalDate newValue = command.localDateValueOfParameterNamed(endDateParamName); this.endDate = newValue.toDate(); } - + final String statusParamName = "status"; if (command.isChangeInIntegerParameterNamed(statusParamName, getStatus())) { final Integer valueAsInput = command.integerValueOfParameterNamed(statusParamName); @@ -183,7 +183,7 @@ public class Teller extends AbstractPersistableCustom { final Integer newValue = command.integerValueOfParameterNamed(statusParamName); final TellerStatus status = TellerStatus.fromInt(newValue); if (status != TellerStatus.INVALID) { - this.status = status.getValue(); + this.status = status.getValue(); } } @@ -235,7 +235,7 @@ public class Teller extends AbstractPersistableCustom { public Date getStartDate() { return startDate; } - + public LocalDate getStartLocalDate() { LocalDate startLocalDate = null; if (this.startDate != null) { @@ -251,7 +251,7 @@ public class Teller extends AbstractPersistableCustom { public Date getEndDate() { return endDate; } - + public LocalDate getEndLocalDate() { LocalDate endLocalDate = null; if (this.endDate != null) { @@ -271,7 +271,7 @@ public class Teller extends AbstractPersistableCustom { public void setStatus(Integer status) { this.status = status; } - + public Long officeId() { return this.office.getId(); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/TellerRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/TellerRepositoryWrapper.java index 6b7f4ef5a..87b5fdb1b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/TellerRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/TellerRepositoryWrapper.java @@ -40,15 +40,15 @@ public class TellerRepositoryWrapper { teller.initializeLazyCollections(); return teller; } - + public Teller save(final Teller teller) { return this.repository.save(teller) ; } - + public Teller saveAndFlush(final Teller teller) { return this.repository.saveAndFlush(teller) ; } - + public void delete(final Teller teller) { this.repository.delete(teller); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/TellerStatus.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/TellerStatus.java index 566bb86d1..6c2be91b6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/TellerStatus.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/TellerStatus.java @@ -23,7 +23,7 @@ package org.apache.fineract.organisation.teller.domain; */ public enum TellerStatus { - + INVALID(0, "tellerStatusType.invalid"), PENDING(100, "tellerStatusType.pending"), ACTIVE(300, "tellerStatusType.active"), @@ -85,5 +85,5 @@ public enum TellerStatus { public boolean isInactive() { return this.value.equals(TellerStatus.INACTIVE.getValue()); } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/exception/CashierExistForTellerException.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/exception/CashierExistForTellerException.java index aa11e329c..dfe354cac 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/exception/CashierExistForTellerException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/exception/CashierExistForTellerException.java @@ -22,7 +22,7 @@ import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainR public class CashierExistForTellerException extends AbstractPlatformDomainRuleException{ - + private static final String ERROR_MESSAGE_CODE = "error.msg.cashier.is.associated.with.this.teller"; private static final String DEFAULT_ERROR_MESSAGE = "Cannot delete teller, Cashier is associated for this teller "; diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/AllocateCashToCashierCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/AllocateCashToCashierCommandHandler.java index c033bc1f1..73bffa1dc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/AllocateCashToCashierCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/AllocateCashToCashierCommandHandler.java @@ -45,7 +45,7 @@ public class AllocateCashToCashierCommandHandler implements NewCommandSourceHand @Override public CommandProcessingResult processCommand(final JsonCommand command) { - + return this.writePlatformService.allocateCashToCashier(command.subentityId(), command); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/AllocateCashierToTellerCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/AllocateCashierToTellerCommandHandler.java index 3076462e1..3b5c9b161 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/AllocateCashierToTellerCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/AllocateCashierToTellerCommandHandler.java @@ -45,7 +45,7 @@ public class AllocateCashierToTellerCommandHandler implements NewCommandSourceHa @Override public CommandProcessingResult processCommand(final JsonCommand command) { - + return this.writePlatformService.allocateCashierToTeller( command.entityId(), command); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/DeleteCashierAllocationCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/DeleteCashierAllocationCommandHandler.java index 0d52592c9..376511ae4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/DeleteCashierAllocationCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/DeleteCashierAllocationCommandHandler.java @@ -52,7 +52,7 @@ public class DeleteCashierAllocationCommandHandler implements NewCommandSourceHa @Override public CommandProcessingResult processCommand(final JsonCommand command) { - return this.writePlatformService.deleteCashierAllocation(command.entityId(), + return this.writePlatformService.deleteCashierAllocation(command.entityId(), command.subentityId(), command); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/SettleCashFromCashierCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/SettleCashFromCashierCommandHandler.java index 4f705ec66..5e131f5a1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/SettleCashFromCashierCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/SettleCashFromCashierCommandHandler.java @@ -45,7 +45,7 @@ public class SettleCashFromCashierCommandHandler implements NewCommandSourceHand @Override public CommandProcessingResult processCommand(final JsonCommand command) { - + return this.writePlatformService.settleCashFromCashier(command.subentityId(), command); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/UpdateCashierAllocationCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/UpdateCashierAllocationCommandHandler.java index f8136dac3..6563e11f2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/UpdateCashierAllocationCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/handler/UpdateCashierAllocationCommandHandler.java @@ -52,7 +52,7 @@ public class UpdateCashierAllocationCommandHandler implements NewCommandSourceHa @Override public CommandProcessingResult processCommand(final JsonCommand command) { - return this.writePlatformService.updateCashierAllocation(command.entityId(), + return this.writePlatformService.updateCashierAllocation(command.entityId(), command.subentityId(), command); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerManagementReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerManagementReadPlatformServiceImpl.java index 0fb5aa034..dbc18e400 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerManagementReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerManagementReadPlatformServiceImpl.java @@ -292,7 +292,7 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement extraCriteria.append(" and (").append(sqlSearch).append(")"); final CashierMapper cm = new CashierMapper(); this.columnValidator.validateSqlInjection(cm.schema(), sqlSearch); - + } if (tellerId != null) { extraCriteria.append(" and teller_id = ").append(tellerId).append(" "); @@ -515,8 +515,8 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement } final CashierTransactionMapper ctm = new CashierTransactionMapper(); - - + + String sql = "select * from (select " + ctm.cashierTxnSchema() + " where txn.cashier_id = ? and txn.currency_code = ? and o.hierarchy like ? " @@ -543,7 +543,7 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement + " and renum.enum_value in ('PAY_CHARGE', 'WAIVE_CHARGE') " + " and (cli_txn.payment_detail_id IS NULL OR payType.is_cash_payment = 1) ) " + " order by created_date "; - + if (searchParameters.isLimited()) { sql = sql + " limit " + searchParameters.getLimit(); if (searchParameters.isOffset()) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerWritePlatformService.java index 09aac457e..cbd16518e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerWritePlatformService.java @@ -61,7 +61,7 @@ public interface TellerWritePlatformService { * @throws org.apache.fineract.infrastructure.core.exception.InvalidJsonException */ public CommandProcessingResult deleteTeller(Long tellerId); - + /** * Allocates a cashier to an existing teller. The allocation can be for a duration * from a date to a date @@ -77,7 +77,7 @@ public interface TellerWritePlatformService { CommandProcessingResult updateCashierAllocation(Long tellerId, Long cashierId, JsonCommand command); - CommandProcessingResult deleteCashierAllocation(final Long tellerId, Long cashierId, + CommandProcessingResult deleteCashierAllocation(final Long tellerId, Long cashierId, JsonCommand command); CommandProcessingResult allocateCashToCashier(Long cashierId, diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerWritePlatformServiceJpaImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerWritePlatformServiceJpaImpl.java index efa09e681..8f50553af 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerWritePlatformServiceJpaImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerWritePlatformServiceJpaImpl.java @@ -259,7 +259,7 @@ public class TellerWritePlatformServiceJpaImpl implements TellerWritePlatformSer } final Cashier cashier = Cashier.fromJson(tellerOffice, teller, staff, startTime, endTime, command); this.cashierTransactionDataValidator.validateCashierAllowedDateAndTime(cashier, teller); - + this.cashierRepository.save(cashier); return new CommandProcessingResultBuilder() // @@ -364,9 +364,9 @@ public class TellerWritePlatformServiceJpaImpl implements TellerWritePlatformSer @Override public CommandProcessingResult settleCashFromCashier(final Long cashierId, JsonCommand command) { - + this.cashierTransactionDataValidator.validateSettleCashAndCashOutTransactions(cashierId, command); - + return doTransactionForCashier(cashierId, CashierTxnType.SETTLE, command); // For // fund // settlement @@ -438,8 +438,8 @@ public class TellerWritePlatformServiceJpaImpl implements TellerWritePlatformSer final JournalEntry debitJournalEntry = JournalEntry.createNew(cashierOffice, null, // payment // detail - debitAccount, cashierTxn.getCurrencyCode(), - + debitAccount, cashierTxn.getCurrencyCode(), + transactionId, false, // manual entry cashierTxn.getTxnDate(), JournalEntryType.DEBIT, cashierTxn.getTxnAmount(), cashierTxn.getTxnNote(), // Description null, null, null, // entity Type, entityId, reference number @@ -447,8 +447,8 @@ public class TellerWritePlatformServiceJpaImpl implements TellerWritePlatformSer final JournalEntry creditJournalEntry = JournalEntry.createNew(cashierOffice, null, // payment // detail - creditAccount, cashierTxn.getCurrencyCode(), - + creditAccount, cashierTxn.getCurrencyCode(), + transactionId, false, // manual entry cashierTxn.getTxnDate(), JournalEntryType.CREDIT, cashierTxn.getTxnAmount(), cashierTxn.getTxnNote(), // Description null, null, null, // entity Type, entityId, reference number diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/data/WorkingDaysData.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/data/WorkingDaysData.java index 84f190696..f12e4c0bd 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/data/WorkingDaysData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/data/WorkingDaysData.java @@ -25,7 +25,7 @@ import java.util.Collection; public class WorkingDaysData { private final Long id; - + private final String recurrence; private final EnumOptionData repaymentRescheduleType; @@ -56,7 +56,7 @@ public class WorkingDaysData { this.extendTermForDailyRepayments = extendTermForDailyRepayments; this.extendTermForRepaymentsOnHolidays = extendTermForRepaymentsOnHolidays; } - + public WorkingDaysData(WorkingDaysData data, Collection repaymentRescheduleOptions) { this.id = data.id; this.recurrence = data.recurrence; diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/RepaymentRescheduleType.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/RepaymentRescheduleType.java index d658f928c..376ab2339 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/RepaymentRescheduleType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/RepaymentRescheduleType.java @@ -44,7 +44,7 @@ public enum RepaymentRescheduleType { public String getCode() { return this.code; } - + public boolean isMoveToNextRepaymentDay() { return this.value.equals(RepaymentRescheduleType.MOVE_TO_NEXT_REPAYMENT_MEETING_DAY.getValue()); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java index b8c0e5b14..601ca6b6e 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java @@ -44,7 +44,7 @@ public class WorkingDays extends AbstractPersistableCustom { @Column(name = "extend_term_holiday_repayment", nullable = false) private Boolean extendTermForRepaymentsOnHolidays; - + protected WorkingDays() { } @@ -73,7 +73,7 @@ public class WorkingDays extends AbstractPersistableCustom { public void setRepaymentReschedulingType(Integer repaymentReschedulingType) { this.repaymentReschedulingType = repaymentReschedulingType; } - + public Boolean getExtendTermForDailyRepayments(){ return this.extendTermForDailyRepayments; } @@ -96,7 +96,7 @@ public class WorkingDays extends AbstractPersistableCustom { actualChanges.put(repaymentRescheduleTypeParamName, WorkingDaysEnumerations.workingDaysStatusType(newValue)); this.repaymentReschedulingType = RepaymentRescheduleType.fromInt(newValue).getValue(); } - + if(command.isChangeInBooleanParameterNamed(WorkingDaysApiConstants.extendTermForDailyRepayments, this.extendTermForDailyRepayments)){ final Boolean newValue = command.booleanPrimitiveValueOfParameterNamed(WorkingDaysApiConstants.extendTermForDailyRepayments); actualChanges.put(WorkingDaysApiConstants.extendTermForDailyRepayments, newValue); diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysReadPlatformServiceImpl.java index 6dca1e079..749d19d6b 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysReadPlatformServiceImpl.java @@ -96,7 +96,7 @@ public class WorkingDaysReadPlatformServiceImpl implements WorkingDaysReadPlatfo Collection repaymentRescheduleOptions = repaymentRescheduleTypeOptions(); return new WorkingDaysData(null, null, null, repaymentRescheduleOptions, null, null); } - + private Collection repaymentRescheduleTypeOptions() { return Arrays.asList( WorkingDaysEnumerations.repaymentRescheduleType(RepaymentRescheduleType.SAME_DAY), diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysUtil.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysUtil.java index 605a891c8..f98064b90 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysUtil.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysUtil.java @@ -53,17 +53,17 @@ public class WorkingDaysUtil { public static boolean isWorkingDay(final WorkingDays workingDays, final LocalDate date) { return CalendarUtils.isValidRedurringDate(workingDays.getRecurrence(), date, date); } - + public static boolean isNonWorkingDay(final WorkingDays workingDays, final LocalDate date) { return !isWorkingDay(workingDays, date); } - + public static void updateWorkingDayIfRepaymentDateIsNonWorkingDay(final AdjustedDateDetailsDTO adjustedDateDetailsDTO, final WorkingDays workingDays) { final LocalDate changedScheduleDate = getOffSetDateIfNonWorkingDay(adjustedDateDetailsDTO.getChangedScheduleDate(), adjustedDateDetailsDTO.getNextRepaymentPeriodDueDate(), workingDays); adjustedDateDetailsDTO.setChangedScheduleDate(changedScheduleDate); } - + public static RepaymentRescheduleType getRepaymentRescheduleType(final WorkingDays workingDays, final LocalDate date) { RepaymentRescheduleType rescheduleType = RepaymentRescheduleType.fromInt(workingDays.getRepaymentReschedulingType()); return rescheduleType; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/api/AccountTransfersApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/api/AccountTransfersApiResource.java index 2481ad756..6a08f33b9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/api/AccountTransfersApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/api/AccountTransfersApiResource.java @@ -140,7 +140,7 @@ public class AccountTransfersApiResource { final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); return this.toApiJsonSerializer.serialize(settings, transfer, AccountTransfersApiConstants.RESPONSE_DATA_PARAMETERS); } - + @GET @Path("templateRefundByTransfer") @Consumes({ MediaType.APPLICATION_JSON }) @@ -161,7 +161,7 @@ public class AccountTransfersApiResource { final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); return this.toApiJsonSerializer.serialize(settings, transferData, AccountTransfersApiConstants.RESPONSE_DATA_PARAMETERS); } - + @POST @Path("refundByTransfer") @Consumes({ MediaType.APPLICATION_JSON }) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/PortfolioAccountDTO.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/PortfolioAccountDTO.java index 5b9be0b1c..acdada4dd 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/PortfolioAccountDTO.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/PortfolioAccountDTO.java @@ -46,7 +46,7 @@ public class PortfolioAccountDTO { this.depositType = null; this.excludeOverDraftAccounts = false; } - + public PortfolioAccountDTO(final Integer accountTypeId, final Long clientId, final String currencyCode, final long[] accountStatus, final Integer depositType) { this.accountTypeId = accountTypeId; @@ -80,11 +80,11 @@ public class PortfolioAccountDTO { public boolean isExcludeOverDraftAccounts() { return this.excludeOverDraftAccounts; } - + public Long getGroupId() { return this.groupId; } - + public void setGroupId(final Long groupId) { this.groupId = groupId; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionDTO.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionDTO.java index f67588eec..60e382aff 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionDTO.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionDTO.java @@ -77,7 +77,7 @@ public class StandingInstructionDTO { return this.startDateRange; } - + public Date endDateRange() { return this.endDateRange; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionData.java index 751b0fc30..179e6cb95 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionData.java @@ -381,7 +381,7 @@ public class StandingInstructionData { return this.toClient; } - + public Long getId() { return this.id; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferStandingInstruction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferStandingInstruction.java index 566b522ef..c696c6f04 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferStandingInstruction.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferStandingInstruction.java @@ -287,12 +287,12 @@ public class AccountTransferStandingInstruction extends AbstractPersistableCusto public void updateLatsRunDate(Date latsRunDate) { this.latsRunDate = latsRunDate; } - + public void updateStatus(Integer status){ this.status = status; } - - /** + + /** * delete the standing instruction by setting the status to 3 and appending "_deleted_" and the id to the name **/ public void delete() { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/StandingInstructionRepository.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/StandingInstructionRepository.java index 09cb7d96f..5411aeaaf 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/StandingInstructionRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/StandingInstructionRepository.java @@ -34,16 +34,16 @@ public interface StandingInstructionRepository extends JpaRepository findByLoanAccountAndStatus(@Param("loan") Loan loan, @Param("status") Integer status); - + @Query(FIND_BY_SAVINGS_AND_STATUS_QUERY) - public Collection findBySavingsAccountAndStatus(@Param("savingsAccount") SavingsAccount savingsAccount, @Param("status") Integer status); + public Collection findBySavingsAccountAndStatus(@Param("savingsAccount") SavingsAccount savingsAccount, @Param("status") Integer status); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersReadPlatformService.java index 924b885a1..0b9eadb76 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersReadPlatformService.java @@ -41,7 +41,7 @@ public interface AccountTransfersReadPlatformService { Page retrieveByStandingInstruction(Long id, SearchParameters searchParameters); Collection fetchPostInterestTransactionIds(Long accountId); - + AccountTransferData retrieveRefundByTransferTemplate(Long fromOfficeId, Long fromClientId, Long fromAccountId, Integer fromAccountType, Long toOfficeId, Long toClientId, Long toAccountId, Integer toAccountType); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersWritePlatformService.java index 107fa69f2..0c931f393 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersWritePlatformService.java @@ -38,7 +38,7 @@ public interface AccountTransfersWritePlatformService { void reverseAllTransactions(Long accountId, PortfolioAccountType accountTypeId); void updateLoanTransaction(Long loanTransactionId, LoanTransaction newLoanTransaction); - + CommandProcessingResult refundByTransfer(JsonCommand command); void reverseTransfersWithFromAccountTransactions(Collection fromTransactionIds, PortfolioAccountType accountTypeId); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersWritePlatformServiceImpl.java index fa5ee1506..18f129064 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersWritePlatformServiceImpl.java @@ -221,7 +221,7 @@ public class AccountTransfersWritePlatformServiceImpl implements AccountTransfer } } - + @Override @Transactional public void reverseTransfersWithFromAccountTransactions(final Collection fromTransactionIds, final PortfolioAccountType accountTypeId) { @@ -473,7 +473,7 @@ public class AccountTransfersWritePlatformServiceImpl implements AccountTransfer private boolean isSavingsToSavingsAccountTransfer(final PortfolioAccountType fromAccountType, final PortfolioAccountType toAccountType) { return fromAccountType.isSavingsAccount() && toAccountType.isSavingsAccount(); } - + @Override @Transactional public CommandProcessingResult refundByTransfer(JsonCommand command) { @@ -486,7 +486,7 @@ public class AccountTransfersWritePlatformServiceImpl implements AccountTransfer final Locale locale = command.extractLocale(); final DateTimeFormatter fmt = DateTimeFormat.forPattern(command.dateFormat()).withLocale(locale); - final PaymentDetail paymentDetail = null; + final PaymentDetail paymentDetail = null; Long transferTransactionId = null; final Long fromLoanAccountId = command.longValueOfParameterNamed(fromAccountIdParamName); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/PortfolioAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/PortfolioAccountReadPlatformServiceImpl.java index dc4edb1e9..a81a8b018 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/PortfolioAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/PortfolioAccountReadPlatformServiceImpl.java @@ -151,16 +151,16 @@ public class PortfolioAccountReadPlatformServiceImpl implements PortfolioAccount sql += " and sa.deposit_type_enum = ?"; sqlParams.add(portfolioAccountDTO.getDepositType()); } - + if(portfolioAccountDTO.isExcludeOverDraftAccounts()){ sql += " and sa.allow_overdraft = 0"; } - + if(portfolioAccountDTO.getClientId() == null && portfolioAccountDTO.getGroupId() != null){ sql += " and sa.group_id = ? "; sqlParams.add(portfolioAccountDTO.getGroupId()); } - + accounts = this.jdbcTemplate.query(sql, this.savingsAccountMapper, sqlParams.toArray()); break; default: @@ -295,24 +295,24 @@ public class PortfolioAccountReadPlatformServiceImpl implements PortfolioAccount fieldOfficerId, fieldOfficerName, currency, amtForTransfer); } } - + private static final class PortfolioLoanAccountRefundByTransferMapper implements RowMapper { private final String schemaSql; public PortfolioLoanAccountRefundByTransferMapper() { - + final StringBuilder amountQueryString = new StringBuilder(400); - amountQueryString.append("(select (SUM(ifnull(mr.principal_completed_derived, 0)) +"); - amountQueryString.append("SUM(ifnull(mr.interest_completed_derived, 0)) + "); - amountQueryString.append("SUM(ifnull(mr.fee_charges_completed_derived, 0)) + "); - amountQueryString.append(" SUM(ifnull(mr.penalty_charges_completed_derived, 0))) as total_in_advance_derived"); - amountQueryString.append(" from m_loan ml INNER JOIN m_loan_repayment_schedule mr on mr.loan_id = ml.id"); - amountQueryString.append(" where ml.id=? and ml.loan_status_id = 300"); - amountQueryString.append(" and mr.duedate >= CURDATE() group by ml.id having"); - amountQueryString.append(" (SUM(ifnull(mr.principal_completed_derived, 0)) + "); - amountQueryString.append(" SUM(ifnull(mr.interest_completed_derived, 0)) + "); - amountQueryString.append("SUM(ifnull(mr.fee_charges_completed_derived, 0)) + "); + amountQueryString.append("(select (SUM(ifnull(mr.principal_completed_derived, 0)) +"); + amountQueryString.append("SUM(ifnull(mr.interest_completed_derived, 0)) + "); + amountQueryString.append("SUM(ifnull(mr.fee_charges_completed_derived, 0)) + "); + amountQueryString.append(" SUM(ifnull(mr.penalty_charges_completed_derived, 0))) as total_in_advance_derived"); + amountQueryString.append(" from m_loan ml INNER JOIN m_loan_repayment_schedule mr on mr.loan_id = ml.id"); + amountQueryString.append(" where ml.id=? and ml.loan_status_id = 300"); + amountQueryString.append(" and mr.duedate >= CURDATE() group by ml.id having"); + amountQueryString.append(" (SUM(ifnull(mr.principal_completed_derived, 0)) + "); + amountQueryString.append(" SUM(ifnull(mr.interest_completed_derived, 0)) + "); + amountQueryString.append("SUM(ifnull(mr.fee_charges_completed_derived, 0)) + "); amountQueryString.append("SUM(ifnull(mr.penalty_charges_completed_derived, 0))) > 0) as totalOverpaid "); final StringBuilder sqlBuilder = new StringBuilder(400); @@ -373,7 +373,7 @@ public class PortfolioAccountReadPlatformServiceImpl implements PortfolioAccount fieldOfficerId, fieldOfficerName, currency, amtForTransfer); } } - + @Override public PortfolioAccountData retrieveOneByPaidInAdvance(Long accountId, Integer accountTypeId) { // TODO Auto-generated method stub @@ -383,7 +383,7 @@ public class PortfolioAccountReadPlatformServiceImpl implements PortfolioAccount try { String sql = null; //final PortfolioAccountType accountType = PortfolioAccountType.fromInt(accountTypeId); - + sql = "select " + this.accountRefundByTransferMapper.schema() + " where la.id = ?"; /* if (currencyCode != null) { sql += " and la.currency_code = ?"; @@ -391,7 +391,7 @@ public class PortfolioAccountReadPlatformServiceImpl implements PortfolioAccount }*/ accountData = this.jdbcTemplate.queryForObject(sql, this.accountRefundByTransferMapper, sqlParams); - + } catch (final EmptyResultDataAccessException e) { throw new AccountTransferNotFoundException(accountId); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionHistoryReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionHistoryReadPlatformServiceImpl.java index ff2070130..36d46cdc7 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionHistoryReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionHistoryReadPlatformServiceImpl.java @@ -129,7 +129,7 @@ public class StandingInstructionHistoryReadPlatformServiceImpl implements Standi paramObj.add(df.format(standingInstructionDTO.startDateRange())); addAndCaluse = true; } - + if (standingInstructionDTO.endDateRange() != null) { if (addAndCaluse) { sqlBuilder.append(" and "); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionWritePlatformServiceImpl.java index 249c6d28c..01ce01960 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionWritePlatformServiceImpl.java @@ -180,7 +180,7 @@ public class StandingInstructionWritePlatformServiceImpl implements StandingInst AccountTransferStandingInstruction standingInstructionsForUpdate = this.standingInstructionRepository.findById(id).get(); // update the "deleted" and "name" properties of the standing instruction standingInstructionsForUpdate.delete(); - + final Map actualChanges = new HashMap<>(); actualChanges.put(statusParamName, StandingInstructionStatus.DELETED.getValue()); return new CommandProcessingResultBuilder() // diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/AccountSummaryCollectionData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/AccountSummaryCollectionData.java index 80de9a5f1..2b207bf9a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/AccountSummaryCollectionData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/AccountSummaryCollectionData.java @@ -30,11 +30,11 @@ public class AccountSummaryCollectionData { private final Collection savingsAccounts; private final Collection shareAccounts ; private final Collection guarantorAccounts; - + private final Collection memberLoanAccounts; private final Collection memberSavingsAccounts; private final Collection memberGuarantorAccounts; - + public AccountSummaryCollectionData(final Collection loanAccounts, final Collection savingsAccounts, final Collection shareAccounts, final Collection guarantorAccounts) { @@ -46,7 +46,7 @@ public class AccountSummaryCollectionData { this.memberSavingsAccounts = null; this.memberGuarantorAccounts = null; } - + public AccountSummaryCollectionData(final Collection loanAccounts, final Collection savingsAccounts, final Collection guarantorAccounts, final Collection memberLoanAccounts, final Collection memberSavingsAccounts, final Collection memberGuarantorAccounts) { @@ -74,7 +74,7 @@ public class AccountSummaryCollectionData { } return returnCollection; } - + private Collection defaultShareAccountsIfEmpty(final Collection collection) { Collection returnCollection = null; if (collection != null && !collection.isEmpty()) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/LoanAccountSummaryData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/LoanAccountSummaryData.java index a4c751791..b69089996 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/LoanAccountSummaryData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/LoanAccountSummaryData.java @@ -44,7 +44,7 @@ public class LoanAccountSummaryData { private final BigDecimal originalLoan; private final BigDecimal loanBalance; private final BigDecimal amountPaid; - + public LoanAccountSummaryData(final Long id, final String accountNo, final String externalId, final Long productId, final String loanProductName, final String shortLoanProductName, final LoanStatusEnumData loanStatus, final EnumOptionData loanType, final Integer loanCycle, final LoanApplicationTimelineData timeline, final Boolean inArrears,final BigDecimal originalLoan,final BigDecimal loanBalance,final BigDecimal amountPaid) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/SavingsAccountSummaryData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/SavingsAccountSummaryData.java index 55e04e972..30e7297da 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/SavingsAccountSummaryData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/SavingsAccountSummaryData.java @@ -53,7 +53,7 @@ public class SavingsAccountSummaryData { public SavingsAccountSummaryData(final Long id, final String accountNo, final String externalId, final Long productId, final String productName, final String shortProductName, final SavingsAccountStatusEnumData status, final CurrencyData currency, - final BigDecimal accountBalance, final EnumOptionData accountType, final SavingsAccountApplicationTimelineData timeline, final EnumOptionData depositType, + final BigDecimal accountBalance, final EnumOptionData accountType, final SavingsAccountApplicationTimelineData timeline, final EnumOptionData depositType, final SavingsAccountSubStatusEnumData subStatus, final LocalDate lastActiveTransactionDate) { this.id = id; this.accountNo = accountNo; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/ShareAccountSummaryData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/ShareAccountSummaryData.java index 034b2ff56..451fb8c76 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/ShareAccountSummaryData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/ShareAccountSummaryData.java @@ -52,12 +52,12 @@ public class ShareAccountSummaryData implements Serializable { if(approvedShares == null) { this.totalApprovedShares = new Long(0) ; }else { - this.totalApprovedShares = approvedShares; + this.totalApprovedShares = approvedShares; } if(pendingForApprovalShares == null) { this.totalPendingForApprovalShares = new Long(0) ; }else { - this.totalPendingForApprovalShares = pendingForApprovalShares; + this.totalPendingForApprovalShares = pendingForApprovalShares; } this.productId = productId; this.productName = productName; @@ -67,7 +67,7 @@ public class ShareAccountSummaryData implements Serializable { this.timeline = timeline; } - + public String getAccountNo() { return this.accountNo; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/service/AccountDetailsReadPlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/service/AccountDetailsReadPlatformServiceJpaRepositoryImpl.java index 153616578..cf8eb26c2 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/service/AccountDetailsReadPlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/service/AccountDetailsReadPlatformServiceJpaRepositoryImpl.java @@ -155,7 +155,7 @@ public class AccountDetailsReadPlatformServiceJpaRepositoryImpl implements Accou final String query = "select " + mapper.schema() + " where sa.client_id = ?" ; return this.jdbcTemplate.query(query, mapper, new Object [] {clientId}); } - + private List retrieveGuarantorLoanAccountDetails( final String loanwhereClause, final Object[] inputs) { final GuarantorLoanAccountSummaryDataMapper rm = new GuarantorLoanAccountSummaryDataMapper(); @@ -163,20 +163,20 @@ public class AccountDetailsReadPlatformServiceJpaRepositoryImpl implements Accou + loanwhereClause; return this.jdbcTemplate.query(sql, rm, inputs); } - + private final static class ShareAccountSummaryDataMapper implements RowMapper { private final String schema ; - + ShareAccountSummaryDataMapper() { final StringBuffer buff = new StringBuffer() .append("sa.id as id, sa.external_id as externalId, sa.status_enum as statusEnum, ") .append("sa.account_no as accountNo, sa.total_approved_shares as approvedShares, sa.total_pending_shares as pendingShares, ") .append("sa.savings_account_id as savingsAccountNo, sa.minimum_active_period_frequency as minimumactivePeriod,") - .append("sa.minimum_active_period_frequency_enum as minimumactivePeriodEnum,") + .append("sa.minimum_active_period_frequency_enum as minimumactivePeriodEnum,") .append("sa.lockin_period_frequency as lockinPeriod, sa.lockin_period_frequency_enum as lockinPeriodEnum, ") .append("sa.submitted_date as submittedDate, sbu.username as submittedByUsername, ") - .append("sbu.firstname as submittedByFirstname, sbu.lastname as submittedByLastname, ") + .append("sbu.firstname as submittedByFirstname, sbu.lastname as submittedByLastname, ") .append("sa.rejected_date as rejectedDate, rbu.username as rejectedByUsername, ") .append("rbu.firstname as rejectedByFirstname, rbu.lastname as rejectedByLastname, ") .append("sa.approved_date as approvedDate, abu.username as approvedByUsername, ") @@ -255,7 +255,7 @@ public class AccountDetailsReadPlatformServiceJpaRepositoryImpl implements Accou return new ShareAccountSummaryData(id, accountNo, externalId, productId, productName, shortProductName, status, currency, approvedShares, pendingShares, timeline); } - + public String schema() { return this.schema ; } @@ -340,7 +340,7 @@ public class AccountDetailsReadPlatformServiceJpaRepositoryImpl implements Accou final EnumOptionData accountTypeData = AccountEnumerations.loanType(accountType); final Integer depositTypeId = JdbcSupport.getInteger(rs, "depositType"); final EnumOptionData depositTypeData = SavingsEnumerations.depositType(depositTypeId); - + final String currencyCode = rs.getString("currencyCode"); final String currencyName = rs.getString("currencyName"); final String currencyNameCode = rs.getString("currencyNameCode"); @@ -381,7 +381,7 @@ public class AccountDetailsReadPlatformServiceJpaRepositoryImpl implements Accou final String closedByLastname = rs.getString("closedByLastname"); final Integer subStatusEnum = JdbcSupport.getInteger(rs, "subStatusEnum"); final SavingsAccountSubStatusEnumData subStatus = SavingsEnumerations.subStatus(subStatusEnum); - + final LocalDate lastActiveTransactionDate = JdbcSupport.getLocalDate(rs, "lastActiveTransactionDate"); final SavingsAccountApplicationTimelineData timeline = new SavingsAccountApplicationTimelineData(submittedOnDate, @@ -404,11 +404,11 @@ public class AccountDetailsReadPlatformServiceJpaRepositoryImpl implements Accou accountsSummary .append(" l.product_id as productId, lp.name as productName, lp.short_name as shortProductName,") .append(" l.loan_status_id as statusId, l.loan_type_enum as loanType,") - + .append("l.principal_disbursed_derived as originalLoan,") .append("l.total_outstanding_derived as loanBalance,") .append("l.total_repayment_derived as amountPaid,") - + .append(" l.loan_product_counter as loanCycle,") .append(" l.submittedon_date as submittedOnDate,") @@ -488,7 +488,7 @@ public class AccountDetailsReadPlatformServiceJpaRepositoryImpl implements Accou final String closedByUsername = rs.getString("closedByUsername"); final String closedByFirstname = rs.getString("closedByFirstname"); final String closedByLastname = rs.getString("closedByLastname"); - + final BigDecimal originalLoan = JdbcSupport.getBigDecimalDefaultToNullIfZero(rs,"originalLoan"); final BigDecimal loanBalance = JdbcSupport.getBigDecimalDefaultToNullIfZero(rs,"loanBalance"); final BigDecimal amountPaid = JdbcSupport.getBigDecimalDefaultToNullIfZero(rs,"amountPaid"); @@ -513,7 +513,7 @@ public class AccountDetailsReadPlatformServiceJpaRepositoryImpl implements Accou return new LoanAccountSummaryData(id, accountNo, externalId, productId, loanProductName, shortLoanProductName, loanStatus, loanType, loanCycle, timeline, inArrears,originalLoan,loanBalance,amountPaid); } - + } private static final class GuarantorLoanAccountSummaryDataMapper implements RowMapper { @@ -603,7 +603,7 @@ public class AccountDetailsReadPlatformServiceJpaRepositoryImpl implements Accou loanBalance, amountPaid, isActive, relationship, onHoldAmount); } - + } } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/api/AccountsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/api/AccountsApiResource.java index f1ab2e814..bc707842c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/api/AccountsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/api/AccountsApiResource.java @@ -76,7 +76,7 @@ public class AccountsApiResource { private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; private final BulkImportWorkbookService bulkImportWorkbookService; private final BulkImportWorkbookPopulatorService bulkImportWorkbookPopulatorService; - + @Autowired public AccountsApiResource(final ApplicationContext applicationContext, final ApiRequestParameterHelper apiRequestParameterHelper, @@ -88,12 +88,12 @@ public class AccountsApiResource { this.applicationContext = applicationContext ; this.apiRequestParameterHelper = apiRequestParameterHelper ; this.toApiJsonSerializer = toApiJsonSerializer ; - this.platformSecurityContext = platformSecurityContext ; + this.platformSecurityContext = platformSecurityContext ; this.commandsSourceWritePlatformService = commandsSourceWritePlatformService ; this.bulkImportWorkbookService=bulkImportWorkbookService; this.bulkImportWorkbookPopulatorService=bulkImportWorkbookPopulatorService; } - + @GET @Path("template") @Consumes({ MediaType.APPLICATION_JSON }) @@ -109,12 +109,12 @@ public class AccountsApiResource { AccountReadPlatformService service = (AccountReadPlatformService) this.applicationContext.getBean(serviceName) ; final AccountData accountData = service.retrieveTemplate(clientId, productId); final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); - return this.toApiJsonSerializer.serialize(settings, accountData, service.getResponseDataParams()); + return this.toApiJsonSerializer.serialize(settings, accountData, service.getResponseDataParams()); }catch(BeansException e) { throw new ResourceNotFoundException(); } } - + @GET @Path("{accountId}") @Consumes({ MediaType.APPLICATION_JSON }) @@ -128,12 +128,12 @@ public class AccountsApiResource { final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); AccountReadPlatformService service = (AccountReadPlatformService) this.applicationContext.getBean(serviceName) ; AccountData data = service.retrieveOne(accountId, settings.isTemplate()) ; - return this.toApiJsonSerializer.serialize(settings, data, service.getResponseDataParams()); + return this.toApiJsonSerializer.serialize(settings, data, service.getResponseDataParams()); }catch(BeansException e) { throw new ResourceNotFoundException(); } } - + @GET @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) @@ -145,12 +145,12 @@ public class AccountsApiResource { AccountReadPlatformService service = (AccountReadPlatformService) this.applicationContext.getBean(serviceName) ; Page data = service.retrieveAll(offset, limit) ; final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); - return this.toApiJsonSerializer.serialize(settings, data, service.getResponseDataParams()); + return this.toApiJsonSerializer.serialize(settings, data, service.getResponseDataParams()); }catch(BeansException e) { throw new ResourceNotFoundException(); } } - + @POST @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) @@ -164,7 +164,7 @@ public class AccountsApiResource { final CommandProcessingResult commandProcessingResult = this.commandsSourceWritePlatformService.logCommandSource(commandWrapper); return this.toApiJsonSerializer.serialize(commandProcessingResult); } - + @POST @Path("{accountId}") @Consumes({ MediaType.APPLICATION_JSON }) @@ -180,7 +180,7 @@ public class AccountsApiResource { final CommandProcessingResult commandProcessingResult = this.commandsSourceWritePlatformService.logCommandSource(commandWrapper); return this.toApiJsonSerializer.serialize(commandProcessingResult); } - + @PUT @Path("{accountId}") @Consumes({ MediaType.APPLICATION_JSON }) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/constants/AccountsApiConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/constants/AccountsApiConstants.java index a52a87e1a..6cf6adc67 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/constants/AccountsApiConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/constants/AccountsApiConstants.java @@ -22,6 +22,6 @@ package org.apache.fineract.portfolio.accounts.constants; public interface AccountsApiConstants { public final String READPLATFORM_NAME = "AccountReadPlatformService" ; - + public final String ACCOUNT_COMMANDSERVICE = "ACCOUNT_COMMANDSERVICE" ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/constants/ShareAccountApiConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/constants/ShareAccountApiConstants.java index 964716f96..cdbf4b191 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/constants/ShareAccountApiConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/accounts/constants/ShareAccountApiConstants.java @@ -41,9 +41,9 @@ public interface ShareAccountApiConstants { // String locale_paramname = "locale" ; - + String dateformat_paramname = "dateFormat" ; - + String id_paramname = "id"; String clientid_paramname = "clientId"; @@ -55,7 +55,7 @@ public interface ShareAccountApiConstants { String approveddate_paramname = "approvedDate"; String activatedate_paramname = "activatedDate" ; - + String fieldofferid_paramname = "fieldOfficerId"; String externalid_paramname = "externalId"; @@ -89,17 +89,17 @@ public interface ShareAccountApiConstants { String numberofshares_paramname = "numberOfShares"; String purchasedprice_paramname = "unitPrice"; - + String note_paramname = "note" ; - + String requesteddate_paramname = "requestedDate" ; - + String additionalshares_paramname = "additionalshares" ; - + String closeddate_paramname = "closedDate"; String shareEntityType = "share"; - + Set supportedParameters = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(locale_paramname, dateformat_paramname, id_paramname,clientid_paramname, productid_paramname, submitteddate_paramname,approveddate_paramname, externalid_paramname, currency_paramname, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/AddressData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/AddressData.java index a7f10aaf2..6f8b2cbe1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/AddressData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/AddressData.java @@ -27,7 +27,7 @@ import java.util.Date; @SuppressWarnings("unused") public class AddressData implements Serializable { - + private final Long client_id; private final String addressType; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/Address.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/Address.java index 2d855e867..cd6cce191 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/Address.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/Address.java @@ -124,10 +124,10 @@ public class Address extends AbstractPersistableCustom { //this.createdOn = createdOn; this.updatedBy = updatedBy; //this.updatedOn = updatedOn; - + if (createdOn != null) { this.createdOn = createdOn.toDate(); - + } if (updatedOn != null) { @@ -169,8 +169,8 @@ public class Address extends AbstractPersistableCustom { final String updatedBy = command.stringValueOfParameterNamed("updatedBy"); final LocalDate updatedOn = command.localDateValueOfParameterNamed("updatedOn"); - - + + return new Address(street, addressLine1, addressLine2, addressLine3, townVillage, city, countyDistrict, stateProvince, country, postalCode, latitude, longitude, createdBy, createdOn, updatedBy, updatedOn); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/service/AddressWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/service/AddressWritePlatformServiceImpl.java index e9169dadf..f1597e306 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/service/AddressWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/service/AddressWritePlatformServiceImpl.java @@ -115,7 +115,7 @@ public class AddressWritePlatformServiceImpl implements AddressWritePlatformServ long countryId; ClientAddress clientAddressobj = new ClientAddress(); final JsonArray addressArray = command.arrayOfParameterNamed("address"); - + if(addressArray != null){ for (int i = 0; i < addressArray.size(); i++) { final JsonObject jsonObject = addressArray.get(i).getAsJsonObject(); @@ -147,7 +147,7 @@ public class AddressWritePlatformServiceImpl implements AddressWritePlatformServ { isActive= jsonObject.get("isActive").getAsBoolean(); } - + clientAddressobj = ClientAddress.fromJson(isActive, client, addobj, addressTypeIdObj); this.clientAddressRepository.save(clientAddressobj); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarData.java index 2594ee336..9a16c0411 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarData.java @@ -326,7 +326,7 @@ public class CalendarData implements Serializable { final LocalDate lastUpdatedDate, final Long createdByUserId, final String createdByUsername, final Long lastUpdatedByUserId, final String lastUpdatedByUsername, final Integer repeatsOnDayOfMonth, final List entityTypeOptions, final List calendarTypeOptions, final List remindByOptions, - final List repeatsOptions, final List repeatsOnDayOptions,final LocalTime meetingTime, + final List repeatsOptions, final List repeatsOnDayOptions,final LocalTime meetingTime, final List frequencyNthDayTypeOptions) { this.id = id; this.calendarInstanceId = calendarInstanceId; @@ -478,11 +478,11 @@ public class CalendarData implements Serializable { compareDate, isSkipMeetingOnFirstDay, numberOfDays); } return false; } - + public Integer interval(){ return this.interval; } - + public EnumOptionData frequencyType(){ return this.frequency; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarHistoryDataWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarHistoryDataWrapper.java index 6e8e678c9..8abd0b62a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarHistoryDataWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarHistoryDataWrapper.java @@ -29,11 +29,11 @@ import org.joda.time.LocalDate; public class CalendarHistoryDataWrapper { - + private final List calendarHistoryList; - + public CalendarHistoryDataWrapper(final Set calendarHistoryList){ - this.calendarHistoryList = new ArrayList<>(); + this.calendarHistoryList = new ArrayList<>(); this.calendarHistoryList.addAll(calendarHistoryList); final Comparator orderByDate = new Comparator() { @Override @@ -43,7 +43,7 @@ public class CalendarHistoryDataWrapper { }; Collections.sort(this.calendarHistoryList, orderByDate); } - + public CalendarHistory getCalendarHistory(final LocalDate dueRepaymentPeriodDate) { CalendarHistory calendarHistory = null; for (CalendarHistory history : this.calendarHistoryList) { @@ -54,7 +54,7 @@ public class CalendarHistoryDataWrapper { } return calendarHistory; } - + public List getCalendarHistoryList(){ return this.calendarHistoryList; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java index 63ca03b6f..ebb2d810f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java @@ -99,11 +99,11 @@ public class Calendar extends AbstractAuditableCustom { @Column(name = "second_reminder", nullable = true) private Integer secondReminder; - + @Column(name="meeting_time",nullable=true) @Temporal(TemporalType.TIME) private Date meetingtime; - + @OneToMany(fetch = FetchType.EAGER) @JoinColumn(name = "calendar_id") private Set calendarHistory = new HashSet<>(); @@ -406,7 +406,7 @@ public class Calendar extends AbstractAuditableCustom { actualChanges.put(secondRemindarParamName, newValue); this.secondReminder = newValue; } - + final String timeFormat = command.stringValueOfParameterNamed(CALENDAR_SUPPORTED_PARAMETERS.Time_Format.getValue()); final String time = CALENDAR_SUPPORTED_PARAMETERS.MEETING_TIME.getValue(); if (command.isChangeInTimeParameterNamed(CALENDAR_SUPPORTED_PARAMETERS.MEETING_TIME.getValue(), this.meetingtime,timeFormat)) { @@ -416,9 +416,9 @@ public class Calendar extends AbstractAuditableCustom { if(timeInLocalDateTimeFormat!=null){ this.meetingtime= timeInLocalDateTimeFormat.toDate(); } - + } - + return actualChanges; } @@ -489,7 +489,7 @@ public class Calendar extends AbstractAuditableCustom { public Integer getSecondReminder() { return this.secondReminder; } - + public Date getMeetingTime(){ return this.meetingtime; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarFrequencyType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarFrequencyType.java index ab39044a6..ed837ae07 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarFrequencyType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarFrequencyType.java @@ -106,7 +106,7 @@ public enum CalendarFrequencyType { /** * To convert from period frequency type tp calendar frequency type. This * method requires code refactoring. - * + * * @param periodFrequencyType periodFrequencyType * @return CalendarFrequencyType */ @@ -128,7 +128,7 @@ public enum CalendarFrequencyType { /** * To convert from period frequency type tp calendar frequency type. This * method requires code refactoring. - * + * * @param frequencyType * @return */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java index 38e1be04b..3cb5a7c54 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java @@ -146,5 +146,5 @@ public class CalendarHistory extends AbstractPersistableCustom { public Calendar getCalendar() { return this.calendar; } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstanceRepository.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstanceRepository.java index d51b37815..8c07bc576 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstanceRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstanceRepository.java @@ -53,12 +53,12 @@ public interface CalendarInstanceRepository extends JpaRepository findCalendarInstancesForActiveLoansByGroupIdAndClientId(@Param("groupId") Long groupId, @Param("clientId") Long clientId); - - /** + + /** * EntityType = 3 is for loan */ - - @Query("SELECT COUNT(ci.id) FROM CalendarInstance ci, Loan ln WHERE ln.id = ci.entityId AND ci.entityTypeId = 3 AND ci.calendar.id = :calendarId AND ln.loanStatus IN :loanStatuses ") + + @Query("SELECT COUNT(ci.id) FROM CalendarInstance ci, Loan ln WHERE ln.id = ci.entityId AND ci.entityTypeId = 3 AND ci.calendar.id = :calendarId AND ln.loanStatus IN :loanStatuses ") Integer countOfLoansSyncedWithCalendar(@Param("calendarId") Long calendarId, @Param("loanStatuses") Collection loanStatuses ); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstanceRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstanceRepositoryWrapper.java index d91c7ced2..35d666a93 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstanceRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstanceRepositoryWrapper.java @@ -29,7 +29,7 @@ import org.springframework.stereotype.Service; * findOne repository method and throwing an appropriate not found * exception. *

- * + * *

* This is to avoid need for checking and throwing in multiple areas of code * base where {@link CalendarInstanceRepository} is required. diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarRepositoryWrapper.java index 2fb2b9b31..66444c0f1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarRepositoryWrapper.java @@ -28,7 +28,7 @@ import org.springframework.stereotype.Service; * {@link Calendar} is returned when using findOne repository * method and throwing an appropriate not found exception. *

- * + * *

* This is to avoid need for checking and throwing in multiple areas of code * base where {@link CalendarRepository} is required. diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/serialization/CalendarCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/serialization/CalendarCommandFromApiJsonDeserializer.java index fcdd2e23b..97b72dc05 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/serialization/CalendarCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/serialization/CalendarCommandFromApiJsonDeserializer.java @@ -207,7 +207,7 @@ public class CalendarCommandFromApiJsonDeserializer extends AbstractFromApiJsonD element); baseDataValidator.reset().parameter(CALENDAR_SUPPORTED_PARAMETERS.MEETING_TIME.getValue()).value(meetingTime).ignoreIfNull(); } - + if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", dataValidationErrors); } @@ -350,9 +350,9 @@ public class CalendarCommandFromApiJsonDeserializer extends AbstractFromApiJsonD element); baseDataValidator.reset().parameter(CALENDAR_SUPPORTED_PARAMETERS.MEETING_TIME.getValue()).value(startDate).ignoreIfNull(); } - + if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", dataValidationErrors); } } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarEnumerations.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarEnumerations.java index f3537ca2c..ca32b0dbe 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarEnumerations.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarEnumerations.java @@ -139,7 +139,7 @@ public class CalendarEnumerations { public static List calendarFrequencyNthDayType() { final List optionDatas = Arrays.asList(calendarFrequencyNthDayType(NthDayType.ONE), calendarFrequencyNthDayType(NthDayType.TWO), calendarFrequencyNthDayType(NthDayType.THREE), - calendarFrequencyNthDayType(NthDayType.FOUR), calendarFrequencyNthDayType(NthDayType.LAST), + calendarFrequencyNthDayType(NthDayType.FOUR), calendarFrequencyNthDayType(NthDayType.LAST), calendarFrequencyNthDayType(NthDayType.ONDAY)); return optionDatas; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarReadPlatformServiceImpl.java index 4a404486d..dca4ed5b1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarReadPlatformServiceImpl.java @@ -243,7 +243,7 @@ public class CalendarReadPlatformServiceImpl implements CalendarReadPlatformServ * till periodEndDate recurring dates will be generated. */ final LocalDate periodEndDate = this.getPeriodEndDate(calendarData.getEndDate(), tillDate); - + Integer numberOfDays = 0; boolean isSkipRepaymentOnFirstMonthEnabled = this.configurationDomainService .isSkippingMeetingOnFirstDayOfMonthEnabled(); @@ -323,15 +323,15 @@ public class CalendarReadPlatformServiceImpl implements CalendarReadPlatformServ * application calendar for that time period. e.g. If the previous * calendar details has weekly meeting starting from 1st of Oct 2013 on * every Tuesday, then meeting dates for collection are 1,8,15,22,29.. - * + * * If meeting schedule has changed from Tuesday to Friday with effective * from 15th of Oct (calendar update has made on 2nd of Oct) , then * application should allow to generate collection sheet on 8th of Oct * which is still on Tuesday and next collection sheet date should be on * 18th of Oct as per current calendar */ - - + + Integer numberOfDays = 0; boolean isSkipRepaymentOnFirstMonthEnabled = configurationDomainService .isSkippingMeetingOnFirstDayOfMonthEnabled(); @@ -509,6 +509,6 @@ public class CalendarReadPlatformServiceImpl implements CalendarReadPlatformServ lastUpdatedByUserId, lastUpdatedByUserName, meetingTime, monthOnDay); } } - - + + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarUtils.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarUtils.java index d29217b6f..c9def5e6c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarUtils.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarUtils.java @@ -276,7 +276,7 @@ public class CalendarUtils { monthDay = (Integer) monthDays.get(0); WeekDayList weekdays = recur.getDayList(); WeekDay weekDay = null; - if (!weekdays.isEmpty()) + if (!weekdays.isEmpty()) weekDay = (WeekDay) weekdays.get(0); if (nthDay != null && weekDay != null) { NthDayType nthDayType = NthDayType.fromInt(nthDay); @@ -537,7 +537,7 @@ public class CalendarUtils { } /* * Recurring dates should follow loanRepaymentInterval. - * + * * e.g. The weekly meeting will have interval of 1, if the loan product * with fortnightly frequency will have interval of 2, to generate right * set of meeting dates reset interval same as loan repayment interval. @@ -618,7 +618,7 @@ public class CalendarUtils { /** * function returns a comma separated list of calendar_type_enum values ex. * 1,2,3,4 - * + * * @param calendarTypeOptions * @return */ @@ -700,7 +700,7 @@ public class CalendarUtils { } return monthOnDay; } - + public static LocalDate getNextRepaymentMeetingDate(final String recurringRule, final LocalDate seedDate, final LocalDate repaymentDate, final Integer loanRepaymentInterval, final String frequency, final WorkingDays workingDays, boolean isSkipRepaymentOnFirstDayOfMonth, final Integer numberOfDays, boolean applyWorkingDays) { @@ -708,9 +708,9 @@ public class CalendarUtils { return getNextRepaymentMeetingDate(recurringRule, seedDate, repaymentDate, loanRepaymentInterval, frequency, workingDays, isSkipRepaymentOnFirstDayOfMonth, numberOfDays, isCalledFirstTime, applyWorkingDays); } - + public static LocalDate getNextRepaymentMeetingDate(final String recurringRule, final LocalDate seedDate, - final LocalDate repaymentDate, final Integer loanRepaymentInterval, final String frequency, + final LocalDate repaymentDate, final Integer loanRepaymentInterval, final String frequency, boolean isSkipRepaymentOnFirstDayOfMonth, final Integer numberOfDays) { boolean isCalledFirstTime = true; final WorkingDays workingDays = null; @@ -718,7 +718,7 @@ public class CalendarUtils { return getNextRepaymentMeetingDate(recurringRule, seedDate, repaymentDate, loanRepaymentInterval, frequency, workingDays, isSkipRepaymentOnFirstDayOfMonth, numberOfDays, isCalledFirstTime, applyWorkingDays); } - + public static LocalDate getNextRepaymentMeetingDate(final String recurringRule, final LocalDate seedDate, final LocalDate repaymentDate, final Integer loanRepaymentInterval, final String frequency, final WorkingDays workingDays, boolean isSkipRepaymentOnFirstDayOfMonth, final Integer numberOfDays, boolean isCalledFirstTime, boolean applyWorkingDays) { @@ -726,11 +726,11 @@ public class CalendarUtils { final Recur recur = CalendarUtils.getICalRecur(recurringRule); if (recur == null) { return null; } LocalDate tmpDate = repaymentDate; - + final Integer repaymentInterval = getMeetingIntervalFromFrequency(loanRepaymentInterval, frequency, recur); /* * Recurring dates should follow loanRepaymentInterval. - * + * * e.g. The weekly meeting will have interval of 1, if the loan product * with fortnightly frequency will have interval of 2, to generate right * set of meeting dates reset interval same as loan repayment interval. @@ -750,9 +750,9 @@ public class CalendarUtils { if (recur.getFrequency().equals(Recur.DAILY)) { recur.setFrequency(frequency); } - + /** - * Below code modified as discussed with Pramod N + * Below code modified as discussed with Pramod N */ LocalDate newRepaymentDate = tmpDate; int newRepayment = rep; @@ -772,13 +772,13 @@ public class CalendarUtils { newRepaymentDate = WorkingDaysUtil.getOffSetDateIfNonWorkingDay(newRepaymentDate, nextRepaymentDate, workingDays); } } - + if(isCalledFirstTime && newRepaymentDate.equals(repaymentDate)){ isCalledFirstTime = false; newRepaymentDate = getNextRepaymentMeetingDate(recurringRule, seedDate, repaymentDate.plusDays(1), loanRepaymentInterval, frequency, workingDays, isSkipRepaymentOnFirstDayOfMonth, numberOfDays, isCalledFirstTime, applyWorkingDays); } - + if (isSkipRepaymentOnFirstDayOfMonth) { final LocalDate newRepaymentDateTemp = adjustRecurringDate(newRepaymentDate, numberOfDays); if (applyWorkingDays) { @@ -794,7 +794,7 @@ public class CalendarUtils { } return newRepaymentDate; } - + public static Integer getMeetingIntervalFromFrequency(final Integer loanRepaymentInterval, final String frequency, final Recur recur) { final Integer interval = 4; Integer repaymentInterval = loanRepaymentInterval; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarWritePlatformServiceJpaRepositoryImpl.java index 7a309ff41..261086943 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarWritePlatformServiceJpaRepositoryImpl.java @@ -180,7 +180,7 @@ public class CalendarWritePlatformServiceJpaRepositoryImpl implements CalendarWr final Group parent = centerOrGroup.getParent(); /* Check if it is a Group and belongs to a center */ if (centerOrGroup.isGroup() && parent != null) { - + Integer centerEntityTypeId = CalendarEntityType.CENTERS .getValue(); /* Check if calendar is created at center */ @@ -205,7 +205,7 @@ public class CalendarWritePlatformServiceJpaRepositoryImpl implements CalendarWr } } - + @Override public CommandProcessingResult updateCalendar(final JsonCommand command) { @@ -215,7 +215,7 @@ public class CalendarWritePlatformServiceJpaRepositoryImpl implements CalendarWr * Validate all the data for updating the calendar */ this.fromApiJsonDeserializer.validateForUpdate(command.json()); - + Boolean areActiveEntitiesSynced = false; final Long calendarId = command.entityId(); @@ -229,12 +229,12 @@ public class CalendarWritePlatformServiceJpaRepositoryImpl implements CalendarWr * areActiveEntitiesSynced is set to true, if there are any active loans * synced to this calendar. */ - + if(numberOfActiveLoansSyncedWithThisCalendar > 0){ areActiveEntitiesSynced = true; } - + final Calendar calendarForUpdate = this.calendarRepository.findById(calendarId) .orElseThrow(() -> new CalendarNotFoundException(calendarId)); @@ -243,33 +243,33 @@ public class CalendarWritePlatformServiceJpaRepositoryImpl implements CalendarWr final CalendarHistory calendarHistory = new CalendarHistory(calendarForUpdate, oldStartDate); Map changes = null; - + final Boolean reschedulebasedOnMeetingDates = command .booleanObjectValueOfParameterNamed(CALENDAR_SUPPORTED_PARAMETERS.RESCHEDULE_BASED_ON_MEETING_DATES.getValue()); - + /* * System allows to change the meeting date by two means, - * - * Option 1: reschedulebasedOnMeetingDates = false or reschedulebasedOnMeetingDates is not passed + * + * Option 1: reschedulebasedOnMeetingDates = false or reschedulebasedOnMeetingDates is not passed * By directly editing the recurring day with effective from * date and system decides the next meeting date based on some sensible * logic (i.e., number of minimum days between two repayments) - * - * - * Option 2: reschedulebasedOnMeetingDates = true + * + * + * Option 2: reschedulebasedOnMeetingDates = true * By providing alternative meeting date for one of future * meeting date and derive the day of recurrence from the new meeting * date. Ex: User proposes new meeting date say "14/Nov/2014" for * present meeting date "12/Nov/2014", based on this input other values * re derived and loans are rescheduled - * + * */ - + LocalDate newMeetingDate = null; LocalDate presentMeetingDate = null; - + if (reschedulebasedOnMeetingDates != null && reschedulebasedOnMeetingDates) { - + newMeetingDate = command.localDateValueOfParameterNamed(CALENDAR_SUPPORTED_PARAMETERS.NEW_MEETING_DATE.getValue()); presentMeetingDate = command.localDateValueOfParameterNamed(CALENDAR_SUPPORTED_PARAMETERS.PRESENT_MEETING_DATE.getValue()); @@ -283,7 +283,7 @@ public class CalendarWritePlatformServiceJpaRepositoryImpl implements CalendarWr } else { changes = calendarForUpdate.update(command, areActiveEntitiesSynced); } - + if (!changes.isEmpty()) { // update calendar history table only if there is a change in // calendar start date. diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/data/ChargeData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/data/ChargeData.java index 179f245d9..80dc2f5fb 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/data/ChargeData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/data/ChargeData.java @@ -291,7 +291,7 @@ public class ChargeData implements Comparable, Serializable { final Collection chargeOptions = null; final Boolean isActive = null; final BigDecimal chargeAmountOrPercentage = BigDecimal.ZERO ; - + return new ShareAccountChargeData(shareChargeId, this.id, shareAccountId, this.name, this.currency, this.amount, amountPaid, amountWaived, amountWrittenOff, amountOutstanding, this.chargeTimeType, this.chargeCalculationType, percentage, amountPercentageAppliedTo, chargeOptions, isActive, chargeAmountOrPercentage); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java index 295035034..ed3c90c9e 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java @@ -495,7 +495,7 @@ public class Charge extends AbstractPersistableCustom { /** * Delete is a soft delete. Updates flag on charge so it wont appear * in query/report results. - * + * * Any fields with unique constraints and prepended with id of record. */ public void delete() { @@ -624,7 +624,7 @@ public class Charge extends AbstractPersistableCustom { @Override public int hashCode() { - return Objects.hash(name, amount, currencyCode, chargeAppliesTo, chargeTimeType, chargeCalculation, + return Objects.hash(name, amount, currencyCode, chargeAppliesTo, chargeTimeType, chargeCalculation, chargePaymentMode, feeOnDay, feeInterval, feeOnMonth, penalty, active, deleted, minCap, maxCap, feeFrequency, account, taxGroup); } } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeAppliesTo.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeAppliesTo.java index 6130ca6a4..eecf46348 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeAppliesTo.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeAppliesTo.java @@ -25,7 +25,7 @@ public enum ChargeAppliesTo { SAVINGS(2, "chargeAppliesTo.savings"), // CLIENT(3, "chargeAppliesTo.client"), SHARES(4, "chargeAppliesTo.shares"); - + private final Integer value; private final String code; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationType.java index 9bfcab166..38648e243 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationType.java @@ -56,15 +56,15 @@ public enum ChargeCalculationType { public static Object[] validValuesForShares() { return new Integer[] { ChargeCalculationType.FLAT.getValue(), ChargeCalculationType.PERCENT_OF_AMOUNT.getValue() }; } - + public static Object[] validValuesForClients() { return new Integer[] { ChargeCalculationType.FLAT.getValue() }; } - + public static Object[] validValuesForShareAccountActivation() { return new Integer[] { ChargeCalculationType.FLAT.getValue() }; } - + public static Object[] validValuesForTrancheDisbursement(){ return new Integer[] { ChargeCalculationType.FLAT.getValue(), ChargeCalculationType.PERCENT_OF_DISBURSEMENT_AMOUNT.getValue()}; } @@ -118,7 +118,7 @@ public enum ChargeCalculationType { public boolean isPercentageBased() { return isPercentageOfAmount() || isPercentageOfAmountAndInterest() || isPercentageOfInterest() || isPercentageOfDisbursementAmount(); } - + public boolean isPercentageOfDisbursementAmount(){ return this.value.equals(ChargeCalculationType.PERCENT_OF_DISBURSEMENT_AMOUNT.getValue()); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeRepositoryWrapper.java index 893e6e0fe..fd61172c3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeRepositoryWrapper.java @@ -29,7 +29,7 @@ import org.springframework.stereotype.Service; * {@link Charge} is returned when using findOne repository method * and throwing an appropriate not found exception. *

- * + * *

* This is to avoid need for checking and throwing in multiple areas of code * base where {@link ChargeRepository} is required. diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeTimeType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeTimeType.java index f2ce168fd..ea6f84791 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeTimeType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeTimeType.java @@ -34,9 +34,9 @@ public enum ChargeTimeType { TRANCHE_DISBURSEMENT(12, "chargeTimeType.tranchedisbursement"), // only for // loan SHAREACCOUNT_ACTIVATION(13, "chargeTimeType.activation"), // only for loan - SHARE_PURCHASE(14, "chargeTimeType.sharespurchase"), + SHARE_PURCHASE(14, "chargeTimeType.sharespurchase"), SHARE_REDEEM(15, "chargeTimeType.sharesredeem"), - + SAVINGS_NOACTIVITY_FEE(16,"chargeTimeType.savingsNoActivityFee"); private final Integer value; @@ -160,7 +160,7 @@ public enum ChargeTimeType { public boolean isWithdrawalFee() { return this.value.equals(ChargeTimeType.WITHDRAWAL_FEE.getValue()); } - + public boolean isSavingsNoActivityFee() { return this.value.equals(ChargeTimeType.SAVINGS_NOACTIVITY_FEE.getValue()); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/serialization/ChargeDefinitionCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/serialization/ChargeDefinitionCommandFromApiJsonDeserializer.java index d58acc3a2..7236be708 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/serialization/ChargeDefinitionCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/serialization/ChargeDefinitionCommandFromApiJsonDeserializer.java @@ -183,12 +183,12 @@ public final class ChargeDefinitionCommandFromApiJsonDeserializer { baseDataValidator.reset().parameter("chargeTimeType").value(chargeTimeType) .isOneOfTheseValues(ChargeTimeType.validShareValues()); } - + if (chargeCalculationType != null) { baseDataValidator.reset().parameter("chargeCalculationType").value(chargeCalculationType) .isOneOfTheseValues(ChargeCalculationType.validValuesForShares()); } - + if(chargeTimeType != null && chargeTimeType.equals(ChargeTimeType.SHAREACCOUNT_ACTIVATION.getValue())) { if(chargeCalculationType != null) { baseDataValidator.reset().parameter("chargeCalculationType").value(chargeCalculationType) @@ -300,13 +300,13 @@ public final class ChargeDefinitionCommandFromApiJsonDeserializer { final Integer feeInterval = this.fromApiJsonHelper.extractIntegerNamed("feeInterval", element, Locale.getDefault()); baseDataValidator.reset().parameter("feeInterval").value(feeInterval).integerGreaterThanZero(); } - + if (this.fromApiJsonHelper.parameterExists("chargeCalculationType", element)) { final Integer chargeCalculationType = this.fromApiJsonHelper.extractIntegerNamed("chargeCalculationType", element, Locale.getDefault()); baseDataValidator.reset().parameter("chargeCalculationType").value(chargeCalculationType).notNull().inMinMaxRange(1, 5); } - + if (this.fromApiJsonHelper.parameterExists("chargePaymentMode", element)) { final Integer chargePaymentMode = this.fromApiJsonHelper.extractIntegerNamed("chargePaymentMode", element, Locale.getDefault()); baseDataValidator.reset().parameter("chargePaymentMode").value(chargePaymentMode).notNull().inMinMaxRange(0, 1); @@ -361,7 +361,7 @@ public final class ChargeDefinitionCommandFromApiJsonDeserializer { baseDataValidator.reset().parameter("chargeCalculationType").value(chargeCalculationType) .isOneOfTheseValues(ChargeCalculationType.validValuesForShareAccountActivation()); } - + if (chargeTimeType.equals(ChargeTimeType.TRANCHE_DISBURSEMENT.getValue())) { baseDataValidator.reset().parameter("chargeCalculationType").value(chargeCalculationType) .isOneOfTheseValues(ChargeCalculationType.validValuesForTrancheDisbursement()); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformService.java index 4d36e07b0..4bc391c92 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformService.java @@ -42,8 +42,8 @@ public interface ChargeDropdownReadPlatformService { List retrieveClientCalculationTypes(); List retrieveClientCollectionTimeTypes(); - + List retrieveSharesCalculationTypes() ; List retrieveSharesCollectionTimeTypes() ; - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformServiceImpl.java index 6aae77669..37a59a60c 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformServiceImpl.java @@ -114,16 +114,16 @@ public class ChargeDropdownReadPlatformServiceImpl implements ChargeDropdownRead public List retrieveClientCollectionTimeTypes() { return Arrays.asList(chargeTimeType(ChargeTimeType.SPECIFIED_DUE_DATE)); } - + @Override public List retrieveSharesCalculationTypes() { return Arrays.asList(chargeCalculationType(ChargeCalculationType.FLAT), chargeCalculationType(ChargeCalculationType.PERCENT_OF_AMOUNT)); } - + @Override public List retrieveSharesCollectionTimeTypes() { - return Arrays.asList(chargeTimeType(ChargeTimeType.SHAREACCOUNT_ACTIVATION), + return Arrays.asList(chargeTimeType(ChargeTimeType.SHAREACCOUNT_ACTIVATION), chargeTimeType(ChargeTimeType.SHARE_PURCHASE), chargeTimeType(ChargeTimeType.SHARE_REDEEM)); } } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeEnumerations.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeEnumerations.java index c87b47a48..d4120aeaf 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeEnumerations.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeEnumerations.java @@ -84,7 +84,7 @@ public class ChargeEnumerations { case SHAREACCOUNT_ACTIVATION: optionData = new EnumOptionData(ChargeTimeType.SHAREACCOUNT_ACTIVATION.getValue().longValue(), ChargeTimeType.SHAREACCOUNT_ACTIVATION.getCode(), "Share Account Activate") ; break ; - + case SHARE_PURCHASE: optionData = new EnumOptionData(ChargeTimeType.SHARE_PURCHASE.getValue().longValue(), ChargeTimeType.SHARE_PURCHASE.getCode(), "Share Purchase") ; break ; @@ -92,7 +92,7 @@ public class ChargeEnumerations { optionData = new EnumOptionData(ChargeTimeType.SHARE_REDEEM.getValue().longValue(), ChargeTimeType.SHARE_REDEEM.getCode(), "Share Redeem") ; break ; case SAVINGS_NOACTIVITY_FEE: - optionData = new EnumOptionData(ChargeTimeType.SAVINGS_NOACTIVITY_FEE.getValue().longValue(), ChargeTimeType.SAVINGS_NOACTIVITY_FEE.getCode(), + optionData = new EnumOptionData(ChargeTimeType.SAVINGS_NOACTIVITY_FEE.getValue().longValue(), ChargeTimeType.SAVINGS_NOACTIVITY_FEE.getCode(), "Saving No Activity Fee"); break; default: @@ -183,5 +183,5 @@ public class ChargeEnumerations { } return optionData; } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformService.java index cd675af3c..df6e5c56a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformService.java @@ -35,21 +35,21 @@ public interface ChargeReadPlatformService { /** * Returns all charges that can be applied to Cients - * + * * @return */ Collection retrieveAllChargesApplicableToClients(); /** * Returns all Fees (excluding penalties) applicable for loans - * + * * @return */ Collection retrieveLoanApplicableFees(); /** * Returns all charges applicable for a given loan account - * + * * @param excludeChargeTimes * Excludes Given List of Charge Types from the response * @return @@ -59,7 +59,7 @@ public interface ChargeReadPlatformService { /** * Returns all charges applicable for a given loan product (filter based on * Currency of Selected Loan Product) - * + * * @param excludeChargeTimes * Excludes Given List of Charge Types from the response * @return @@ -68,14 +68,14 @@ public interface ChargeReadPlatformService { /** * Returns all Penalties applicable for loans - * + * * @return */ Collection retrieveLoanApplicablePenalties(); /** * Returns all Charges associated with a given Loan Product - * + * * @param loanProductId * @return */ @@ -83,7 +83,7 @@ public interface ChargeReadPlatformService { /** * Returns all charges applicable for a given loan product - * + * * @param loanProductId * @param chargeTime * Filters based on the type of the charge to be returned @@ -93,7 +93,7 @@ public interface ChargeReadPlatformService { /** * Returns all charges applicable for savings - * + * * @param feeChargesOnly * @return */ @@ -101,14 +101,14 @@ public interface ChargeReadPlatformService { /** * Returns all penalties applicable for savings - * + * * @return */ Collection retrieveSavingsApplicablePenalties(); /** * Returns all charges applicable for a given savings product - * + * * @param savingsProductId * @return */ @@ -116,9 +116,9 @@ public interface ChargeReadPlatformService { /** Retrieve savings account charges **/ Collection retrieveSavingsAccountApplicableCharges(Long savingsId); - + /** - * Returns charge definitions which are applicable for shares + * Returns charge definitions which are applicable for shares */ Collection retrieveSharesApplicableCharges(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformServiceImpl.java index c53b24c7f..72939a89c 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformServiceImpl.java @@ -54,7 +54,7 @@ import java.util.Map; /** * @author vishwas - * + * */ @Service public class ChargeReadPlatformServiceImpl implements ChargeReadPlatformService { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientApiConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientApiConstants.java index c7d2c414a..e5235da48 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientApiConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientApiConstants.java @@ -62,10 +62,10 @@ public class ClientApiConstants { public static final String GENDER = "Gender"; public static final String CLIENT_TYPE = "ClientType"; public static final String CLIENT_CLASSIFICATION = "ClientClassification"; - + public static final String CLIENT_NON_PERSON_CONSTITUTION = "Constitution"; public static final String CLIENT_NON_PERSON_MAIN_BUSINESS_LINE = "Main Business Line"; - + // general public static final String localeParamName = "locale"; public static final String dateFormatParamName = "dateFormat"; @@ -73,9 +73,9 @@ public class ClientApiConstants { public static final String familyMembers = "familyMembers"; public static final String MARITALSTATUS="MARITALSTATUS"; public static final String maritalStatusIdParamName="maritalStatusId"; - - - + + + public static final String CLIENT_TYPE_INDIVIDUAL = "Individual"; // request parameters @@ -126,7 +126,7 @@ public class ClientApiConstants { public static final String routingCodeParamName = "routingCode"; public static final String receiptNumberParamName = "receiptNumber"; public static final String bankNumberParamName = "bankNumber"; - + //request parameters for client non person public static final String clientNonPersonDetailsParamName = "clientNonPersonDetails"; public static final String incorpNumberParamName = "incorpNumber"; @@ -134,7 +134,7 @@ public class ClientApiConstants { public static final String incorpValidityTillParamName = "incorpValidityTillDate"; public static final String constitutionIdParamName = "constitutionId"; public static final String mainBusinessLineIdParamName = "mainBusinessLineId"; - + // response parameters public static final String statusParamName = "status"; @@ -201,7 +201,7 @@ public class ClientApiConstants { lastnameParamName, fullnameParamName, displayNameParamName, mobileNoParamName, emailAddressParamName, officeIdParamName, officeNameParamName, transferToOfficeIdParamName, transferToOfficeNameParamName, hierarchyParamName, imageIdParamName, imagePresentParamName, staffIdParamName, staffNameParamName, timelineParamName, groupsParamName, officeOptionsParamName, staffOptionsParamName, - dateOfBirthParamName, genderParamName, clientTypeParamName, clientClassificationParamName, legalFormParamName, + dateOfBirthParamName, genderParamName, clientTypeParamName, clientClassificationParamName, legalFormParamName, clientNonPersonDetailsParamName, isStaffParamName)); protected static final Set CLIENT_CHARGES_RESPONSE_DATA_PARAMETERS = new HashSet<>(Arrays.asList diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientFamilyMembersApiResources.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientFamilyMembersApiResources.java index 9c1543281..85d72998b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientFamilyMembersApiResources.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientFamilyMembersApiResources.java @@ -53,7 +53,7 @@ import org.springframework.stereotype.Component; @Path("/clients/{clientId}/familymembers") @Component @Scope("singleton") -public class ClientFamilyMembersApiResources +public class ClientFamilyMembersApiResources { private final Set RESPONSE_DATA_PARAMETERS = new HashSet<>(Arrays.asList("id","clientId","firstName","middleName","lastName","qualification", "relationship","maritalStatus","gender","dateOfBirth","profession","clientFamilyMemberId")); @@ -63,7 +63,7 @@ public class ClientFamilyMembersApiResources private final ToApiJsonSerializer toApiJsonSerializer; private final ApiRequestParameterHelper apiRequestParameterHelper; private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; - + @Autowired public ClientFamilyMembersApiResources(final PlatformSecurityContext context,final ClientFamilyMembersReadPlatformService readPlatformService, final ToApiJsonSerializer toApiJsonSerializer,final ApiRequestParameterHelper apiRequestParameterHelper, @@ -73,47 +73,47 @@ public class ClientFamilyMembersApiResources this.readPlatformService=readPlatformService; this.toApiJsonSerializer=toApiJsonSerializer; this.apiRequestParameterHelper=apiRequestParameterHelper; - this.commandsSourceWritePlatformService=commandsSourceWritePlatformService; - + this.commandsSourceWritePlatformService=commandsSourceWritePlatformService; + } - + @GET @Path("/{familyMemberId}") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) public String getFamilyMember(@Context final UriInfo uriInfo,@PathParam("familyMemberId") final Long familyMemberId) { - + this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermissions); - + final ClientFamilyMembersData familyMembers =this.readPlatformService.getClientFamilyMember(familyMemberId); - + final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); return this.toApiJsonSerializer.serialize(settings, familyMembers, this.RESPONSE_DATA_PARAMETERS); } - - - + + + @GET @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) public String getFamilyMembers(@Context final UriInfo uriInfo,@PathParam("clientId") final long clientId) { - + this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermissions); - + final Collection familyMembers = this.readPlatformService.getClientFamilyMembers(clientId); - + final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); return this.toApiJsonSerializer.serialize(settings, familyMembers, this.RESPONSE_DATA_PARAMETERS); } - + @GET @Path("/template") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) public String getTemplate(@Context final UriInfo uriInfo,@PathParam("clientId") final long clientId) { - + this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermissions); final ClientFamilyMembersData options = this.readPlatformService.retrieveTemplate(); @@ -122,8 +122,8 @@ public class ClientFamilyMembersApiResources return this.toApiJsonSerializer.serialize(settings, options, this.RESPONSE_DATA_PARAMETERS); } - - + + @PUT @Path("/{familyMemberId}") @Consumes({ MediaType.APPLICATION_JSON }) @@ -137,8 +137,8 @@ public class ClientFamilyMembersApiResources return this.toApiJsonSerializer.serialize(result); } - - + + @POST @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) @@ -151,8 +151,8 @@ public class ClientFamilyMembersApiResources return this.toApiJsonSerializer.serialize(result); } - - + + @DELETE @Path("/{familyMemberId}") @Consumes({ MediaType.APPLICATION_JSON }) @@ -166,7 +166,7 @@ public class ClientFamilyMembersApiResources return this.toApiJsonSerializer.serialize(result); } - - - + + + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientsApiResource.java index 984ec90f5..e5e6cb167 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientsApiResource.java @@ -159,10 +159,10 @@ public class ClientsApiResource { @QueryParam("orderBy") @ApiParam(value = "orderBy") final String orderBy, @QueryParam("sortOrder") @ApiParam(value = "sortOrder") final String sortOrder, @QueryParam("orphansOnly") @ApiParam(value = "orphansOnly") final Boolean orphansOnly) { - return this.retrieveAll(uriInfo, sqlSearch, officeId, externalId, displayName, firstname, + return this.retrieveAll(uriInfo, sqlSearch, officeId, externalId, displayName, firstname, lastname, hierarchy, offset, limit, orderBy, sortOrder, orphansOnly, false); } - + public String retrieveAll(final UriInfo uriInfo, final String sqlSearch, final Long officeId, final String externalId, final String displayName, final String firstname, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientData.java index 527563d6a..617eb5622 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientData.java @@ -101,12 +101,12 @@ final public class ClientData implements Comparable, Serializable { private final ClientFamilyMembersData familyMemberOptions; private final ClientNonPersonData clientNonPersonDetails; - + private final Collection address; private final Boolean isAddressEnabled; - + private final List datatables; //import fields diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientDataValidator.java index 78fc4b137..5a13e8205 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientDataValidator.java @@ -67,13 +67,13 @@ public final class ClientDataValidator { final Type typeOfMap = new TypeToken>() {}.getType(); this.fromApiJsonHelper.checkForUnsupportedParameters(typeOfMap, json, ClientApiCollectionConstants.CLIENT_CREATE_REQUEST_DATA_PARAMETERS); final JsonElement element = this.fromApiJsonHelper.parse(json); - + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.clientNonPersonDetailsParamName, element)) { final String clientNonPersonJson = this.fromApiJsonHelper.toJson(element.getAsJsonObject().get(ClientApiConstants.clientNonPersonDetailsParamName)); if(clientNonPersonJson != null) this.fromApiJsonHelper.checkForUnsupportedParameters(typeOfMap, clientNonPersonJson, ClientApiCollectionConstants.CLIENT_NON_PERSON_CREATE_REQUEST_DATA_PARAMETERS); } - + final List dataValidationErrors = new ArrayList<>(); final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors) @@ -206,7 +206,7 @@ public final class ClientDataValidator { baseDataValidator.reset().parameter(ClientApiConstants.clientClassificationIdParamName).value(clientClassification) .integerGreaterThanZero(); } - + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.legalFormIdParamName, element)) { final Integer legalFormId = this.fromApiJsonHelper.extractIntegerSansLocaleNamed(ClientApiConstants.legalFormIdParamName, element); baseDataValidator.reset().parameter(ClientApiConstants.legalFormIdParamName).value(legalFormId).ignoreIfNull().inMinMaxRange(1, 2); @@ -221,51 +221,51 @@ public final class ClientDataValidator { final Boolean isStaffFlag = this.fromApiJsonHelper.extractBooleanNamed("isStaff", element); baseDataValidator.reset().parameter("isStaff").value(isStaffFlag).notNull(); } - - + + if(this.configurationReadPlatformService .retrieveGlobalConfiguration("Enable-Address").isEnabled()){ final JsonArray address =this.fromApiJsonHelper.extractJsonArrayNamed(ClientApiConstants.address, element); baseDataValidator.reset().parameter(ClientApiConstants.address).value(address).notNull().jsonArrayNotEmpty(); } - + List dataValidationErrorsForClientNonPerson = getDataValidationErrorsForCreateOnClientNonPerson(element.getAsJsonObject().get(ClientApiConstants.clientNonPersonDetailsParamName)); dataValidationErrors.addAll(dataValidationErrorsForClientNonPerson); - + throwExceptionIfValidationWarningsExist(dataValidationErrors); } - + List getDataValidationErrorsForCreateOnClientNonPerson(JsonElement element) { - + final List dataValidationErrors = new ArrayList<>(); final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors) .resource(ClientApiCollectionConstants.CLIENT_RESOURCE_NAME); - + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.incorpNumberParamName, element)) { final String incorpNumber = this.fromApiJsonHelper.extractStringNamed(ClientApiConstants.incorpNumberParamName, element); baseDataValidator.reset().parameter(ClientApiConstants.incorpNumberParamName).value(incorpNumber).ignoreIfNull() .notExceedingLengthOf(50); } - + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.remarksParamName, element)) { final String remarks = this.fromApiJsonHelper.extractStringNamed(ClientApiConstants.remarksParamName, element); baseDataValidator.reset().parameter(ClientApiConstants.remarksParamName).value(remarks).ignoreIfNull() .notExceedingLengthOf(150); } - + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.incorpValidityTillParamName, element)) { final LocalDate incorpValidityTill = this.fromApiJsonHelper.extractLocalDateNamed(ClientApiConstants.incorpValidityTillParamName, element); baseDataValidator.reset().parameter(ClientApiConstants.incorpValidityTillParamName).value(incorpValidityTill).ignoreIfNull(); } - + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.constitutionIdParamName, element)) { final Integer constitution = this.fromApiJsonHelper.extractIntegerSansLocaleNamed(ClientApiConstants.constitutionIdParamName, element); baseDataValidator.reset().parameter(ClientApiConstants.constitutionIdParamName).value(constitution).ignoreIfNull().integerGreaterThanZero(); } - + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.mainBusinessLineIdParamName, element)) { final Integer mainBusinessLine = this.fromApiJsonHelper.extractIntegerSansLocaleNamed(ClientApiConstants.mainBusinessLineIdParamName, element); @@ -347,13 +347,13 @@ public final class ClientDataValidator { final Type typeOfMap = new TypeToken>() {}.getType(); this.fromApiJsonHelper.checkForUnsupportedParameters(typeOfMap, json, ClientApiCollectionConstants.CLIENT_UPDATE_REQUEST_DATA_PARAMETERS); final JsonElement element = this.fromApiJsonHelper.parse(json); - + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.clientNonPersonDetailsParamName, element)) { final String clientNonPersonJson = this.fromApiJsonHelper.toJson(element.getAsJsonObject().get(ClientApiConstants.clientNonPersonDetailsParamName)); if(clientNonPersonJson != null) this.fromApiJsonHelper.checkForUnsupportedParameters(typeOfMap, clientNonPersonJson, ClientApiCollectionConstants.CLIENT_NON_PERSON_UPDATE_REQUEST_DATA_PARAMETERS); } - + final List dataValidationErrors = new ArrayList<>(); final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors) @@ -489,7 +489,7 @@ public final class ClientDataValidator { baseDataValidator.reset().parameter(ClientApiConstants.submittedOnDateParamName).value(submittedDate).notNull(); } - + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.legalFormIdParamName, element)) { atLeastOneParameterPassedForUpdate = true; final Integer legalFormId = this.fromApiJsonHelper.extractIntegerSansLocaleNamed(ClientApiConstants.legalFormIdParamName, element); @@ -503,19 +503,19 @@ public final class ClientDataValidator { Map parameterUpdateStatusDetails = getParameterUpdateStatusAndDataValidationErrorsForUpdateOnClientNonPerson(element.getAsJsonObject().get(ClientApiConstants.clientNonPersonDetailsParamName)); boolean atLeastOneParameterPassedForClientNonPersonUpdate = (boolean) parameterUpdateStatusDetails.get("parameterUpdateStatus"); - + if (!atLeastOneParameterPassedForUpdate && !atLeastOneParameterPassedForClientNonPersonUpdate) { final Object forceError = null; baseDataValidator.reset().anyOfNotNull(forceError); } - + @SuppressWarnings("unchecked") - List dataValidationErrorsForClientNonPerson = (List) parameterUpdateStatusDetails.get("dataValidationErrors"); + List dataValidationErrorsForClientNonPerson = (List) parameterUpdateStatusDetails.get("dataValidationErrors"); dataValidationErrors.addAll(dataValidationErrorsForClientNonPerson); - + throwExceptionIfValidationWarningsExist(dataValidationErrors); } - + Map getParameterUpdateStatusAndDataValidationErrorsForUpdateOnClientNonPerson(JsonElement element) { boolean atLeastOneParameterPassedForUpdate = false; @@ -523,43 +523,43 @@ public final class ClientDataValidator { final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors) .resource(ClientApiCollectionConstants.CLIENT_RESOURCE_NAME); - + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.incorpNumberParamName, element)) { atLeastOneParameterPassedForUpdate = true; final String incorpNo = this.fromApiJsonHelper.extractStringNamed(ClientApiConstants.incorpNumberParamName, element); baseDataValidator.reset().parameter(ClientApiConstants.incorpNumberParamName).value(incorpNo).ignoreIfNull().notExceedingLengthOf(50); } - + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.remarksParamName, element)) { atLeastOneParameterPassedForUpdate = true; final String remarks = this.fromApiJsonHelper.extractStringNamed(ClientApiConstants.remarksParamName, element); baseDataValidator.reset().parameter(ClientApiConstants.remarksParamName).value(remarks).notExceedingLengthOf(150); } - + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.incorpValidityTillParamName, element)) { atLeastOneParameterPassedForUpdate = true; final LocalDate incorpValidityTill = this.fromApiJsonHelper.extractLocalDateNamed(ClientApiConstants.incorpValidityTillParamName, element); baseDataValidator.reset().parameter(ClientApiConstants.incorpValidityTillParamName).value(incorpValidityTill); } - + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.constitutionIdParamName, element)) { atLeastOneParameterPassedForUpdate = true; final Integer constitutionId = this.fromApiJsonHelper.extractIntegerSansLocaleNamed(ClientApiConstants.constitutionIdParamName, element); baseDataValidator.reset().parameter(ClientApiConstants.constitutionIdParamName).value(constitutionId).ignoreIfNull().integerGreaterThanZero(); } - + if (this.fromApiJsonHelper.parameterExists(ClientApiConstants.mainBusinessLineIdParamName, element)) { atLeastOneParameterPassedForUpdate = true; final Integer mainBusinessLineId = this.fromApiJsonHelper.extractIntegerSansLocaleNamed(ClientApiConstants.mainBusinessLineIdParamName, element); baseDataValidator.reset().parameter(ClientApiConstants.mainBusinessLineIdParamName).value(mainBusinessLineId).integerGreaterThanZero(); } - + Map parameterUpdateStatusDetails = new HashMap<>(); parameterUpdateStatusDetails.put("parameterUpdateStatus", atLeastOneParameterPassedForUpdate); parameterUpdateStatusDetails.put("dataValidationErrors", dataValidationErrors); - + return parameterUpdateStatusDetails; - + } public void validateActivation(final JsonCommand command) { @@ -760,8 +760,8 @@ public final class ClientDataValidator { throwExceptionIfValidationWarningsExist(dataValidationErrors); } - - + + public void validateUndoRejection(final JsonCommand command) { final String json = command.json(); @@ -808,5 +808,5 @@ public final class ClientDataValidator { throwExceptionIfValidationWarningsExist(dataValidationErrors); } - + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientFamilyMembersData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientFamilyMembersData.java index 8b2ad7f5e..7e7893295 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientFamilyMembersData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientFamilyMembersData.java @@ -56,11 +56,11 @@ public class ClientFamilyMembersData implements Serializable { private final Long professionId; private final String profession; - + private final String mobileNumber; - + private final Long age; - + private final Boolean isDependent; // template holder @@ -97,7 +97,7 @@ public class ClientFamilyMembersData implements Serializable { this.genderIdOptions=genderIdOptions; this.maritalStatusIdOptions=maritalStatusIdOptions; this.professionIdOptions=professionIdOptions; - + } public static ClientFamilyMembersData instance(final Long id, final Long clientId, final String firstName, @@ -109,13 +109,13 @@ public class ClientFamilyMembersData implements Serializable { relationshipId, maritalStatus, maritalStatusId, gender, genderId, dateOfBirth, profession, professionId,null,null,null,null); } - - + + public static ClientFamilyMembersData templateInstance(final Collection relationshipIdOptions, final Collection genderIdOptions,final Collection maritalStatusIdOptions, final Collection professionIdOptions) { - - + + return new ClientFamilyMembersData(null, null, null, null, null, null,null, null, null, null, null, null, null, null, null,null,null,null,relationshipIdOptions,genderIdOptions,maritalStatusIdOptions,professionIdOptions); @@ -192,7 +192,7 @@ public class ClientFamilyMembersData implements Serializable { public Boolean getIsDependent() { return this.isDependent; } - - + + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientNonPersonData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientNonPersonData.java index 6e26f4524..a588e08be 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientNonPersonData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientNonPersonData.java @@ -28,7 +28,7 @@ import java.io.Serializable; */ @SuppressWarnings("unused") public class ClientNonPersonData implements Serializable { - + private final CodeValueData constitution; private final String incorpNumber; private final LocalDate incorpValidityTillDate; @@ -59,7 +59,7 @@ public class ClientNonPersonData implements Serializable { this.constitution = null; this.mainBusinessLine = null; } - + public ClientNonPersonData(CodeValueData constitution, String incorpNo, LocalDate incorpValidityTillDate, CodeValueData mainBusinessLine, String remarks) { super(); @@ -69,5 +69,5 @@ public class ClientNonPersonData implements Serializable { this.mainBusinessLine = mainBusinessLine; this.remarks = remarks; } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/AccountNumberGenerator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/AccountNumberGenerator.java index 99e07a8b7..fb86d1ac3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/AccountNumberGenerator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/AccountNumberGenerator.java @@ -47,7 +47,7 @@ public class AccountNumberGenerator { private final static String LOAN_PRODUCT_SHORT_NAME = "loanProductShortName"; private final static String SAVINGS_PRODUCT_SHORT_NAME = "savingsProductShortName"; private final static String SHARE_PRODUCT_SHORT_NAME = "sharesProductShortName" ; - + public String generate(Client client, AccountNumberFormat accountNumberFormat) { Map propertyMap = new HashMap<>(); propertyMap.put(ID, client.getId().toString()); @@ -81,7 +81,7 @@ public class AccountNumberGenerator { propertyMap.put(SHARE_PRODUCT_SHORT_NAME, shareaccount.getShareProduct().getShortName()); return generateAccountNumber(propertyMap, accountNumberFormat) ; } - + private String generateAccountNumber(Map propertyMap, AccountNumberFormat accountNumberFormat) { String accountNumber = StringUtils.leftPad(propertyMap.get(ID), AccountNumberGenerator.maxLength, '0'); if (accountNumberFormat != null && accountNumberFormat.getPrefixEnum() != null) { @@ -119,18 +119,18 @@ public class AccountNumberGenerator { } return accountNumber; } - + public String generateGroupAccountNumber(Group group, AccountNumberFormat accountNumberFormat) { Map propertyMap = new HashMap<>(); propertyMap.put(ID, group.getId().toString()); - propertyMap.put(OFFICE_NAME, group.getOffice().getName()); + propertyMap.put(OFFICE_NAME, group.getOffice().getName()); return generateAccountNumber(propertyMap, accountNumberFormat); } - + public String generateCenterAccountNumber(Group group, AccountNumberFormat accountNumberFormat) { Map propertyMap = new HashMap<>(); propertyMap.put(ID, group.getId().toString()); - propertyMap.put(OFFICE_NAME, group.getOffice().getName()); + propertyMap.put(OFFICE_NAME, group.getOffice().getName()); return generateAccountNumber(propertyMap, accountNumberFormat); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java index a445d9a52..186a07693 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java @@ -88,7 +88,7 @@ public final class Client extends AbstractPersistableCustom { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "sub_status", nullable = true) private CodeValue subStatus; - + @Column(name = "activation_date", nullable = true) @Temporal(TemporalType.DATE) private Date activationDate; @@ -114,7 +114,7 @@ public final class Client extends AbstractPersistableCustom { @Column(name = "mobile_no", length = 50, nullable = true, unique = true) private String mobileNo; - + @Column(name = "email_address", length = 50, unique = true) private String emailAddress; @@ -209,7 +209,7 @@ public final class Client extends AbstractPersistableCustom { @Column(name = "default_savings_product", nullable = true) private Long savingsProductId; - + @Column(name = "default_savings_account", nullable = true) private Long savingsAccountId; @@ -220,7 +220,7 @@ public final class Client extends AbstractPersistableCustom { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "client_classification_cv_id", nullable = true) private CodeValue clientClassification; - + @Column(name = "legal_form_enum", nullable = true) private Integer legalForm; @@ -231,7 +231,7 @@ public final class Client extends AbstractPersistableCustom { @ManyToOne(optional = true, fetch = FetchType.LAZY) @JoinColumn(name = "reopened_by_userid", nullable = true) private AppUser reopenedBy; - + @Column(name = "proposed_transfer_date", nullable = true) @Temporal(TemporalType.DATE) private Date proposedTransferDate; @@ -249,7 +249,7 @@ public final class Client extends AbstractPersistableCustom { final String middlename = command.stringValueOfParameterNamed(ClientApiConstants.middlenameParamName); final String lastname = command.stringValueOfParameterNamed(ClientApiConstants.lastnameParamName); final String fullname = command.stringValueOfParameterNamed(ClientApiConstants.fullnameParamName); - + final boolean isStaff = command.booleanPrimitiveValueOfParameterNamed(ClientApiConstants.isStaffParamName); final LocalDate dataOfBirth = command.localDateValueOfParameterNamed(ClientApiConstants.dateOfBirthParamName); @@ -383,10 +383,10 @@ public final class Client extends AbstractPersistableCustom { if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } } - + private void validateUpdate() { final List dataValidationErrors = new ArrayList<>(); - //Not validating name parts while update request as firstname/lastname can be along with fullname + //Not validating name parts while update request as firstname/lastname can be along with fullname //when we change clientType from Individual to Organisation or vice-cersa validateActivationDate(dataValidationErrors); @@ -432,7 +432,7 @@ public final class Client extends AbstractPersistableCustom { this.activatedBy = currentUser; this.officeJoiningDate = this.activationDate; this.status = ClientStatus.ACTIVE.getValue(); - + // in case a closed client is being re open this.closureDate = null; this.closureReason = null; @@ -476,15 +476,15 @@ public final class Client extends AbstractPersistableCustom { private boolean isDateInTheFuture(final LocalDate localDate) { return localDate.isAfter(DateUtils.getLocalDateOfTenant()); } - + public boolean isRejected() { return ClientStatus.fromInt(this.status).isRejected(); } - + public boolean isWithdrawn() { return ClientStatus.fromInt(this.status).isWithdrawn(); } - + public Map update(final JsonCommand command) { final Map actualChanges = new LinkedHashMap<>(9); @@ -512,7 +512,7 @@ public final class Client extends AbstractPersistableCustom { actualChanges.put(ClientApiConstants.mobileNoParamName, newValue); this.mobileNo = StringUtils.defaultIfEmpty(newValue, null); } - + if (command.isChangeInStringParameterNamed(ClientApiConstants.emailAddressParamName, this.emailAddress)) { final String newValue = command.stringValueOfParameterNamed(ClientApiConstants.emailAddressParamName); actualChanges.put(ClientApiConstants.emailAddressParamName, newValue); @@ -572,7 +572,7 @@ public final class Client extends AbstractPersistableCustom { final Long newValue = command.longValueOfParameterNamed(ClientApiConstants.clientClassificationIdParamName); actualChanges.put(ClientApiConstants.clientClassificationIdParamName, newValue); } - + if (command.isChangeInIntegerParameterNamed(ClientApiConstants.legalFormIdParamName, this.getLegalForm())) { final Integer newValue = command.integerValueOfParameterNamed(ClientApiConstants.legalFormIdParamName); if(newValue != null) @@ -736,7 +736,7 @@ public final class Client extends AbstractPersistableCustom { if (StringUtils.isNotBlank(this.lastname)) { nameBuilder.append(this.lastname); } - + if (StringUtils.isNotBlank(this.fullname)) { nameBuilder = new StringBuilder(this.fullname); } @@ -747,7 +747,7 @@ public final class Client extends AbstractPersistableCustom { nameBuilder = new StringBuilder(this.fullname); } } - + this.displayName = nameBuilder.toString(); } @@ -808,7 +808,7 @@ public final class Client extends AbstractPersistableCustom { } public String getExternalId() { - return this.externalId; + return this.externalId; } public void setEmailAddress(final String emailAddress) { @@ -881,11 +881,11 @@ public final class Client extends AbstractPersistableCustom { public Integer getStatus() { return this.status; } - + public CodeValue subStatus() { return this.subStatus; } - + public Long subStatusId() { Long subStatusId = null; if (this.subStatus != null) { @@ -1035,7 +1035,7 @@ public final class Client extends AbstractPersistableCustom { this.status = ClientStatus.PENDING.getValue(); } - + public void reOpened(AppUser currentUser, Date reopenedDate) { this.reopenedDate = reopenedDate; this.reopenedBy = currentUser; @@ -1052,11 +1052,11 @@ public final class Client extends AbstractPersistableCustom { public void setLegalForm(Integer legalForm) { this.legalForm = legalForm; } - + public void loadLazyCollections() { this.groups.size() ; } - + public String getFirstname(){return this.firstname;} public String getMiddlename(){return this.middlename;} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientEnumerations.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientEnumerations.java index 2a51a55a7..7259428b0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientEnumerations.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientEnumerations.java @@ -66,17 +66,17 @@ public class ClientEnumerations { return optionData; } - + public static EnumOptionData legalForm(final Integer statusId) { return legalForm(LegalForm.fromInt(statusId)); } - + public static EnumOptionData legalForm(final LegalForm legalForm) { final EnumOptionData optionData = new EnumOptionData(legalForm.getValue().longValue(), legalForm.getCode(), legalForm.toString()); return optionData; } - + public static List legalForm(final LegalForm[] legalForms) { final List optionDatas = new ArrayList<>(); for (final LegalForm legalForm : legalForms) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java index e4084fb13..7e63a26b5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java @@ -33,61 +33,61 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; @Entity @Table(name = "m_family_members") public class ClientFamilyMembers extends AbstractPersistableCustom { - + @ManyToOne @JoinColumn(name="client_id") private Client client; - + @Column(name="firstname") private String firstName; - + @Column(name="middleName") private String middleName; - + @Column(name="lastName") private String lastName; - + @Column(name="qualification") private String qualification; - + @Column(name="mobile_number") private String mobileNumber; - + @Column(name="age") private Long age; - + @Column(name="is_dependent") private Boolean isDependent; - - + + @ManyToOne @JoinColumn(name = "relationship_cv_id") private CodeValue relationship; - + @ManyToOne @JoinColumn(name = "marital_status_cv_id") private CodeValue maritalStatus; - - + + @ManyToOne @JoinColumn(name = "gender_cv_id") private CodeValue gender; - + @ManyToOne @JoinColumn(name = "profession_cv_id") private CodeValue profession; - + @Column(name = "date_of_birth", nullable = true) @Temporal(TemporalType.DATE) private Date dateOfBirth; - + private ClientFamilyMembers(final Client client,final String firstName, final String middleName,final String lastName,final String qualification, final String mobileNumber,final Long age,final Boolean isDependent, final CodeValue relationship,final CodeValue maritalStatus,final CodeValue gender, final Date dateOfBirth,final CodeValue profession) { - + this.client=client; this.firstName=firstName; this.middleName=middleName; @@ -102,13 +102,13 @@ public class ClientFamilyMembers extends AbstractPersistableCustom { this.dateOfBirth=dateOfBirth; this.profession=profession; } - - + + public ClientFamilyMembers() { - + } - + public static ClientFamilyMembers fromJson(final Client client,final String firstName, final String middleName,final String lastName,final String qualification, final String mobileNumber,final Long age,final Boolean isDependent, @@ -229,10 +229,10 @@ public class ClientFamilyMembers extends AbstractPersistableCustom { public void setIsDependent(Boolean isDependent) { this.isDependent = isDependent; } - - - - - + + + + + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembersRepository.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembersRepository.java index 8aebd9078..5dec60fc2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembersRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembersRepository.java @@ -22,7 +22,7 @@ package org.apache.fineract.portfolio.client.domain; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; -public interface ClientFamilyMembersRepository +public interface ClientFamilyMembersRepository extends JpaRepository, JpaSpecificationExecutor { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientIdentifier.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientIdentifier.java index 7c6144efe..1a1038004 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientIdentifier.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientIdentifier.java @@ -50,7 +50,7 @@ public class ClientIdentifier extends AbstractAuditableCustom { @Column(name = "document_key", length = 1000) private String documentKey; - + @Column(name = "status", nullable = false) private Integer status; @@ -59,7 +59,7 @@ public class ClientIdentifier extends AbstractAuditableCustom { @Column(name = "active") private Integer active; - + public static ClientIdentifier fromJson(final Client client, final CodeValue documentType, final JsonCommand command) { final String documentKey = command.stringValueOfParameterNamed("documentKey"); final String description = command.stringValueOfParameterNamed("description"); @@ -77,7 +77,7 @@ public class ClientIdentifier extends AbstractAuditableCustom { this.documentKey = StringUtils.defaultIfEmpty(documentKey, null); this.description = StringUtils.defaultIfEmpty(description, null); ClientIdentifierStatus statusEnum = ClientIdentifierStatus.valueOf(statusName.toUpperCase()); - this.active = null; + this.active = null; if(statusEnum.isActive()){ this.active = statusEnum.getValue(); } @@ -111,7 +111,7 @@ public class ClientIdentifier extends AbstractAuditableCustom { actualChanges.put(descriptionParamName, newValue); this.description = StringUtils.defaultIfEmpty(newValue, null); } - + final String statusParamName = "status"; if(command.isChangeInStringParameterNamed(statusParamName, ClientIdentifierStatus.fromInt(this.status).getCode())){ final String newValue = command.stringValueOfParameterNamed(descriptionParamName); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPerson.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPerson.java index ba2821032..6c8666504 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPerson.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPerson.java @@ -47,69 +47,69 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; @Entity @Table(name = "m_client_non_person") public class ClientNonPerson extends AbstractPersistableCustom { - + @OneToOne(optional = false) @JoinColumn(name = "client_id", referencedColumnName = "id", nullable = false, unique = true) private Client client; - + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "constitution_cv_id", nullable = false) private CodeValue constitution; - + @Column(name = "incorp_no", length = 50, nullable = true) private String incorpNumber; - + @Column(name = "incorp_validity_till", nullable = true) @Temporal(TemporalType.DATE) private Date incorpValidityTill; - + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "main_business_line_cv_id", nullable = true) private CodeValue mainBusinessLine; - + @Column(name = "remarks", length = 150, nullable = true) private String remarks; - + public static ClientNonPerson createNew(final Client client, final CodeValue constitution, final CodeValue mainBusinessLine, String incorpNumber, LocalDate incorpValidityTill, String remarks) - { - return new ClientNonPerson(client, constitution, mainBusinessLine, incorpNumber, incorpValidityTill, remarks); + { + return new ClientNonPerson(client, constitution, mainBusinessLine, incorpNumber, incorpValidityTill, remarks); } - + protected ClientNonPerson() { // } - + private ClientNonPerson(final Client client, final CodeValue constitution, final CodeValue mainBusinessLine, final String incorpNumber, final LocalDate incorpValidityTill, final String remarks) { if(client != null) this.client = client; - + if(constitution != null) this.constitution = constitution; - + if(mainBusinessLine != null) this.mainBusinessLine = mainBusinessLine; - + if (StringUtils.isNotBlank(incorpNumber)) { this.incorpNumber = incorpNumber.trim(); } else { this.incorpNumber = null; } - + if (incorpValidityTill != null) { this.incorpValidityTill = incorpValidityTill.toDateTimeAtStartOfDay().toDate(); } - + if (StringUtils.isNotBlank(remarks)) { this.remarks = remarks.trim(); } else { this.remarks = null; } - + validate(client); } - + private void validate(final Client client) { final List dataValidationErrors = new ArrayList<>(); validateIncorpValidityTillDate(client, dataValidationErrors); @@ -117,7 +117,7 @@ public class ClientNonPerson extends AbstractPersistableCustom { if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } } - + private void validateIncorpValidityTillDate(final Client client, final List dataValidationErrors) { if (getIncorpValidityTillLocalDate() != null && client.dateOfBirthLocalDate() != null && client.dateOfBirthLocalDate().isAfter(getIncorpValidityTillLocalDate())) { @@ -128,7 +128,7 @@ public class ClientNonPerson extends AbstractPersistableCustom { dataValidationErrors.add(error); } } - + public LocalDate getIncorpValidityTillLocalDate() { LocalDate incorpValidityTillLocalDate = null; if (this.incorpValidityTill != null) { @@ -136,7 +136,7 @@ public class ClientNonPerson extends AbstractPersistableCustom { } return incorpValidityTillLocalDate; } - + public Long constitutionId() { Long constitutionId = null; if (this.constitution != null) { @@ -144,7 +144,7 @@ public class ClientNonPerson extends AbstractPersistableCustom { } return constitutionId; } - + public Long mainBusinessLineId() { Long mainBusinessLineId = null; if (this.mainBusinessLine != null) { @@ -152,34 +152,34 @@ public class ClientNonPerson extends AbstractPersistableCustom { } return mainBusinessLineId; } - + public void updateConstitution(CodeValue constitution) { this.constitution = constitution; } - + public void updateMainBusinessLine(CodeValue mainBusinessLine) { this.mainBusinessLine = mainBusinessLine; } - + public Map update(final JsonCommand command) { - + final Map actualChanges = new LinkedHashMap<>(9); - + if (command.isChangeInStringParameterNamed(ClientApiConstants.incorpNumberParamName, this.incorpNumber)) { final String newValue = command.stringValueOfParameterNamed(ClientApiConstants.incorpNumberParamName); actualChanges.put(ClientApiConstants.incorpNumberParamName, newValue); this.incorpNumber = StringUtils.defaultIfEmpty(newValue, null); } - + if (command.isChangeInStringParameterNamed(ClientApiConstants.remarksParamName, this.remarks)) { final String newValue = command.stringValueOfParameterNamed(ClientApiConstants.remarksParamName); actualChanges.put(ClientApiConstants.remarksParamName, newValue); this.remarks = StringUtils.defaultIfEmpty(newValue, null); } - + final String dateFormatAsInput = command.dateFormat(); final String localeAsInput = command.locale(); - + if (command.isChangeInLocalDateParameterNamed(ClientApiConstants.incorpValidityTillParamName, getIncorpValidityTillLocalDate())) { final String valueAsInput = command.stringValueOfParameterNamed(ClientApiConstants.incorpValidityTillParamName); actualChanges.put(ClientApiConstants.incorpValidityTillParamName, valueAsInput); @@ -189,20 +189,20 @@ public class ClientNonPerson extends AbstractPersistableCustom { final LocalDate newValue = command.localDateValueOfParameterNamed(ClientApiConstants.incorpValidityTillParamName); this.incorpValidityTill = newValue.toDate(); } - + if (command.isChangeInLongParameterNamed(ClientApiConstants.constitutionIdParamName, constitutionId())) { final Long newValue = command.longValueOfParameterNamed(ClientApiConstants.constitutionIdParamName); actualChanges.put(ClientApiConstants.constitutionIdParamName, newValue); } - + if (command.isChangeInLongParameterNamed(ClientApiConstants.mainBusinessLineIdParamName, mainBusinessLineId())) { final Long newValue = command.longValueOfParameterNamed(ClientApiConstants.mainBusinessLineIdParamName); actualChanges.put(ClientApiConstants.mainBusinessLineIdParamName, newValue); } - + //validate(); return actualChanges; - + } } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPersonRepository.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPersonRepository.java index 49c226be7..c4b6e1cae 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPersonRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPersonRepository.java @@ -25,6 +25,6 @@ import org.springframework.data.repository.query.Param; public interface ClientNonPersonRepository extends JpaRepository, JpaSpecificationExecutor{ - @Query("select clientNonPerson from ClientNonPerson clientNonPerson where clientNonPerson.client.id = :clientId") - ClientNonPerson findByClientId(@Param("clientId") Long clientId); + @Query("select clientNonPerson from ClientNonPerson clientNonPerson where clientNonPerson.client.id = :clientId") + ClientNonPerson findByClientId(@Param("clientId") Long clientId); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPersonRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPersonRepositoryWrapper.java index 062ea3689..158d47355 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPersonRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPersonRepositoryWrapper.java @@ -33,10 +33,10 @@ import org.springframework.stereotype.Service; */ @Service public class ClientNonPersonRepositoryWrapper { - + private final ClientNonPersonRepository repository; private final PlatformSecurityContext context; - + @Autowired public ClientNonPersonRepositoryWrapper(final ClientNonPersonRepository repository, final PlatformSecurityContext context) { this.repository = repository; @@ -47,11 +47,11 @@ public class ClientNonPersonRepositoryWrapper { return this.repository.findById(id) .orElseThrow(() -> new ClientNonPersonNotFoundException(id)); } - + public ClientNonPerson findOneByClientId(final Long clientId) { return this.repository.findByClientId(clientId); } - + public ClientNonPerson findOneByClientIdWithNotFoundDetection(final Long clientId) { final ClientNonPerson clientNonPerson = this.repository.findByClientId(clientId); if (clientNonPerson == null) { throw new ClientNonPersonNotFoundByClientIdException(clientId); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientRepository.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientRepository.java index eb2714c92..247080b21 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientRepository.java @@ -24,7 +24,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; abstract interface ClientRepository extends JpaRepository, JpaSpecificationExecutor { - + public static final String FIND_CLIENT_BY_ACCOUNT_NUMBER = "select client from Client client where client.accountNumber = :accountNumber"; @Query(FIND_CLIENT_BY_ACCOUNT_NUMBER) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientRepositoryWrapper.java index b6340f409..5eb059f52 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientRepositoryWrapper.java @@ -59,7 +59,7 @@ public class ClientRepositoryWrapper { } return client; } - + public List findAll(final Collection clientIds) { return this.repository.findAllById(clientIds) ; } @@ -74,7 +74,7 @@ public class ClientRepositoryWrapper { public void delete(final Client client) { this.repository.delete(client); } - + public void flush() { this.repository.flush(); } @@ -85,7 +85,7 @@ public class ClientRepositoryWrapper { this.context.validateAccessRights(client.getOffice().getHierarchy()); return client; } - + public Client getClientByAccountNumber(String accountNumber){ Client client = this.repository.getClientByAccountNumber(accountNumber); if(client==null){ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientStatus.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientStatus.java index 50506dd8a..4fa04c6fc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientStatus.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientStatus.java @@ -31,7 +31,7 @@ public enum ClientStatus { CLOSED(600, "clientStatusType.closed"), REJECTED(700,"clientStatusType.rejected"), WITHDRAWN(800,"clientStatusType.withdraw"); - + private final Integer value; private final String code; @@ -61,7 +61,7 @@ public enum ClientStatus { case 800: enumeration = ClientStatus.WITHDRAWN; break; - + } return enumeration; } @@ -90,7 +90,7 @@ public enum ClientStatus { public boolean isActive() { return this.value.equals(ClientStatus.ACTIVE.getValue()); } - + public boolean isClosed() { return this.value.equals(ClientStatus.CLOSED.getValue()); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransaction.java index 62ece1107..5b50dc5b8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransaction.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransaction.java @@ -143,9 +143,9 @@ public class ClientTransaction extends AbstractPersistableCustom { /** * Converts the content of this Client Transaction to a map which can be * passed to the accounting module - * - * - * + * + * + * */ public Map toMapData() { final Map thisTransactionData = new LinkedHashMap<>(); @@ -208,7 +208,7 @@ public class ClientTransaction extends AbstractPersistableCustom { public Client getClient() { return this.client ; } - + public Money getAmount() { return Money.of(getCurrency(), this.amount); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/LegalForm.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/LegalForm.java index 0d85369f6..26f17e6f1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/LegalForm.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/LegalForm.java @@ -22,19 +22,19 @@ package org.apache.fineract.portfolio.client.domain; * Type used to differentiate the type of client */ public enum LegalForm { - + PERSON(1, "legalFormType.person"), - + ENTITY(2, "legalFormType.entity"); - + private final Integer value; private final String code; - + private LegalForm(final Integer value, final String code) { this.value = value; this.code = code; } - + public Integer getValue() { return this.value; } @@ -42,7 +42,7 @@ public enum LegalForm { public String getCode() { return this.code; } - + public static LegalForm fromInt(final Integer type) { LegalForm legalForm = null; @@ -52,15 +52,15 @@ public enum LegalForm { break; case 2: legalForm = LegalForm.ENTITY; - break; + break; } return legalForm; } - + public boolean isPerson() { return this.value.equals(LegalForm.PERSON.getValue()); } - + public boolean isEntity() { return this.value.equals(LegalForm.ENTITY.getValue()); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientNonPersonNotFoundByClientIdException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientNonPersonNotFoundByClientIdException.java index 860cc2d4b..872989425 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientNonPersonNotFoundByClientIdException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientNonPersonNotFoundByClientIdException.java @@ -24,7 +24,7 @@ import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourc * A {@link RuntimeException} thrown when clientNonPerson resources are not found. */ public class ClientNonPersonNotFoundByClientIdException extends AbstractPlatformResourceNotFoundException { - + public ClientNonPersonNotFoundByClientIdException(final Long id) { super("error.msg.clientnonperson.id.invalid", "ClientNonPerson with client identifier " + id + " does not exist", id); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientNonPersonNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientNonPersonNotFoundException.java index 82420fe47..99320ad1e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientNonPersonNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientNonPersonNotFoundException.java @@ -24,9 +24,9 @@ import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourc * A {@link RuntimeException} thrown when clientNonPerson resources are not found. */ public class ClientNonPersonNotFoundException extends AbstractPlatformResourceNotFoundException { - + public ClientNonPersonNotFoundException(final Long id) { super("error.msg.clientnonperson.id.invalid", "ClientNonPerson with identifier " + id + " does not exist", id); } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientNotFoundException.java index 1c182d45a..23a6cad42 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientNotFoundException.java @@ -28,11 +28,11 @@ public class ClientNotFoundException extends AbstractPlatformResourceNotFoundExc public ClientNotFoundException(final Long id) { super("error.msg.client.id.invalid", "Client with identifier " + id + " does not exist", id); } - + public ClientNotFoundException() { super("error.msg.client.not.found.with.basic.details", "Client not found with basic details."); } - + public ClientNotFoundException(String accountNumber) { super("error.msg.client.not.found.with.account.number", "Client not found with account number "+accountNumber+"."); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/AddClientFamilyMemberCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/AddClientFamilyMemberCommandHandler.java index 69be3f7d3..146a78a1e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/AddClientFamilyMemberCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/AddClientFamilyMemberCommandHandler.java @@ -30,20 +30,20 @@ import org.springframework.stereotype.Service; @Service @CommandType(entity = "FAMILYMEMBERS", action = "CREATE") -public class AddClientFamilyMemberCommandHandler implements NewCommandSourceHandler +public class AddClientFamilyMemberCommandHandler implements NewCommandSourceHandler { private final ClientFamilyMembersWritePlatformService clientFamilyMembersWritePlatformService; - + @Autowired public AddClientFamilyMemberCommandHandler(final ClientFamilyMembersWritePlatformService clientFamilyMembersWritePlatformService) { this.clientFamilyMembersWritePlatformService=clientFamilyMembersWritePlatformService; } - + @Override public CommandProcessingResult processCommand(JsonCommand command) { - + return this.clientFamilyMembersWritePlatformService.addFamilyMember(command.getClientId(), command); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/DeleteClientFamilyMemberCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/DeleteClientFamilyMemberCommandHandler.java index 1414ef387..08e4b6e84 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/DeleteClientFamilyMemberCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/DeleteClientFamilyMemberCommandHandler.java @@ -32,16 +32,16 @@ import org.springframework.stereotype.Service; public class DeleteClientFamilyMemberCommandHandler implements NewCommandSourceHandler { private final ClientFamilyMembersWritePlatformService clientFamilyMembersWritePlatformService; - + @Autowired public DeleteClientFamilyMemberCommandHandler(final ClientFamilyMembersWritePlatformService clientFamilyMembersWritePlatformService) { this.clientFamilyMembersWritePlatformService=clientFamilyMembersWritePlatformService; } - + @Override public CommandProcessingResult processCommand(JsonCommand command) { - + return this.clientFamilyMembersWritePlatformService.deleteFamilyMember(command.entityId(), command); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/RejectClientCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/RejectClientCommandHandler.java index 9fb72c481..4edc80f9e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/RejectClientCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/RejectClientCommandHandler.java @@ -28,7 +28,7 @@ import org.springframework.transaction.annotation.Transactional; @Service @CommandType(entity = "CLIENT", action = "REJECT") public class RejectClientCommandHandler implements NewCommandSourceHandler { - + private final ClientWritePlatformService clientWritePlatformService; @Autowired @@ -45,4 +45,4 @@ public class RejectClientCommandHandler implements NewCommandSourceHandler { } - + diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/UpdateClientFamilyMemberCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/UpdateClientFamilyMemberCommandHandler.java index 3b4287933..46c4e7c41 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/UpdateClientFamilyMemberCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/UpdateClientFamilyMemberCommandHandler.java @@ -33,16 +33,16 @@ import org.springframework.stereotype.Service; public class UpdateClientFamilyMemberCommandHandler implements NewCommandSourceHandler { private final ClientFamilyMembersWritePlatformService clientFamilyMembersWritePlatformService; - + @Autowired public UpdateClientFamilyMemberCommandHandler(final ClientFamilyMembersWritePlatformService clientFamilyMembersWritePlatformService) { this.clientFamilyMembersWritePlatformService=clientFamilyMembersWritePlatformService; } - + @Override public CommandProcessingResult processCommand(JsonCommand command) { - + return this.clientFamilyMembersWritePlatformService.updateFamilyMember(command.entityId(), command); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/UpdateClientSavingsAccountCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/UpdateClientSavingsAccountCommandHandler.java index ef754001d..056a67e57 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/UpdateClientSavingsAccountCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/UpdateClientSavingsAccountCommandHandler.java @@ -30,7 +30,7 @@ import org.springframework.transaction.annotation.Transactional; @Service @CommandType(entity = "CLIENT", action = "UPDATESAVINGSACCOUNT") public class UpdateClientSavingsAccountCommandHandler implements NewCommandSourceHandler { - + private final ClientWritePlatformService clientWritePlatformService; @Autowired diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/WithdrawClientCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/WithdrawClientCommandHandler.java index de5515949..196264c18 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/WithdrawClientCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/WithdrawClientCommandHandler.java @@ -31,7 +31,7 @@ import org.springframework.transaction.annotation.Transactional; @Service @CommandType(entity = "CLIENT", action = "WITHDRAW") public class WithdrawClientCommandHandler implements NewCommandSourceHandler { - + private final ClientWritePlatformService clientWritePlatformService; @Autowired diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/serialization/ClientFamilyMemberCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/serialization/ClientFamilyMemberCommandFromApiJsonDeserializer.java index c0852a5fa..6539b029e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/serialization/ClientFamilyMemberCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/serialization/ClientFamilyMemberCommandFromApiJsonDeserializer.java @@ -43,22 +43,22 @@ import com.google.gson.JsonElement; import com.google.gson.reflect.TypeToken; @Component -public class ClientFamilyMemberCommandFromApiJsonDeserializer +public class ClientFamilyMemberCommandFromApiJsonDeserializer { private final FromJsonHelper fromApiJsonHelper; private final Set supportedParameters = new HashSet<>(Arrays.asList("id","clientId","firstName","middleName","lastName","qualification","mobileNumber", "age","isDependent","relationshipId","maritalStatusId","genderId","dateOfBirth","professionId","locale","dateFormat","familyMembers")); - + @Autowired private ClientFamilyMemberCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper=fromApiJsonHelper; } - - + + public void validateForCreate(String json) { - + if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); } @@ -69,12 +69,12 @@ public class ClientFamilyMemberCommandFromApiJsonDeserializer final List dataValidationErrors = new ArrayList<>(); final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors) .resource("FamilyMembers"); - + final JsonElement element = this.fromApiJsonHelper.parse(json); - - - - + + + + if(this.fromApiJsonHelper.extractArrayNamed("familyMembers", element)!=null) { final JsonArray familyMembers= this.fromApiJsonHelper.extractJsonArrayNamed("familyMembers", element); @@ -84,17 +84,17 @@ public class ClientFamilyMemberCommandFromApiJsonDeserializer { baseDataValidator.reset().value(this.fromApiJsonHelper.extractJsonArrayNamed("familyMembers", element)).arrayNotEmpty(); } - - + + validateForCreate(1,json); - + } - - - + + + public void validateForCreate(final long clientId,String json) { - + if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); } @@ -108,107 +108,107 @@ public class ClientFamilyMemberCommandFromApiJsonDeserializer .resource("FamilyMembers"); final JsonElement element = this.fromApiJsonHelper.parse(json); - + baseDataValidator.reset().value(clientId).notBlank().integerGreaterThanZero(); - + if(this.fromApiJsonHelper.extractStringNamed("firstName", element)!=null) { final String firstName = this.fromApiJsonHelper.extractStringNamed("firstName", element); - baseDataValidator.reset().parameter("firstName").value(firstName).notNull().notBlank().notExceedingLengthOf(100); + baseDataValidator.reset().parameter("firstName").value(firstName).notNull().notBlank().notExceedingLengthOf(100); } else { baseDataValidator.reset().parameter("firstName").value(this.fromApiJsonHelper.extractStringNamed("firstName", element)).notNull().notBlank().notExceedingLengthOf(100); } - + if(this.fromApiJsonHelper.extractStringNamed("lastName", element)!=null) { final String lastName = this.fromApiJsonHelper.extractStringNamed("lastName", element); - baseDataValidator.reset().parameter("lastName").value(lastName).notNull().notBlank().notExceedingLengthOf(100); + baseDataValidator.reset().parameter("lastName").value(lastName).notNull().notBlank().notExceedingLengthOf(100); } - - + + if(this.fromApiJsonHelper.extractStringNamed("middleName", element)!=null) { final String middleName = this.fromApiJsonHelper.extractStringNamed("middleName", element); - baseDataValidator.reset().parameter("middleName").value(middleName).notNull().notBlank().notExceedingLengthOf(100); + baseDataValidator.reset().parameter("middleName").value(middleName).notNull().notBlank().notExceedingLengthOf(100); } - - + + if(this.fromApiJsonHelper.extractStringNamed("qualification", element)!=null) { final String qualification = this.fromApiJsonHelper.extractStringNamed("qualification", element); - baseDataValidator.reset().parameter("qualification").value(qualification).notNull().notBlank().notExceedingLengthOf(100); + baseDataValidator.reset().parameter("qualification").value(qualification).notNull().notBlank().notExceedingLengthOf(100); } - + if(this.fromApiJsonHelper.extractStringNamed("mobileNumber", element)!=null) { final String mobileNumber = this.fromApiJsonHelper.extractStringNamed("mobileNumber", element); - baseDataValidator.reset().parameter("mobileNumber").value(mobileNumber).notNull().notBlank().notExceedingLengthOf(100); + baseDataValidator.reset().parameter("mobileNumber").value(mobileNumber).notNull().notBlank().notExceedingLengthOf(100); } - + if(this.fromApiJsonHelper.extractBooleanNamed("isDependent", element)!=null) { final Boolean isDependent = this.fromApiJsonHelper.extractBooleanNamed("isDependent", element); - baseDataValidator.reset().parameter("isDependent").value(isDependent).notNull().notBlank().notExceedingLengthOf(100); + baseDataValidator.reset().parameter("isDependent").value(isDependent).notNull().notBlank().notExceedingLengthOf(100); } - + if(this.fromApiJsonHelper.extractLongNamed("relationShipId", element)!=null) { final long relationShipId=this.fromApiJsonHelper.extractLongNamed("relationShipId", element); baseDataValidator.reset().parameter("relationShipId").value(relationShipId).notBlank().longGreaterThanZero(); - + } else { baseDataValidator.reset().parameter("relationShipId").value(this.fromApiJsonHelper.extractLongNamed("relationShipId", element)).notBlank().longGreaterThanZero(); } - + if(this.fromApiJsonHelper.extractLongNamed("maritalStatusId", element)!=null) { final long maritalStatusId=this.fromApiJsonHelper.extractLongNamed("maritalStatusId", element); baseDataValidator.reset().parameter("maritalStatusId").value(maritalStatusId).notBlank().longGreaterThanZero(); - + } - + if(this.fromApiJsonHelper.extractLongNamed("genderId", element)!=null) { final long genderId=this.fromApiJsonHelper.extractLongNamed("genderId", element); baseDataValidator.reset().parameter("genderId").value(genderId).notBlank().longGreaterThanZero(); - + } - + if(this.fromApiJsonHelper.extractLongNamed("age", element)!=null) { final long age=this.fromApiJsonHelper.extractLongNamed("age", element); baseDataValidator.reset().parameter("age").value(age).notBlank().longGreaterThanZero(); - + } - + if(this.fromApiJsonHelper.extractLongNamed("professionId", element)!=null) { final long professionId=this.fromApiJsonHelper.extractLongNamed("professionId", element); baseDataValidator.reset().parameter("professionId").value(professionId).notBlank().longGreaterThanZero(); - + } - - + + if(this.fromApiJsonHelper.extractLocalDateNamed("dateOfBirth", element)!=null) { final LocalDate dateOfBirth=this.fromApiJsonHelper.extractLocalDateNamed("dateOfBirth", element); baseDataValidator.reset().parameter("dateOfBirth").value(dateOfBirth).value(dateOfBirth).notNull() .validateDateBefore(DateUtils.getLocalDateOfTenant()); - + } - - - + + + } - - + + public void validateForUpdate(final long familyMemberId,String json) { - + if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); } @@ -222,91 +222,91 @@ public class ClientFamilyMemberCommandFromApiJsonDeserializer .resource("FamilyMembers"); final JsonElement element = this.fromApiJsonHelper.parse(json); - + baseDataValidator.reset().value(familyMemberId).notBlank().integerGreaterThanZero(); - + if(this.fromApiJsonHelper.extractStringNamed("firstName", element)!=null) { final String firstName = this.fromApiJsonHelper.extractStringNamed("firstName", element); - baseDataValidator.reset().parameter("firstName").value(firstName).notNull().notBlank().notExceedingLengthOf(100); + baseDataValidator.reset().parameter("firstName").value(firstName).notNull().notBlank().notExceedingLengthOf(100); } - - + + if(this.fromApiJsonHelper.extractStringNamed("lastName", element)!=null) { final String lastName = this.fromApiJsonHelper.extractStringNamed("lastName", element); - baseDataValidator.reset().parameter("lastName").value(lastName).notNull().notBlank().notExceedingLengthOf(100); + baseDataValidator.reset().parameter("lastName").value(lastName).notNull().notBlank().notExceedingLengthOf(100); } - - + + if(this.fromApiJsonHelper.extractStringNamed("middleName", element)!=null) { final String middleName = this.fromApiJsonHelper.extractStringNamed("middleName", element); - baseDataValidator.reset().parameter("middleName").value(middleName).notNull().notBlank().notExceedingLengthOf(100); + baseDataValidator.reset().parameter("middleName").value(middleName).notNull().notBlank().notExceedingLengthOf(100); } - - + + if(this.fromApiJsonHelper.extractStringNamed("qualification", element)!=null) { final String qualification = this.fromApiJsonHelper.extractStringNamed("qualification", element); - baseDataValidator.reset().parameter("qualification").value(qualification).notNull().notBlank().notExceedingLengthOf(100); + baseDataValidator.reset().parameter("qualification").value(qualification).notNull().notBlank().notExceedingLengthOf(100); } - + if(this.fromApiJsonHelper.extractLongNamed("relationShipId", element)!=null) { final long relationShipId=this.fromApiJsonHelper.extractLongNamed("relationShipId", element); baseDataValidator.reset().parameter("relationShipId").value(relationShipId).notBlank().longGreaterThanZero(); - + } - - + + if(this.fromApiJsonHelper.extractLongNamed("maritalStatusId", element)!=null) { final long maritalStatusId=this.fromApiJsonHelper.extractLongNamed("maritalStatusId", element); baseDataValidator.reset().parameter("maritalStatusId").value(maritalStatusId).notBlank().longGreaterThanZero(); - + } - + if(this.fromApiJsonHelper.extractLongNamed("genderId", element)!=null) { final long genderId=this.fromApiJsonHelper.extractLongNamed("genderId", element); baseDataValidator.reset().parameter("genderId").value(genderId).longGreaterThanZero(); - + } - + if(this.fromApiJsonHelper.extractLongNamed("professionId", element)!=null) { final long professionId=this.fromApiJsonHelper.extractLongNamed("professionId", element); baseDataValidator.reset().parameter("professionId").value(professionId).longGreaterThanZero(); - + } - - + + if(this.fromApiJsonHelper.extractLocalDateNamed("dateOfBirth", element)!=null) { LocalDateTime currentDate = LocalDateTime.now(); - + final LocalDate dateOfBirth=this.fromApiJsonHelper.extractLocalDateNamed("dateOfBirth", element); baseDataValidator.reset().parameter("dateOfBirth").value(dateOfBirth).validateDateBefore(currentDate.toLocalDate()); - + } - - - + + + } - + public void validateForDelete(final long familyMemberId) { - - + + final List dataValidationErrors = new ArrayList<>(); final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors) .resource("FamilyMembers"); //final JsonElement element = this.fromApiJsonHelper.parse(json); - + baseDataValidator.reset().value(familyMemberId).notBlank().integerGreaterThanZero(); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeWritePlatformServiceJpaRepositoryImpl.java index b5043fc5a..ca2d481dc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeWritePlatformServiceJpaRepositoryImpl.java @@ -261,7 +261,7 @@ public class ClientChargeWritePlatformServiceJpaRepositoryImpl implements Client *
* charge is not already paid or waived
* amount is not more than total due - * + * * @param client * @param clientCharge * @param fmt @@ -368,7 +368,7 @@ public class ClientChargeWritePlatformServiceJpaRepositoryImpl implements Client /** * Ensures that the charge due date is not on a holiday or a non working day - * + * * @param clientCharge * @param fmt */ @@ -380,7 +380,7 @@ public class ClientChargeWritePlatformServiceJpaRepositoryImpl implements Client /** * Ensures that the charge transaction date (for payments) is not on a * holiday or a non working day - * + * * @param savingsAccountCharge * @param fmt */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersReadPlatformService.java index dfc25641a..c36618645 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersReadPlatformService.java @@ -23,11 +23,11 @@ import java.util.Collection; import org.apache.fineract.portfolio.client.data.ClientFamilyMembersData; -public interface ClientFamilyMembersReadPlatformService +public interface ClientFamilyMembersReadPlatformService { Collection getClientFamilyMembers(long clientId); - + ClientFamilyMembersData getClientFamilyMember(long id); ClientFamilyMembersData retrieveTemplate(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersReadPlatformServiceImpl.java index a01987fcf..74f623750 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersReadPlatformServiceImpl.java @@ -43,7 +43,7 @@ public class ClientFamilyMembersReadPlatformServiceImpl implements ClientFamilyM private final JdbcTemplate jdbcTemplate; private final PlatformSecurityContext context; private final CodeValueReadPlatformService codeValueReadPlatformService; - + @Autowired public ClientFamilyMembersReadPlatformServiceImpl(final PlatformSecurityContext context, @@ -51,7 +51,7 @@ public class ClientFamilyMembersReadPlatformServiceImpl implements ClientFamilyM this.context = context; this.jdbcTemplate = new JdbcTemplate(dataSource); this.codeValueReadPlatformService=codeValueReadPlatformService; - + } private static final class ClientFamilyMembersMapper implements RowMapper { @@ -88,16 +88,16 @@ public class ClientFamilyMembersReadPlatformServiceImpl implements ClientFamilyM final LocalDate dateOfBirth = JdbcSupport.getLocalDate(rs, "dateOfBirth"); final String profession = rs.getString("profession"); final long professionId = rs.getLong("professionId"); - + return ClientFamilyMembersData.instance(id, clientId, firstName, middleName, lastName, qualification,mobileNumber,age,isDependent,relationship,relationshipId,maritalStatus,maritalStatusId,gender,genderId,dateOfBirth,profession,professionId); - - + + } } - - + + @Override public Collection getClientFamilyMembers(long clientId) { @@ -108,8 +108,8 @@ public class ClientFamilyMembersReadPlatformServiceImpl implements ClientFamilyM return this.jdbcTemplate.query(sql, rm, new Object[] { clientId }); } - - + + @Override public ClientFamilyMembersData getClientFamilyMember(long id) { @@ -120,10 +120,10 @@ public class ClientFamilyMembersReadPlatformServiceImpl implements ClientFamilyM return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { id }); } - + @Override public ClientFamilyMembersData retrieveTemplate() { - + final List maritalStatusOptions = new ArrayList<>( this.codeValueReadPlatformService.retrieveCodeValuesByCode("MARITAL STATUS")); @@ -131,11 +131,11 @@ public class ClientFamilyMembersReadPlatformServiceImpl implements ClientFamilyM final List relationshipOptions = new ArrayList<>( this.codeValueReadPlatformService.retrieveCodeValuesByCode("RELATIONSHIP")); - + final List professionOptions = new ArrayList<>( this.codeValueReadPlatformService.retrieveCodeValuesByCode("PROFESSION")); - return ClientFamilyMembersData.templateInstance(relationshipOptions,genderOptions, + return ClientFamilyMembersData.templateInstance(relationshipOptions,genderOptions, maritalStatusOptions, professionOptions); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformService.java index 47d3bb51f..2d2bfbcd9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformService.java @@ -23,11 +23,11 @@ import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; import org.apache.fineract.portfolio.client.domain.Client; -public interface ClientFamilyMembersWritePlatformService +public interface ClientFamilyMembersWritePlatformService { - + CommandProcessingResult addFamilyMember(final long clientId,final JsonCommand command); - + CommandProcessingResult addClientFamilyMember(final Client client,final JsonCommand command); CommandProcessingResult updateFamilyMember(Long familyMemberId, JsonCommand command); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformServiceImpl.java index 00835e9bc..d5fb57e69 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformServiceImpl.java @@ -43,16 +43,16 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; @Service -public class ClientFamilyMembersWritePlatformServiceImpl implements ClientFamilyMembersWritePlatformService +public class ClientFamilyMembersWritePlatformServiceImpl implements ClientFamilyMembersWritePlatformService { - + private final PlatformSecurityContext context; private final CodeValueRepository codeValueRepository; private final ClientFamilyMembersRepository clientFamilyRepository; private final ClientRepositoryWrapper clientRepositoryWrapper; private final ClientFamilyMemberCommandFromApiJsonDeserializer apiJsonDeserializer; - - + + @Autowired public ClientFamilyMembersWritePlatformServiceImpl(final PlatformSecurityContext context,final CodeValueRepository codeValueRepository, final ClientFamilyMembersRepository clientFamilyRepository,final ClientRepositoryWrapper clientRepositoryWrapper,final ClientFamilyMemberCommandFromApiJsonDeserializer apiJsonDeserializer @@ -63,15 +63,15 @@ public class ClientFamilyMembersWritePlatformServiceImpl implements ClientFamily this.clientFamilyRepository=clientFamilyRepository; this.clientRepositoryWrapper=clientRepositoryWrapper; this.apiJsonDeserializer=apiJsonDeserializer; - + } - - + + @Override - public CommandProcessingResult addFamilyMember(final long clientId,final JsonCommand command) + public CommandProcessingResult addFamilyMember(final long clientId,final JsonCommand command) { - + Long relationshipId=null; CodeValue relationship=null; CodeValue maritalStatus=null; @@ -88,49 +88,49 @@ public class ClientFamilyMembersWritePlatformServiceImpl implements ClientFamily Long age=null; Boolean isDependent=false; Date dateOfBirth=null; - - + + this.context.authenticatedUser(); apiJsonDeserializer.validateForCreate(clientId, command.json()); - - + + Client client=clientRepositoryWrapper.findOneWithNotFoundDetection(clientId); - + if (command.stringValueOfParameterNamed("firstName") != null) { firstName = command.stringValueOfParameterNamed("firstName"); } - + if (command.stringValueOfParameterNamed("middleName") != null) { middleName = command.stringValueOfParameterNamed("middleName"); } - + if (command.stringValueOfParameterNamed("lastName") != null) { lastName = command.stringValueOfParameterNamed("lastName"); } - - + + if (command.stringValueOfParameterNamed("qualification") != null) { qualification = command.stringValueOfParameterNamed("qualification"); } - + if (command.stringValueOfParameterNamed("mobileNumber") != null) { mobileNumber = command.stringValueOfParameterNamed("mobileNumber"); } - - + + if (command.longValueOfParameterNamed("age") != null) { age = command.longValueOfParameterNamed("age"); } - + if (command.booleanObjectValueOfParameterNamed("isDependent") != null) { isDependent = command.booleanObjectValueOfParameterNamed("isDependent"); } - + if (command.longValueOfParameterNamed("relationshipId") != null) { relationshipId = command.longValueOfParameterNamed("relationshipId"); relationship = this.codeValueRepository.getOne(relationshipId); } - + if (command.longValueOfParameterNamed("maritalStatusId") != null) { maritalStatusId = command.longValueOfParameterNamed("maritalStatusId"); maritalStatus = this.codeValueRepository.getOne(maritalStatusId); @@ -140,33 +140,33 @@ public class ClientFamilyMembersWritePlatformServiceImpl implements ClientFamily genderId = command.longValueOfParameterNamed("genderId"); gender = this.codeValueRepository.getOne(genderId); } - + if (command.longValueOfParameterNamed("professionId") != null) { professionId = command.longValueOfParameterNamed("professionId"); profession = this.codeValueRepository.getOne(professionId); } - + if(command.DateValueOfParameterNamed("dateOfBirth")!=null) { dateOfBirth=command.DateValueOfParameterNamed("dateOfBirth"); - + } - + ClientFamilyMembers clientFamilyMembers=ClientFamilyMembers.fromJson(client, firstName, middleName, lastName, qualification,mobileNumber,age,isDependent, relationship, maritalStatus, gender, dateOfBirth, profession); - + this.clientFamilyRepository.save(clientFamilyMembers); - + return new CommandProcessingResultBuilder().withCommandId(command.commandId()) .withEntityId(clientFamilyMembers.getId()).build(); - - - + + + } - + @Override public CommandProcessingResult addClientFamilyMember(final Client client,final JsonCommand command) { - + Long relationshipId=null; CodeValue relationship=null; CodeValue maritalStatus=null; @@ -183,65 +183,65 @@ public class ClientFamilyMembersWritePlatformServiceImpl implements ClientFamily String mobileNumber=""; Long age=null; Boolean isDependent=false; - - - - + + + + this.context.authenticatedUser(); - - + + //Client client=clientRepositoryWrapper.findOneWithNotFoundDetection(clientId); - + ClientFamilyMembers familyMember=new ClientFamilyMembers(); - + //apiJsonDeserializer.validateForCreate(command.json()); - - + + JsonArray familyMembers=command.arrayOfParameterNamed("familyMembers"); - + for(JsonElement members :familyMembers) { - + apiJsonDeserializer.validateForCreate(members.toString()); - + JsonObject member=members.getAsJsonObject(); - - + + if (member.get("firstName") != null) { firstName = member.get("firstName").getAsString(); } - + if (member.get("middleName") != null) { middleName = member.get("middleName").getAsString(); } - + if (member.get("lastName") != null) { lastName = member.get("lastName").getAsString(); } - - + + if (member.get("qualification") != null) { qualification = member.get("qualification").getAsString(); } - + if (member.get("mobileNumber") != null) { mobileNumber = member.get("mobileNumber").getAsString(); } - - + + if (member.get("age") != null) { age = member.get("age").getAsLong(); } - + if (member.get("isDependent") != null) { isDependent = member.get("isDependent").getAsBoolean(); } - + if (member.get("relationshipId") != null) { relationshipId = member.get("relationshipId").getAsLong(); relationship = this.codeValueRepository.getOne(relationshipId); } - + if (member.get("maritalStatusId") != null) { maritalStatusId = member.get("maritalStatusId").getAsLong(); maritalStatus = this.codeValueRepository.getOne(maritalStatusId); @@ -251,15 +251,15 @@ public class ClientFamilyMembersWritePlatformServiceImpl implements ClientFamily genderId = member.get("genderId").getAsLong(); gender = this.codeValueRepository.getOne(genderId); } - + if (member.get("professionId") != null) { professionId = member.get("professionId").getAsLong(); profession = this.codeValueRepository.getOne(professionId); } - + if(member.get("dateOfBirth")!=null) { - + DateFormat format = new SimpleDateFormat(member.get("dateFormat").getAsString()); Date date; try { @@ -269,34 +269,34 @@ public class ClientFamilyMembersWritePlatformServiceImpl implements ClientFamily // TODO Auto-generated catch block e.printStackTrace(); } - - - + + + /* this.fromApiJsonHelper.extractDateFormatParameter(member.get("dateOfBirth").getAsJsonObject());*/ - - + + } - + familyMember=ClientFamilyMembers.fromJson(client, firstName, middleName, lastName, qualification,mobileNumber,age,isDependent, relationship, maritalStatus, gender, dateOfBirth, profession); - - this.clientFamilyRepository.save(familyMember); - + + this.clientFamilyRepository.save(familyMember); + } - - - + + + return new CommandProcessingResultBuilder().withCommandId(command.commandId()) .withEntityId(familyMember.getId()).build(); - - + + } @Override public CommandProcessingResult updateFamilyMember(Long familyMemberId, JsonCommand command) { - - + + Long relationshipId=null; CodeValue relationship=null; CodeValue maritalStatus=null; @@ -314,65 +314,65 @@ public class ClientFamilyMembersWritePlatformServiceImpl implements ClientFamily Long age=null; Boolean isDependent=false; //long clientFamilyMemberId=0; - - + + this.context.authenticatedUser(); - + apiJsonDeserializer.validateForUpdate(familyMemberId, command.json()); - + /*if (command.stringValueOfParameterNamed("clientFamilyMemberId") != null) { clientFamilyMemberId = command.longValueOfParameterNamed("clientFamilyMemberId"); }*/ - - + + ClientFamilyMembers clientFamilyMember=clientFamilyRepository.getOne(familyMemberId); - + //Client client=clientRepositoryWrapper.findOneWithNotFoundDetection(clientId); - + if (command.stringValueOfParameterNamed("firstName") != null) { firstName = command.stringValueOfParameterNamed("firstName"); clientFamilyMember.setFirstName(firstName); } - + if (command.stringValueOfParameterNamed("middleName") != null) { middleName = command.stringValueOfParameterNamed("middleName"); clientFamilyMember.setMiddleName(middleName); } - + if (command.stringValueOfParameterNamed("lastName") != null) { lastName = command.stringValueOfParameterNamed("lastName"); clientFamilyMember.setLastName(lastName); } - - + + if (command.stringValueOfParameterNamed("qualification") != null) { qualification = command.stringValueOfParameterNamed("qualification"); clientFamilyMember.setQualification(qualification); } - - + + if (command.stringValueOfParameterNamed("mobileNumber") != null) { mobileNumber = command.stringValueOfParameterNamed("mobileNumber"); clientFamilyMember.setMobileNumber(mobileNumber); } - - + + if (command.longValueOfParameterNamed("age") != null) { age = command.longValueOfParameterNamed("age"); clientFamilyMember.setAge(age); } - + if (command.booleanObjectValueOfParameterNamed("isDependent") != null) { isDependent = command.booleanObjectValueOfParameterNamed("isDependent"); clientFamilyMember.setIsDependent(isDependent); } - + if (command.longValueOfParameterNamed("relationShipId") != null) { relationshipId = command.longValueOfParameterNamed("relationShipId"); relationship = this.codeValueRepository.getOne(relationshipId); clientFamilyMember.setRelationship(relationship); } - + if (command.longValueOfParameterNamed("maritalStatusId") != null) { maritalStatusId = command.longValueOfParameterNamed("maritalStatusId"); maritalStatus = this.codeValueRepository.getOne(maritalStatusId); @@ -384,25 +384,25 @@ public class ClientFamilyMembersWritePlatformServiceImpl implements ClientFamily gender = this.codeValueRepository.getOne(genderId); clientFamilyMember.setGender(gender); } - + if (command.longValueOfParameterNamed("professionId") != null) { professionId = command.longValueOfParameterNamed("professionId"); profession = this.codeValueRepository.getOne(professionId); clientFamilyMember.setProfession(profession); } - + if(command.DateValueOfParameterNamed("dateOfBirth")!=null) { dateOfBirth=command.DateValueOfParameterNamed("dateOfBirth"); clientFamilyMember.setDateOfBirth(dateOfBirth); - - + + } - + //ClientFamilyMembers clientFamilyMembers=ClientFamilyMembers.fromJson(client, firstName, middleName, lastName, qualification, relationship, maritalStatus, gender, dateOfBirth, profession); - + this.clientFamilyRepository.save(clientFamilyMember); - + return new CommandProcessingResultBuilder().withCommandId(command.commandId()) .withEntityId(clientFamilyMember.getId()).build(); } @@ -412,37 +412,37 @@ public class ClientFamilyMembersWritePlatformServiceImpl implements ClientFamily @Override public CommandProcessingResult deleteFamilyMember(Long clientFamilyMemberId, JsonCommand command) { // TODO Auto-generated method stub - + this.context.authenticatedUser(); - + apiJsonDeserializer.validateForDelete(clientFamilyMemberId); - + ClientFamilyMembers clientFamilyMember=null; - - - + + + if(clientFamilyMemberId!=null) { clientFamilyMember=clientFamilyRepository.getOne(clientFamilyMemberId); clientFamilyRepository.delete(clientFamilyMember); - + } - - + + if(clientFamilyMember!=null) { return new CommandProcessingResultBuilder().withCommandId(command.commandId()) - .withEntityId(clientFamilyMember.getId()).build(); + .withEntityId(clientFamilyMember.getId()).build(); } else { return new CommandProcessingResultBuilder().withCommandId(command.commandId()) - .withEntityId(Long.valueOf(clientFamilyMemberId)).build(); + .withEntityId(Long.valueOf(clientFamilyMemberId)).build(); } - + } - - - + + + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java index 7859dff5e..d48745451 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java @@ -46,7 +46,7 @@ public interface ClientReadPlatformService { Collection retrieveActiveClientMembersOfCenter(final Long centerId); ClientData retrieveAllNarrations(String clientNarrations); - + Date retrieveClientTransferProposalDate(Long clientId); void validateClient(Long clientId); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientWritePlatformService.java index 2c06b8ff2..f98748f80 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientWritePlatformService.java @@ -46,7 +46,7 @@ public interface ClientWritePlatformService { CommandProcessingResult reActivateClient(Long entityId, JsonCommand command); CommandProcessingResult undoRejection(Long entityId, JsonCommand command); - + CommandProcessingResult undoWithdrawal(Long entityId, JsonCommand command); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/LoanStatusMapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/LoanStatusMapper.java index 4fbd5ba93..00e5cc15d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/LoanStatusMapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/LoanStatusMapper.java @@ -49,7 +49,7 @@ public class LoanStatusMapper { public boolean isClosed() { return Integer.valueOf(600).equals(this.statusId) || isWithdrawnByClient() || isRejected(); } - + public boolean isOverpaid() { return Integer.valueOf(700).equals(this.statusId); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/service/CollateralReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/service/CollateralReadPlatformService.java index f5b408d6d..f98ce37f8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/service/CollateralReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/service/CollateralReadPlatformService.java @@ -26,7 +26,7 @@ public interface CollateralReadPlatformService { /** * Validates the passed in loanId before retrieving Collaterals for the same - * + * * @param loanId * @return */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/CollectionSheetConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/CollectionSheetConstants.java index 5ce58e489..49d13d477 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/CollectionSheetConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/CollectionSheetConstants.java @@ -40,7 +40,7 @@ public class CollectionSheetConstants { public static final String calendarIdParamName = "calendarId"; public static final String officeIdParamName = "officeId"; public static final String staffIdParamName = "staffId"; - public static final String isTransactionDateOnNonMeetingDateParamName = "isTransactionDateOnNonMeetingDate"; + public static final String isTransactionDateOnNonMeetingDateParamName = "isTransactionDateOnNonMeetingDate"; // attendance parameters public static final String clientsAttendanceParamName = "clientsAttendance"; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/IndividualCollectionSheetLoanFlatData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/IndividualCollectionSheetLoanFlatData.java index 7eb996db1..c9c7b2293 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/IndividualCollectionSheetLoanFlatData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/IndividualCollectionSheetLoanFlatData.java @@ -133,7 +133,7 @@ public class IndividualCollectionSheetLoanFlatData { public IndividualClientData getClientData() { return IndividualClientData.instance(this.clientId, this.clientName); } - + public BigDecimal getFeeDue() { return this.feeDue; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGClientData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGClientData.java index 0d3889aef..775825ec7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGClientData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGClientData.java @@ -40,14 +40,14 @@ public class JLGClientData { final Collection savings = null; return new JLGClientData(clientId, clientName, loans, savings, attendanceType); } - + public static JLGClientData withSavings(final JLGClientData client, final Collection savings){ final Collection loans = null; final EnumOptionData attendanceType = null; - + return new JLGClientData(client.clientId, client.clientName, loans, savings, attendanceType); } - + /*public JLGClientData(final Long clientId, final String clientName, final Collection loans, final EnumOptionData attendanceType) { this.clientId = clientId; @@ -61,7 +61,7 @@ public class JLGClientData { final Collection savings = null; return new JLGClientData(clientId, clientName, loans, savings, attendanceType); } - + /** * @param clientId * @param clientName @@ -93,12 +93,12 @@ public class JLGClientData { public void setLoans(final Collection loans) { this.loans = loans; } - + public Collection getSavings() { return this.savings; } - + public void setSavings(Collection savings) { this.savings = savings; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGGroupData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGGroupData.java index 06fdcecbf..b2b502713 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGGroupData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGGroupData.java @@ -38,11 +38,11 @@ public class JLGGroupData { final String levelName){ return new JLGGroupData(groupId, groupName, staffId, staffName, levelId, levelName, null); } - + public static JLGGroupData withClients(final JLGGroupData group, Collection clients){ return new JLGGroupData(group.groupId, group.groupName, group.staffId, group.staffName, group.levelId, group.levelName, clients); } - + private JLGGroupData(final Long groupId, final String groupName, final Long staffId, final String staffName, final Long levelId, final String levelName, final Collection clients) { this.groupId = groupId; @@ -85,7 +85,7 @@ public class JLGGroupData { public void setClients(final Collection clients) { this.clients = clients; } - + @Override public boolean equals(final Object obj) { final JLGGroupData groupData = (JLGGroupData) obj; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/LoanDueData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/LoanDueData.java index bea970654..4eaf8a6cf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/LoanDueData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/LoanDueData.java @@ -112,7 +112,7 @@ public class LoanDueData { public BigDecimal getChargesDue() { return this.chargesDue; } - + public BigDecimal getFeeDue() { return this.feeDue; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/SavingsDueData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/SavingsDueData.java index 1128a02c8..938b36506 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/SavingsDueData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/SavingsDueData.java @@ -59,11 +59,11 @@ public class SavingsDueData { this.dueAmount = dueAmount; this.depositAccountType = depositAccountType; } - + public String productName() { return this.productName; } - + public Long productId() { return this.productId; } @@ -71,5 +71,5 @@ public class SavingsDueData { public String getDepositAccountType() { return depositAccountType; } - + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java index bb8858c40..31821833e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java @@ -132,7 +132,7 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe Long prevGroupId = null; Long prevClientId = null; final Collection paymentOptions = this.paymentTypeReadPlatformService.retrieveAllPaymentTypes(); - + final List jlgGroupsData = new ArrayList<>(); List clientsData = new ArrayList<>(); @@ -260,7 +260,7 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe sql.append("WHERE gp.id = :groupId "); } sql.append("and (ln.loan_status_id != 200 AND ln.loan_status_id != 100) "); - + sql.append("and (gp.status_enum = 300 or (gp.status_enum = 600 and gp.closedon_date >= :dueDate)) ") .append("and (cl.status_enum = 300 or (cl.status_enum = 600 and cl.closedon_date >= :dueDate)) ") .append("GROUP BY gp.id, cl.id, ln.id, ca.attendance_type_enum ORDER BY gp.id , cl.id , ln.id ") @@ -335,12 +335,12 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe final Calendar calendar = this.calendarRepositoryWrapper.findOneWithNotFoundDetection(calendarId); // check if transaction against calendar effective from date - + final GroupGeneralData group = this.groupReadPlatformService.retrieveOne(groupId); - + // entityType should be center if it's within a center final CalendarEntityType entityType = (group.isChildGroup()) ? CalendarEntityType.CENTERS : CalendarEntityType.GROUPS; - + Long entityId = null; if(group.isChildGroup()){ entityId = group.getParentId(); @@ -353,7 +353,7 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe boolean isSkipRepaymentOnFirstMonthEnabled = this.configurationDomainService.isSkippingMeetingOnFirstDayOfMonthEnabled(); if(isSkipRepaymentOnFirstMonthEnabled){ numberOfDays = this.configurationDomainService.retreivePeroidInNumberOfDaysForSkipMeetingDate().intValue(); - isSkipMeetingOnFirstDay = this.calendarReadPlatformService.isCalendarAssociatedWithEntity(entityId, calendar.getId(), + isSkipMeetingOnFirstDay = this.calendarReadPlatformService.isCalendarAssociatedWithEntity(entityId, calendar.getId(), entityType.getValue().longValue()); } @@ -364,7 +364,7 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe final String hierarchy = currentUser.getOffice().getHierarchy(); final String officeHierarchy = hierarchy + "%"; - + final JLGCollectionSheetFaltDataMapper mapper = new JLGCollectionSheetFaltDataMapper(); @@ -723,7 +723,7 @@ public class CollectionSheetReadPlatformServiceImpl implements CollectionSheetRe // merge savings data into loan data mergeLoanData(collectionSheetFlatDatas, (List) clientData); - + final Collection paymentOptions = this.paymentTypeReadPlatformService.retrieveAllPaymentTypes(); return IndividualCollectionSheetData.instance(transactionDate, clientData, paymentOptions); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DayOfWeekType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DayOfWeekType.java index e8b70e559..fdf0b0555 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DayOfWeekType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DayOfWeekType.java @@ -30,10 +30,10 @@ public enum DayOfWeekType { SATURDAY(DateTimeConstants.SATURDAY, "weekDayType.saturday"), SUNDAY(DateTimeConstants.SUNDAY, "weekDayType.sunday"), INVALID(0, "weekDayType.invalid"); - + private final Integer value; private final String code; - + private DayOfWeekType(Integer value, String code) { this.value = value; this.code = code; @@ -46,7 +46,7 @@ public enum DayOfWeekType { public String getCode() { return this.code; } - + public static DayOfWeekType fromInt(final Integer dayOfWeek) { DayOfWeekType weekDayType = INVALID; if (dayOfWeek != null) { @@ -78,5 +78,5 @@ public enum DayOfWeekType { } return weekDayType; } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInMonthType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInMonthType.java index a07ab43b7..5171766fa 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInMonthType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInMonthType.java @@ -21,7 +21,7 @@ import java.util.ArrayList; import java.util.List; /** - * + * * People typically use either of the following settings when calculating there * interest using the daily method: *

    diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInYearType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInYearType.java index f35c4a078..38401aadc 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInYearType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInYearType.java @@ -22,7 +22,7 @@ import java.util.ArrayList; import java.util.List; /** - * + * * People typically use either of the following settings when calculating there * interest using the daily method: *
      diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/NthDayType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/NthDayType.java index 8e306ba64..3c797feba 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/NthDayType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/NthDayType.java @@ -19,7 +19,7 @@ package org.apache.fineract.portfolio.common.domain; public enum NthDayType { - + ONE(1,"nthDayType.one"), TWO(2,"nthDayType.two"), THREE(3,"nthDayType.three"), @@ -28,10 +28,10 @@ public enum NthDayType { LAST(-1,"nthDayType.last"), ONDAY(-2,"nthDayType.onday"), INVALID(0,"nthDayType.invalid"); - + private final Integer value; private final String code; - + private NthDayType(Integer value, String code) { this.value = value; this.code = code; @@ -44,7 +44,7 @@ public enum NthDayType { public String getCode() { return this.code; } - + public static NthDayType fromInt(final Integer frequency) { NthDayType repaymentFrequencyNthDayType = NthDayType.INVALID; if (frequency != null) { @@ -76,7 +76,7 @@ public enum NthDayType { } return repaymentFrequencyNthDayType; } - + public boolean isInvalid() { return this.value.equals(NthDayType.INVALID.value); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/PeriodFrequencyType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/PeriodFrequencyType.java index 6a60233e5..09021ff77 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/PeriodFrequencyType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/PeriodFrequencyType.java @@ -77,7 +77,7 @@ public enum PeriodFrequencyType { public boolean isYearly() { return this.value.equals(PeriodFrequencyType.YEARS.getValue()); } - + public boolean isWeekly() { return this.value.equals(PeriodFrequencyType.WEEKS.getValue()); } @@ -85,14 +85,14 @@ public enum PeriodFrequencyType { public boolean isDaily() { return this.value.equals(PeriodFrequencyType.DAYS.getValue()); } - + public boolean isWholeTerm() { return this.value.equals(PeriodFrequencyType.WHOLE_TERM.getValue()); } public boolean isInvalid() { return this.value.equals(PeriodFrequencyType.INVALID.getValue()); } - + public static Object[] integerValues() { final List values = new ArrayList<>(); for (final PeriodFrequencyType enumType : values()) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/BusinessEventListner.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/BusinessEventListner.java index 69d8a8bc7..3ce017504 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/BusinessEventListner.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/BusinessEventListner.java @@ -26,7 +26,7 @@ import org.apache.fineract.portfolio.common.BusinessEventNotificationConstants.B * The interface to be implemented by classes that want to be informed when a * Business Event executes. example: on completion of loan approval event need * to block guarantor funds - * + * */ public interface BusinessEventListner { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/BusinessEventNotifierService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/BusinessEventNotifierService.java index 72d737798..81c1ad8f3 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/BusinessEventNotifierService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/BusinessEventNotifierService.java @@ -26,7 +26,7 @@ import java.util.Map; /** * Implemented class is responsible for notifying the business event to * registered listeners. - * + * */ public interface BusinessEventNotifierService { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/BusinessEventNotifierServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/BusinessEventNotifierServiceImpl.java index e6499ac53..d0119d66a 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/BusinessEventNotifierServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/BusinessEventNotifierServiceImpl.java @@ -35,7 +35,7 @@ public class BusinessEventNotifierServiceImpl implements BusinessEventNotifierSe /* * (non-Javadoc) - * + * * @see * org.apache.fineract.portfolio.common.service.BusinessEventNotifierService * #notifyBusinessEventToBeExecuted @@ -55,7 +55,7 @@ public class BusinessEventNotifierServiceImpl implements BusinessEventNotifierSe /* * (non-Javadoc) - * + * * @see * org.apache.fineract.portfolio.common.service.BusinessEventNotifierService * #notifyBusinessEventWasExecuted @@ -75,7 +75,7 @@ public class BusinessEventNotifierServiceImpl implements BusinessEventNotifierSe /* * (non-Javadoc) - * + * * @see * org.apache.fineract.portfolio.common.service.BusinessEventNotifierService * #addBusinessEventPreListners @@ -90,7 +90,7 @@ public class BusinessEventNotifierServiceImpl implements BusinessEventNotifierSe /* * (non-Javadoc) - * + * * @see * org.apache.fineract.portfolio.common.service.BusinessEventNotifierService * #addBusinessEventPostListners diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/CommonEnumerations.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/CommonEnumerations.java index 735122f99..74dd1ed6b 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/CommonEnumerations.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/CommonEnumerations.java @@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.common.domain.DaysInYearType; import org.apache.fineract.portfolio.common.domain.PeriodFrequencyType; public class CommonEnumerations { - + public static final String DAYS_IN_MONTH_TYPE = "daysInMonthType"; public static final String DAYS_IN_YEAR_TYPE = "daysInYearType"; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java index 5aa76e83d..8ee82eabc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java @@ -151,11 +151,11 @@ public class FloatingRatePeriod extends AbstractPersistableCustom { interest = interest.add(floatingRateDTO .fetchBaseRate(fetchFromDate())); } - + final LocalDate fromDate = new LocalDateTime(getFromDate()).toLocalDate(); final LocalDate createdOn = new LocalDateTime(getCreatedOn()).toLocalDate(); final LocalDate modidiedOn = new LocalDateTime(getModifiedOn()).toLocalDate(); - + return new FloatingRatePeriodData(getId(), fromDate, interest, isDifferentialToBaseLendingRate(), isActive(), getCreatedBy() .getUsername(), createdOn, getModifiedBy() diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRateRepository.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRateRepository.java index b3290ced1..778e80132 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRateRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRateRepository.java @@ -30,7 +30,7 @@ public interface FloatingRateRepository extends @Query("select floatingRate from FloatingRate floatingRate where floatingRate.isBaseLendingRate = true and floatingRate.isActive = true") FloatingRate retrieveBaseLendingRate(); - + @Query("select floatingRate from FloatingRate floatingRate " + " inner join floatingRate.floatingRatePeriods as periods" + " where floatingRate.isActive = true " + diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/serialization/FloatingRateDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/serialization/FloatingRateDataValidator.java index fe9cddbd0..72757b4f3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/serialization/FloatingRateDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/serialization/FloatingRateDataValidator.java @@ -185,7 +185,7 @@ public class FloatingRateDataValidator { "no.baselending.rate.defined", "Base Lending Rate doesn't exists"); } - + if(isBaseLendingRate){ baseDataValidator .reset() @@ -275,17 +275,17 @@ public class FloatingRateDataValidator { if(isBaseLendingRate == null){ isBaseLendingRate = floatingRateForUpdate.isBaseLendingRate(); } - + if(isActive == null){ isActive = floatingRateForUpdate.isActive(); } - + if(baseLendingRate != null && baseLendingRate.getId().equals(floatingRateForUpdate.getId())){ if(!isBaseLendingRate || !isActive){ isBLRModifiedAsNonBLR = true; } } - + if(isBLRModifiedAsNonBLR){ Collection floatingRates = this.floatingRateRepository.retrieveFloatingRatesLinkedToBLR(); if(floatingRates != null && floatingRates.size() > 0){ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/CenterData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/CenterData.java index 05084c32d..1aea50b9a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/CenterData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/CenterData.java @@ -243,7 +243,7 @@ public class CenterData implements Serializable { public Long getId() { return this.id; } - + public String getAccountNo(){ return this.accountNo; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/GroupGeneralData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/GroupGeneralData.java index c09b7163e..67f8764c9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/GroupGeneralData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/GroupGeneralData.java @@ -292,7 +292,7 @@ public class GroupGeneralData implements Serializable { public Long getId() { return this.id; } - + public String getAccountNo(){ return this.accountNo; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/GroupTimelineData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/GroupTimelineData.java index 2726d86a3..7d0025409 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/GroupTimelineData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/GroupTimelineData.java @@ -26,7 +26,7 @@ import java.util.Objects; /** * Immutable data object represent the important time-line events of a * group/center. - * + * */ @SuppressWarnings("unused") public class GroupTimelineData implements Serializable { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java index c3f150a78..506623211 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java @@ -136,10 +136,10 @@ public final class Group extends AbstractPersistableCustom { @OneToMany(cascade = CascadeType.ALL, mappedBy = "center", orphanRemoval = true) private Set staffHistory; - + @Column(name = "account_no", length = 20, unique = true, nullable = false) private String accountNumber; - + @Transient private boolean accountNumberRequiresAutoGeneration = false; @@ -167,7 +167,7 @@ public final class Group extends AbstractPersistableCustom { status = GroupingTypeStatus.ACTIVE; groupActivationDate = activationDate; } - + return new Group(office, staff, parent, groupLevel, name, externalId, status, groupActivationDate, clientMembers, groupMembers, submittedOnDate, currentUser, accountNo); } @@ -186,7 +186,7 @@ public final class Group extends AbstractPersistableCustom { if (parent != null) { this.parent.addChild(this); } - + if (StringUtils.isBlank(accountNo)) { this.accountNumber = new RandomPasswordGenerator(19).generate(); this.accountNumberRequiresAutoGeneration = true; @@ -338,7 +338,7 @@ public final class Group extends AbstractPersistableCustom { this.activationDate = newValue.toDate(); } } - + if (command.isChangeInStringParameterNamed(GroupingTypesApiConstants.accountNoParamName, this.accountNumber)) { final String newValue = command.stringValueOfParameterNamed(GroupingTypesApiConstants.accountNoParamName); actualChanges.put(GroupingTypesApiConstants.accountNoParamName, newValue); @@ -412,11 +412,11 @@ public final class Group extends AbstractPersistableCustom { } } } - + public void resetHierarchy() { this.hierarchy = "." + this.getId(); } - + private String hierarchyOf(final Long id) { return this.hierarchy + id.toString() + "."; } @@ -436,7 +436,7 @@ public final class Group extends AbstractPersistableCustom { } return staffId; } - + private void addChild(final Group group) { this.groupMembers.add(group); } @@ -745,7 +745,7 @@ public final class Group extends AbstractPersistableCustom { } return latestRecordWithNoEndDate; } - + public boolean isAccountNumberRequiresAutoGeneration() { return this.accountNumberRequiresAutoGeneration; } @@ -753,7 +753,7 @@ public final class Group extends AbstractPersistableCustom { public void setAccountNumberRequiresAutoGeneration(final boolean accountNumberRequiresAutoGeneration) { this.accountNumberRequiresAutoGeneration = accountNumberRequiresAutoGeneration; } - + public void updateAccountNo(final String accountIdentifier) { this.accountNumber = accountIdentifier; this.accountNumberRequiresAutoGeneration = false; @@ -762,6 +762,6 @@ public final class Group extends AbstractPersistableCustom { public void setGroupMembers(List groupMembers) { this.groupMembers = groupMembers; } - - + + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRepository.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRepository.java index a95923a86..fce2f3a99 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRepository.java @@ -29,7 +29,7 @@ import org.springframework.data.repository.query.Param; public interface GroupRepository extends JpaRepository, JpaSpecificationExecutor { Collection findByParentId(Long parentId); - + public static final String RETRIEVE_SUBMITTED_ON_DATE = "select g.submittedOnDate from Group g where g.id = :groupId"; @Query(RETRIEVE_SUBMITTED_ON_DATE) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRepositoryWrapper.java index 41b468fc3..28d533bfc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRepositoryWrapper.java @@ -68,7 +68,7 @@ public class GroupRepositoryWrapper { public void flush() { this.repository.flush(); } - + public LocalDate retrieveSubmittedOndate(final Long groupId) { Date submittedOnDate = this.repository.retrieveGroupTypeSubmitteOndDate(groupId); if (submittedOnDate != null) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/serialization/GroupingTypesDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/serialization/GroupingTypesDataValidator.java index 8237ccdd6..edfee6ec6 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/serialization/GroupingTypesDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/serialization/GroupingTypesDataValidator.java @@ -322,7 +322,7 @@ public final class GroupingTypesDataValidator { final Long staffId = this.fromApiJsonHelper.extractLongNamed(GroupingTypesApiConstants.staffIdParamName, element); baseDataValidator.reset().parameter(GroupingTypesApiConstants.staffIdParamName).value(staffId).integerGreaterThanZero(); } - + LocalDate submittedOnDate = this.groupRepositoryWrapper.retrieveSubmittedOndate(centerId); final Boolean active = this.fromApiJsonHelper.extractBooleanNamed(GroupingTypesApiConstants.activeParamName, @@ -371,9 +371,9 @@ public final class GroupingTypesDataValidator { final Long staffId = this.fromApiJsonHelper.extractLongNamed(GroupingTypesApiConstants.staffIdParamName, element); baseDataValidator.reset().parameter(GroupingTypesApiConstants.staffIdParamName).value(staffId).integerGreaterThanZero(); } - + LocalDate submittedOnDate = this.groupRepositoryWrapper.retrieveSubmittedOndate(groupId); - + if (this.fromApiJsonHelper.parameterExists(GroupingTypesApiConstants.submittedOnDateParamName, element)) { submittedOnDate = this.fromApiJsonHelper.extractLocalDateNamed( GroupingTypesApiConstants.submittedOnDateParamName, element); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/CenterReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/CenterReadPlatformServiceImpl.java index 3292e1351..dceb6ef50 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/CenterReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/CenterReadPlatformServiceImpl.java @@ -395,7 +395,7 @@ public class CenterReadPlatformServiceImpl implements CenterReadPlatformService sqlBuilder.append(" order by ").append(searchParameters.getOrderBy()).append(' ').append(searchParameters.getSortOrder()); this.columnValidator.validateSqlInjection(sqlBuilder.toString(), searchParameters.getOrderBy(), searchParameters.getSortOrder()); - + } if (searchParameters.isLimited()) { @@ -601,8 +601,8 @@ public class CenterReadPlatformServiceImpl implements CenterReadPlatformService flag = false; if (staffCenterData.getStaffId().equals(centerData.staffId())) { staffCenterData.getMeetingFallCenters().add(centerData); - - + + flag = true; break; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupReadPlatformServiceImpl.java index ea9aa03e9..53fff52b6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupReadPlatformServiceImpl.java @@ -127,7 +127,7 @@ public class GroupReadPlatformServiceImpl implements GroupReadPlatformService { final Long staffId = null; final String staffName = null; final Collection clientOptions = null; - + return GroupGeneralData.template(defaultOfficeId, centerId, accountNo, centerName, staffId, staffName, centerOptions, officeOptions, staffOptions, clientOptions, availableRoles); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupingTypesWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupingTypesWritePlatformServiceJpaRepositoryImpl.java index 1d5f60a1d..a0157bace 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupingTypesWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/GroupingTypesWritePlatformServiceJpaRepositoryImpl.java @@ -109,7 +109,7 @@ public class GroupingTypesWritePlatformServiceJpaRepositoryImpl implements Group final SavingsAccountRepositoryWrapper savingsAccountRepositoryWrapper, final CodeValueRepositoryWrapper codeValueRepository, final CommandProcessingService commandProcessingService, final CalendarInstanceRepository calendarInstanceRepository, final ConfigurationDomainService configurationDomainService, - final LoanRepositoryWrapper loanRepositoryWrapper, + final LoanRepositoryWrapper loanRepositoryWrapper, final AccountNumberFormatRepositoryWrapper accountNumberFormatRepository, final AccountNumberGenerator accountNumberGenerator, final EntityDatatableChecksWritePlatformService entityDatatableChecksWritePlatformService, final BusinessEventNotifierService businessEventNotifierService) { @@ -260,7 +260,7 @@ public class GroupingTypesWritePlatformServiceJpaRepositoryImpl implements Group .findByAccountType(entityAccountType); newGroup.updateAccountNo(this.accountNumberGenerator.generateGroupAccountNumber(newGroup, accountNumberFormat)); } - + } } @Transactional diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestIncentiveApiConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestIncentiveApiConstants.java index 7a24ae8fa..a87506b4a 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestIncentiveApiConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestIncentiveApiConstants.java @@ -32,7 +32,7 @@ public interface InterestIncentiveApiConstants { public static final String incentiveTypeparamName = "incentiveType"; public static final String amountParamName = "amount"; public static final String deleteParamName = "delete"; - + public static final String INCENTIVE_RESOURCE_NAME = "interest.rate.incentives"; public static final Set INTERESTRATE_INCENTIVE_RESPONSE_DATA_PARAMETERS = new HashSet<>(Arrays.asList(idParamName, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartData.java index 1b3128791..80f856dd2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartData.java @@ -199,7 +199,7 @@ public class InterestRateChartData { return this.clientClassificationOptions; } - + public boolean isPrimaryGroupingByAmount() { return this.isPrimaryGroupingByAmount; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartDataValidator.java index 9279572e9..cbd46f946 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartDataValidator.java @@ -110,7 +110,7 @@ public class InterestRateChartDataValidator { toDate = this.fromApiJsonHelper.extractLocalDateNamed(endDateParamName, element); baseDataValidator.reset().parameter(endDateParamName).value(toDate).notNull(); } - + Boolean isPrimaryGroupingByAmount = this.fromApiJsonHelper.extractBooleanNamed(isPrimaryGroupingByAmountParamName, element); if (isPrimaryGroupingByAmount == null) { isPrimaryGroupingByAmount = false; @@ -168,7 +168,7 @@ public class InterestRateChartDataValidator { toDate = this.fromApiJsonHelper.extractLocalDateNamed(endDateParamName, element); baseDataValidator.reset().parameter(endDateParamName).value(toDate).notNull(); } - + Boolean isPrimaryGroupingByAmount = this.fromApiJsonHelper.extractBooleanNamed(isPrimaryGroupingByAmountParamName, element); if (isPrimaryGroupingByAmount == null) { isPrimaryGroupingByAmount = false; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartRepository.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartRepository.java index 85db818cc..293f33eba 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartRepository.java @@ -23,5 +23,5 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; public interface InterestRateChartRepository extends JpaRepository, JpaSpecificationExecutor { - + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartRepositoryWrapper.java index 3fcc65bf0..7306c89d2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartRepositoryWrapper.java @@ -30,7 +30,7 @@ import org.springframework.stereotype.Service; * findOne repository method and throwing an appropriate not found * exception. *

      - * + * *

      * This is to avoid need for checking and throwing in multiple areas of code * base where {@link InterestRateChartRepository} is required. diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabRepositoryWrapper.java index 2f52863a3..a3e7ea51a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabRepositoryWrapper.java @@ -29,7 +29,7 @@ import org.springframework.stereotype.Service; * if {@link InterestRateChartSlab} is returned when using findOne * repository method and throwing an appropriate not found exception. *

      - * + * *

      * This is to avoid need for checking and throwing in multiple areas of code * base where {@link InterestRateChartSlabRepository} is required. @@ -61,5 +61,5 @@ public class InterestRateChartSlabRepositoryWrapper { public void saveAndFlush(final InterestRateChartSlab chartSlab) { this.repository.saveAndFlush(chartSlab); } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabComparator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabComparator.java index 19f414767..ad41a3fd2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabComparator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabComparator.java @@ -24,7 +24,7 @@ import java.util.Comparator; import org.apache.fineract.portfolio.savings.domain.DepositAccountInterestRateChartSlabs; /** - * Sort InterestRateChartSlab by input range + * Sort InterestRateChartSlab by input range */ public class InterestRateChartSlabComparator implements Comparator { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/exception/InterestRateChartSlabNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/exception/InterestRateChartSlabNotFoundException.java index a6843cd27..79b561608 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/exception/InterestRateChartSlabNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/exception/InterestRateChartSlabNotFoundException.java @@ -25,7 +25,7 @@ public class InterestRateChartSlabNotFoundException extends AbstractPlatformReso public InterestRateChartSlabNotFoundException(final Long id) { super("error.msg.interest.rate.chart.slab.id.invalid", "Interest rate chart slab with identifier " + id + " does not exist", id); } - + public InterestRateChartSlabNotFoundException(final Long id, final Long chartId) { super("error.msg.interest.rate.chart.slab.id.invalid", "Interest rate chart slab with identifier " + id + " does not exist in interest chart with identifier " + chartId , id, chartId); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformService.java index 65a6598c7..fc3ccf383 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformService.java @@ -23,24 +23,24 @@ import java.util.Collection; import org.apache.fineract.portfolio.interestratechart.data.InterestRateChartData; public interface InterestRateChartReadPlatformService { - + //Collection retrieveAll(Long savingsProductId); InterestRateChartData retrieveOne(Long interestChartId); - + //Collection retrieveAllWithSlabs(); - + Collection retrieveAllWithSlabs(Long savingsProductId); - + Collection retrieveAllWithSlabsWithTemplate(Long savingsProductId); InterestRateChartData retrieveOneWithSlabs(Long interestChartId); - + InterestRateChartData retrieveWithTemplate(InterestRateChartData interestRateChartData); - + InterestRateChartData retrieveOneWithSlabsOnProductId(Long productId); - + InterestRateChartData template(); - + InterestRateChartData retrieveActiveChartWithTemplate(Long productId); } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformServiceImpl.java index d03e502d1..a128eae1f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformServiceImpl.java @@ -99,7 +99,7 @@ public class InterestRateChartReadPlatformServiceImpl implements InterestRateCha sql.append("WHEN !isPrimaryGroupingByAmount then ircd.amount_range_from "); sql.append("WHEN !isPrimaryGroupingByAmount then ircd.amount_range_to "); sql.append("END"); - + return this.jdbcTemplate.query(sql.toString(), this.chartExtractor, new Object[] { productId }); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanApiConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanApiConstants.java index c8480a431..2919fac48 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanApiConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanApiConstants.java @@ -124,6 +124,6 @@ public interface LoanApiConstants { public static final String topupAmount = "topupAmount"; public static final String datatables = "datatables"; - + public static final String isEqualAmortizationParam = "isEqualAmortization"; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanDisbursementDetailApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanDisbursementDetailApiResource.java index b004e6b7b..b70575334 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanDisbursementDetailApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanDisbursementDetailApiResource.java @@ -79,7 +79,7 @@ public class LoanDisbursementDetailApiResource { @Produces({ MediaType.APPLICATION_JSON }) public String updateDisbursementDate(@PathParam("loanId") final Long loanId, @PathParam("disbursementId") final Long disbursementId, final String apiRequestBodyAsJson) { - + final CommandWrapper commandRequest = new CommandWrapperBuilder().updateDisbusementDate(loanId, disbursementId) .withJson(apiRequestBodyAsJson).build(); @@ -87,7 +87,7 @@ public class LoanDisbursementDetailApiResource { return this.toApiJsonSerializer.serialize(result); } - + @PUT @Path("editDisbursements") @Consumes({ MediaType.APPLICATION_JSON }) @@ -101,7 +101,7 @@ public class LoanDisbursementDetailApiResource { return this.toApiJsonSerializer.serialize(result); } - + @GET @Path("{disbursementId}") @Consumes({ MediaType.APPLICATION_JSON }) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoansApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoansApiResource.java index cf936f77f..ef94587ad 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoansApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoansApiResource.java @@ -437,7 +437,7 @@ public class LoansApiResource { accountLinkingOptions.addAll(getaccountLinkingOptions(newLoanAccount, clientData.id(), groupId)); } } - + newLoanAccount = LoanAccountData.associateMemberVariations(newLoanAccount, memberLoanCycle); } @@ -480,7 +480,7 @@ public class LoansApiResource { } return this.portfolioAccountReadPlatformService.retrieveAllForLookup(portfolioAccountDTO); } - + @GET @Path("{loanId}") @Consumes({ MediaType.APPLICATION_JSON }) @@ -719,9 +719,9 @@ public class LoansApiResource { final LoanAccountData loanAccount = LoanAccountData.associationsAndTemplate(loanBasicDetails, repaymentSchedule, loanRepayments, charges, collateral, guarantors, meeting, productOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions, - repaymentFrequencyNthDayTypeOptions, repaymentFrequencyDayOfWeekTypeOptions, repaymentStrategyOptions, - interestRateFrequencyTypeOptions, amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions, - fundOptions, chargeOptions, chargeTemplate, allowedLoanOfficers, loanPurposeOptions, loanCollateralOptions, + repaymentFrequencyNthDayTypeOptions, repaymentFrequencyDayOfWeekTypeOptions, repaymentStrategyOptions, + interestRateFrequencyTypeOptions, amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions, + fundOptions, chargeOptions, chargeTemplate, allowedLoanOfficers, loanPurposeOptions, loanCollateralOptions, calendarOptions, notes, accountLinkingOptions, linkedAccount, disbursementData, emiAmountVariations, overdueCharges, paidInAdvanceTemplate, interestRatesPeriods, clientActiveLoanOptions); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/DisbursementData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/DisbursementData.java index 6e9c7081a..bb963ab03 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/DisbursementData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/DisbursementData.java @@ -118,7 +118,7 @@ public class DisbursementData implements Comparable { return target != null && target.isAfter(fromNotInclusive) && !target.isAfter(upToAndInclusive); } - + public BigDecimal getWaivedChargeAmount() { if(this.waivedChargeAmount == null){ return BigDecimal.ZERO; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanAccountData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanAccountData.java index 4f88adaa1..f1cc44921 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanAccountData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanAccountData.java @@ -267,7 +267,7 @@ public class LoanAccountData { transactionProcessingStrategyId, graceOnPrincipalPayment, graceOnInterestPayment, graceOnInterestCharged, interestChargedFromDate, repaymentsStartingFromDate, rowIndex, externalId, null, null, linkAccountId,locale,dateFormat); } - + private LoanAccountData(EnumOptionData loanType,Long clientId,Long productId,Long loanOfficerId,LocalDate submittedOnDate, Long fundId,BigDecimal principal, Integer numberOfRepayments,Integer repaymentEvery, EnumOptionData repaymentFrequencyType, Integer loanTermFrequency,EnumOptionData loanTermFrequencyType, @@ -1589,7 +1589,7 @@ public class LoanAccountData { this.expectedFirstRepaymentOnDate = expectedFirstRepaymentOnDate; this.graceOnPrincipalPayment = graceOnPrincipalPayment; this.recurringMoratoriumOnPrincipalPeriods = recurringMoratoriumOnPrincipalPeriods; - + this.graceOnInterestPayment = graceOnInterestPayment; this.graceOnInterestCharged = graceOnInterestCharged; this.interestChargedFromDate = interestChargedFromDate; @@ -1840,29 +1840,29 @@ public class LoanAccountData { /** * Used to produce a {@link LoanAccountData} with only collateral options for now. - * + * * @return {@link LoanAccountData} object */ public static LoanAccountData emptyTemplate() { final Collection loanCollateralOptions = null; - + return LoanAccountData.collateralTemplate(loanCollateralOptions); } - + public boolean isLoanProductLinkedToFloatingRate() { return this.isLoanProductLinkedToFloatingRate; } - + public LocalDate getDisbursementDate(){ return this.timeline.getDisbursementDate(); } - + public boolean isFloatingInterestRate() { return this.isFloatingInterestRate; } - + public BigDecimal getInterestRateDifferential() { return this.interestRateDifferential; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanApplicationTimelineData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanApplicationTimelineData.java index a85f97671..11aa95877 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanApplicationTimelineData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanApplicationTimelineData.java @@ -148,7 +148,7 @@ public class LoanApplicationTimelineData { return new RepaymentScheduleRelatedLoanData(this.expectedDisbursementDate, this.actualDisbursementDate, currency, principal, inArrearsTolerance, totalFeeChargesAtDisbursement); } - + public LocalDate getDisbursementDate(){ LocalDate disbursementDate = this.expectedDisbursementDate; if(this.actualDisbursementDate != null){ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargeData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargeData.java index 720321be3..357dd750c 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargeData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargeData.java @@ -81,7 +81,7 @@ public class LoanChargeData { private BigDecimal amountAccrued; private BigDecimal amountUnrecognized; - + public static LoanChargeData template(final Collection chargeOptions) { return new LoanChargeData(null, null, null, null, null, null, null, null, chargeOptions, false, null, false, false, null, null, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidDetail.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidDetail.java index b77cf147e..927810887 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidDetail.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidDetail.java @@ -27,24 +27,24 @@ public class LoanChargePaidDetail { private final Money amount; private final LoanRepaymentScheduleInstallment installment; private final boolean isFeeCharge; - + public LoanChargePaidDetail( Money amount,LoanRepaymentScheduleInstallment installment,boolean isFeeCharge){ this.amount = amount; this.installment = installment; this.isFeeCharge = isFeeCharge; } - + public Money getAmount() { return this.amount; } - + public LoanRepaymentScheduleInstallment getInstallment() { return this.installment; } - + public boolean isFeeCharge() { return this.isFeeCharge; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanInterestRecalculationData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanInterestRecalculationData.java index 3cc45410e..2af6cbafc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanInterestRecalculationData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanInterestRecalculationData.java @@ -83,7 +83,7 @@ public class LoanInterestRecalculationData { recalculationData.recalculationRestFrequencyOnDay, compoundingCalendarData, recalculationData.recalculationCompoundingFrequencyType, recalculationData.recalculationCompoundingFrequencyInterval, recalculationData.recalculationCompoundingFrequencyNthDay, recalculationData.recalculationCompoundingFrequencyWeekday, - recalculationData.recalculationCompoundingFrequencyOnDay, recalculationData.isCompoundingToBePostedAsTransaction, + recalculationData.recalculationCompoundingFrequencyOnDay, recalculationData.isCompoundingToBePostedAsTransaction, recalculationData.allowCompoundingOnEod); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanScheduleAccrualData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanScheduleAccrualData.java index 7ec84c69f..f76fb8755 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanScheduleAccrualData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanScheduleAccrualData.java @@ -175,17 +175,17 @@ public class LoanScheduleAccrualData { this.dueDatePenaltyIncome = dueDatePenaltyIncome; } - + public BigDecimal getWaivedInterestIncome() { return this.waivedInterestIncome; } - + public BigDecimal getAccruableIncome () { return this.accruableIncome; } - + public void updateAccruableIncome (BigDecimal accruableIncome ) { this.accruableIncome = accruableIncome ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanSummaryData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanSummaryData.java index 4195fba35..d98e435e5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanSummaryData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanSummaryData.java @@ -119,7 +119,7 @@ public class LoanSummaryData { public BigDecimal getTotalOutstanding() { return this.totalOutstanding; } - + public BigDecimal getTotalPaidFeeCharges() { return feeChargesPaid ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTermVariationsData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTermVariationsData.java index a19d3b10e..f122e830d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTermVariationsData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTermVariationsData.java @@ -113,7 +113,7 @@ public class LoanTermVariationsData implements Comparable getExceptionData() { return this.exceptionData; } - + public void setExceptionData(final List exceptionData) { clearTerms(); this.exceptionData.addAll(exceptionData); @@ -103,7 +103,7 @@ public class LoanTermVariationsDataWrapper { this.dueDateVariation.clear(); this.interestRateFromInstallment.clear(); } - + public List getInterestRateFromInstallment() { return this.interestRateFromInstallment; } @@ -119,7 +119,7 @@ public class LoanTermVariationsDataWrapper { } return repaymetsForAdjust; } - + public LoanTermVariationsData fetchLoanTermDueDateVariationsData(final LocalDate onDate) { LoanTermVariationsData data = null; for (LoanTermVariationsData termVariationsData : this.dueDateVariation) { @@ -142,7 +142,7 @@ public class LoanTermVariationsDataWrapper { deriveLoanTermVariations(); } } - + private void deriveLoanTermVariations() { Collections.sort(this.exceptionData); for (LoanTermVariationsData loanTermVariationsData : this.exceptionData) { @@ -161,9 +161,9 @@ public class LoanTermVariationsDataWrapper { this.iterator = this.exceptionData.listIterator(); this.dueDateIterator = this.dueDateVariation.listIterator(); } - + public void resetVariations(){ - + for (LoanTermVariationsData loanTermVariationsData : this.exceptionData) { loanTermVariationsData.setProcessed(false); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionData.java index d675b3d37..0c231ac46 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionData.java @@ -62,7 +62,7 @@ public class LoanTransactionData { // templates final Collection paymentTypeOptions; - + private Collection writeOffReasonOptions = null; //import fields @@ -197,7 +197,7 @@ public class LoanTransactionData { feeChargesPortion, penaltyChargesPortion, overpaymentPortion, unrecognizedIncomePortion, null, externalId, transfer, fixedEmiAmount, outstandingLoanBalance,manuallyReversed); } - + public LoanTransactionData(final Long id, final Long officeId, final String officeName, final LoanTransactionEnumData transactionType, final PaymentDetailData paymentDetailData, final CurrencyData currency, final LocalDate date, final BigDecimal amount, final BigDecimal principalPortion, final BigDecimal interestPortion, final BigDecimal feeChargesPortion, @@ -257,8 +257,8 @@ public class LoanTransactionData { penaltyChargesPortion, overPaymentPortion, unrecognizedIncomePortion, null, null, null, null, outstandingLoanBalance, null, manuallyReversed); } - - public static LoanTransactionData LoanTransactionDataForDisbursalTemplate(final LoanTransactionEnumData transactionType, final LocalDate expectedDisbursedOnLocalDateForTemplate, + + public static LoanTransactionData LoanTransactionDataForDisbursalTemplate(final LoanTransactionEnumData transactionType, final LocalDate expectedDisbursedOnLocalDateForTemplate, final BigDecimal disburseAmountForTemplate, final Collection paymentOptions, final BigDecimal retriveLastEmiAmount, final LocalDate possibleNextRepaymentDate) { final Long id = null; @@ -278,15 +278,15 @@ public class LoanTransactionData { final LocalDate submittedOnDate = null; final boolean manuallyReversed = false; return new LoanTransactionData(id, officeId, officeName, transactionType, paymentDetailData, currency, expectedDisbursedOnLocalDateForTemplate, - disburseAmountForTemplate, principalPortion, interestPortion, feeChargesPortion, penaltyChargesPortion, overpaymentPortion, unrecognizedIncomePortion, + disburseAmountForTemplate, principalPortion, interestPortion, feeChargesPortion, penaltyChargesPortion, overpaymentPortion, unrecognizedIncomePortion, paymentOptions, transfer, externalId, retriveLastEmiAmount, outstandingLoanBalance, submittedOnDate, manuallyReversed, possibleNextRepaymentDate); - + } private LoanTransactionData(Long id , final Long officeId, final String officeName, LoanTransactionEnumData transactionType, final PaymentDetailData paymentDetailData, - final CurrencyData currency, final LocalDate date, BigDecimal amount, final BigDecimal principalPortion, final BigDecimal interestPortion, + final CurrencyData currency, final LocalDate date, BigDecimal amount, final BigDecimal principalPortion, final BigDecimal interestPortion, final BigDecimal feeChargesPortion, final BigDecimal penaltyChargesPortion, final BigDecimal overpaymentPortion, BigDecimal unrecognizedIncomePortion, Collection paymentOptions, - final AccountTransferData transfer, final String externalId, final BigDecimal fixedEmiAmount, BigDecimal outstandingLoanBalance, + final AccountTransferData transfer, final String externalId, final BigDecimal fixedEmiAmount, BigDecimal outstandingLoanBalance, final LocalDate submittedOnDate, final boolean manuallyReversed, final LocalDate possibleNextRepaymentDate) { this.id = id; this.officeId = officeId; @@ -312,7 +312,7 @@ public class LoanTransactionData { this.possibleNextRepaymentDate = possibleNextRepaymentDate; } - + public LocalDate dateOf() { return this.date; @@ -322,21 +322,21 @@ public class LoanTransactionData { return type.id() == 1; } - + public BigDecimal getAmount() { return this.amount; } - + public BigDecimal getUnrecognizedIncomePortion() { return this.unrecognizedIncomePortion; } - + public BigDecimal getInterestPortion() { return this.interestPortion; } - + public void setWriteOffReasonOptions(Collection writeOffReasonOptions){ this.writeOffReasonOptions =writeOffReasonOptions; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionEnumData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionEnumData.java index ed1756131..05585d9e8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionEnumData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionEnumData.java @@ -82,7 +82,7 @@ public class LoanTransactionEnumData { /** * Returns true if the transaction involves either a payment (disbursement) * or a receipt (repayments, repayments during disbursement etc) - * + * * @return */ public boolean isPaymentOrReceipt() { @@ -145,7 +145,7 @@ public class LoanTransactionEnumData { public boolean isRefund() { return this.refund; } - + public boolean isRefundForActiveLoans() { return this.refundForActiveLoans; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/PaidInAdvanceData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/PaidInAdvanceData.java index 2d2262575..aff6ea278 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/PaidInAdvanceData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/PaidInAdvanceData.java @@ -21,9 +21,9 @@ package org.apache.fineract.portfolio.loanaccount.data; import java.math.BigDecimal; public class PaidInAdvanceData { - + private final BigDecimal paidInAdvance; - + public PaidInAdvanceData(final BigDecimal paidInAdvance) { this.paidInAdvance = paidInAdvance; } @@ -31,6 +31,6 @@ public class PaidInAdvanceData { public BigDecimal getPaidInAdvance() { return paidInAdvance; } - - + + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/ScheduleGeneratorDTO.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/ScheduleGeneratorDTO.java index f873ebe14..05bfad2ee 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/ScheduleGeneratorDTO.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/ScheduleGeneratorDTO.java @@ -49,10 +49,10 @@ public class ScheduleGeneratorDTO { final LocalDate calculatedRepaymentsStartingFromDate, final HolidayDetailDTO holidayDetailDTO, final CalendarInstance calendarInstanceForInterestRecalculation, final CalendarInstance compoundingCalendarInstance, final LocalDate recalculateFrom, final Long overdurPenaltyWaitPeriod, final FloatingRateDTO floatingRateDTO, - final Calendar calendar, final CalendarHistoryDataWrapper calendarHistoryDataWrapper, + final Calendar calendar, final CalendarHistoryDataWrapper calendarHistoryDataWrapper, final Boolean isInterestChargedFromDateAsDisbursementDateEnabled, final Integer numberOfdays, final boolean isSkipRepaymentOnFirstDayofMonth, final Boolean isChangeEmiIfRepaymentDateSameAsDisbursementDateEnabled) { - + this.loanScheduleFactory = loanScheduleFactory; this.applicationCurrency = applicationCurrency; this.calculatedRepaymentsStartingFromDate = calculatedRepaymentsStartingFromDate; @@ -117,15 +117,15 @@ public class ScheduleGeneratorDTO { public FloatingRateDTO getFloatingRateDTO() { return this.floatingRateDTO; } - + public Calendar getCalendar(){ return this.calendar; } - + public CalendarHistoryDataWrapper getCalendarHistoryDataWrapper(){ return this.calendarHistoryDataWrapper; } - + public Boolean isInterestChargedFromDateAsDisbursementDateEnabled(){ return this.isInterestChargedFromDateAsDisbursementDateEnabled; } @@ -137,7 +137,7 @@ public class ScheduleGeneratorDTO { public boolean isSkipRepaymentOnFirstDayofMonth() { return isSkipRepaymentOnFirstDayofMonth; } - + public Boolean isChangeEmiIfRepaymentDateSameAsDisbursementDateEnabled() { return this.isChangeEmiIfRepaymentDateSameAsDisbursementDateEnabled; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/ChangedTransactionDetail.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/ChangedTransactionDetail.java index 4351dbd61..2e7c89181 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/ChangedTransactionDetail.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/ChangedTransactionDetail.java @@ -24,8 +24,8 @@ import java.util.Map; /** * Stores details of {@link LoanTransaction}'s that were reversed or newly * created - * - * + * + * */ public class ChangedTransactionDetail { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java index 6704e8204..14f65749a 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java @@ -327,7 +327,7 @@ public class Loan extends AbstractPersistableCustom { @Column(name = "interest_rate_differential", scale = 6, precision = 19, nullable = true) private BigDecimal interestRateDifferential; - + @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name = "writeoff_reason_cv_id", nullable = true) private CodeValue writeOffReason; @@ -583,11 +583,11 @@ public class Loan extends AbstractPersistableCustom { * Creates a loanTransaction for "Apply Charge Event" with transaction date * set to "suppliedTransactionDate". The newly created transaction is also * added to the Loan on which this method is called. - * + * * If "suppliedTransactionDate" is not passed Id, the transaction date is * set to the loans due date if the due date is lesser than todays date. If * not, the transaction date is set to todays date - * + * * @param loanCharge * @param suppliedTransactionDate * @return @@ -722,7 +722,7 @@ public class Loan extends AbstractPersistableCustom { * TODO Vishwas Currently we do not allow removing a loan charge * after a loan is approved (hence there is no need to adjust any * loan transactions). - * + * * Consider removing this block of code or logically completing it * for the future by getting the list of affected Transactions ***/ @@ -789,7 +789,7 @@ public class Loan extends AbstractPersistableCustom { * TODO Vishwas Currently we do not allow waiving updating loan * charge after a loan is approved (hence there is no need to adjust * any loan transactions). - * + * * Consider removing this block of code or logically completing it * for the future by getting the list of affected Transactions ***/ @@ -964,7 +964,7 @@ public class Loan extends AbstractPersistableCustom { }else if(loanCharge.isInstalmentFee()){ transactionDate = loanCharge.getInstallmentLoanCharge(loanInstallmentNumber).getRepaymentInstallment().getDueDate(); } - + scheduleGeneratorDTO.setRecalculateFrom(transactionDate); updateSummaryWithTotalFeeChargesDueAtDisbursement(deriveSumTotalOfChargesDueAtDisbursement()); @@ -992,7 +992,7 @@ public class Loan extends AbstractPersistableCustom { * TODO Vishwas Currently we do not allow waiving fully paid loan * charge and waiving partially paid loan charges only waives the * remaining amount. - * + * * Consider removing this block of code or logically completing it * for the future by getting the list of affected Transactions ***/ @@ -1264,7 +1264,7 @@ public class Loan extends AbstractPersistableCustom { final MonetaryCurrency currency = new MonetaryCurrency(loanProduct.getCurrency().getCode(), loanProduct.getCurrency().getDigitsAfterDecimal(), loanProduct.getCurrency().getCurrencyInMultiplesOf()); this.loanRepaymentScheduleDetail.updateCurrency(currency); - + if (!actualChanges.isEmpty()) { final boolean recalculateLoanSchedule = !(actualChanges.size() == 1 && actualChanges.containsKey("inArrearsTolerance")); actualChanges.put("recalculateLoanSchedule", recalculateLoanSchedule); @@ -2139,9 +2139,9 @@ public class Loan extends AbstractPersistableCustom { updateDisbursementDetails(command, actualChanges); } } - + recalculateAllCharges(); - + if (loanProduct.isMultiDisburseLoan()) { if (this.disbursementDetails.isEmpty()) { @@ -2582,16 +2582,16 @@ public class Loan extends AbstractPersistableCustom { InterestMethod.DECLINING_BALANCE); Set loanCharges = charges(); LoanScheduleModel loanSchedule = decliningLoanScheduleGenerator.generate(mc, loanApplicationTerms, loanCharges, scheduleGeneratorDTO.getHolidayDetailDTO()); - + loanApplicationTerms.updateTotalInterestDue(Money.of(loanApplicationTerms.getCurrency(), loanSchedule.getTotalInterestCharged())); - - + + } loanScheduleGenerator = scheduleGeneratorDTO.getLoanScheduleFactory().create(InterestMethod.FLAT); } else { loanScheduleGenerator = scheduleGeneratorDTO.getLoanScheduleFactory().create(loanApplicationTerms.getInterestMethod()); } - + final LoanScheduleModel loanSchedule = loanScheduleGenerator.generate(mc, loanApplicationTerms, charges(), scheduleGeneratorDTO.getHolidayDetailDTO()); return loanSchedule; @@ -2753,7 +2753,7 @@ public class Loan extends AbstractPersistableCustom { } } boolean isEmiAmountChanged = this.loanTermVariations.size() > 0; - + updateLoanToPreDisbursalState(); if (isScheduleRegenerateRequired || isDisbursedAmountChanged || isEmiAmountChanged || this.repaymentScheduleDetail().isInterestRecalculationEnabled()) { @@ -2797,7 +2797,7 @@ public class Loan extends AbstractPersistableCustom { private void updateLoanToPreDisbursalState() { this.actualDisbursementDate = null; - + this.accruedTill = null; reverseExistingTransactions(); @@ -4530,11 +4530,11 @@ public class Loan extends AbstractPersistableCustom { public void addLoanTransaction(final LoanTransaction loanTransaction) { this.loanTransactions.add(loanTransaction) ; } - + public void removeLoanTransaction(final LoanTransaction loanTransaction) { this.loanTransactions.remove(loanTransaction) ; } - + public void setLoanStatus(final Integer loanStatus) { this.loanStatus = loanStatus; } @@ -5575,7 +5575,7 @@ public class Loan extends AbstractPersistableCustom { @SuppressWarnings({ "unused" }) public LoanApplicationTerms getLoanApplicationTerms(final ApplicationCurrency applicationCurrency, final CalendarInstance restCalendarInstance, CalendarInstance compoundingCalendarInstance, final Calendar loanCalendar, - final FloatingRateDTO floatingRateDTO, final boolean isSkipRepaymentonmonthFirst, final Integer numberofdays, + final FloatingRateDTO floatingRateDTO, final boolean isSkipRepaymentonmonthFirst, final Integer numberofdays, final HolidayDetailDTO holidayDetailDTO) { LoanProduct loanProduct = loanProduct(); // LoanProductRelatedDetail loanProductRelatedDetail = @@ -5664,7 +5664,7 @@ public class Loan extends AbstractPersistableCustom { maxOutstandingBalance, interestChargedFromDate, this.loanProduct.getPrincipalThresholdForLastInstallment(), this.loanProduct.getInstallmentAmountInMultiplesOf(), recalculationFrequencyType, restCalendarInstance, compoundingMethod, compoundingCalendarInstance, compoundingFrequencyType, this.loanProduct.preCloseInterestCalculationStrategy(), - rescheduleStrategyMethod, loanCalendar, getApprovedPrincipal(), annualNominalInterestRate, loanTermVariations, + rescheduleStrategyMethod, loanCalendar, getApprovedPrincipal(), annualNominalInterestRate, loanTermVariations, calendarHistoryDataWrapper, numberofdays, isSkipRepaymentonmonthFirst, holidayDetailDTO, allowCompoundingOnEod); } @@ -5881,9 +5881,9 @@ public class Loan extends AbstractPersistableCustom { } return actualDisbursementDate; } - + public void addTrancheLoanCharge(final Charge charge) { - final List appliedCharges = new ArrayList<>(); + final List appliedCharges = new ArrayList<>(); for(final LoanTrancheCharge loanTrancheCharge: this.trancheCharges){ appliedCharges.add(loanTrancheCharge.getCharge()); } @@ -5939,7 +5939,7 @@ public class Loan extends AbstractPersistableCustom { /** * Reverse only disbursement, accruals, and repayments at disbursal * transactions - * + * * @param actualDisbursementDate * @return */ @@ -6069,7 +6069,7 @@ public class Loan extends AbstractPersistableCustom { } return amount; } - + public void updateWriteOffReason(CodeValue writeOffReason) { this.writeOffReason = writeOffReason; } @@ -6082,8 +6082,8 @@ public class Loan extends AbstractPersistableCustom { public LoanProduct getLoanProduct() { return loanProduct; } - - public LoanRepaymentScheduleInstallment fetchLoanForeclosureDetail(final LocalDate closureDate) { + + public LoanRepaymentScheduleInstallment fetchLoanForeclosureDetail(final LocalDate closureDate) { Money[] receivables = retriveIncomeOutstandingTillDate(closureDate); Money totalPrincipal = (Money.of(getCurrency(), this.getSummary().getTotalPrincipalOutstanding())); totalPrincipal = totalPrincipal.minus(receivables[3]); @@ -6094,19 +6094,19 @@ public class Loan extends AbstractPersistableCustom { } public Money[] retriveIncomeOutstandingTillDate(final LocalDate paymentDate) { - Money[] balances = new Money[4]; - final MonetaryCurrency currency = getCurrency(); + Money[] balances = new Money[4]; + final MonetaryCurrency currency = getCurrency(); Money interest = Money.zero(currency); - Money paidFromFutureInstallments = Money.zero(currency); + Money paidFromFutureInstallments = Money.zero(currency); Money fee = Money.zero(currency); - Money penalty = Money.zero(currency); + Money penalty = Money.zero(currency); for (final LoanRepaymentScheduleInstallment installment : this.repaymentScheduleInstallments) { if (!installment.getDueDate().isAfter(paymentDate)) { interest = interest.plus(installment.getInterestOutstanding(currency)); penalty = penalty.plus(installment.getPenaltyChargesOutstanding(currency)); fee = fee.plus(installment.getFeeChargesOutstanding(currency)); } else if (installment.getFromDate().isBefore(paymentDate)) { - Money[] balancesForCurrentPeroid = fetchInterestFeeAndPenaltyTillDate(paymentDate, currency, installment); + Money[] balancesForCurrentPeroid = fetchInterestFeeAndPenaltyTillDate(paymentDate, currency, installment); if (balancesForCurrentPeroid[0].isGreaterThan(balancesForCurrentPeroid[5])) { interest = interest.plus(balancesForCurrentPeroid[0]) .minus(balancesForCurrentPeroid[5]); @@ -6145,7 +6145,7 @@ public class Loan extends AbstractPersistableCustom { Money interestForCurrentPeriod=Money.zero(getCurrency()); Money interestAccountedForCurrentPeriod=Money.zero(getCurrency()); int totalPeriodDays = Days.daysBetween(installment.getFromDate(), installment.getDueDate()).getDays(); - int tillDays = Days.daysBetween(installment.getFromDate(), paymentDate).getDays(); + int tillDays = Days.daysBetween(installment.getFromDate(), paymentDate).getDays(); interestForCurrentPeriod = Money.of(getCurrency(),BigDecimal.valueOf(calculateInterestForDays(totalPeriodDays, installment.getInterestCharged(getCurrency()) .getAmount(), tillDays))); interestAccountedForCurrentPeriod = installment.getInterestWaived(getCurrency()).plus(installment.getInterestPaid(getCurrency())); @@ -6176,7 +6176,7 @@ public class Loan extends AbstractPersistableCustom { } } } - + Money[] balances = new Money[6]; balances[0] = interestForCurrentPeriod; balances[1] = feeForCurrentPeriod; @@ -6186,12 +6186,12 @@ public class Loan extends AbstractPersistableCustom { balances[5] = interestAccountedForCurrentPeriod; return balances; } - - + + public Money[] retriveIncomeForOverlappingPeriod(final LocalDate paymentDate) { Money[] balances = new Money[3]; final MonetaryCurrency currency = getCurrency(); - balances[0] = balances[1] = balances[2] = Money.zero(currency); + balances[0] = balances[1] = balances[2] = Money.zero(currency); for (final LoanRepaymentScheduleInstallment installment : this.repaymentScheduleInstallments) { if (installment.getDueDate().isEqual(paymentDate)){ Money interest = installment.getInterestCharged(currency); @@ -6206,7 +6206,7 @@ public class Loan extends AbstractPersistableCustom { break; } } - + return balances; } private double calculateInterestForDays(int daysInPeriod, BigDecimal interest, int days) { @@ -6248,7 +6248,7 @@ public class Loan extends AbstractPersistableCustom { receivables[2] = receivablePenalty; return receivables; } - + public void reverseAccrualsAfter(final LocalDate tillDate) { for (final LoanTransaction transaction : this.loanTransactions) { if (transaction.isAccrual() && transaction.getTransactionDate().isAfter(tillDate)) { @@ -6330,34 +6330,34 @@ public class Loan extends AbstractPersistableCustom { if (installment.getDueDate().isEqual(transactionDate)) { isInterestComponent = false; } - } - + } + } - + for(LoanDisbursementDetails loanDisbursementDetails : getDisbursementDetails()){ if(loanDisbursementDetails.actualDisbursementDate() == null){ totalPrincipal = Money.of(currency, totalPrincipal.getAmount().subtract(loanDisbursementDetails.principal())); } } - + LocalDate installmentStartDate = getDisbursementDate(); if (newInstallments.size() > 0) { installmentStartDate = newInstallments.get((newInstallments.size() - 1)).getDueDate(); } - + int installmentNumber = newInstallments.size(); if (!isInterestComponent) { installmentNumber++; } - - + + LoanRepaymentScheduleInstallment newInstallment = new LoanRepaymentScheduleInstallment(null, newInstallments.size() + 1, installmentStartDate, transactionDate, totalPrincipal.getAmount(), balances[0].getAmount(), balances[1].getAmount(), balances[2].getAmount(), isInterestComponent, null); newInstallment.updateInstallmentNumber(newInstallments.size() + 1); - newInstallments.add(newInstallment); + newInstallments.add(newInstallment); updateLoanScheduleOnForeclosure(newInstallments); Set charges = this.charges(); @@ -6371,7 +6371,7 @@ public class Loan extends AbstractPersistableCustom { loanCharge.updateWaivedAmount(currency); } } - + for (LoanTransaction loanTransaction : getLoanTransactions()) { if (loanTransaction.isChargesWaiver()) { for (LoanChargePaidBy chargePaidBy : loanTransaction @@ -6396,17 +6396,17 @@ public class Loan extends AbstractPersistableCustom { addLoanRepaymentScheduleInstallment(installment); } } - + public Integer getLoanSubStatus() { return this.loanSubStatus; } - + private boolean isForeclosure(){ boolean isForeClosure = false; if(this.loanSubStatus != null){ isForeClosure = LoanSubStatus.fromInt(loanSubStatus).isForeclosed(); } - + return isForeClosure; } @@ -6450,7 +6450,7 @@ public class Loan extends AbstractPersistableCustom { public LoanTopupDetails getTopupLoanDetails() { return this.loanTopupDetails; } - + public Collection getLoanCharges() { return this.charges; } @@ -6473,17 +6473,17 @@ public class Loan extends AbstractPersistableCustom { public void initializeLoanOfficerHistory() { this.loanOfficerHistory.size() ; } - + public void initilizeTransactions() { this.loanTransactions.size() ; } - + public void initializeRepaymentSchedule() { this.repaymentScheduleInstallments.size() ; } public boolean hasInvalidLoanType() { return AccountType.fromInt(this.loanType).isInvalid(); } - + public boolean isIndividualLoan(){return AccountType.fromInt(this.loanType).isIndividualAccount();} } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainService.java index aed808a08..6146613f3 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainService.java @@ -54,7 +54,7 @@ public interface LoanAccountDomainService { * This method is to recalculate and accrue the income till the last accrued * date. this method is used when the schedule changes due to interest * recalculation - * + * * @param loan */ void recalculateAccruals(Loan loan); @@ -66,10 +66,10 @@ public interface LoanAccountDomainService { void saveLoanWithDataIntegrityViolationChecks(Loan loan); Map foreCloseLoan(final Loan loan, final LocalDate foreClourseDate, String noteText); - + /** * Disables all standing instructions linked to a closed loan - * + * * @param loan {@link Loan} object */ void disableStandingInstructionsLinkedToClosedLoan(Loan loan); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java index 31f6a624f..b3d44cef4 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java @@ -112,7 +112,7 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { final ApplicationCurrencyRepositoryWrapper applicationCurrencyRepository, final LoanRepaymentScheduleInstallmentRepository repaymentScheduleInstallmentRepository, final LoanAccrualPlatformService loanAccrualPlatformService, final PlatformSecurityContext context, - final BusinessEventNotifierService businessEventNotifierService, final LoanUtilService loanUtilService, + final BusinessEventNotifierService businessEventNotifierService, final LoanUtilService loanUtilService, final StandingInstructionRepository standingInstructionRepository) { this.loanAccountAssembler = loanAccountAssembler; this.loanRepositoryWrapper = loanRepositoryWrapper; @@ -463,7 +463,7 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { /* * (non-Javadoc) - * + * * @see * org.apache.fineract.portfolio.loanaccount.domain.LoanAccountDomainService * #recalculateAccruals(org.apache.fineract.portfolio.loanaccount.domain.Loan) @@ -479,11 +479,11 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { LocalDate accruedTill = loan.getAccruedTill(); if (!loan.isPeriodicAccrualAccountingEnabledOnLoanProduct() || !isInterestCalcualtionHappened || accruedTill == null || loan.isNpa() || !loan.status().isActive()) { return; } - + boolean isOrganisationDateEnabled = this.configurationDomainService.isOrganisationstartDateEnabled(); Date organisationStartDate = new Date(); if(isOrganisationDateEnabled){ - organisationStartDate = this.configurationDomainService.retrieveOrganisationStartDate(); + organisationStartDate = this.configurationDomainService.retrieveOrganisationStartDate(); } Collection loanScheduleAccrualDatas = new ArrayList<>(); List installments = loan.getRepaymentScheduleInstallments(); @@ -504,7 +504,7 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { accruedTill = DateUtils.getLocalDateOfTenant(); } if(!isOrganisationDateEnabled || new LocalDate(organisationStartDate).isBefore(installment.getDueDate())){ - generateLoanScheduleAccrualData(accruedTill, loanScheduleAccrualDatas, loanId, officeId, accrualStartDate, repaymentFrequency, + generateLoanScheduleAccrualData(accruedTill, loanScheduleAccrualDatas, loanId, officeId, accrualStartDate, repaymentFrequency, repayEvery, interestCalculatedFrom, loanProductId, currency, currencyData, loanCharges, installment); } } @@ -518,11 +518,11 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { } } - private void generateLoanScheduleAccrualData(final LocalDate accruedTill, final Collection loanScheduleAccrualDatas, - final Long loanId, Long officeId, final LocalDate accrualStartDate, final PeriodFrequencyType repaymentFrequency, final Integer repayEvery, - final LocalDate interestCalculatedFrom, final Long loanProductId, final MonetaryCurrency currency, final CurrencyData currencyData, + private void generateLoanScheduleAccrualData(final LocalDate accruedTill, final Collection loanScheduleAccrualDatas, + final Long loanId, Long officeId, final LocalDate accrualStartDate, final PeriodFrequencyType repaymentFrequency, final Integer repayEvery, + final LocalDate interestCalculatedFrom, final Long loanProductId, final MonetaryCurrency currency, final CurrencyData currencyData, final Set loanCharges, final LoanRepaymentScheduleInstallment installment) { - + if (!accruedTill.isBefore(installment.getDueDate()) || (accruedTill.isAfter(installment.getFromDate()) && !accruedTill.isAfter(installment.getDueDate()))) { BigDecimal dueDateFeeIncome = BigDecimal.ZERO; @@ -660,20 +660,20 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { } } } - + Money interestPayable = foreCloseDetail.getInterestCharged(currency); Money feePayable = foreCloseDetail.getFeeChargesCharged(currency); Money penaltyPayable = foreCloseDetail.getPenaltyChargesCharged(currency); - Money payPrincipal = foreCloseDetail.getPrincipal(currency); + Money payPrincipal = foreCloseDetail.getPrincipal(currency); loan.updateInstallmentsPostDate(foreClosureDate); LoanTransaction payment = null; - - + + if (payPrincipal.plus(interestPayable).plus(feePayable).plus(penaltyPayable).isGreaterThanZero()) { final PaymentDetail paymentDetail = null; - String externalId = null; + String externalId = null; final LocalDateTime currentDateTime = DateUtils.getLocalDateTimeOfTenant(); payment = LoanTransaction.repayment(loan.getOffice(), payPrincipal.plus(interestPayable).plus(feePayable).plus(penaltyPayable), paymentDetail, foreClosureDate, externalId, currentDateTime, appUser); @@ -701,7 +701,7 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { } changes.put("transactions", transactionIds); changes.put("eventAmount", payPrincipal.getAmount().negate()); - + if (changedTransactionDetail != null) { for (Map.Entry mapEntry : changedTransactionDetail.getNewTransactionMappings().entrySet()) { saveLoanTransactionWithDataIntegrityViolationChecks(mapEntry.getValue()); @@ -710,7 +710,7 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { updateLoanTransaction(mapEntry.getKey(), mapEntry.getValue()); } } - + saveAndFlushLoanWithDataIntegrityViolationChecks(loan); if (StringUtils.isNotBlank(noteText)) { @@ -739,7 +739,7 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { final Integer standingInstructionStatus = StandingInstructionStatus.ACTIVE.getValue(); final Collection accountTransferStandingInstructions = this.standingInstructionRepository .findByLoanAccountAndStatus(loan, standingInstructionStatus); - + if (!accountTransferStandingInstructions.isEmpty()) { for (AccountTransferStandingInstruction accountTransferStandingInstruction : accountTransferStandingInstructions) { accountTransferStandingInstruction.updateStatus(StandingInstructionStatus.DISABLED.getValue()); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java index 6be781c83..44abee532 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java @@ -199,7 +199,7 @@ public class LoanCharge extends AbstractPersistableCustom { } } } - + return new LoanCharge(loan, chargeDefinition, amountPercentageAppliedTo, amount, chargeTime, chargeCalculation, dueDate, chargePaymentMode, null, loanCharge); } @@ -583,7 +583,7 @@ public class LoanCharge extends AbstractPersistableCustom { } return dueDate; } - + public Date getDueDate() { return this.dueDate; } @@ -668,7 +668,7 @@ public class LoanCharge extends AbstractPersistableCustom { public BigDecimal amountOutstanding() { return this.amountOutstanding; } - + public Money getAmountOutstanding(final MonetaryCurrency currency) { return Money.of(currency, this.amountOutstanding); } @@ -702,7 +702,7 @@ public class LoanCharge extends AbstractPersistableCustom { public boolean isNotFullyPaid() { return !isPaid(); } - + public boolean isChargePending(){ return isNotFullyPaid() && !isWaived(); } @@ -747,13 +747,13 @@ public class LoanCharge extends AbstractPersistableCustom { /** * @param incrementBy - * + * * @param installmentNumber - * + * * @param feeAmount * TODO - * - * + * + * * @return Actual amount paid on this charge */ public Money updatePaidAmountBy(final Money incrementBy, final Integer installmentNumber, final Money feeAmount) { @@ -821,11 +821,11 @@ public class LoanCharge extends AbstractPersistableCustom { @Override public int hashCode() { return 1; - + * return new HashCodeBuilder(3, 5) // .append(getId()) // * .append(this.charge.getId()) // * .append(this.amount).append(getDueLocalDate()) // .toHashCode(); - + }*/ public ChargePaymentMode getChargePaymentMode() { @@ -1027,15 +1027,15 @@ public class LoanCharge extends AbstractPersistableCustom { public Loan getLoan() { return this.loan; } - + public boolean isDisbursementCharge() { return ChargeTimeType.fromInt(this.chargeTime).equals(ChargeTimeType.DISBURSEMENT); } - + public boolean isTrancheDisbursementCharge() { return ChargeTimeType.fromInt(this.chargeTime).equals(ChargeTimeType.TRANCHE_DISBURSEMENT); } - + public boolean isDueDateCharge() { return this.dueDate != null; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java index 9328e9ee6..42fae3e51 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java @@ -83,7 +83,7 @@ public class LoanChargePaidBy extends AbstractPersistableCustom { this.amount = amount; } - + public Integer getInstallmentNumber() { return this.installmentNumber; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java index d18bff00c..ce6c47096 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java @@ -71,7 +71,7 @@ public class LoanDisbursementDetails extends AbstractPersistableCustom { public boolean equals(final Object obj) { final LoanDisbursementDetails loanDisbursementDetails = (LoanDisbursementDetails) obj; if (loanDisbursementDetails.principal.equals(this.principal) - && loanDisbursementDetails.expectedDisbursementDate.equals(this.expectedDisbursementDate)) + && loanDisbursementDetails.expectedDisbursementDate.equals(this.expectedDisbursementDate)) { return true; } return false; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java index 47614b9e2..2041281b2 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java @@ -74,7 +74,7 @@ public class LoanInstallmentCharge extends AbstractPersistableCustom imple public int compareTo(LoanInstallmentCharge o) { return this.installment.getInstallmentNumber().compareTo(o.installment.getInstallmentNumber()); } - + public LoanInstallmentCharge(final BigDecimal amount, final LoanCharge loanCharge, final LoanRepaymentScheduleInstallment installment) { this.loancharge = loanCharge; this.installment = installment; @@ -266,15 +266,15 @@ public class LoanInstallmentCharge extends AbstractPersistableCustom imple } } - + public void updateInstallment(LoanRepaymentScheduleInstallment installment) { this.installment = installment; } - + public Money undoPaidAmountBy(final Money incrementBy, final Money feeAmount) { Money amountPaidToDate = Money.of(incrementBy.getCurrency(), this.amountPaid); - + Money amountToDeductOnThisCharge = Money.zero(incrementBy.getCurrency()); if (incrementBy.isGreaterThanOrEqualTo(amountPaidToDate)) { amountToDeductOnThisCharge = amountPaidToDate; @@ -300,5 +300,5 @@ public class LoanInstallmentCharge extends AbstractPersistableCustom imple return this.installment; } - + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java index b5757d57d..abc3e8ed9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java @@ -33,7 +33,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.RecalculationFrequencyTy /** * Entity for holding interest recalculation setting, details will be copied * from product directly - * + * * @author conflux */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOfficerAssignmentHistory.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOfficerAssignmentHistory.java index 6f844373f..eaf29f093 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOfficerAssignmentHistory.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOfficerAssignmentHistory.java @@ -99,7 +99,7 @@ public class LoanOfficerAssignmentHistory extends AbstractAuditableCustom loanCompoundingDetails = new HashSet<>(); - + protected LoanRepaymentScheduleInstallment() { this.installmentNumber = null; this.fromDate = null; @@ -323,7 +323,7 @@ public final class LoanRepaymentScheduleInstallment extends AbstractAuditableCus public int compareTo(LoanRepaymentScheduleInstallment o) { return this.installmentNumber.compareTo(o.installmentNumber); } - + public boolean isPrincipalNotCompleted(final MonetaryCurrency currency) { return !isPrincipalCompleted(currency); } @@ -350,7 +350,7 @@ public final class LoanRepaymentScheduleInstallment extends AbstractAuditableCus this.obligationsMet = false; this.obligationsMetOnDate = null; } - + public void resetAccrualComponents() { this.interestAccrued = null; this.feeAccrued = null; @@ -683,9 +683,9 @@ public final class LoanRepaymentScheduleInstallment extends AbstractAuditableCus return obligationsMetOnDate; } - + /********** UNPAY COMPONENTS ****/ - + public Money unpayPenaltyChargesComponent(final LocalDate transactionDate, final Money transactionAmountRemaining) { final MonetaryCurrency currency = transactionAmountRemaining.getCurrency(); @@ -767,28 +767,28 @@ public final class LoanRepaymentScheduleInstallment extends AbstractAuditableCus return principalPortionOfTransactionDeducted; } - + private void reduceAdvanceAndLateTotalsForRepaymentPeriod(final LocalDate transactionDate, final MonetaryCurrency currency, final Money amountDeductedInRepaymentPeriod) { - - + + if (isInAdvance(transactionDate)) { Money mTotalPaidInAdvance = Money.of(currency,this.totalPaidInAdvance); - + if(mTotalPaidInAdvance.isLessThan(amountDeductedInRepaymentPeriod) || mTotalPaidInAdvance.isEqualTo(amountDeductedInRepaymentPeriod)) this.totalPaidInAdvance = Money.zero(currency).getAmount(); else this.totalPaidInAdvance = mTotalPaidInAdvance.minus(amountDeductedInRepaymentPeriod).getAmount(); } else if (isLatePayment(transactionDate)) { Money mTotalPaidLate = Money.of(currency,this.totalPaidLate); - + if(mTotalPaidLate.isLessThan(amountDeductedInRepaymentPeriod) || mTotalPaidLate.isEqualTo(amountDeductedInRepaymentPeriod)) this.totalPaidLate = Money.zero(currency).getAmount(); else this.totalPaidLate = mTotalPaidLate.minus(amountDeductedInRepaymentPeriod).getAmount(); } } - + public Money getDue(MonetaryCurrency currency) { return getPrincipal(currency).plus(getInterestCharged(currency)).plus(getFeeChargesCharged(currency)).plus(getPenaltyChargesCharged(currency)); } @@ -801,7 +801,7 @@ public final class LoanRepaymentScheduleInstallment extends AbstractAuditableCus .plus(getInterestWrittenOff(currency)); return getInterestAccrued(currency).minus(interestAccountedFor); } - + public Money getTotalPaid(final MonetaryCurrency currency) { return getPenaltyChargesPaid(currency).plus(getFeeChargesPaid(currency)).plus(getInterestPaid(currency)) .plus(getPrincipalCompleted(currency)); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepository.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepository.java index 2db0f7607..74a7b64ad 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepository.java @@ -145,10 +145,10 @@ public interface LoanRepository extends JpaRepository, JpaSpecificat @Query(DOES_CLIENT_HAVE_NON_CLOSED_LOANS) boolean doNonClosedLoanAccountsExistForClient(@Param("clientId") Long clientId); - + @Query(DOES_PRODUCT_HAVE_NON_CLOSED_LOANS) boolean doNonClosedLoanAccountsExistForProduct(@Param("productId") Long productId); - + @Query(FIND_BY_ACCOUNT_NUMBER) Loan findNonClosedLoanByAccountNumber(@Param("accountNumber") String accountNumber); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepositoryWrapper.java index d9b89272d..828243f3d 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepositoryWrapper.java @@ -59,7 +59,7 @@ public class LoanRepositoryWrapper { } return loan; } - + //Root Entities are enough public Collection findActiveLoansByLoanIdAndGroupId(Long clientId, Long groupId) { final Collection loanStatuses = new ArrayList<>(Arrays.asList(LoanStatus.SUBMITTED_AND_PENDING_APPROVAL.getValue(), @@ -71,19 +71,19 @@ public class LoanRepositoryWrapper { public Loan saveAndFlush(final Loan loan) { return this.repository.saveAndFlush(loan) ; } - + @Transactional public Loan save(final Loan loan) { return this.repository.save(loan) ; } - + public List save(List loans) { return this.repository.saveAll(loans) ; } public void flush() { - this.repository.flush(); + this.repository.flush(); } - + public void delete(final Long loanId) { this.repository.deleteById(loanId); } @@ -130,7 +130,7 @@ public class LoanRepositoryWrapper { @Param("groupId") Long groupId, @Param("groupLoanType") Integer groupLoanType) { return this.repository.getGroupLoansToUpdateLoanProductCounter(loanProductCounter, groupId, groupLoanType) ; } - + //Only root entities are enough public List getClientLoansToUpdateLoanProductCounter(@Param("loanProductCounter") Integer loanProductCounter, @Param("clientId") Long clientId) { @@ -193,7 +193,7 @@ public class LoanRepositoryWrapper { loan.initializeRepaymentSchedule(); } } - return loans ; + return loans ; } //Repayments Schedule @@ -205,7 +205,7 @@ public class LoanRepositoryWrapper { loan.initializeRepaymentSchedule(); } } - return loans ; + return loans ; } public List findActiveLoansLoanProductIdsByClient(@Param("clientId") Long clientId, @Param("loanStatus") Integer loanStatus) { @@ -219,11 +219,11 @@ public class LoanRepositoryWrapper { public boolean doNonClosedLoanAccountsExistForClient(@Param("clientId") Long clientId) { return this.repository.doNonClosedLoanAccountsExistForClient(clientId) ; } - + public boolean doNonClosedLoanAccountsExistForProduct(@Param("productId") Long productId) { return this.repository.doNonClosedLoanAccountsExistForProduct(productId) ; } - + public Loan findNonClosedLoanByAccountNumber(@Param("accountNumber") String accountNumber) { return this.repository.findNonClosedLoanByAccountNumber(accountNumber) ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRescheduleRequestToTermVariationMapping.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRescheduleRequestToTermVariationMapping.java index e6976a84d..435a0cea7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRescheduleRequestToTermVariationMapping.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRescheduleRequestToTermVariationMapping.java @@ -29,14 +29,14 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; @Entity @Table(name="m_loan_reschedule_request_term_variations_mapping") public class LoanRescheduleRequestToTermVariationMapping extends AbstractPersistableCustom { - - + + @ManyToOne(optional = false, cascade = CascadeType.PERSIST) @JoinColumn(name = "loan_term_variations_id", nullable = false) private LoanTermVariations loanTermVariations; - + protected LoanRescheduleRequestToTermVariationMapping(){ - + } private LoanRescheduleRequestToTermVariationMapping(final LoanTermVariations loanTermVariations) { @@ -46,7 +46,7 @@ public class LoanRescheduleRequestToTermVariationMapping extends AbstractPersist public static LoanRescheduleRequestToTermVariationMapping createNew(final LoanTermVariations loanTermVariation) { return new LoanRescheduleRequestToTermVariationMapping(loanTermVariation); } - + public LoanTermVariations getLoanTermVariations() { return this.loanTermVariations; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummary.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummary.java index 8bff6dc30..96ab54909 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummary.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummary.java @@ -30,9 +30,9 @@ import org.apache.fineract.organisation.monetary.domain.Money; /** * Encapsulates all the summary details of a {@link Loan}. - * + * * {@link LoanSummary} fields are updated through a scheduled job. see - - * + * */ @Embeddable public final class LoanSummary { @@ -230,13 +230,13 @@ public final class LoanSummary { Money totalFeeChargesRepaidAtDisbursement = summaryWrapper.calculateTotalChargesRepaidAtDisbursement(charges,currency); this.totalFeeChargesRepaid = totalFeeChargesRepaidAtDisbursement.getAmount(); - + if(charges != null) { - this.totalFeeChargesWaived = summaryWrapper.calculateTotalFeeChargesWaived(charges, currency).getAmount(); + this.totalFeeChargesWaived = summaryWrapper.calculateTotalFeeChargesWaived(charges, currency).getAmount(); }else { this.totalFeeChargesWaived = BigDecimal.ZERO; } - + this.totalFeeChargesWrittenOff = summaryWrapper.calculateTotalFeeChargesWrittenOff(repaymentScheduleInstallments, currency) .getAmount(); @@ -336,7 +336,7 @@ public final class LoanSummary { return this.totalPenaltyChargesWaived; } - + public BigDecimal getTotalExpectedRepayment() { return this.totalExpectedRepayment; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariationType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariationType.java index 0b12182eb..aad395717 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariationType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariationType.java @@ -109,19 +109,19 @@ public enum LoanTermVariationType { public boolean isDeleteInstallment() { return this.value.equals(LoanTermVariationType.DELETE_INSTALLMENT.getValue()); } - + public boolean isGraceOnInterest() { return this.value.equals(LoanTermVariationType.GRACE_ON_INTEREST.getValue()); } - + public boolean isGraceOnPrincipal() { return this.value.equals(LoanTermVariationType.GRACE_ON_PRINCIPAL.getValue()); } - + public boolean isExtendRepaymentPeriod() { return this.value.equals(LoanTermVariationType.EXTEND_REPAYMENT_PERIOD.getValue()); } - + public boolean isInterestRateFromInstallment() { return this.value.equals(LoanTermVariationType.INTEREST_RATE_FROM_INSTALLMENT.getValue()); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariations.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariations.java index 6171a02ff..dee51c2d1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariations.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariations.java @@ -64,10 +64,10 @@ public class LoanTermVariations extends AbstractPersistableCustom { @Column(name = "applied_on_loan_status", nullable = false) private Integer onLoanStatus; - + @Column(name = "is_active", nullable = false) private Boolean isActive; - + @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "parent_id") private LoanTermVariations parent; @@ -84,7 +84,7 @@ public class LoanTermVariations extends AbstractPersistableCustom { this.isActive = true; this.parent = null; } - + public LoanTermVariations(final Integer termType, final Date termApplicableFrom, final BigDecimal decimalValue, final Date dateValue, final boolean isSpecificToInstallment, final Loan loan, final Integer loanStatus) { this.loan = loan; @@ -97,7 +97,7 @@ public class LoanTermVariations extends AbstractPersistableCustom { this.isActive = true; this.parent = null; } - + public LoanTermVariations(final Integer termType, final Date termApplicableFrom, final BigDecimal decimalValue, final Date dateValue, final boolean isSpecificToInstallment, final Loan loan, final Integer loanStatus, final Boolean isActive, final LoanTermVariations parent) { this.loan = loan; @@ -157,11 +157,11 @@ public class LoanTermVariations extends AbstractPersistableCustom { this.decimalValue = decimalValue; } - + public Integer getOnLoanStatus() { return this.onLoanStatus; } - + public Boolean isActive() { return this.isActive; } @@ -169,11 +169,11 @@ public class LoanTermVariations extends AbstractPersistableCustom { public LoanTermVariations parent() { return this.parent; } - + public void updateIsActive(final Boolean isActive){ this.isActive = isActive; } - + public void markAsInactive() { this.isActive = false; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java index 5c6a8a630..e326a7fa1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java @@ -34,15 +34,15 @@ public class LoanTrancheCharge extends AbstractPersistableCustom { @ManyToOne(cascade = CascadeType.ALL, optional = false) @JoinColumn(name = "loan_id", nullable = false) private Loan loan; - + @ManyToOne(cascade = CascadeType.ALL, optional = false) @JoinColumn(name = "charge_id", nullable = false) private Charge charge; - + LoanTrancheCharge() { } - + LoanTrancheCharge(Charge chargeDefinition) { this.charge = chargeDefinition ; } @@ -50,14 +50,14 @@ public class LoanTrancheCharge extends AbstractPersistableCustom { this.charge = charge; this.loan = loan ; } - + public static LoanTrancheCharge createLoanTrancheCharge(Charge chargeDefinition) { return new LoanTrancheCharge(chargeDefinition) ; } public static LoanTrancheCharge createLoanTrancheChargeWithLoan(Charge chargeDefinition, Loan loan) { return new LoanTrancheCharge(chargeDefinition, loan) ; } - + public Charge getCharge() { return charge ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java index 56360bbbd..20644c8ba 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java @@ -29,24 +29,24 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; @Entity @Table(name="m_loan_tranche_disbursement_charge") public class LoanTrancheDisbursementCharge extends AbstractPersistableCustom { - + @ManyToOne @JoinColumn(name = "loan_charge_id", referencedColumnName = "id", nullable = false) private LoanCharge loancharge; - + @ManyToOne(cascade = CascadeType.ALL, optional = false) @JoinColumn(name="disbursement_detail_id", referencedColumnName = "id", nullable = false) - private LoanDisbursementDetails loanDisbursementDetails; - + private LoanDisbursementDetails loanDisbursementDetails; + public LoanTrancheDisbursementCharge(){ - + } - + public LoanTrancheDisbursementCharge(final LoanCharge loanCharge, final LoanDisbursementDetails loanDisbursementDetails){ this.loancharge = loanCharge; this.loanDisbursementDetails = loanDisbursementDetails; } - + public LoanDisbursementDetails getloanDisbursementDetails(){ return this.loanDisbursementDetails; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java index 8b7ad31db..68f98deb7 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java @@ -383,10 +383,10 @@ public class LoanTransaction extends AbstractPersistableCustom { /** * This updates the derived fields of a loan transaction for the principal, * interest and interest waived portions. - * + * * This accumulates the values passed to the already existent values for * each of the portions. - * + * * @param principal principal * @param interest interest * @param feeCharges feeCharges @@ -782,15 +782,15 @@ public class LoanTransaction extends AbstractPersistableCustom { public boolean isAccrualTransaction() { return isAccrual(); } - + public BigDecimal getOutstandingLoanBalance() { return outstandingLoanBalance; } - + public PaymentDetail getPaymentDetail() { return this.paymentDetail; } - + public boolean isPaymentTransaction() { return this.isNotReversed() && !(this.isDisbursement() || this.isAccrual() || this.isRepaymentAtDisbursement() || this.isNonMonetaryTransaction() || this diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionType.java index ee5bcc426..735489adc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionType.java @@ -172,7 +172,7 @@ public enum LoanTransactionType { public boolean isChargePayment() { return this.value.equals(LoanTransactionType.CHARGE_PAYMENT.getValue()); } - + public boolean isRefundForActiveLoan() { return this.value.equals(LoanTransactionType.REFUND_FOR_ACTIVE_LOAN.getValue()); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/AbstractLoanRepaymentScheduleTransactionProcessor.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/AbstractLoanRepaymentScheduleTransactionProcessor.java index 5cc591807..9eee37083 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/AbstractLoanRepaymentScheduleTransactionProcessor.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/AbstractLoanRepaymentScheduleTransactionProcessor.java @@ -46,9 +46,9 @@ import org.joda.time.LocalDate; /** * Abstract implementation of {@link LoanRepaymentScheduleTransactionProcessor} * which is more convenient for concrete implementations to extend. - * + * * @see InterestPrincipalPenaltyFeesOrderLoanRepaymentScheduleTransactionProcessor - * + * * @see HeavensFamilyLoanRepaymentScheduleTransactionProcessor * @see CreocoreLoanRepaymentScheduleTransactionProcessor */ @@ -418,7 +418,7 @@ public abstract class AbstractLoanRepaymentScheduleTransactionProcessor implemen /** * This method is responsible for checking if the current transaction is 'an * advance/early payment' based on the details passed through. - * + * * Default implementation simply processes transactions as 'Late' if the * transaction date is after the installment due date. */ @@ -432,7 +432,7 @@ public abstract class AbstractLoanRepaymentScheduleTransactionProcessor implemen /** * For late repayments, how should components of installment be paid off - * + * * @param transactionMappings * TODO */ @@ -443,7 +443,7 @@ public abstract class AbstractLoanRepaymentScheduleTransactionProcessor implemen /** * This method is responsible for checking if the current transaction is 'an * advance/early payment' based on the details passed through. - * + * * Default implementation is check transaction date is before installment * due date. */ @@ -458,7 +458,7 @@ public abstract class AbstractLoanRepaymentScheduleTransactionProcessor implemen /** * For early/'in advance' repayments. - * + * * @param transactionMappings * TODO */ @@ -469,7 +469,7 @@ public abstract class AbstractLoanRepaymentScheduleTransactionProcessor implemen /** * For normal on-time repayments. - * + * * @param transactionMappings * TODO */ @@ -479,7 +479,7 @@ public abstract class AbstractLoanRepaymentScheduleTransactionProcessor implemen /** * Invoked when a transaction results in an over-payment of the full loan. - * + * * transaction amount is greater than the total expected principal and * interest of the loan. */ @@ -559,13 +559,13 @@ public abstract class AbstractLoanRepaymentScheduleTransactionProcessor implemen /** * Invoked when a there is a refund of an active loan or undo of an active * loan - * + * * Undoes principal, interest, fees and charges of this transaction based on * the repayment strategy - * + * * @param transactionMappings * TODO - * + * */ protected abstract Money handleRefundTransactionPaymentOfInstallment(final LoanRepaymentScheduleInstallment currentInstallment, final LoanTransaction loanTransaction, final Money transactionAmountUnprocessed, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/LoanRepaymentScheduleTransactionProcessor.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/LoanRepaymentScheduleTransactionProcessor.java index 5b55df5f6..84f60ca06 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/LoanRepaymentScheduleTransactionProcessor.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/LoanRepaymentScheduleTransactionProcessor.java @@ -51,7 +51,7 @@ public interface LoanRepaymentScheduleTransactionProcessor { void handleRefund(LoanTransaction loanTransaction, MonetaryCurrency currency, List installments, final Set charges); - + void processTransactionsFromDerivedFields(List transactionsPostDisbursement, MonetaryCurrency currency, List installments, Set charges); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/CreocoreLoanRepaymentScheduleTransactionProcessor.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/CreocoreLoanRepaymentScheduleTransactionProcessor.java index 59c16830d..a5c0bfed3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/CreocoreLoanRepaymentScheduleTransactionProcessor.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/CreocoreLoanRepaymentScheduleTransactionProcessor.java @@ -31,14 +31,14 @@ import org.joda.time.LocalDate; /** * Creocore style {@link LoanRepaymentScheduleTransactionProcessor}. - * + * * For standard transactions, pays off components in order of interest, then * principal. - * + * * If a transaction results in an advance payment or over-payment for a given * installment, the over paid amount is pay off on the principal component of * subsequent installments. - * + * * If the entire principal of an installment is paid in advance then the * interest component is waived. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/FineractStyleLoanRepaymentScheduleTransactionProcessor.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/FineractStyleLoanRepaymentScheduleTransactionProcessor.java index ddc5cbc66..0f93307da 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/FineractStyleLoanRepaymentScheduleTransactionProcessor.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/FineractStyleLoanRepaymentScheduleTransactionProcessor.java @@ -31,10 +31,10 @@ import org.joda.time.LocalDate; /** * Old style {@link LoanRepaymentScheduleTransactionProcessor}. - * + * * For ALL types of transactions, pays off components in order of interest, then * principal. - * + * * Other formulas exist on fineract where you can choose 'Declining-Balance * Interest Recalculation' which simply means, recalculate the interest * component based on the how much principal is outstanding at a point in time; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/HeavensFamilyLoanRepaymentScheduleTransactionProcessor.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/HeavensFamilyLoanRepaymentScheduleTransactionProcessor.java index e74fd504d..e19724458 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/HeavensFamilyLoanRepaymentScheduleTransactionProcessor.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/HeavensFamilyLoanRepaymentScheduleTransactionProcessor.java @@ -31,14 +31,14 @@ import org.joda.time.LocalDate; /** * Heavensfamily style {@link LoanRepaymentScheduleTransactionProcessor}. - * + * * For standard transactions, pays off components in order of interest, then * principal. - * + * * If a transaction results in an advance payment or overpayment for a given * installment, the over paid amount is pay off on the principal component of * subsequent installments. - * + * * If the entire principal of an installment is paid in advance then the * interest component is waived. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/RBILoanRepaymentScheduleTransactionProcessor.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/RBILoanRepaymentScheduleTransactionProcessor.java index f9768748a..b819aea0c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/RBILoanRepaymentScheduleTransactionProcessor.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/RBILoanRepaymentScheduleTransactionProcessor.java @@ -31,15 +31,15 @@ import org.joda.time.LocalDate; /** * Adhikar/RBI style {@link LoanRepaymentScheduleTransactionProcessor}. - * + * * From https://mifosforge.jira.com/browse/MIFOS-5636: - * + * * Per RBI regulations, all interest must be paid (both current and overdue) * before principal is paid. - * + * * For example on a loan with two installments due (one current and one overdue) * of 220 each (200 principal + 20 interest): - * + * * Partial Payment of 40 20 Payment to interest on Installment #1 (200 principal * remaining) 20 Payment to interest on Installment #2 (200 principal remaining) */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/DateMismatchException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/DateMismatchException.java index a07bf730a..8c18da892 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/DateMismatchException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/DateMismatchException.java @@ -22,14 +22,14 @@ import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainR import org.joda.time.LocalDate; /** - * {@link AbstractPlatformDomainRuleException} thrown when + * {@link AbstractPlatformDomainRuleException} thrown when * actual disbursement date does not match with * expected disbursement date - * + * */ public class DateMismatchException extends AbstractPlatformDomainRuleException { - public DateMismatchException(final LocalDate actualDisbursementDate, + public DateMismatchException(final LocalDate actualDisbursementDate, final LocalDate expectedDisbursedOnLocalDate) { super("error.msg.actual.disbursement.date.does.not.match.with.expected.disbursal.date", "Actual disbursement date (" + actualDisbursementDate + ") " diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/InvalidPaidInAdvanceAmountException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/InvalidPaidInAdvanceAmountException.java index b65089f70..fd7239a2e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/InvalidPaidInAdvanceAmountException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/InvalidPaidInAdvanceAmountException.java @@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainR * loan from one state to another violates a domain rule. */ public class InvalidPaidInAdvanceAmountException extends AbstractPlatformDomainRuleException { - + public InvalidPaidInAdvanceAmountException(final String refundAmountString) { super("error.msg.loan.refund.amount.invalid", "The refund amount `" + refundAmountString + "`" + "` is invalid or loan is not paid in advance.", new Object[] { refundAmountString}); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/MinDaysBetweenDisbursalAndFirstRepaymentViolationException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/MinDaysBetweenDisbursalAndFirstRepaymentViolationException.java index cb08732f8..dc70dae0c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/MinDaysBetweenDisbursalAndFirstRepaymentViolationException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/MinDaysBetweenDisbursalAndFirstRepaymentViolationException.java @@ -25,7 +25,7 @@ import org.joda.time.LocalDate; * {@link AbstractPlatformDomainRuleException} thrown when a number of days * between disbursal date and firstRepayment is less than * minimumDaysBetweenDisbursalAndFirstRepayment - * + * */ public class MinDaysBetweenDisbursalAndFirstRepaymentViolationException extends AbstractPlatformDomainRuleException { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/UndoLastTrancheDisbursementException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/UndoLastTrancheDisbursementException.java index c8a672115..d32dc8425 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/UndoLastTrancheDisbursementException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/UndoLastTrancheDisbursementException.java @@ -25,7 +25,7 @@ public class UndoLastTrancheDisbursementException extends AbstractPlatformDomain public UndoLastTrancheDisbursementException(final Object... defaultUserMessageArgs) { super("error.msg.cannot.undo.last.disbursal.after.repayments or waivers"," Cannot undo last disbursement after repayments or waivers.", defaultUserMessageArgs); - + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/GuarantorConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/GuarantorConstants.java index 067b34e63..5d0ed865e 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/GuarantorConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/GuarantorConstants.java @@ -60,11 +60,11 @@ public class GuarantorConstants { return this.value; } } - + public static final String GUARANTOR_SELF_GUARANTEE_ERROR = "min.self.guarantee.required"; public static final String GUARANTOR_EXTERNAL_GUARANTEE_ERROR = "min.external.guarantee.required"; public static final String GUARANTOR_MANDATORY_GUARANTEE_ERROR = "mandated.guarantee.required"; public static final String GUARANTOR_INSUFFICIENT_BALANCE_ERROR = "insufficient.balance"; public static final String GUARANTOR_NOT_ACTIVE_ERROR = "not.active"; - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/exception/InvalidGuarantorException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/exception/InvalidGuarantorException.java index eea46df06..474b93caf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/exception/InvalidGuarantorException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/exception/InvalidGuarantorException.java @@ -30,7 +30,7 @@ public class InvalidGuarantorException extends AbstractPlatformDomainRuleExcepti super("error.msg.invalid.guarantor", "Tried to set Client with id " + clientId + " as a guarantor to his/her own loan with loan identifier =" + loanId, clientId, loanId); } - + public InvalidGuarantorException(final Long clientId, final Long loanId,final String errorcode) { super("error.msg."+errorcode, "Tried to set Client with id " + clientId + " as a guarantor to his/her own loan with loan identifier =" + loanId, clientId, loanId); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorDomainServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorDomainServiceImpl.java index 69462e268..d50372582 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorDomainServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorDomainServiceImpl.java @@ -75,7 +75,7 @@ public class GuarantorDomainServiceImpl implements GuarantorDomainService { private final DepositAccountOnHoldTransactionRepository depositAccountOnHoldTransactionRepository; private final Map releaseLoanIds = new HashMap<>(2); private final SavingsAccountAssembler savingsAccountAssembler; - + @Autowired public GuarantorDomainServiceImpl(final GuarantorRepository guarantorRepository, @@ -293,7 +293,7 @@ public class GuarantorDomainServiceImpl implements GuarantorDomainService { /** * Method reverses all blocked fund(both hold and release) transactions. * example: reverses all transactions on undo approval of loan account. - * + * */ private void reverseAllFundTransaction(final Loan loan) { @@ -318,7 +318,7 @@ public class GuarantorDomainServiceImpl implements GuarantorDomainService { /** * Method holds all guarantor's guarantee amount for a loan account. * example: hold funds on approval of loan account. - * + * */ private void holdGuarantorFunds(final Loan loan) { if (loan.loanProduct().isHoldGuaranteeFundsEnabled()) { @@ -380,7 +380,7 @@ public class GuarantorDomainServiceImpl implements GuarantorDomainService { * and then self guarantee) for a loan account in the portion of guarantee * percentage on a paid principal. example: releases funds on repayments of * loan account. - * + * */ private void releaseGuarantorFunds(final LoanTransaction loanTransaction) { final Loan loan = loanTransaction.getLoan(); @@ -433,7 +433,7 @@ public class GuarantorDomainServiceImpl implements GuarantorDomainService { /** * Method releases all guarantor's guarantee amount. example: releases funds * on write-off of a loan account. - * + * */ private void releaseAllGuarantors(final LoanTransaction loanTransaction) { Loan loan = loanTransaction.getLoan(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformService.java index 7e521a4eb..040f66d88 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformService.java @@ -27,7 +27,7 @@ public interface GuarantorReadPlatformService { /** * Validates the passed in loanId before retrieving Guarantors for the same - * + * * @param loanId * @return */ @@ -36,7 +36,7 @@ public interface GuarantorReadPlatformService { /** * Methods Returns all Guarantors for a Given loan Id (if the loan Id is * valid and Exists) - * + * * @param loanId * @return */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformServiceImpl.java index 2317b37e7..17fbafc8e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformServiceImpl.java @@ -173,7 +173,7 @@ public class GuarantorReadPlatformServiceImpl implements GuarantorReadPlatformSe } } - + return new GuarantorData(id, loanId, clientRelationshipType, entityId, guarantorType, firstname, lastname, dob, addressLine1, addressLine2, city, state, zip, country, mobileNumber, housePhoneNumber, comment, null, null, null, status, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UpdateLoanDisbuseDateCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UpdateLoanDisbuseDateCommandHandler.java index 79ff52525..a378dfcec 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UpdateLoanDisbuseDateCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UpdateLoanDisbuseDateCommandHandler.java @@ -39,7 +39,7 @@ public class UpdateLoanDisbuseDateCommandHandler implements NewCommandSourceHand @Transactional @Override public CommandProcessingResult processCommand(final JsonCommand command) { - + return this.writePlatformService.updateDisbursementDateAndAmountForTranche(command.getLoanId(), command.entityId(), command); } } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleDTO.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleDTO.java index 8549e04b3..4a0b346c5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleDTO.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleDTO.java @@ -35,11 +35,11 @@ public class LoanScheduleDTO { this.installments = installments; this.loanScheduleModel = loanScheduleModel; } - + public static LoanScheduleDTO from(final List installments, final LoanScheduleModel loanScheduleModel){ return new LoanScheduleDTO(installments, loanScheduleModel); } - + public List getInstallments() { return this.installments; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleData.java index 3a4883bcd..a1beee9a5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleData.java @@ -25,7 +25,7 @@ import org.apache.fineract.organisation.monetary.data.CurrencyData; /** * Immutable data object to represent aspects of a loan schedule such as: - * + * *

        *
      • Totals information - the totals for each part of repayment schedule * monitored.
      • diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleParams.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleParams.java index 446c64ec2..5343f96b2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleParams.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleParams.java @@ -74,7 +74,7 @@ public class LoanScheduleParams { private Money unCompoundedAmount; private Money compoundedInLastInstallment; - + public Money getCompoundedInLastInstallment() { return this.compoundedInLastInstallment; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanSchedulePeriodData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanSchedulePeriodData.java index 025ef0829..a5716dbec 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanSchedulePeriodData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanSchedulePeriodData.java @@ -25,7 +25,7 @@ import org.joda.time.LocalDate; /** * Immutable data object that represents a period of a loan schedule. - * + * */ public class LoanSchedulePeriodData { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/OverdueLoanScheduleData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/OverdueLoanScheduleData.java index 180359b66..f99b3ebf5 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/OverdueLoanScheduleData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/OverdueLoanScheduleData.java @@ -74,7 +74,7 @@ public class OverdueLoanScheduleData { public Integer getPeriodNumber() { return this.periodNumber; } - + @Override public String toString() { return "{" + "chargeId:" + this.chargeId + ", locale:'" + this.locale + '\'' + ", amount:" + this.amount + ", dateFormat:'" diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/AbstractLoanScheduleGenerator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/AbstractLoanScheduleGenerator.java index c641cda1e..5775b12d7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/AbstractLoanScheduleGenerator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/AbstractLoanScheduleGenerator.java @@ -67,7 +67,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener final LoanScheduleParams loanScheduleRecalculationDTO = null; return generate(mc, loanApplicationTerms, loanCharges, holidayDetailDTO, loanScheduleRecalculationDTO); } - + private LoanScheduleModel generate(final MathContext mc, final LoanApplicationTerms loanApplicationTerms, final Set loanCharges, final HolidayDetailDTO holidayDetailDTO, final LoanScheduleParams loanScheduleParams) { @@ -116,12 +116,12 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener // interest method . if (!scheduleParams.isPartialUpdate() && !loanApplicationTerms.isEqualAmortization()) { Money totalInterestChargedForFullLoanTerm = loanApplicationTerms.calculateTotalInterestCharged( - this.paymentPeriodsInOneYearCalculator, mc); - + this.paymentPeriodsInOneYearCalculator, mc); + loanApplicationTerms.updateTotalInterestDue(totalInterestChargedForFullLoanTerm); - + } - + boolean isFirstRepayment = true; LocalDate firstRepaymentdate = this.scheduledDateGenerator.generateNextRepaymentDate( loanApplicationTerms.getExpectedDisbursementDate(), loanApplicationTerms, isFirstRepayment); @@ -179,7 +179,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener isFirstRepayment = false; } - + while (!scheduleParams.getOutstandingBalance().isZero() || !scheduleParams.getDisburseDetailMap().isEmpty()) { LocalDate previousRepaymentDate = scheduleParams.getActualRepaymentDate(); scheduleParams.setActualRepaymentDate(this.scheduledDateGenerator.generateNextRepaymentDate( @@ -189,7 +189,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener scheduleParams.setActualRepaymentDate(adjustedDateDetailsDTO.getChangedActualRepaymentDate()); isFirstRepayment = false; LocalDate scheduledDueDate = adjustedDateDetailsDTO.getChangedScheduleDate(); - + // calculated interest start date for the period LocalDate periodStartDateApplicableForInterest = calculateInterestStartDateForPeriod(loanApplicationTerms, scheduleParams.getPeriodStartDate(), idealDisbursementDate, firstRepaymentdate, @@ -224,7 +224,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener scheduledDueDate = scheduleParams.getScheduleTillDate(); isNextRepaymentAvailable = false; } - + if (loanApplicationTerms.isInterestRecalculationEnabled()) { populateCompoundingDatesInPeriod(scheduleParams.getPeriodStartDate(), scheduledDueDate, loanApplicationTerms, holidayDetailDTO, scheduleParams, loanCharges, currency); @@ -275,7 +275,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener scheduleParams.getTotalOutstandingInterestPaymentDueToGrace(), scheduleParams.getOutstandingBalanceAsPerRest(), loanApplicationTerms, scheduleParams.getPeriodNumber(), mc, mergeVariationsToMap(scheduleParams), scheduleParams.getCompoundingMap(), periodStartDateApplicableForInterest, scheduledDueDate, interestRates); - + // will check for EMI amount greater than interest calculated if (loanApplicationTerms.getFixedEmiAmount() != null @@ -551,7 +551,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener oustanding = oustanding.minus(cumulativePenaltyChargesDueWithin(transactionDate, scheduledDueDate, loanCharges, totalInterestChargedForFullLoanTerm.getCurrency(), tempPrincipalInterest, scheduleParams.getPrincipalToBeScheduled(), scheduleParams.getTotalCumulativeInterest(), true)); - + if (!oustanding.isGreaterThan(currentPeriodParams.getInterestForThisPeriod()) && !scheduledDueDate.equals(transactionDate)) { final Collection interestRates = loanApplicationTerms.getLoanTermVariations().getInterestRateChanges(); @@ -568,14 +568,14 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener updateFixedInstallmentAmount(mc, loanApplicationTerms, scheduleParams.getPeriodNumber(), loanApplicationTerms .getPrincipal().minus(scheduleParams.getTotalCumulativePrincipal())); } - + scheduleParams.getCompoundingDateVariations().put(periodStartDateApplicableForInterest, new TreeMap<>(scheduleParams.getCompoundingMap())); scheduleParams.getCompoundingMap().clear(); populateCompoundingDatesInPeriod(periodStartDateApplicableForInterest, calculateTill, loanApplicationTerms, holidayDetailDTO, scheduleParams, loanCharges, totalInterestChargedForFullLoanTerm.getCurrency()); - - // this is to make sure we are recalculating using correct interest rate + + // this is to make sure we are recalculating using correct interest rate // once calculation is done system will set the actual interest rate BigDecimal currentInterestRate = loanApplicationTerms.getAnnualNominalInterestRate(); for(LoanTermVariationsData interestRate : interestRates){ @@ -583,7 +583,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener loanApplicationTerms.updateAnnualNominalInterestRate(interestRate.getDecimalValue()); } } - + PrincipalInterest interestTillDate = calculatePrincipalInterestComponentsForPeriod(this.paymentPeriodsInOneYearCalculator, interestCalculationGraceOnRepaymentPeriodFraction, scheduleParams.getTotalCumulativePrincipal(), scheduleParams.getTotalCumulativeInterest(), totalInterestChargedForFullLoanTerm, @@ -591,7 +591,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener scheduleParams.getPeriodNumber(), mc, mergeVariationsToMap(scheduleParams), scheduleParams.getCompoundingMap(), periodStartDateApplicableForInterest, calculateTill, interestRates); loanApplicationTerms.updateAnnualNominalInterestRate(currentInterestRate); - + // applies charges for the period final ScheduleCurrentPeriodParams tempPeriod = new ScheduleCurrentPeriodParams( totalInterestChargedForFullLoanTerm.getCurrency(), interestCalculationGraceOnRepaymentPeriodFraction); @@ -849,7 +849,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener if (!scheduleParams.getOutstandingBalance().isGreaterThan(unprocessed) && !loanApplicationTerms.getPreClosureInterestCalculationStrategy() .calculateTillRestFrequencyEnabled()) { - + scheduleParams.getCompoundingDateVariations().put(periodStartDateApplicableForInterest, new TreeMap<>(scheduleParams.getCompoundingMap())); LocalDate calculateTill = transactionDate; @@ -943,7 +943,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener /** * Method updates outstanding balance of the loan for interest calculation - * + * */ private void updateBalanceBasedOnDisbursement(final LoanApplicationTerms loanApplicationTerms, final BigDecimal chargesDueAtTimeOfDisbursement, LoanScheduleParams scheduleParams, @@ -980,17 +980,17 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener * @param priviousScheduledDueDate * @param previousRepaymentDate * @param scheduledDueDate - * @param interestRatesForInstallments - * @param mc - * @param paymentPeriodsInOneYearCalculator - * @param interestRates - * @param periodsApplicableForGrace + * @param interestRatesForInstallments + * @param mc + * @param paymentPeriodsInOneYearCalculator + * @param interestRates + * @param periodsApplicableForGrace * @param scheduleDateForReversal * @return */ private LoanTermVariationParams applyLoanTermVariations(final LoanApplicationTerms loanApplicationTerms, - final LoanScheduleParams scheduleParams, final LocalDate previousRepaymentDate, final LocalDate scheduledDueDate, - Collection interestRatesForInstallments, PaymentPeriodsInOneYearCalculator calculator, + final LoanScheduleParams scheduleParams, final LocalDate previousRepaymentDate, final LocalDate scheduledDueDate, + Collection interestRatesForInstallments, PaymentPeriodsInOneYearCalculator calculator, MathContext mc) { boolean skipPeriod = false; boolean recalculateAmounts = false; @@ -1008,7 +1008,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener loanTermVariationsData.setProcessed(true); } } - + for (LoanTermVariationsData variation : interestRatesForInstallments) { if (variation.isApplicable(modifiedScheduledDueDate) && variation.getDecimalValue() != null && !variation.isProcessed()) { loanApplicationTerms.updateAnnualNominalInterestRate(variation.getDecimalValue()); @@ -1029,7 +1029,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener variation.setProcessed(true); } } - + while (loanApplicationTerms.getLoanTermVariations().hasVariation(modifiedScheduledDueDate)) { LoanTermVariationsData loanTermVariationsData = loanApplicationTerms.getLoanTermVariations().nextVariation(); if (loanTermVariationsData.isProcessed()) { @@ -1116,11 +1116,11 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener * @param loanApplicationTerms * @param scheduledDueDate * @param exceptionDataListIterator - * @param instalmentNumber + * @param instalmentNumber * @param totalCumulativePrincipal TODO * @param totalCumulativeInterest TODO * @param mc TODO - * @param periodNumber + * @param periodNumber * @return */ private LoanTermVariationParams applyExceptionLoanTermVariations(final LoanApplicationTerms loanApplicationTerms, @@ -1130,7 +1130,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener boolean recalculateAmounts = false; LocalDate modifiedScheduledDueDate = scheduledDueDate; ArrayList variationsData = new ArrayList<>(); - + for (LoanTermVariationsData variation : loanApplicationTerms.getLoanTermVariations().getInterestRateFromInstallment()) { if (variation.isApplicable(modifiedScheduledDueDate) && variation.getDecimalValue() != null && !variation.isProcessed()) { loanApplicationTerms.updateAnnualNominalInterestRate(variation.getDecimalValue()); @@ -1201,11 +1201,11 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener * @param loanApplicationTerms * @param scheduleParams * @param interestRates - * @param interestRatesForInstallments - * @param periodsApplicableForGrace + * @param interestRatesForInstallments + * @param periodsApplicableForGrace */ private void applyLoanVariationsForPartialScheduleGenerate(final LoanApplicationTerms loanApplicationTerms, - LoanScheduleParams scheduleParams, final Collection interestRates, + LoanScheduleParams scheduleParams, final Collection interestRates, final Collection interestRatesForInstallments) { // Applies loan variations while (loanApplicationTerms.getLoanTermVariations().hasVariation(scheduleParams.getPeriodStartDate())) { @@ -1233,7 +1233,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener loanApplicationTerms.updateAnnualNominalInterestRate(variation.getDecimalValue()); } } - + // Applies interest rate changes for installments for (LoanTermVariationsData variation : interestRatesForInstallments) { if (variation.getTermVariationType().isInterestRateFromInstallment() && variation.isApplicable(scheduleParams.getPeriodStartDate()) @@ -1298,14 +1298,14 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener * Method calculates interest on not paid outstanding principal and interest * (if compounding is enabled) till current date and adds new repayment * schedule detail - * + * * @param compoundingMap * TODO * @param loanCharges * TODO * @param principalPortioMap * TODO - * + * */ private Money addInterestOnlyRepaymentScheduleForCurrentdate(final MathContext mc, final LoanApplicationTerms loanApplicationTerms, final HolidayDetailDTO holidayDetailDTO, final MonetaryCurrency currency, final Collection periods, @@ -1394,7 +1394,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener params.getActualRepaymentDate(), applicableVariations); Money interest = principalInterestForThisPeriod.interest(); totalInterest = totalInterest.plus(interest); - + if(loanApplicationTerms.getInterestRecalculationCompoundingMethod().isCompoundingEnabled()) { Money uncompounded = params.getUnCompoundedAmount(); Money compounded = uncompounded.zero(); @@ -1586,7 +1586,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener * this Method updates late/ not paid installment components to Map with * effective date as per REST(for principal portion ) and compounding * (interest or fee or interest and fee portions) frequency - * + * */ private void updateLatePaymentsToMap(final LoanApplicationTerms loanApplicationTerms, final HolidayDetailDTO holidayDetailDTO, final MonetaryCurrency currency, final Map latePaymentMap, final LocalDate scheduledDueDate, @@ -1796,7 +1796,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener /** * This Method updates principal paid component to map with effective date * as per the REST - * + * */ private void updatePrincipalPaidPortionToMap(final LoanApplicationTerms loanApplicationTerms, final HolidayDetailDTO holidayDetailDTO, Map principalPortionMap, final LoanScheduleModelPeriod installment, final RecalculationDetail detail, @@ -1813,7 +1813,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener * merges all the applicable amounts(compounding dates, disbursements, late * payment compounding and principal change as per rest) changes to single * map for interest calculation - * + * */ private TreeMap mergeVariationsToMap(final LoanScheduleParams params) { TreeMap map = new TreeMap<>(); @@ -1846,7 +1846,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener /** * calculates Interest stating date as per the settings - * + * * @param firstRepaymentdate * TODO * @param boolean1 @@ -2138,7 +2138,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener LocalDate periodStartDate = loanApplicationTerms.getExpectedDisbursementDate(); // Set fixed Amortization Amounts(either EMI or Principal ) updateAmortization(mc, loanApplicationTerms, periodNumber, outstandingBalance); - + // count periods without interest grace to exclude for flat loan calculations final Map disburseDetailMap = new HashMap<>(); @@ -2157,7 +2157,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener List exceptionDataList = loanApplicationTerms.getLoanTermVariations().getExceptionData(); final ListIterator exceptionDataListIterator = exceptionDataList.listIterator(); LoanTermVariationParams loanTermVariationParams = null; - + // identify retain installments final List processInstallmentsInstallments = fetchRetainedInstallments( loan.getRepaymentScheduleInstallments(), rescheduleFrom, currency); @@ -2176,10 +2176,10 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener break; } ArrayList dueDateVariationsDataList = new ArrayList<>(); - + // check for date changes - + do { actualRepaymentDate = this.scheduledDateGenerator.generateNextRepaymentDate(actualRepaymentDate, loanApplicationTerms, isFirstRepayment); @@ -2197,7 +2197,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener loanTermVariationParams = applyExceptionLoanTermVariations(loanApplicationTerms, lastInstallmentDate, exceptionDataListIterator, instalmentNumber, totalCumulativePrincipal, totalCumulativeInterest, mc); } while (loanTermVariationParams != null && loanTermVariationParams.isSkipPeriod()); - + periodNumber++; for (LoanTermVariationsData dueDateVariation : dueDateVariationsDataList) { @@ -2241,8 +2241,8 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener totalPenaltyChargesCharged = totalPenaltyChargesCharged.plus(installment.getPenaltyChargesCharged(currency)); instalmentNumber++; loanTermInDays = Days.daysBetween(installment.getFromDate(), installment.getDueDate()).getDays(); - - + + if (loanApplicationTerms.isInterestRecalculationEnabled()) { // populates the collection with transactions till the due @@ -2369,7 +2369,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener break; } } - + // this block is to remove the periods till last interest available // period. // if the last retained period is interest grace period then we diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/AprCalculator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/AprCalculator.java index d60eceb60..76467df4e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/AprCalculator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/AprCalculator.java @@ -43,7 +43,7 @@ public class AprCalculator { break; case WHOLE_TERM: final BigDecimal ratePerPeriod = interestRatePerPeriod.divide(BigDecimal.valueOf(numberOfRepayments*repaymentEvery), 8, RoundingMode.HALF_UP); - + switch (repaymentPeriodFrequencyType) { case DAYS: defaultAnnualNominalInterestRate = ratePerPeriod.multiply(BigDecimal.valueOf(365)); @@ -57,12 +57,12 @@ public class AprCalculator { case YEARS: defaultAnnualNominalInterestRate = ratePerPeriod.multiply(BigDecimal.valueOf(1)); break; - } + } break; case INVALID: break; } - + return defaultAnnualNominalInterestRate; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/DecliningBalanceInterestLoanScheduleGenerator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/DecliningBalanceInterestLoanScheduleGenerator.java index 2c564839e..ba99b324c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/DecliningBalanceInterestLoanScheduleGenerator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/DecliningBalanceInterestLoanScheduleGenerator.java @@ -40,14 +40,14 @@ import org.joda.time.LocalDate; *
      • Equal installment payments
      • * *

        - * + * *

        * When amortized using equal principal payments, the principal * component of each installment is fixed and interest due is * calculated from the outstanding principal balance resulting in a * different total payment due for each installment. *

        - * + * *

        * When amortized using equal installments, the total payment due * for each installment is fixed and is calculated using the excel like @@ -73,7 +73,7 @@ public class DecliningBalanceInterestLoanScheduleGenerator extends AbstractLoanS Money balanceForInterestCalculation = outstandingBalance; Money cumulatingInterestDueToGrace = cumulatingInterestPaymentDueToGrace; Map interestRates = new HashMap<>(termVariations.size()); - + for (LoanTermVariationsData loanTermVariation : termVariations) { if (loanTermVariation.getTermVariationType().isInterestRateVariation() && loanTermVariation.isApplicable(periodStartDate, periodEndDate)) { @@ -123,12 +123,12 @@ public class DecliningBalanceInterestLoanScheduleGenerator extends AbstractLoanS } } } - + final PrincipalInterest result = loanApplicationTerms.calculateTotalInterestForPeriod(calculator, interestCalculationGraceOnRepaymentPeriodFraction, periodNumber, mc, cumulatingInterestDueToGrace, balanceForInterestCalculation, interestStartDate, periodEndDate); - + interestForThisInstallment = interestForThisInstallment.plus(result.interest()); cumulatingInterestDueToGrace = result.interestPaymentDueToGrace(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/DefaultScheduledDateGenerator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/DefaultScheduledDateGenerator.java index 5974d3f12..774d0d7dc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/DefaultScheduledDateGenerator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/DefaultScheduledDateGenerator.java @@ -73,13 +73,13 @@ public class DefaultScheduledDateGenerator implements ScheduledDateGenerator { // calendar associated with // the loan, and we should use it in order to calculate next // repayment - + CalendarHistory calendarHistory = null; CalendarHistoryDataWrapper calendarHistoryDataWrapper = loanApplicationTerms.getCalendarHistoryDataWrapper(); if(calendarHistoryDataWrapper != null){ calendarHistory = loanApplicationTerms.getCalendarHistoryDataWrapper().getCalendarHistory(dueRepaymentPeriodDate); } - + // get the start date from the calendar history if (calendarHistory == null) { seedDate = currentCalendar.getStartDateLocalDate(); @@ -96,7 +96,7 @@ public class DefaultScheduledDateGenerator implements ScheduledDateGenerator { loanApplicationTerms.getNumberOfdays()); } } - + return dueRepaymentPeriodDate; } @@ -121,7 +121,7 @@ public class DefaultScheduledDateGenerator implements ScheduledDateGenerator { * Recursively checking non working days and holidays and working days * exemption to generate next repayment period date Base on the * configuration - * + * * @param adjustedDateDetailsDTO * @param loanApplicationTerms * @param holidayDetailDTO @@ -133,10 +133,10 @@ public class DefaultScheduledDateGenerator implements ScheduledDateGenerator { private AdjustedDateDetailsDTO recursivelyCheckNonWorkingDaysAndHolidaysAndWorkingDaysExemptionToGenerateNextRepaymentPeriodDate( final AdjustedDateDetailsDTO adjustedDateDetailsDTO, final LoanApplicationTerms loanApplicationTerms, final HolidayDetailDTO holidayDetailDTO, final boolean isFirstRepayment) { - + checkAndUpdateWorkingDayIfRepaymentDateIsNonWorkingDay(adjustedDateDetailsDTO, holidayDetailDTO, loanApplicationTerms, isFirstRepayment); - + checkAndUpdateWorkingDayIfRepaymentDateIsHolidayDay(adjustedDateDetailsDTO, holidayDetailDTO, loanApplicationTerms, isFirstRepayment); @@ -151,12 +151,12 @@ public class DefaultScheduledDateGenerator implements ScheduledDateGenerator { loanApplicationTerms, holidayDetailDTO, isFirstRepayment); } return adjustedDateDetailsDTO; - } + } /** * This method to check and update the working day if repayment date is * holiday - * + * * @param adjustedDateDetailsDTO * @param holidayDetailDTO * @param loanApplicationTerms @@ -188,11 +188,11 @@ public class DefaultScheduledDateGenerator implements ScheduledDateGenerator { /** * This method to check and update the working day if repayment date is non * working day - * + * * @param adjustedDateDetailsDTO * @param holidayDetailDTO - * @param isFirstRepayment - * @param loanApplicationTerms + * @param isFirstRepayment + * @param loanApplicationTerms */ private void checkAndUpdateWorkingDayIfRepaymentDateIsNonWorkingDay(final AdjustedDateDetailsDTO adjustedDateDetailsDTO, final HolidayDetailDTO holidayDetailDTO, final LoanApplicationTerms loanApplicationTerms, final boolean isFirstRepayment) { @@ -289,7 +289,7 @@ public class DefaultScheduledDateGenerator implements ScheduledDateGenerator { @Override public LocalDate idealDisbursementDateBasedOnFirstRepaymentDate(final PeriodFrequencyType repaymentPeriodFrequencyType, - final int repaidEvery, final LocalDate firstRepaymentDate, final Calendar loanCalendar, final HolidayDetailDTO holidayDetailDTO, + final int repaidEvery, final LocalDate firstRepaymentDate, final Calendar loanCalendar, final HolidayDetailDTO holidayDetailDTO, final LoanApplicationTerms loanApplicationTerms) { LocalDate idealDisbursementDate = null; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/FinanicalFunctions.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/FinanicalFunctions.java index 7de97c9f4..6b8132cf8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/FinanicalFunctions.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/FinanicalFunctions.java @@ -23,16 +23,16 @@ public class FinanicalFunctions { /** * PMT calculates a fixed monthly payment to be paid by borrower every * 'period' to ensure loan is paid off in full (with interest). - * + * * This monthly payment c depends upon the monthly interest rate r * (expressed as a fraction, not a percentage, i.e., divide the quoted * yearly percentage rate by 100 and by 12 to obtain the monthly interest * rate), the number of monthly payments N called the loan's term, and the * amount borrowed P known as the loan's principal; c is given by the * formula: - * + * * c = (r / (1 - (1 + r)^-N))P - * + * * @param interestRateFraction * @param numberOfPayments * @param principal diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/FlatInterestLoanScheduleGenerator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/FlatInterestLoanScheduleGenerator.java index bd66242aa..1be783450 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/FlatInterestLoanScheduleGenerator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/FlatInterestLoanScheduleGenerator.java @@ -37,12 +37,12 @@ public class FlatInterestLoanScheduleGenerator extends AbstractLoanScheduleGener @SuppressWarnings("unused") TreeMap principalVariation, @SuppressWarnings("unused") Map compoundingMap, LocalDate periodStartDate, LocalDate periodEndDate, @SuppressWarnings("unused") Collection termVariations) { - + final PrincipalInterest result = loanApplicationTerms.calculateTotalInterestForPeriod(calculator, interestCalculationGraceOnRepaymentPeriodFraction, periodNumber, mc, cumulatingInterestPaymentDueToGrace, outstandingBalance, periodStartDate, periodEndDate); Money interestForThisInstallment = result.interest(); - + Money principalForThisInstallment = loanApplicationTerms.calculateTotalPrincipalForPeriod(calculator, outstandingBalance, periodNumber, mc, interestForThisInstallment); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java index 3ba4d4f88..7cc0f5c6d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java @@ -98,7 +98,7 @@ public final class LoanApplicationTerms { * Integer representing the number of 'repayment frequencies' or * installments where 'grace' should apply to the payment of interest in a * loans repayment period (installment). - * + * * Note: Interest is still calculated taking into account the full * loan term, the interest is simply offset to a later period. */ @@ -108,7 +108,7 @@ public final class LoanApplicationTerms { * Integer representing the number of 'repayment frequencies' or * installments where 'grace' should apply to the charging of interest in a * loans repayment period (installment). - * + * * Note: The loan is interest-free for the period of time * indicated. */ @@ -116,7 +116,7 @@ public final class LoanApplicationTerms { /** * Legacy method of support 'grace' on the charging of interest on a loan. - * + * *

        * For the typical structured loan, its reasonable to use an integer to * indicate the number of 'repayment frequency' periods the 'grace' should @@ -194,25 +194,25 @@ public final class LoanApplicationTerms { private final boolean isSkipRepaymentOnFirstDayOfMonth; private final HolidayDetailDTO holidayDetailDTO; - + private final Set periodNumbersApplicableForPrincipalGrace = new HashSet<>(); - + private final Set periodNumbersApplicableForInterestGrace = new HashSet<>(); - - - // used for FLAT loans when interest rate changed + + + // used for FLAT loans when interest rate changed private Integer excludePeriodsForCalculation = 0; private Money totalPrincipalAccountedForInterestCalcualtion; - - - //used for FLAT loans generation on modifying terms + + + //used for FLAT loans generation on modifying terms private Money totalPrincipalAccounted; private Money totalInterestAccounted; private int periodsCompleted = 0; private int extraPeriods = 0; private boolean isEqualAmortization; - - + + public static LoanApplicationTerms assembleFrom(final ApplicationCurrency currency, final Integer loanTermFrequency, final PeriodFrequencyType loanTermPeriodFrequencyType, final Integer numberOfRepayments, final Integer repaymentEvery, @@ -571,7 +571,7 @@ public final class LoanApplicationTerms { /** * Calculates the total interest to be charged on loan taking into account * grace settings. - * + * */ public Money calculateTotalInterestCharged(final PaymentPeriodsInOneYearCalculator calculator, final MathContext mc) { @@ -914,7 +914,7 @@ public final class LoanApplicationTerms { principalPerPeriod = Money.of(this.getCurrency(), getFixedEmiAmount()).minus(interestForThisInstallment); return principalPerPeriod; } - + return principalPerPeriod; } @@ -960,9 +960,9 @@ public final class LoanApplicationTerms { final Money totalInterestFree = interestPerGracePeriod.multipliedBy(getInterestChargingGrace()); final Money realTotalInterestForLoan = totalInterestForLoanTerm.minus(totalInterestFree); - - - + + + Integer interestPaymentDuePeriods = calculateNumberOfRemainingInterestPaymentPeriods(this.actualNumberOfRepayments, this.excludePeriodsForCalculation); interestForInstallment = realTotalInterestForLoan @@ -982,7 +982,7 @@ public final class LoanApplicationTerms { interestForInstallment = interestLeft.dividedBy(Long.valueOf(interestDuePeriods), mc.getRoundingMode()); } } - + } @@ -1120,7 +1120,7 @@ public final class LoanApplicationTerms { // numPeriods = numPeriods - this.periodsCompleted; return numPeriods; } - + private Integer calculateNumberOfRemainingInterestPaymentPeriods(final Integer totalNumberOfRepaymentPeriods, int periodsElapsed) { int principalFeePeriods = 0; for (Integer intNumber : this.periodNumbersApplicableForInterestGrace) { @@ -1137,7 +1137,7 @@ public final class LoanApplicationTerms { } return periodsRemaining; } - + private Integer calculateLastInterestGracePeriod(int periodNumber){ int lastGracePeriod = 0; for (Integer grace : this.periodNumbersApplicableForInterestGrace) { @@ -1683,7 +1683,7 @@ public final class LoanApplicationTerms { } return disbursedAmount; } - + public void updatePeriodNumberApplicableForPrincipalOrInterestGrace(final Integer periodsApplicationForGrace) { int applicablePeriodNumber = periodsApplicationForGrace; int graceOnPrincipal = defaultToZeroIfNull(this.principalGrace); @@ -1701,30 +1701,30 @@ public final class LoanApplicationTerms { graceOnInterest--; } } - + /** * set the value to zero if the provided value is null - * + * * @return integer value equal/greater than 0 **/ private Integer defaultToZeroIfNull(Integer value) { return (value != null) ? value : 0; } - + public void updateExcludePeriodsForCalculation(Integer excludePeriodsForCalculation){ this.excludePeriodsForCalculation = excludePeriodsForCalculation; this.extraPeriods = 0; } - + public Integer getActualNoOfRepaymnets() { return this.actualNumberOfRepayments; } - + public Money getTotalInterestDue() { return this.totalInterestDue; } - + private void updateRecurringMoratoriumOnPrincipalPeriods(Integer periodNumber) { Boolean isPrincipalGraceApplicableForThisPeriod = false; Integer numberOfRepayments = this.actualNumberOfRepayments; @@ -1742,20 +1742,20 @@ public final class LoanApplicationTerms { } - + public void setTotalPrincipalAccounted(Money totalPrincipalAccounted) { this.totalPrincipalAccountedForInterestCalcualtion = totalPrincipalAccounted; } - - - //Used for FLAT loans to calculate principal and interest per installment + + + //Used for FLAT loans to calculate principal and interest per installment public void updateAccountedTillPeriod(int periodNumber, Money totalPrincipalAccounted,Money totalInterestAccounted, int extendPeriods){ this.periodsCompleted = periodNumber; this.totalPrincipalAccounted = totalPrincipalAccounted; this.totalInterestAccounted = totalInterestAccounted; this.extraPeriods = this.extraPeriods + extendPeriods; } - + public void updateTotalInterestAccounted(Money totalInterestAccounted){ this.totalInterestAccounted = totalInterestAccounted; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleModel.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleModel.java index 29c092eb3..4c9d26793 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleModel.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleModel.java @@ -121,10 +121,10 @@ public final class LoanScheduleModel { return this.totalPenaltyChargesCharged; } - + public BigDecimal getTotalInterestCharged() { return this.totalInterestCharged; } - - + + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleModelPeriod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleModelPeriod.java index 99095e49a..3a34b4c86 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleModelPeriod.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleModelPeriod.java @@ -47,11 +47,11 @@ public interface LoanScheduleModelPeriod { BigDecimal penaltyChargesDue(); void addLoanCharges(BigDecimal feeCharge, BigDecimal penaltyCharge); - + boolean isRecalculatedInterestComponent(); void addPrincipalAmount(Money principalDue); - + void addInterestAmount(Money interestDue); Set getLoanCompoundingDetails(); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleAssembler.java index 2daff5bdc..5be314d01 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleAssembler.java @@ -201,7 +201,7 @@ public class LoanScheduleAssembler { final Integer amortizationType = this.fromApiJsonHelper.extractIntegerWithLocaleNamed("amortizationType", element); final AmortizationMethod amortizationMethod = AmortizationMethod.fromInt(amortizationType); - + boolean isEqualAmortization = false; if (this.fromApiJsonHelper.parameterExists(LoanApiConstants.isEqualAmortizationParam, element)) { isEqualAmortization = this.fromApiJsonHelper.extractBooleanNamed(LoanApiConstants.isEqualAmortizationParam, element); @@ -284,13 +284,13 @@ public class LoanScheduleAssembler { if(groupId != null){ group = this.groupRepository.findOneWithNotFoundDetection(groupId); } - + Boolean isSkipMeetingOnFirstDay = false; Integer numberOfDays = 0; boolean isSkipRepaymentOnFirstMonthEnabled = configurationDomainService.isSkippingMeetingOnFirstDayOfMonthEnabled(); if(isSkipRepaymentOnFirstMonthEnabled){ isSkipMeetingOnFirstDay = this.loanUtilService.isLoanRepaymentsSyncWithMeeting(group, calendar); - if(isSkipMeetingOnFirstDay) { numberOfDays = configurationDomainService.retreivePeroidInNumberOfDaysForSkipMeetingDate().intValue(); } + if(isSkipMeetingOnFirstDay) { numberOfDays = configurationDomainService.retreivePeroidInNumberOfDaysForSkipMeetingDate().intValue(); } } if ((loanType.isJLGAccount() || loanType.isGroupAccount()) && calendar != null) { validateRepaymentsStartDateWithMeetingDates(calculatedRepaymentsStartingFromDate, calendar, isSkipMeetingOnFirstDay, @@ -437,8 +437,8 @@ public class LoanScheduleAssembler { HolidayStatusType.ACTIVE.getValue()); final WorkingDays workingDays = this.workingDaysRepository.findOne(); HolidayDetailDTO detailDTO = new HolidayDetailDTO(isHolidayEnabled, holidays, workingDays); - - + + return LoanApplicationTerms.assembleFrom(applicationCurrency, loanTermFrequency, loanTermPeriodFrequencyType, numberOfRepayments, repaymentEvery, repaymentPeriodFrequencyType, nthDay, weekDayType, amortizationMethod, interestMethod, interestRatePerPeriod, interestRatePeriodFrequencyType, annualNominalInterestRate, interestCalculationPeriodMethod, @@ -616,21 +616,21 @@ public class LoanScheduleAssembler { List disbursementDetails) { final Set loanCharges = this.loanChargeAssembler.fromParsedJson(element, disbursementDetails); - + final RoundingMode roundingMode = MoneyHelper.getRoundingMode(); final MathContext mc = new MathContext(8, roundingMode); HolidayDetailDTO detailDTO = new HolidayDetailDTO(isHolidayEnabled, holidays, workingDays); - + LoanScheduleGenerator loanScheduleGenerator = this.loanScheduleFactory.create(loanApplicationTerms.getInterestMethod()); if (loanApplicationTerms.isEqualAmortization()) { if (loanApplicationTerms.getInterestMethod().isDecliningBalnce()) { final LoanScheduleGenerator decliningLoanScheduleGenerator = this.loanScheduleFactory .create(InterestMethod.DECLINING_BALANCE); LoanScheduleModel loanSchedule = decliningLoanScheduleGenerator.generate(mc, loanApplicationTerms, loanCharges, detailDTO); - + loanApplicationTerms.updateTotalInterestDue(Money.of(loanApplicationTerms.getCurrency(), loanSchedule.getTotalInterestCharged())); - + } loanScheduleGenerator = this.loanScheduleFactory.create(InterestMethod.FLAT); } else { @@ -690,7 +690,7 @@ public class LoanScheduleAssembler { } variations.addAll(newVariations); //Collections.sort(variations, new LoanTermVariationsComparator()); - + /* * List loanTermVariationsDatas = new * ArrayList<>(); @@ -841,7 +841,7 @@ public class LoanScheduleAssembler { .value(duedate) .failWithCodeNoParameterAddedToErrorCode("variable.schedule.date.must.be.in.min.max.range", "Loan schedule date invalid"); - } else if (loanCalendar != null && !actualDueDates.contains(duedate) && !loanCalendar.isValidRecurringDate(duedate, + } else if (loanCalendar != null && !actualDueDates.contains(duedate) && !loanCalendar.isValidRecurringDate(duedate, isSkipRepaymentOnFirstMonth, numberOfDays)) { baseDataValidator .reset() @@ -865,7 +865,7 @@ public class LoanScheduleAssembler { Map amountVariations = new HashMap<>(); Map dueDateVariations = new HashMap<>(); Map insertVariations = new HashMap<>(); - + for (LoanTermVariations loanTermVariations : variations) { switch (loanTermVariations.getTermType()) { case EMI_AMOUNT: diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/RescheduleLoansApiConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/RescheduleLoansApiConstants.java index 3e5f4248e..78845b968 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/RescheduleLoansApiConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/RescheduleLoansApiConstants.java @@ -28,7 +28,7 @@ public class RescheduleLoansApiConstants { public final static String ENTITY_NAME = "RESCHEDULELOAN"; public static final String LOAN_RESCHEDULE_REASON = "LoanRescheduleReason"; - + // general public static final String localeParamName = "locale"; public static final String dateFormatParamName = "dateFormat"; @@ -52,7 +52,7 @@ public class RescheduleLoansApiConstants { public static final String approveCommandParamName = "approve"; public static final String pendingCommandParamName = "pending"; public static final String rejectCommandParamName = "reject"; - + // reject action request parameters public static final String rejectedOnDateParam = "rejectedOnDate"; @@ -62,7 +62,7 @@ public class RescheduleLoansApiConstants { public static final Set APPROVE_REQUEST_DATA_PARAMETERS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(localeParamName, dateFormatParamName, approvedOnDateParam))); - + public static final Set commandParams = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(allCommandParamName, approveCommandParamName, pendingCommandParamName, rejectCommandParamName))); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/api/RescheduleLoansApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/api/RescheduleLoansApiResource.java index 569d5b7b4..dbcb6aa51 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/api/RescheduleLoansApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/api/RescheduleLoansApiResource.java @@ -97,7 +97,7 @@ public class RescheduleLoansApiResource { return this.loanRescheduleRequestToApiJsonSerializer.serialize(settings, loanRescheduleReasons); } - + @GET @Path("{scheduleId}") @Consumes({ MediaType.APPLICATION_JSON }) @@ -116,7 +116,7 @@ public class RescheduleLoansApiResource { final LoanRescheduleRequestData loanRescheduleRequestData = this.loanRescheduleRequestReadPlatformService .readLoanRescheduleRequest(scheduleId); - + return this.loanRescheduleRequestToApiJsonSerializer.serialize(settings, loanRescheduleRequestData); } @@ -161,7 +161,7 @@ public class RescheduleLoansApiResource { /** * Compares two strings, ignoring differences in case - * + * * @param firstString * the first string * @param secondString @@ -189,7 +189,7 @@ public class RescheduleLoansApiResource { return this.loanRescheduleRequestToApiJsonSerializer.serialize(settings, loanRescheduleRequestsData); } - + /*@GET @Path("{scheduleId}") @Consumes({ MediaType.APPLICATION_JSON }) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestData.java index 1f02a5f7c..e11718435 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestData.java @@ -45,7 +45,7 @@ public class LoanRescheduleRequestData { private final Collection rescheduleReasons; @SuppressWarnings("unused") private final Collection loanTermVariationsData; - + /** * LoanRescheduleRequestData constructor * @param loanTermVariationsData TODO @@ -86,10 +86,10 @@ public class LoanRescheduleRequestData { rescheduleReasonCodeValue, rescheduleReasonComment, timeline, clientName, loanAccountNumber, clientId, recalculateInterest, rescheduleReasons, loanTermVariationsData); } - + /** * LoanRescheduleRequestData constructor - * + * * @param loanTermVariationsData * TODO **/ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestDataValidator.java index 194f4a8d5..c178608f4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestDataValidator.java @@ -78,10 +78,10 @@ public class LoanRescheduleRequestDataValidator { /** * Validates the request to create a new loan reschedule entry - * + * * @param jsonCommand * the JSON command object (instance of the JsonCommand class) - * + * **/ public void validateForCreateAction(final JsonCommand jsonCommand, final Loan loan) { @@ -185,7 +185,7 @@ public class LoanRescheduleRequestDataValidator { dataValidatorBuilder.reset().failWithCodeNoParameterAddedToErrorCode(RescheduleLoansApiConstants.resheduleForMultiDisbursementNotSupportedErrorCode, "Loan rescheduling is not supported for multidisbursement loans"); } - + if(loan.isInterestRecalculationEnabledForProduct()) { dataValidatorBuilder.reset().failWithCodeNoParameterAddedToErrorCode(RescheduleLoansApiConstants.resheduleWithInterestRecalculationNotSupportedErrorCode, "Loan rescheduling is not supported for the loan product with interest recalculation enabled"); @@ -193,8 +193,8 @@ public class LoanRescheduleRequestDataValidator { validateForOverdueCharges(dataValidatorBuilder, loan, installment); if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } } - - + + private void validateForOverdueCharges(DataValidatorBuilder dataValidatorBuilder, final Loan loan, final LoanRepaymentScheduleInstallment installment) { if (installment != null) { @@ -211,10 +211,10 @@ public class LoanRescheduleRequestDataValidator { /** * Validates a user request to approve a loan reschedule request - * + * * @param jsonCommand * the JSON command object (instance of the JsonCommand class) - * + * **/ public void validateForApproveAction(final JsonCommand jsonCommand, LoanRescheduleRequest loanRescheduleRequest) { final String jsonString = jsonCommand.json(); @@ -272,7 +272,7 @@ public class LoanRescheduleRequestDataValidator { } } } - + validateForOverdueCharges(dataValidatorBuilder, loan, installment); if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } @@ -280,10 +280,10 @@ public class LoanRescheduleRequestDataValidator { /** * Validates a user request to reject a loan reschedule request - * + * * @param jsonCommand * the JSON command object (instance of the JsonCommand class) - * + * **/ public void validateForRejectAction(final JsonCommand jsonCommand, LoanRescheduleRequest loanRescheduleRequest) { final String jsonString = jsonCommand.json(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestEnumerations.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestEnumerations.java index 53ea0c4c5..f77020547 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestEnumerations.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestEnumerations.java @@ -22,7 +22,7 @@ import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus; public class LoanRescheduleRequestEnumerations { - + public static EnumOptionData status(final LoanRescheduleRequestStatusEnumData status) { Long id = status.id(); String code = status.code(); @@ -34,35 +34,35 @@ public class LoanRescheduleRequestEnumerations { public static LoanRescheduleRequestStatusEnumData status(final Integer statusId) { return status(LoanStatus.fromInt(statusId)); } - + public static LoanRescheduleRequestStatusEnumData status(final LoanStatus status) { LoanRescheduleRequestStatusEnumData enumData = new LoanRescheduleRequestStatusEnumData( LoanStatus.SUBMITTED_AND_PENDING_APPROVAL.getValue().longValue(), LoanStatus.SUBMITTED_AND_PENDING_APPROVAL.getCode(), "Submitted and pending approval"); - + switch(status) { case SUBMITTED_AND_PENDING_APPROVAL: enumData = new LoanRescheduleRequestStatusEnumData( LoanStatus.SUBMITTED_AND_PENDING_APPROVAL.getValue().longValue(), LoanStatus.SUBMITTED_AND_PENDING_APPROVAL.getCode(), "Submitted and pending approval"); break; - + case APPROVED: enumData = new LoanRescheduleRequestStatusEnumData( LoanStatus.APPROVED.getValue().longValue(), LoanStatus.APPROVED.getCode(), "Approved"); break; - + case REJECTED: enumData = new LoanRescheduleRequestStatusEnumData( LoanStatus.REJECTED.getValue().longValue(), LoanStatus.REJECTED.getCode(), "Rejected"); break; - + default: break; } - + return enumData; } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestStatusEnumData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestStatusEnumData.java index d29782a81..087cdd6c4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestStatusEnumData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestStatusEnumData.java @@ -34,7 +34,7 @@ public class LoanRescheduleRequestStatusEnumData { /** * LoanRescheduleRequestStatusEnumData constructor - * + * * Note: Same status types/states for loan accounts are used in here **/ public LoanRescheduleRequestStatusEnumData(Long id, String code, String value) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestTimelineData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestTimelineData.java index eed7cee34..29e3eb544 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestTimelineData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestTimelineData.java @@ -20,8 +20,8 @@ package org.apache.fineract.portfolio.loanaccount.rescheduleloan.data; import org.joda.time.LocalDate; -/** - * Immutable data object represent the timeline events of a loan reschedule request +/** + * Immutable data object represent the timeline events of a loan reschedule request **/ @SuppressWarnings("unused") public class LoanRescheduleRequestTimelineData { @@ -29,36 +29,36 @@ public class LoanRescheduleRequestTimelineData { private final String submittedByUsername; private final String submittedByFirstname; private final String submittedByLastname; - + private final LocalDate approvedOnDate; private final String approvedByUsername; private final String approvedByFirstname; private final String approvedByLastname; - + private final LocalDate rejectedOnDate; private final String rejectedByUsername; private final String rejectedByFirstname; private final String rejectedByLastname; - + public LoanRescheduleRequestTimelineData(final LocalDate submittedOnDate, final String submittedByUsername, final String submittedByFirstname, final String submittedByLastname, final LocalDate approvedOnDate, final String approvedByUsername, final String approvedByFirstname, final String approvedByLastname, final LocalDate rejectedOnDate, final String rejectedByUsername, final String rejectedByFirstname, final String rejectedByLastname) { - + this.submittedOnDate = submittedOnDate; this.submittedByUsername = submittedByUsername; this.submittedByFirstname = submittedByFirstname; this.submittedByLastname = submittedByLastname; - + this.approvedOnDate = approvedOnDate; this.approvedByUsername = approvedByUsername; this.approvedByFirstname = approvedByFirstname; this.approvedByLastname = approvedByLastname; - + this.rejectedOnDate = rejectedOnDate; this.rejectedByUsername = rejectedByUsername; this.rejectedByFirstname = rejectedByFirstname; this.rejectedByLastname = rejectedByLastname; - + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleModalPeriod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleModalPeriod.java index f979b879e..9bf79da32 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleModalPeriod.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleModalPeriod.java @@ -24,11 +24,11 @@ import org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanScheduleP import org.joda.time.LocalDate; public interface LoanRescheduleModalPeriod { - + LoanSchedulePeriodData toData(); - + Integer periodNumber(); - + Integer oldPeriodNumber(); LocalDate periodFromDate(); @@ -42,6 +42,6 @@ public interface LoanRescheduleModalPeriod { BigDecimal feeChargesDue(); BigDecimal penaltyChargesDue(); - + boolean isNew(); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleRequest.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleRequest.java index 5f2e9b75d..db44a60dc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleRequest.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleRequest.java @@ -46,11 +46,11 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; @Entity @Table(name = "m_loan_reschedule_request") public class LoanRescheduleRequest extends AbstractPersistableCustom { - + @ManyToOne @JoinColumn(name = "loan_id", nullable = false) private Loan loan; - + @Column(name = "status_enum", nullable = false) private Integer statusEnum; @@ -82,15 +82,15 @@ public class LoanRescheduleRequest extends AbstractPersistableCustom { @Temporal(TemporalType.DATE) @Column(name = "approved_on_date") private Date approvedOnDate; - + @ManyToOne @JoinColumn(name = "approved_by_user_id") private AppUser approvedByUser; - + @Temporal(TemporalType.DATE) @Column(name = "rejected_on_date") private Date rejectedOnDate; - + @ManyToOne @JoinColumn(name = "rejected_by_user_id") private AppUser rejectedByUser; @@ -98,7 +98,7 @@ public class LoanRescheduleRequest extends AbstractPersistableCustom { @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch=FetchType.EAGER) @JoinColumn(name = "loan_reschedule_request_id", nullable = false) private Set loanRescheduleRequestToTermVariationMappings = new HashSet<>(); - + /** * LoanRescheduleRequest constructor **/ @@ -125,7 +125,7 @@ public class LoanRescheduleRequest extends AbstractPersistableCustom { this.rejectedByUser = rejectedByUser; this.recalculateInterest = recalculateInterest; } - + /** * @return a new instance of the LoanRescheduleRequest class **/ @@ -138,167 +138,167 @@ public class LoanRescheduleRequest extends AbstractPersistableCustom { rescheduleReasonCodeValue, rescheduleReasonComment, submittedOnDate, submittedByUser, approvedOnDate, approvedByUser, rejectedOnDate, rejectedByUser); } - - /** - * @return the reschedule request loan object + + /** + * @return the reschedule request loan object **/ public Loan getLoan() { return this.loan; } - - /** - * @return the status enum + + /** + * @return the status enum **/ public Integer getStatusEnum() { return this.statusEnum; } - - /** + + /** * @return installment number of the rescheduling start point **/ public Integer getRescheduleFromInstallment() { return this.rescheduleFromInstallment; } - - /** - * @return due date of the rescheduling start point + + /** + * @return due date of the rescheduling start point **/ public LocalDate getRescheduleFromDate() { - + LocalDate localDate = null; - + if(this.rescheduleFromDate != null) { localDate = new LocalDate(this.rescheduleFromDate); } - + return localDate; } - - /** - * @return the reschedule reason code value object + + /** + * @return the reschedule reason code value object **/ public CodeValue getRescheduleReasonCodeValue() { return this.rescheduleReasonCodeValue; } - - /** - * @return the reschedule reason comment added by the "submittedByUser" + + /** + * @return the reschedule reason comment added by the "submittedByUser" **/ public String getRescheduleReasonComment() { return this.rescheduleReasonComment; } - - /** - * @return the date the request was submitted + + /** + * @return the date the request was submitted **/ public LocalDate getSubmittedOnDate() { LocalDate localDate = null; - + if(this.submittedOnDate != null) { localDate = new LocalDate(this.submittedOnDate); } - + return localDate; } - - /** - * @return the user that submitted the request + + /** + * @return the user that submitted the request **/ public AppUser getSubmittedByUser() { return this.submittedByUser; } - - /** - * @return the date the request was approved + + /** + * @return the date the request was approved **/ public LocalDate getApprovedOnDate() { LocalDate localDate = null; - + if(this.approvedOnDate != null) { localDate = new LocalDate(this.approvedOnDate); } - + return localDate; } - - /** - * @return the user that approved the request + + /** + * @return the user that approved the request **/ public AppUser getApprovedByUser() { return this.approvedByUser; } - - /** - * @return the date the request was rejected + + /** + * @return the date the request was rejected **/ public LocalDate getRejectedOnDate() { LocalDate localDate = null; - + if(this.rejectedOnDate != null) { localDate = new LocalDate(this.rejectedOnDate); } - + return localDate; } - - /** - * @return the recalculate interest option (true/false) + + /** + * @return the recalculate interest option (true/false) **/ public Boolean getRecalculateInterest() { boolean recalculateInterest = false; - + if(this.recalculateInterest != null) { recalculateInterest = this.recalculateInterest; } - + return recalculateInterest; } - - /** - * @return the user that rejected the request + + /** + * @return the user that rejected the request **/ public AppUser getRejectedByUser() { return this.rejectedByUser; } - - /** - * change the status of the loan reschedule request to approved, also updating the - * approvedByUser and approvedOnDate properties - * + + /** + * change the status of the loan reschedule request to approved, also updating the + * approvedByUser and approvedOnDate properties + * * @param approvedByUser the user who approved the request * @param approvedOnDate the date of the approval - * + * **/ public void approve(final AppUser approvedByUser, final LocalDate approvedOnDate) { - + if(approvedOnDate != null) { this.approvedByUser = approvedByUser; this.approvedOnDate = approvedOnDate.toDate(); this.statusEnum = LoanStatus.APPROVED.getValue(); } } - - /** - * change the status of the loan reschedule request to rejected, also updating the - * approvedByUser and approvedOnDate properties - * + + /** + * change the status of the loan reschedule request to rejected, also updating the + * approvedByUser and approvedOnDate properties + * * @param approvedByUser the user who approved the request * @param approvedOnDate the date of the approval - * + * **/ public void reject(final AppUser approvedByUser, final LocalDate approvedOnDate) { - + if(approvedOnDate != null) { this.rejectedByUser = approvedByUser; this.rejectedOnDate = approvedOnDate.toDate(); this.statusEnum = LoanStatus.REJECTED.getValue(); } } - + public void updateLoanRescheduleRequestToTermVariationMappings(final List mapping) { this.loanRescheduleRequestToTermVariationMappings.addAll(mapping); } - + public Set getLoanRescheduleRequestToTermVariationMappings() { return this.loanRescheduleRequestToTermVariationMappings; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/exception/LoanRescheduleRequestNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/exception/LoanRescheduleRequestNotFoundException.java index c837c5193..bffbddaa2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/exception/LoanRescheduleRequestNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/exception/LoanRescheduleRequestNotFoundException.java @@ -25,14 +25,14 @@ import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourc **/ public class LoanRescheduleRequestNotFoundException extends AbstractPlatformResourceNotFoundException { - /** - * LoanRescheduleRequestNotFoundException constructor - * + /** + * LoanRescheduleRequestNotFoundException constructor + * * @param requestId the loan reschedule request identifier - * + * **/ public LoanRescheduleRequestNotFoundException(final Long requestId) { - super("error.msg.loan.reschedule.request.id.invalid", + super("error.msg.loan.reschedule.request.id.invalid", "Loan reschedule request with identifier " + requestId + " does not exist", requestId); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/handler/ApproveLoanRescheduleRequestCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/handler/ApproveLoanRescheduleRequestCommandHandler.java index d13e8fd93..52c497d30 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/handler/ApproveLoanRescheduleRequestCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/handler/ApproveLoanRescheduleRequestCommandHandler.java @@ -31,13 +31,13 @@ import org.springframework.transaction.annotation.Transactional; @CommandType(entity = "RESCHEDULELOAN", action = "APPROVE") public class ApproveLoanRescheduleRequestCommandHandler implements NewCommandSourceHandler { private final LoanRescheduleRequestWritePlatformService loanRescheduleRequestWritePlatformService; - + @Autowired public ApproveLoanRescheduleRequestCommandHandler( LoanRescheduleRequestWritePlatformService loanRescheduleRequestWritePlatformService) { this.loanRescheduleRequestWritePlatformService = loanRescheduleRequestWritePlatformService; } - + @Transactional @Override public CommandProcessingResult processCommand(JsonCommand jsonCommand) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/handler/CreateLoanRescheduleRequestCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/handler/CreateLoanRescheduleRequestCommandHandler.java index 012770887..381099c31 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/handler/CreateLoanRescheduleRequestCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/handler/CreateLoanRescheduleRequestCommandHandler.java @@ -30,9 +30,9 @@ import org.springframework.transaction.annotation.Transactional; @Service @CommandType(entity = "RESCHEDULELOAN", action = "CREATE") public class CreateLoanRescheduleRequestCommandHandler implements NewCommandSourceHandler { - + private final LoanRescheduleRequestWritePlatformService loanRescheduleRequestWritePlatformService; - + @Autowired public CreateLoanRescheduleRequestCommandHandler( LoanRescheduleRequestWritePlatformService loanRescheduleRequestWritePlatformService) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/handler/RejectLoanRescheduleRequestCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/handler/RejectLoanRescheduleRequestCommandHandler.java index 8d742c4cd..bed0a18de 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/handler/RejectLoanRescheduleRequestCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/handler/RejectLoanRescheduleRequestCommandHandler.java @@ -31,13 +31,13 @@ import org.springframework.transaction.annotation.Transactional; @CommandType(entity = "RESCHEDULELOAN", action = "REJECT") public class RejectLoanRescheduleRequestCommandHandler implements NewCommandSourceHandler { private final LoanRescheduleRequestWritePlatformService loanRescheduleRequestWritePlatformService; - + @Autowired public RejectLoanRescheduleRequestCommandHandler( LoanRescheduleRequestWritePlatformService loanRescheduleRequestWritePlatformService) { this.loanRescheduleRequestWritePlatformService = loanRescheduleRequestWritePlatformService; } - + @Transactional @Override public CommandProcessingResult processCommand(JsonCommand jsonCommand) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanReschedulePreviewPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanReschedulePreviewPlatformService.java index 79a089bae..81d7b9b97 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanReschedulePreviewPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanReschedulePreviewPlatformService.java @@ -21,6 +21,6 @@ package org.apache.fineract.portfolio.loanaccount.rescheduleloan.service; import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanScheduleModel; public interface LoanReschedulePreviewPlatformService { - + public LoanScheduleModel previewLoanReschedule(Long requestId); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanReschedulePreviewPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanReschedulePreviewPlatformServiceImpl.java index ef64ec3cd..9044a8e4e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanReschedulePreviewPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanReschedulePreviewPlatformServiceImpl.java @@ -110,7 +110,7 @@ public class LoanReschedulePreviewPlatformServiceImpl implements LoanRescheduleP loanTermVariationsData.add(loanRescheduleRequestToTermVariationMapping.getLoanTermVariations().toData()); } } - + for (LoanTermVariationsData loanTermVariation : loanApplicationTerms.getLoanTermVariations().getDueDateVariation()) { if (rescheduleFromDate.isBefore(loanTermVariation.getTermApplicableFrom())) { LocalDate applicableDate = this.scheduledDateGenerator.generateNextRepaymentDate(rescheduleFromDate, loanApplicationTerms, @@ -123,7 +123,7 @@ public class LoanReschedulePreviewPlatformServiceImpl implements LoanRescheduleP } } } - + loanApplicationTerms.getLoanTermVariations().updateLoanTermVariationsData(loanTermVariationsData); final RoundingMode roundingMode = MoneyHelper.getRoundingMode(); final MathContext mathContext = new MathContext(8, roundingMode); @@ -138,7 +138,7 @@ public class LoanReschedulePreviewPlatformServiceImpl implements LoanRescheduleP final LoanScheduleModel loanScheduleModel = loanSchedule.getLoanScheduleModel(); LoanScheduleModel loanScheduleModels = LoanScheduleModel.withLoanScheduleModelPeriods(loanScheduleModel.getPeriods(), loanScheduleModel); - + return loanScheduleModels; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestReadPlatformService.java index cb6a31089..62d9925ab 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestReadPlatformService.java @@ -26,7 +26,7 @@ public interface LoanRescheduleRequestReadPlatformService { /** * get all loan reschedule requests by loan ID - * + * * @param loanId * the loan identifier * @return list of LoanRescheduleRequestData objects @@ -35,7 +35,7 @@ public interface LoanRescheduleRequestReadPlatformService { /** * get a single loan reschedule request by ID (primary key) - * + * * @param requestId * the loan reschedule request identifier * @return a LoanRescheduleRequestData object @@ -44,7 +44,7 @@ public interface LoanRescheduleRequestReadPlatformService { /** * get all loan reschedule requests filter by loan ID and status enum - * + * * @param loanId * the loan identifier * @return list of LoanRescheduleRequestData objects @@ -53,7 +53,7 @@ public interface LoanRescheduleRequestReadPlatformService { /** * get all loan reschedule reasons - * + * * @param loanRescheduleReason * the loan reschedule reason * @return list of LoanRescheduleRequestData objects @@ -61,8 +61,8 @@ public interface LoanRescheduleRequestReadPlatformService { public LoanRescheduleRequestData retrieveAllRescheduleReasons(String loanRescheduleReason); /** * get all loan reschedule request - * - * @param command + * + * @param command * all/null - give all request * approved - give all approved request * pending - give all request which is pending for approval diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestReadPlatformServiceImpl.java index 6cc3b214b..e6c1c8009 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestReadPlatformServiceImpl.java @@ -94,7 +94,7 @@ public class LoanRescheduleRequestReadPlatformServiceImpl implements LoanResched sqlBuilder.append("rbu.username as rejectedByUsername, "); sqlBuilder.append("rbu.firstname as rejectedByFirstname, "); sqlBuilder.append("rbu.lastname as rejectedByLastname, "); - + sqlBuilder.append("tv.id as termId,"); sqlBuilder.append("tv.term_type as termType,"); sqlBuilder.append("tv.applicable_date as variationApplicableFrom, "); @@ -159,9 +159,9 @@ public class LoanRescheduleRequestReadPlatformServiceImpl implements LoanResched final LoanRescheduleRequestTimelineData timeline = new LoanRescheduleRequestTimelineData(submittedOnDate, submittedByUsername, submittedByFirstname, submittedByLastname, approvedOnDate, approvedByUsername, approvedByFirstname, approvedByLastname, rejectedOnDate, rejectedByUsername, rejectedByFirstname, rejectedByLastname); - + Collection loanTermVariations = new ArrayList<>(); - + do { Long tempId = rs.getLong("id"); if (id.equals(tempId)) { @@ -176,7 +176,7 @@ public class LoanRescheduleRequestReadPlatformServiceImpl implements LoanResched rescheduleReasonCodeValue, rescheduleReasonComment, timeline, clientName, loanAccountNumber, clientId, recalculateInterest, rescheduleReasons, loanTermVariations); } - + private LoanTermVariationsData fetchLoanTermVariation(final ResultSet rs) throws SQLException { final Long id = rs.getLong("termId"); final LocalDate variationApplicableFrom = JdbcSupport.getLocalDate(rs, "variationApplicableFrom"); @@ -192,7 +192,7 @@ public class LoanRescheduleRequestReadPlatformServiceImpl implements LoanResched } } - + private static final class LoanRescheduleRequestRowMapperForBulkApproval implements RowMapper { public String schema() { @@ -226,7 +226,7 @@ public class LoanRescheduleRequestReadPlatformServiceImpl implements LoanResched rescheduleReasonCodeValue); } } - + @Override public List readLoanRescheduleRequests(Long loanId) { this.loanRepositoryWrapper.findOneWithNotFoundDetection(loanId); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformService.java index da8706bec..c8a7e607e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformService.java @@ -22,10 +22,10 @@ import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; public interface LoanRescheduleRequestWritePlatformService { - + CommandProcessingResult create(JsonCommand jsonCommand); CommandProcessingResult approve(JsonCommand jsonCommand); - + CommandProcessingResult reject(JsonCommand jsonCommand); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformServiceImpl.java index 6728b107c..2c937bbdc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformServiceImpl.java @@ -117,8 +117,8 @@ public class LoanRescheduleRequestWritePlatformServiceImpl implements LoanResche /** * LoanRescheduleRequestWritePlatformServiceImpl constructor - * - * + * + * **/ @Autowired public LoanRescheduleRequestWritePlatformServiceImpl(final CodeValueRepositoryWrapper codeValueRepositoryWrapper, @@ -159,7 +159,7 @@ public class LoanRescheduleRequestWritePlatformServiceImpl implements LoanResche /** * create a new instance of the LoanRescheduleRequest object from the * JsonCommand object and persist - * + * * @return CommandProcessingResult object **/ @Override @@ -321,7 +321,7 @@ public class LoanRescheduleRequestWritePlatformServiceImpl implements LoanResche LoanTermVariations parent = null; parent = createLoanTermVariations(termType, loan, rescheduleFromDate, dueDate, loanRescheduleRequestToTermVariationMappings, isActive, isSpecificToInstallment, BigDecimal.valueOf(graceOnPrincipal), parent); - + BigDecimal extraTermsBasedOnGracePeriods = BigDecimal.valueOf(graceOnPrincipal); createLoanTermVariations(LoanTermVariationType.EXTEND_REPAYMENT_PERIOD.getValue(), loan, rescheduleFromDate, dueDate, loanRescheduleRequestToTermVariationMappings, isActive, isSpecificToInstallment, extraTermsBasedOnGracePeriods, parent); @@ -472,7 +472,7 @@ public class LoanRescheduleRequestWritePlatformServiceImpl implements LoanResche // update the loan object saveAndFlushLoanWithDataIntegrityViolationChecks(loan); - + if (changedTransactionDetail != null) { for (final Map.Entry mapEntry : changedTransactionDetail.getNewTransactionMappings().entrySet()) { this.loanTransactionRepository.save(mapEntry.getValue()); @@ -483,7 +483,7 @@ public class LoanRescheduleRequestWritePlatformServiceImpl implements LoanResche } } postJournalEntries(loan, existingTransactionIds, existingReversedTransactionIds); - + this.loanAccountDomainService.recalculateAccruals(loan, true); return new CommandProcessingResultBuilder().withCommandId(jsonCommand.commandId()).withEntityId(loanRescheduleRequestId) @@ -583,7 +583,7 @@ public class LoanRescheduleRequestWritePlatformServiceImpl implements LoanResche * * @param dve * data integrity violation exception - * + * **/ private void handleDataIntegrityViolation(final DataIntegrityViolationException dve) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/CalculateLoanScheduleQueryFromApiJsonHelper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/CalculateLoanScheduleQueryFromApiJsonHelper.java index 3a8fe3800..ceb8abb3c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/CalculateLoanScheduleQueryFromApiJsonHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/CalculateLoanScheduleQueryFromApiJsonHelper.java @@ -157,7 +157,7 @@ public final class CalculateLoanScheduleQueryFromApiJsonHelper { "loanTermFrequency", loanTermFrequency, numberOfRepayments, repaymentEvery); dataValidationErrors.add(error); } - + } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanApplicationCommandFromApiJsonHelper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanApplicationCommandFromApiJsonHelper.java index 401ad7b51..9a0d05dcf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanApplicationCommandFromApiJsonHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanApplicationCommandFromApiJsonHelper.java @@ -119,7 +119,7 @@ public final class LoanApplicationCommandFromApiJsonHelper { final String loanTypeParameterName = "loanType"; final String loanTypeStr = this.fromApiJsonHelper.extractStringNamed(loanTypeParameterName, element); baseDataValidator.reset().parameter(loanTypeParameterName).value(loanTypeStr).notNull(); - + if (!StringUtils.isBlank(loanTypeStr)) { final AccountType loanType = AccountType.fromName(loanTypeStr); baseDataValidator.reset().parameter(loanTypeParameterName).value(loanType.getValue()).inMinMaxRange(1, 3); @@ -160,7 +160,7 @@ public final class LoanApplicationCommandFromApiJsonHelper { } } - + boolean isEqualAmortization = false; if (this.fromApiJsonHelper.parameterExists(LoanApiConstants.isEqualAmortizationParam, element)) { isEqualAmortization = this.fromApiJsonHelper.extractBooleanNamed(LoanApiConstants.isEqualAmortizationParam, element); @@ -543,7 +543,7 @@ public final class LoanApplicationCommandFromApiJsonHelper { final String accountNo = this.fromApiJsonHelper.extractStringNamed(accountNoParameterName, element); baseDataValidator.reset().parameter(accountNoParameterName).value(accountNo).notBlank().notExceedingLengthOf(20); } - + boolean isEqualAmortization = existingLoanApplication.getLoanProductRelatedDetail().isEqualAmortization(); if (this.fromApiJsonHelper.parameterExists(LoanProductConstants.isEqualAmortizationParam, element)) { isEqualAmortization = this.fromApiJsonHelper.extractBooleanNamed(LoanProductConstants.isEqualAmortizationParam, element); @@ -551,7 +551,7 @@ public final class LoanApplicationCommandFromApiJsonHelper { .validateForBooleanValue(); if (isEqualAmortization && loanProduct.isInterestRecalculationEnabled()) { throw new EqualAmortizationUnsupportedFeatureException( "interest.recalculation", "interest recalculation"); } - } + } final String externalIdParameterName = "externalId"; if (this.fromApiJsonHelper.parameterExists(externalIdParameterName, element)) { @@ -1100,7 +1100,7 @@ public final class LoanApplicationCommandFromApiJsonHelper { final String dateFormat = this.fromApiJsonHelper.extractDateFormatParameter(topLevelJsonElement); if (this.fromApiJsonHelper.parameterExists(LoanApiConstants.disbursementDataParameterName, element) && expectedDisbursement != null && totalPrincipal != null) { - + BigDecimal tatalDisbursement = BigDecimal.ZERO; final JsonArray variationArray = this.fromApiJsonHelper.extractJsonArrayNamed(LoanApiConstants.disbursementDataParameterName, element); @@ -1127,7 +1127,7 @@ public final class LoanApplicationCommandFromApiJsonHelper { baseDataValidator.reset().parameter(LoanApiConstants.disbursementDataParameterName) .failWithCode(LoanApiConstants.DISBURSEMENT_DATE_BEFORE_ERROR); } - + if (expectedDisbursementDate != null && expectedDisbursementDates.contains(expectedDisbursementDate)) { baseDataValidator.reset().parameter(LoanApiConstants.disbursementDateParameterName) .failWithCode(LoanApiConstants.DISBURSEMENT_DATE_UNIQUE_ERROR); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanEventApiJsonValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanEventApiJsonValidator.java index a1ac49eac..b5c3dc6cb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanEventApiJsonValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanEventApiJsonValidator.java @@ -55,7 +55,7 @@ public final class LoanEventApiJsonValidator { @Autowired - public LoanEventApiJsonValidator(final FromJsonHelper fromApiJsonHelper, + public LoanEventApiJsonValidator(final FromJsonHelper fromApiJsonHelper, final LoanApplicationCommandFromApiJsonHelper fromApiJsonDeserializer) { this.fromApiJsonHelper = fromApiJsonHelper; this.fromApiJsonDeserializer = fromApiJsonDeserializer; @@ -77,7 +77,7 @@ public final class LoanEventApiJsonValidator { "dateFormat", LoanApiConstants.principalDisbursedParameterName, LoanApiConstants.emiAmountParameterName)); } else { disbursementParameters = new HashSet<>(Arrays.asList("actualDisbursementDate", "externalId", "note", "locale", - "dateFormat", "paymentTypeId", "accountNumber", "checkNumber", "routingCode", "receiptNumber", "bankNumber", "adjustRepaymentDate", + "dateFormat", "paymentTypeId", "accountNumber", "checkNumber", "routingCode", "receiptNumber", "bankNumber", "adjustRepaymentDate", LoanApiConstants.principalDisbursedParameterName, LoanApiConstants.emiAmountParameterName)); } @@ -109,7 +109,7 @@ public final class LoanEventApiJsonValidator { throwExceptionIfValidationWarningsExist(dataValidationErrors); } - public void validateDisbursementDateWithMeetingDate(final LocalDate actualDisbursementDate, final CalendarInstance calendarInstance, + public void validateDisbursementDateWithMeetingDate(final LocalDate actualDisbursementDate, final CalendarInstance calendarInstance, Boolean isSkipRepaymentOnFirstMonth, Integer numberOfDays) { if (null != calendarInstance) { final Calendar calendar = calendarInstance.getCalendar(); @@ -388,7 +388,7 @@ public final class LoanEventApiJsonValidator { if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); } final Set disbursementParameters = new HashSet<>(Arrays.asList("locale", "dateFormat", LoanApiConstants.disbursementDataParameterName, - LoanApiConstants.approvedLoanAmountParameterName, LoanApiConstants.updatedDisbursementDateParameterName, LoanApiConstants.updatedDisbursementPrincipalParameterName, + LoanApiConstants.approvedLoanAmountParameterName, LoanApiConstants.updatedDisbursementDateParameterName, LoanApiConstants.updatedDisbursementPrincipalParameterName, LoanApiConstants.disbursementDateParameterName)); final Type typeOfMap = new TypeToken>() {}.getType(); @@ -401,25 +401,25 @@ public final class LoanEventApiJsonValidator { final LocalDate actualDisbursementDate = this.fromApiJsonHelper.extractLocalDateNamed( LoanApiConstants.disbursementDateParameterName, element); baseDataValidator.reset().parameter(LoanApiConstants.disbursementDateParameterName).value(actualDisbursementDate).notNull(); - + final Locale locale = this.fromApiJsonHelper.extractLocaleParameter(element.getAsJsonObject()); - final BigDecimal principal = this.fromApiJsonHelper.extractBigDecimalNamed(LoanApiConstants.updatedDisbursementPrincipalParameterName, + final BigDecimal principal = this.fromApiJsonHelper.extractBigDecimalNamed(LoanApiConstants.updatedDisbursementPrincipalParameterName, element,locale); baseDataValidator.reset().parameter(LoanApiConstants.disbursementPrincipalParameterName).value(principal).notNull(); - final BigDecimal approvedPrincipal = this.fromApiJsonHelper.extractBigDecimalNamed(LoanApiConstants.approvedLoanAmountParameterName, + final BigDecimal approvedPrincipal = this.fromApiJsonHelper.extractBigDecimalNamed(LoanApiConstants.approvedLoanAmountParameterName, element,locale); if (loanDisbursementDetails.actualDisbursementDate() != null) { baseDataValidator.reset().parameter(LoanApiConstants.disbursementDateParameterName) .failWithCode(LoanApiConstants.ALREADY_DISBURSED); } - + fromApiJsonDeserializer.validateLoanMultiDisbursementdate(element, baseDataValidator, actualDisbursementDate, approvedPrincipal); throwExceptionIfValidationWarningsExist(dataValidationErrors); } - + public void validateNewRefundTransaction(final String json) { if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java index 9742bb3e7..e753eda02 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java @@ -170,7 +170,7 @@ public class LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa final LoanReadPlatformService loanReadPlatformService, final AccountNumberFormatRepositoryWrapper accountNumberFormatRepository, final BusinessEventNotifierService businessEventNotifierService, final ConfigurationDomainService configurationDomainService, - final LoanScheduleAssembler loanScheduleAssembler, final LoanUtilService loanUtilService, + final LoanScheduleAssembler loanScheduleAssembler, final LoanUtilService loanUtilService, final CalendarReadPlatformService calendarReadPlatformService, final GlobalConfigurationRepositoryWrapper globalConfigurationRepository, final FineractEntityToEntityMappingRepository repository, final FineractEntityRelationRepository fineractEntityRelationRepository, final EntityDatatableChecksWritePlatformService entityDatatableChecksWritePlatformService, final LoanProductReadPlatformService loanProductReadPlatformService) { @@ -238,7 +238,7 @@ public class LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa Group group= this.groupRepository.findOneWithNotFoundDetection(groupId); officeSpecificLoanProductValidation( productId,group.getOffice().getId()); } - + this.fromApiJsonDeserializer.validateForCreate(command.json(), isMeetingMandatoryForJLGLoans, loanProduct); final List dataValidationErrors = new ArrayList<>(); @@ -556,7 +556,7 @@ public void checkForProductMixRestrictions(final Loan loan) { default: break; } - + final Calendar calendar = Calendar.createRepeatingCalendar(title, calendarStartDate, CalendarType.COLLECTION.getValue(), calendarFrequencyType, frequency, updatedRepeatsOnDay, recalculationFrequencyNthDay); final CalendarInstance calendarInstance = CalendarInstance.from(calendar, loan.loanInterestRecalculationDetails().getId(), @@ -986,9 +986,9 @@ public void checkForProductMixRestrictions(final Loan loan) { } } } - + if ((command.longValueOfParameterNamed(productIdParamName) != null) - || (command.longValueOfParameterNamed(clientIdParamName) != null) || (command.longValueOfParameterNamed(groupIdParamName) != null)) { + || (command.longValueOfParameterNamed(clientIdParamName) != null) || (command.longValueOfParameterNamed(groupIdParamName) != null)) { Long OfficeId = null; if(existingLoanApplication.getClient() != null){ OfficeId = existingLoanApplication.getClient().getOffice().getId(); @@ -1035,7 +1035,7 @@ public void checkForProductMixRestrictions(final Loan loan) { * is. */ private void handleDataIntegrityIssues(final JsonCommand command, final Throwable realCause, final Exception dve) { - + if (realCause.getMessage().contains("loan_account_no_UNIQUE") || (realCause.getCause() != null && realCause.getCause().getMessage().contains("loan_account_no_UNIQUE"))) { final String accountNo = command.stringValueOfParameterNamed("accountNo"); @@ -1072,7 +1072,7 @@ public void checkForProductMixRestrictions(final Loan loan) { if (accountAssociations != null) { this.accountAssociationsRepository.delete(accountAssociations); } - + this.loanRepositoryWrapper.delete(loanId); return new CommandProcessingResultBuilder() // @@ -1413,8 +1413,8 @@ public void checkForProductMixRestrictions(final Loan loan) { if (officeToLoanProductMappingList == null) { throw new NotOfficeSpecificProductException(productId, officeId); } - + } } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssembler.java index 428c280a3..d14228299 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssembler.java @@ -225,14 +225,14 @@ public class LoanAssembler { Group group = null; final LoanProductRelatedDetail loanProductRelatedDetail = this.loanScheduleAssembler.assembleLoanProductRelatedDetail(element); - + final BigDecimal interestRateDifferential = this.fromApiJsonHelper.extractBigDecimalWithLocaleNamed(LoanApiConstants.interestRateDifferentialParameterName, element); final Boolean isFloatingInterestRate = this.fromApiJsonHelper.extractBooleanNamed(LoanApiConstants.isFloatingInterestRateParameterName, element); final String loanTypeParameterName = "loanType"; final String loanTypeStr = this.fromApiJsonHelper.extractStringNamed(loanTypeParameterName, element); final EnumOptionData loanType = AccountEnumerations.loanType(loanTypeStr); - + if (clientId != null) { client = this.clientRepository.findOneWithNotFoundDetection(clientId); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeAssembler.java index d89314c81..3ad332475 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeAssembler.java @@ -144,7 +144,7 @@ public class LoanChargeAssembler { LoanApiConstants.disbursementDateParameterName, disbursementDataElement, dateFormat, locale); } } - + if ( ChargeTimeType.DISBURSEMENT.getValue().equals(chargeDefinition.getChargeTimeType())) { for (LoanDisbursementDetails disbursementDetail : disbursementDetails) { LoanTrancheDisbursementCharge loanTrancheDisbursementCharge = null; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformService.java index cf76279bb..e0eed4e55 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformService.java @@ -39,7 +39,7 @@ public interface LoanChargeReadPlatformService { Collection retrieveInstallmentLoanCharges(Long loanChargeId, boolean onlyPaymentPendingCharges); Collection retrieveOverdueInstallmentChargeFrequencyNumber(Long loanId, Long chargeId, Integer periodNumber); - + Collection retrieveLoanChargesForAccural(Long loanId); Collection retriveLoanChargesPaidBy(Long chargeId, LoanTransactionType transactionType, Integer installmentNumber); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformService.java index cb078c3c0..cac3dbebd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformService.java @@ -136,9 +136,9 @@ public interface LoanReadPlatformService { LoanAccountData retrieveLoanByLoanAccount(String loanAccountNumber); - + Long retrieveLoanIdByAccountNumber(String loanAccountNumber); - + String retrieveAccountNumberByAccountId(Long accountId); Integer retrieveNumberOfActiveLoans(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java index be9c9b60f..a21bd5473 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java @@ -463,14 +463,14 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { private BigDecimal adjustPrepayInstallmentCharge(Loan loan, final LocalDate onDate) { BigDecimal chargeAmount = BigDecimal.ZERO; /*for(LoanCharge loanCharge: loan.charges()){ - if(loanCharge.isInstalmentFee() && loanCharge.getCharge().getChargeCalculation()==ChargeCalculationType.FLAT.getValue()){ + if(loanCharge.isInstalmentFee() && loanCharge.getCharge().getChargeCalculation()==ChargeCalculationType.FLAT.getValue()){ for (LoanRepaymentScheduleInstallment installment : loan.getRepaymentScheduleInstallments()) { if(onDate.isBefore(installment.getDueDate())){ LoanInstallmentCharge loanInstallmentCharge = loanCharge.getInstallmentLoanCharge(installment.getInstallmentNumber()); if(loanInstallmentCharge != null){ chargeAmount = chargeAmount.add(loanInstallmentCharge.getAmountOutstanding()); } - + break; } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanUtilService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanUtilService.java index 0b579f956..2c29fb0fa 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanUtilService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanUtilService.java @@ -135,10 +135,10 @@ public class LoanUtilService { boolean isSkipRepaymentOnFirstMonthEnabled = configurationDomainService.isSkippingMeetingOnFirstDayOfMonthEnabled(); if(isSkipRepaymentOnFirstMonthEnabled){ isSkipRepaymentOnFirstMonth = isLoanRepaymentsSyncWithMeeting(loan.group(), calendar); - if(isSkipRepaymentOnFirstMonth) { numberOfDays = configurationDomainService.retreivePeroidInNumberOfDaysForSkipMeetingDate().intValue(); } + if(isSkipRepaymentOnFirstMonth) { numberOfDays = configurationDomainService.retreivePeroidInNumberOfDaysForSkipMeetingDate().intValue(); } } final Boolean isChangeEmiIfRepaymentDateSameAsDisbursementDateEnabled = this.configurationDomainService.isChangeEmiIfRepaymentDateSameAsDisbursementDateEnabled(); - + ScheduleGeneratorDTO scheduleGeneratorDTO = new ScheduleGeneratorDTO(loanScheduleFactory, applicationCurrency, calculatedRepaymentsStartingFromDate, holidayDetails, restCalendarInstance, compoundingCalendarInstance, recalculateFrom, overdurPenaltyWaitPeriod, floatingRateDTO, calendar, calendarHistoryDataWrapper, isInterestChargedFromDateAsDisbursementDateEnabled, @@ -223,7 +223,7 @@ public class LoanUtilService { } - private LocalDate calculateRepaymentStartingFromDate(final LocalDate actualDisbursementDate, final Loan loan, final Calendar calendar, + private LocalDate calculateRepaymentStartingFromDate(final LocalDate actualDisbursementDate, final Loan loan, final Calendar calendar, final CalendarHistoryDataWrapper calendarHistoryDataWrapper) { LocalDate calculatedRepaymentsStartingFromDate = loan.getExpectedFirstRepaymentOnDate(); if (calendar != null) {// sync repayments @@ -268,9 +268,9 @@ public class LoanUtilService { final LoanProductRelatedDetail repaymentScheduleDetails = loan.repaymentScheduleDetail(); final WorkingDays workingDays = this.workingDaysRepository.findOne(); LocalDate calculatedRepaymentsStartingFromDate = null; - + List historyList = calendarHistoryDataWrapper.getCalendarHistoryList() ; - + if( historyList!=null && historyList.size() > 0) { if(repaymentScheduleDetails != null){ final Integer repayEvery = repaymentScheduleDetails.getRepayEvery(); @@ -283,13 +283,13 @@ public class LoanUtilService { numberOfDays = configurationDomainService.retreivePeroidInNumberOfDaysForSkipMeetingDate().intValue(); isSkipRepaymentOnFirstMonth = isLoanRepaymentsSyncWithMeeting(loan.group(), historyList.get(0).getCalendar()); } - calculatedRepaymentsStartingFromDate = CalendarUtils.getNextRepaymentMeetingDate(historyList.get(0).getRecurrence(), historyList.get(0).getStartDateLocalDate(), + calculatedRepaymentsStartingFromDate = CalendarUtils.getNextRepaymentMeetingDate(historyList.get(0).getRecurrence(), historyList.get(0).getStartDateLocalDate(), actualDisbursementDate, repayEvery, frequency, workingDays, isSkipRepaymentOnFirstMonth, numberOfDays); } } return calculatedRepaymentsStartingFromDate; } - + public List fetchDisbursementData(final JsonObject command) { final Locale locale = this.fromApiJsonHelper.extractLocaleParameter(command); final String dateFormat = this.fromApiJsonHelper.extractDateFormatParameter(command); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java index ba682c4b1..753b83b6f 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java @@ -323,9 +323,9 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf this.loanEventApiJsonValidator.validateDisbursement(command.json(), isAccountTransfer); final Loan loan = this.loanAssembler.assembleFrom(loanId); - + final LocalDate actualDisbursementDate = command.localDateValueOfParameterNamed("actualDisbursementDate"); - + // validate ActualDisbursement Date Against Expected Disbursement Date LoanProduct loanProduct = loan.loanProduct(); if(loanProduct.syncExpectedWithDisbursementDate()){ @@ -339,18 +339,18 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf entityDatatableChecksWritePlatformService.runTheCheckForProduct(loanId, EntityTables.LOAN.getName(), StatusEnum.DISBURSE.getCode().longValue(), EntityTables.LOAN.getForeignKeyColumnNameOnDatatable(), loan.productId()); - + LocalDate recalculateFrom = null; if(!loan.isMultiDisburmentLoan()){ loan.setActualDisbursementDate(actualDisbursementDate.toDate()); - } + } ScheduleGeneratorDTO scheduleGeneratorDTO = this.loanUtilService.buildScheduleGeneratorDTO(loan, recalculateFrom); // validate actual disbursement date against meeting date final CalendarInstance calendarInstance = this.calendarInstanceRepository.findCalendarInstaneByEntityId(loan.getId(), CalendarEntityType.LOANS.getValue()); if (loan.isSyncDisbursementWithMeeting()) { - this.loanEventApiJsonValidator.validateDisbursementDateWithMeetingDate(actualDisbursementDate, calendarInstance, + this.loanEventApiJsonValidator.validateDisbursementDateWithMeetingDate(actualDisbursementDate, calendarInstance, scheduleGeneratorDTO.isSkipRepaymentOnFirstDayofMonth(), scheduleGeneratorDTO.getNumberOfdays()); } @@ -369,7 +369,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf .bigDecimalValueOfParameterNamed("transactionAmount"); this.cashierTransactionDataValidator.validateOnLoanDisbursal( currentUser, loan.getCurrencyCode(), transactionAmount); - } + } final Boolean isPaymnetypeApplicableforDisbursementCharge = configurationDomainService .isPaymnetypeApplicableforDisbursementCharge(); @@ -482,7 +482,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf isExceptionForBalanceCheck); this.accountTransfersWritePlatformService.transferFunds(accountTransferDTO); } - + updateRecurringCalendarDatesForInterestRecalculation(loan); this.loanAccountDomainService.recalculateAccruals(loan); this.businessEventNotifierService.notifyBusinessEventWasExecuted(BUSINESS_EVENTS.LOAN_DISBURSAL, @@ -508,10 +508,10 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf /** * create standing instruction for disbursed loan - * + * * @param loan * the disbursed loan - * + * **/ private void createStandingInstruction(Loan loan) { @@ -608,7 +608,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf /**** * TODO Vishwas: Pair with Ashok and re-factor collection sheet code-base - * + * * May of the changes made to disburseLoan aren't being made here, should * refactor to reuse disburseLoan ASAP *****/ @@ -630,7 +630,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf final Loan loan = this.loanAssembler.assembleFrom(singleLoanDisbursalCommand.getLoanId()); final LocalDate actualDisbursementDate = command.localDateValueOfParameterNamed("actualDisbursementDate"); - + // validate ActualDisbursement Date Against Expected Disbursement Date LoanProduct loanProduct = loan.loanProduct(); if(loanProduct.syncExpectedWithDisbursementDate()){ @@ -1127,8 +1127,8 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf CodeValue writeoffReason = this.codeValueRepository.findOneByCodeNameAndIdWithNotFoundDetection(LoanApiConstants.WRITEOFFREASONS, writeoffReasonId); changes.put("writeoffReasonId", writeoffReasonId); loan.updateWriteOffReason(writeoffReason); - } - + } + checkClientOrGroupActive(loan); this.businessEventNotifierService.notifyBusinessEventToBeExecuted(BUSINESS_EVENTS.LOAN_WRITTEN_OFF, constructEntityMap(BUSINESS_ENTITY.LOAN, loan)); @@ -1237,7 +1237,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf // disable all active standing instructions linked to the loan this.loanAccountDomainService.disableStandingInstructionsLinkedToClosedLoan(loan); - + CommandProcessingResult result = null; if (possibleClosingTransaction != null) { @@ -1294,10 +1294,10 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf } this.businessEventNotifierService.notifyBusinessEventWasExecuted(BUSINESS_EVENTS.LOAN_CLOSE_AS_RESCHEDULE, constructEntityMap(BUSINESS_ENTITY.LOAN, loan)); - + // disable all active standing instructions linked to the loan this.loanAccountDomainService.disableStandingInstructionsLinkedToClosedLoan(loan); - + return new CommandProcessingResultBuilder() // .withCommandId(command.commandId()) // .withEntityId(loanId) // @@ -1861,13 +1861,13 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf this.loanAssembler.setHelpers(loan); checkClientOrGroupActive(loan); validateTransactionsForTransfer(loan, transferDate); - + this.businessEventNotifierService.notifyBusinessEventToBeExecuted(BUSINESS_EVENTS.LOAN_INITIATE_TRANSFER, constructEntityMap(BUSINESS_ENTITY.LOAN, loan)); final List existingTransactionIds = new ArrayList<>(loan.findExistingTransactionIds()); final List existingReversedTransactionIds = new ArrayList<>(loan.findExistingReversedTransactionIds()); - + final LoanTransaction newTransferTransaction = LoanTransaction.initiateTransfer(loan.getOffice(), loan, transferDate, DateUtils.getLocalDateTimeOfTenant(), currentUser); loan.addLoanTransaction(newTransferTransaction); @@ -2116,9 +2116,9 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf boolean isSkipRepaymentOnFirstMonthEnabled = configurationDomainService.isSkippingMeetingOnFirstDayOfMonthEnabled(); if(isSkipRepaymentOnFirstMonthEnabled){ isSkipRepaymentOnFirstMonth = this.loanUtilService.isLoanRepaymentsSyncWithMeeting(loan.group(), calendar); - if(isSkipRepaymentOnFirstMonth) { numberOfDays = configurationDomainService.retreivePeroidInNumberOfDaysForSkipMeetingDate().intValue(); } + if(isSkipRepaymentOnFirstMonth) { numberOfDays = configurationDomainService.retreivePeroidInNumberOfDaysForSkipMeetingDate().intValue(); } } - + holidays = this.holidayRepository.findByOfficeIdAndGreaterThanDate(loan.getOfficeId(), loan.getDisbursementDate().toDate()); if (loan.repaymentScheduleDetail().isInterestRecalculationEnabled()) { @@ -2979,7 +2979,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf } this.loanScheduleHistoryWritePlatformService.createAndSaveLoanScheduleArchive(loan.getRepaymentScheduleInstallments(), loan, loanRescheduleRequest); - + final Map modifications = this.loanAccountDomainService.foreCloseLoan(loan, transactionDate, noteText); changes.putAll(modifications); @@ -3007,15 +3007,15 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf } } - + private void syncExpectedDateWithActualDisbursementDate(final Loan loan, LocalDate actualDisbursementDate){ if(!loan.getExpectedDisbursedOnLocalDate().equals(actualDisbursementDate)){ - throw new DateMismatchException(actualDisbursementDate, + throw new DateMismatchException(actualDisbursementDate, loan.getExpectedDisbursedOnLocalDate()); } - + } - + private void validateTransactionsForTransfer(final Loan loan, final LocalDate transferDate) { for (LoanTransaction transaction : loan.getLoanTransactions()) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/LoanProductConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/LoanProductConstants.java index 317f7f435..471d4f963 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/LoanProductConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/LoanProductConstants.java @@ -110,7 +110,7 @@ public interface LoanProductConstants { // Fixed installment configuration related public static final String canDefineEmiAmountParamName = "canDefineInstallmentAmount"; public static final String installmentAmountInMultiplesOfParamName = "installmentAmountInMultiplesOf"; - + //Loan Configurable Attributes public static final String allowAttributeOverridesParamName = "allowAttributeOverrides"; public static final String amortizationTypeParamName = "amortizationType"; @@ -121,18 +121,18 @@ public interface LoanProductConstants { public static final String repaymentEveryParamName = "repaymentEvery"; public static final String graceOnPrincipalAndInterestPaymentParamName = "graceOnPrincipalAndInterestPayment"; public static final String allowCompoundingOnEodParamName = "allowCompoundingOnEod"; - + //Variable Installments Settings public static final String allowVariableInstallmentsParamName = "allowVariableInstallments" ; public static final String minimumGapBetweenInstallments = "minimumGap" ; public static final String maximumGapBetweenInstallments = "maximumGap" ; - - + + public static final String allowPartialPeriodInterestCalcualtionParamName = "allowPartialPeriodInterestCalcualtion"; public static final String canUseForTopup = "canUseForTopup"; - + public static final String isEqualAmortizationParam = "isEqualAmortization"; - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/api/LoanProductsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/api/LoanProductsApiResource.java index 945d6508a..a6aeebcc9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/api/LoanProductsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/api/LoanProductsApiResource.java @@ -315,7 +315,7 @@ public class LoanProductsApiResource { interestRateFrequencyTypeOptions, fundOptions, transactionProcessingStrategyOptions, accountOptions, accountingRuleTypeOptions, loanCycleValueConditionTypeOptions, daysInMonthTypeOptions, daysInYearTypeOptions, interestRecalculationCompoundingTypeOptions, rescheduleStrategyTypeOptions, interestRecalculationFrequencyTypeOptions, - preCloseInterestCalculationStrategyOptions, floatingRateOptions, interestRecalculationNthDayTypeOptions, + preCloseInterestCalculationStrategyOptions, floatingRateOptions, interestRecalculationNthDayTypeOptions, interestRecalculationDayOfWeekTypeOptions); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanOverdueDTO.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanOverdueDTO.java index d4aae8eb5..f97507b63 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanOverdueDTO.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanOverdueDTO.java @@ -48,7 +48,7 @@ public class LoanOverdueDTO { return this.recalculateFrom; } - + public LocalDate getLastChargeAppliedDate() { return this.lastChargeAppliedDate; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanProductData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanProductData.java index 0ffe7b2e8..6c5676ac3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanProductData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanProductData.java @@ -471,7 +471,7 @@ public class LoanProductData implements Serializable { syncExpectedWithDisbursementDate, canUseForTopup, isEqualAmortization); } - + public static LoanProductData loanProductWithFloatingRates(final Long id, final String name, final boolean isLinkedToFloatingInterestRates, final Integer floatingRateId, final String floatingRateName, final BigDecimal interestRateDifferential, final BigDecimal minDifferentialLendingRate, @@ -576,7 +576,7 @@ public class LoanProductData implements Serializable { productData.penaltyToIncomeAccountMappings = penaltyToGLAccountMappings; return productData; } - + public LoanProductData(final Long id, final String name, final String shortName, final String description, final CurrencyData currency, final BigDecimal principal, final BigDecimal minPrincipal, final BigDecimal maxPrincipal, final BigDecimal tolerance, final Integer numberOfRepayments, final Integer minNumberOfRepayments, final Integer maxNumberOfRepayments, @@ -600,7 +600,7 @@ public class LoanProductData implements Serializable { boolean isLinkedToFloatingInterestRates, Integer floatingRateId, String floatingRateName, BigDecimal interestRateDifferential, BigDecimal minDifferentialLendingRate, BigDecimal defaultDifferentialLendingRate, BigDecimal maxDifferentialLendingRate, boolean isFloatingInterestRateCalculationAllowed, final boolean isVariableInstallmentsAllowed, - final Integer minimumGapBetweenInstallments, final Integer maximumGapBetweenInstallments, + final Integer minimumGapBetweenInstallments, final Integer maximumGapBetweenInstallments, final boolean syncExpectedWithDisbursementDate, final boolean canUseForTopup, final boolean isEqualAmortization) { this.id = id; this.name = name; @@ -940,7 +940,7 @@ public class LoanProductData implements Serializable { public Integer getGraceOnPrincipalPayment() { return this.graceOnPrincipalPayment; } - + public Integer getRecurringMoratoriumOnPrincipalPeriods() { return this.recurringMoratoriumOnPrincipalPeriods; } @@ -1191,7 +1191,7 @@ public class LoanProductData implements Serializable { return this.maximumGap; } - + public Boolean getAllowPartialPeriodInterestCalcualtion() { return this.allowPartialPeriodInterestCalcualtion; } @@ -1199,11 +1199,11 @@ public class LoanProductData implements Serializable { public boolean syncExpectedWithDisbursementDate() { return syncExpectedWithDisbursementDate; } - + public boolean canUseForTopup() { return this.canUseForTopup; } - + public BigDecimal getInterestRateDifferential() { return this.interestRateDifferential; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/AmortizationMethod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/AmortizationMethod.java index 2de139cc5..122a223c7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/AmortizationMethod.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/AmortizationMethod.java @@ -61,7 +61,7 @@ public enum AmortizationMethod { public boolean isEqualInstallment() { return this.value.equals(AmortizationMethod.EQUAL_INSTALLMENTS.getValue()); } - + public boolean isEqualPrincipal() { return this.value.equals(AmortizationMethod.EQUAL_PRINCIPAL.getValue()); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestRecalculationCompoundingMethod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestRecalculationCompoundingMethod.java index 8b4d560fe..37ec24b05 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestRecalculationCompoundingMethod.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestRecalculationCompoundingMethod.java @@ -22,7 +22,7 @@ import java.util.HashMap; import java.util.Map; /*** - * + * * People typically use either of the following settings when defining interest * recalculation method: *

          diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestRecalculationPeriodMethod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestRecalculationPeriodMethod.java index 06c239548..9a63ee467 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestRecalculationPeriodMethod.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestRecalculationPeriodMethod.java @@ -22,7 +22,7 @@ import java.util.HashMap; import java.util.Map; /*** - * + * * People typically use either of the following settings when defining interest * recalculation method: *
            diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LendingStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LendingStrategy.java index 0af8690bf..aeff4ee19 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LendingStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LendingStrategy.java @@ -28,7 +28,7 @@ import java.util.Map; * within a group. LINKED_LOAN: Loan is given to group, then later loan amount * is split into individual loans. Loan is tracked at both individual and group * level - * + * */ public enum LendingStrategy { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java index eba4eac30..879bfeed3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java @@ -45,10 +45,10 @@ import java.util.*; /** * Loan products allow for categorisation of an organisations loans into * something meaningful to them. - * + * * They provide a means of simplifying creation/maintenance of loans. They can * also allow for product comparison to take place when reporting. - * + * * They allow for constraints to be added at product level. */ @Entity @@ -151,14 +151,14 @@ public class LoanProduct extends AbstractPersistableCustom { @OneToOne(cascade = CascadeType.ALL, mappedBy = "loanProduct", optional = true, orphanRemoval = true, fetch=FetchType.EAGER) private LoanProductVariableInstallmentConfig variableInstallmentConfig; - + @Column(name = "sync_expected_with_disbursement_date") private boolean syncExpectedWithDisbursementDate; @Column(name = "can_use_for_topup", nullable = false) private boolean canUseForTopup = false; - + @Column(name = "is_equal_amortization", nullable = false) private boolean isEqualAmortization = false; @@ -307,12 +307,12 @@ public class LoanProduct extends AbstractPersistableCustom { .integerValueOfParameterNamed(LoanProductConstants.installmentAmountInMultiplesOfParamName); final boolean syncExpectedWithDisbursementDate = command.booleanPrimitiveValueOfParameterNamed("syncExpectedWithDisbursementDate"); - - + + final boolean canUseForTopup = command.parameterExists(LoanProductConstants.canUseForTopup) ? command.booleanPrimitiveValueOfParameterNamed(LoanProductConstants.canUseForTopup) : false; - + final boolean isEqualAmortization = command.parameterExists(LoanProductConstants.isEqualAmortizationParam) ? command .booleanPrimitiveValueOfParameterNamed(LoanProductConstants.isEqualAmortizationParam) : false; @@ -633,7 +633,7 @@ public class LoanProduct extends AbstractPersistableCustom { this.accountMovesOutOfNPAOnlyOnArrearsCompletion = accountMovesOutOfNPAOnlyOnArrearsCompletion; this.canDefineInstallmentAmount = canDefineEmiAmount; this.installmentAmountInMultiplesOf = installmentAmountInMultiplesOf; - this.syncExpectedWithDisbursementDate = + this.syncExpectedWithDisbursementDate = syncExpectedWithDisbursementDate; this.canUseForTopup = canUseForTopup; this.isEqualAmortization = isEqualAmortization; @@ -859,7 +859,7 @@ public class LoanProduct extends AbstractPersistableCustom { actualChanges.put("locale", localeAsInput); this.minimumDaysBetweenDisbursalAndFirstRepayment = newValue; } - + if(command.isChangeInBooleanParameterNamed("syncExpectedWithDisbursementDate" , this.syncExpectedWithDisbursementDate)){ final boolean newValue = command.booleanPrimitiveValueOfParameterNamed("syncExpectedWithDisbursementDate"); @@ -1168,7 +1168,7 @@ public class LoanProduct extends AbstractPersistableCustom { } return borrowerCycleVariation; } - + public boolean syncExpectedWithDisbursementDate() { return syncExpectedWithDisbursementDate; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductFloatingRates.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductFloatingRates.java index bc0f4923e..76190791b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductFloatingRates.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductFloatingRates.java @@ -62,12 +62,12 @@ public class LoanProductFloatingRates extends AbstractPersistableCustom { @Column(name = "is_floating_interest_rate_calculation_allowed", nullable = false) private boolean isFloatingInterestRateCalculationAllowed; - + public LoanProductFloatingRates(){ - + } - public LoanProductFloatingRates(FloatingRate floatingRate, LoanProduct loanProduct, BigDecimal interestRateDifferential, - BigDecimal minDifferentialLendingRate, BigDecimal maxDifferentialLendingRate, BigDecimal defaultDifferentialLendingRate, + public LoanProductFloatingRates(FloatingRate floatingRate, LoanProduct loanProduct, BigDecimal interestRateDifferential, + BigDecimal minDifferentialLendingRate, BigDecimal maxDifferentialLendingRate, BigDecimal defaultDifferentialLendingRate, boolean isFloatingInterestRateCalculationAllowed){ this.floatingRate = floatingRate; this.loanProduct = loanProduct; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java index a6a96e54e..4f4568573 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java @@ -33,7 +33,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; /** * Entity for capturing interest recalculation settings - * + * * @author conflux */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductInterestRecalculationDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductInterestRecalculationDetails.java index dec0b629f..cdd321417 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductInterestRecalculationDetails.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductInterestRecalculationDetails.java @@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; /** * Entity for capturing interest recalculation settings - * + * * @author conflux */ @@ -345,7 +345,7 @@ public class LoanProductInterestRecalculationDetails extends AbstractPersistable this.compoundingFrequencyNthDay = null; this.compoundingFrequencyWeekday = null; } - + if (compoundingfrequencyType.isWeekly()) { this.compoundingFrequencyNthDay = null; this.compoundingFrequencyOnDay = null; @@ -396,7 +396,7 @@ public class LoanProductInterestRecalculationDetails extends AbstractPersistable actualChanges.put(LoanProductConstants.preClosureInterestCalculationStrategyParamName, newValue); this.preClosureInterestCalculationStrategy = newValue; } - + if (command.isChangeInBooleanParameterNamed(LoanProductConstants.isCompoundingToBePostedAsTransactionParamName, this.isCompoundingToBePostedAsTransaction)) { final boolean newValue = command diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductMinimumRepaymentScheduleRelatedDetail.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductMinimumRepaymentScheduleRelatedDetail.java index 6cfbb427b..11d03456c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductMinimumRepaymentScheduleRelatedDetail.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductMinimumRepaymentScheduleRelatedDetail.java @@ -31,36 +31,36 @@ import org.apache.fineract.portfolio.common.domain.PeriodFrequencyType; public interface LoanProductMinimumRepaymentScheduleRelatedDetail { MonetaryCurrency getCurrency(); - + Money getPrincipal(); - + Integer graceOnInterestCharged(); - + Integer graceOnInterestPayment(); - + Integer graceOnPrincipalPayment(); - + Integer recurringMoratoriumOnPrincipalPeriods(); - + Money getInArrearsTolerance(); - + BigDecimal getNominalInterestRatePerPeriod(); - + PeriodFrequencyType getInterestPeriodFrequencyType(); - + BigDecimal getAnnualNominalInterestRate(); - + InterestMethod getInterestMethod(); - + InterestCalculationPeriodMethod getInterestCalculationPeriodMethod(); - + Integer getRepayEvery(); PeriodFrequencyType getRepaymentPeriodFrequencyType(); Integer getNumberOfRepayments(); - + AmortizationMethod getAmortizationMethod(); - + Integer getGraceOnDueDate(); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductRelatedDetail.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductRelatedDetail.java index 75937dca0..0264ecbd6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductRelatedDetail.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductRelatedDetail.java @@ -127,7 +127,7 @@ public class LoanProductRelatedDetail implements LoanProductMinimumRepaymentSche @Column(name = "interest_recalculation_enabled") private boolean isInterestRecalculationEnabled; - + @Column(name = "is_equal_amortization", nullable = false) private boolean isEqualAmortization = false; @@ -228,7 +228,7 @@ public class LoanProductRelatedDetail implements LoanProductMinimumRepaymentSche public Integer recurringMoratoriumOnPrincipalPeriods() { return this.recurringMoratoriumOnPrincipalPeriods; } - + @Override public Money getInArrearsTolerance() { return Money.of(this.currency, this.inArrearsTolerance); @@ -444,7 +444,7 @@ public class LoanProductRelatedDetail implements LoanProductMinimumRepaymentSche actualChanges.put("locale", localeAsInput); this.graceOnPrincipalPayment = newValue; } - + final String recurringMoratoriumOnPrincipalPeriodsParamName = "recurringMoratoriumOnPrincipalPeriods"; if (command.isChangeInIntegerParameterNamed(recurringMoratoriumOnPrincipalPeriodsParamName, this.recurringMoratoriumOnPrincipalPeriods)) { final Integer newValue = command.integerValueOfParameterNamed(recurringMoratoriumOnPrincipalPeriodsParamName); @@ -497,7 +497,7 @@ public class LoanProductRelatedDetail implements LoanProductMinimumRepaymentSche actualChanges.put(LoanProductConstants.isInterestRecalculationEnabledParameterName, newValue); this.isInterestRecalculationEnabled = newValue; } - + if (command.isChangeInBooleanParameterNamed(LoanProductConstants.isEqualAmortizationParam, this.isEqualAmortization)) { final boolean newValue = command.booleanPrimitiveValueOfParameterNamed(LoanProductConstants.isEqualAmortizationParam); actualChanges.put(LoanProductConstants.isEqualAmortizationParam, newValue); @@ -512,7 +512,7 @@ public class LoanProductRelatedDetail implements LoanProductMinimumRepaymentSche public void updateCurrency(final MonetaryCurrency currency) { this.currency = currency ; } - + public void validateRepaymentPeriodWithGraceSettings() { final List dataValidationErrors = new ArrayList<>(); final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("loanproduct"); @@ -531,7 +531,7 @@ public class LoanProductRelatedDetail implements LoanProductMinimumRepaymentSche baseDataValidator.reset().parameter("graceOnInterestCharged").value(this.graceOnInterestCharged) .failWithCode(".mustBeLessThan.numberOfRepayments"); } - + int graceOnPrincipal = 0; if (this.getGraceOnPrincipalPayment() != null) { graceOnPrincipal = this.getGraceOnPrincipalPayment().intValue(); @@ -540,8 +540,8 @@ public class LoanProductRelatedDetail implements LoanProductMinimumRepaymentSche if (this.recurringMoratoriumOnPrincipalPeriods() != null) { recurMoratoriumOnPrincipal = this.recurringMoratoriumOnPrincipalPeriods().intValue(); } - - if ( ( recurMoratoriumOnPrincipal > 0 ) + + if ( ( recurMoratoriumOnPrincipal > 0 ) && ( (this.numberOfRepayments - graceOnPrincipal) % ( recurMoratoriumOnPrincipal + 1) != 1) ) { baseDataValidator.reset().parameter("graceOnPrincipalPayments.and.recurringMoratoriumOnPrincipalPeriods") .value(graceOnPrincipal) @@ -659,7 +659,7 @@ public class LoanProductRelatedDetail implements LoanProductMinimumRepaymentSche public boolean isAllowPartialPeriodInterestCalcualtion() { return this.allowPartialPeriodInterestCalcualtion; } - + public boolean isEqualAmortization() { return isEqualAmortization; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanTransactionProcessingStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanTransactionProcessingStrategy.java index 91df3334d..b50b82978 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanTransactionProcessingStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanTransactionProcessingStrategy.java @@ -37,7 +37,7 @@ public class LoanTransactionProcessingStrategy extends AbstractPersistableCustom @Column(name = "sort_order") private Integer sortOrder ; //Don't change this name as this property name is used as sort order while retrieving this objects - + protected LoanTransactionProcessingStrategy() { // } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/LoanProductCannotBeModifiedDueToNonClosedLoansException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/LoanProductCannotBeModifiedDueToNonClosedLoansException.java index c51b3783b..67b5cc201 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/LoanProductCannotBeModifiedDueToNonClosedLoansException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/LoanProductCannotBeModifiedDueToNonClosedLoansException.java @@ -22,7 +22,7 @@ import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainR public class LoanProductCannotBeModifiedDueToNonClosedLoansException extends AbstractPlatformDomainRuleException { public LoanProductCannotBeModifiedDueToNonClosedLoansException(final Long id) { - super("error.msg.loanproduct.not.modifiable.due.to.non.closed.loans", + super("error.msg.loanproduct.not.modifiable.due.to.non.closed.loans", "Loan product with identifier " + id + " cannot be modified due to non closed loans associated with it.", id); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/NotInMinMaxRangeException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/NotInMinMaxRangeException.java index 4b36b5e32..528853be1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/NotInMinMaxRangeException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/NotInMinMaxRangeException.java @@ -23,7 +23,7 @@ import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainR /** * {@link AbstractPlatformDomainRuleException} thrown when a value is not within * minimum and maximum values. - * + * */ public class NotInMinMaxRangeException extends AbstractPlatformDomainRuleException { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/serialization/LoanProductDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/serialization/LoanProductDataValidator.java index 1d2bd9c35..0122dea50 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/serialization/LoanProductDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/serialization/LoanProductDataValidator.java @@ -148,7 +148,7 @@ public final class LoanProductDataValidator { final Long fundId = this.fromApiJsonHelper.extractLongNamed("fundId", element); baseDataValidator.reset().parameter("fundId").value(fundId).ignoreIfNull().integerGreaterThanZero(); } - + boolean isEqualAmortization = false; if (this.fromApiJsonHelper.parameterExists(LoanProductConstants.isEqualAmortizationParam, element)) { isEqualAmortization = this.fromApiJsonHelper.extractBooleanNamed(LoanProductConstants.isEqualAmortizationParam, element); @@ -331,7 +331,7 @@ public final class LoanProductDataValidator { if (this.fromApiJsonHelper.parameterExists("isLinkedToFloatingInterestRates", element) && this.fromApiJsonHelper.extractBooleanNamed("isLinkedToFloatingInterestRates", element) == true) { if (isEqualAmortization) { throw new EqualAmortizationUnsupportedFeatureException("floating.interest.rate", - "floating interest rate"); } + "floating interest rate"); } if (this.fromApiJsonHelper.parameterExists("interestRatePerPeriod", element)) { baseDataValidator .reset() @@ -652,7 +652,7 @@ public final class LoanProductDataValidator { private void validateVariableInstallmentSettings(final DataValidatorBuilder baseDataValidator, final JsonElement element) { if (this.fromApiJsonHelper.parameterExists(LoanProductConstants.allowVariableInstallmentsParamName, element) && this.fromApiJsonHelper.extractBooleanNamed(LoanProductConstants.allowVariableInstallmentsParamName, element)) { - + boolean isEqualAmortization = false; if (this.fromApiJsonHelper.parameterExists(LoanProductConstants.isEqualAmortizationParam, element)) { isEqualAmortization = this.fromApiJsonHelper.extractBooleanNamed(LoanProductConstants.isEqualAmortizationParam, element); @@ -739,7 +739,7 @@ public final class LoanProductDataValidator { baseDataValidator.reset().parameter(LoanProductConstants.multiDisburseLoanParameterName).value(multiDisburseLoan) .ignoreIfNull().validateForBooleanValue(); } - + boolean isEqualAmortization = false; if (this.fromApiJsonHelper.parameterExists(LoanProductConstants.isEqualAmortizationParam, element)) { isEqualAmortization = this.fromApiJsonHelper.extractBooleanNamed(LoanProductConstants.isEqualAmortizationParam, element); @@ -1139,7 +1139,7 @@ public final class LoanProductDataValidator { baseDataValidator.reset().parameter(LoanProductConstants.accountMovesOutOfNPAOnlyOnArrearsCompletionParamName) .value(npaChangeConfig).notNull().isOneOfTheseValues(true, false); } - + boolean isEqualAmortization = loanProduct.isEqualAmortization(); if (this.fromApiJsonHelper.parameterExists(LoanProductConstants.isEqualAmortizationParam, element)) { isEqualAmortization = this.fromApiJsonHelper.extractBooleanNamed(LoanProductConstants.isEqualAmortizationParam, element); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanDropdownReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanDropdownReadPlatformService.java index b0761d755..7c3d4b62a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanDropdownReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanDropdownReadPlatformService.java @@ -35,9 +35,9 @@ public interface LoanDropdownReadPlatformService { List retrieveLoanTermFrequencyTypeOptions(); List retrieveRepaymentFrequencyTypeOptions(); - + List retrieveRepaymentFrequencyOptionsForNthDayOfMonth(); - + List retrieveRepaymentFrequencyOptionsForDaysOfWeek(); List retrieveInterestRateFrequencyTypeOptions(); @@ -51,9 +51,9 @@ public interface LoanDropdownReadPlatformService { List retrieveInterestRecalculationDayOfWeekTypeOptions(); List retrieveRescheduleStrategyTypeOptions(); - + List retrieveInterestRecalculationFrequencyTypeOptions(); - + List retrivePreCloseInterestCalculationStrategyOptions(); } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductReadPlatformService.java index eac39ece4..ae92f7e86 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductReadPlatformService.java @@ -28,7 +28,7 @@ public interface LoanProductReadPlatformService { Collection retrieveAllLoanProducts(); Collection retrieveAllLoanProductsForLookup(String inClass); - + Collection retrieveAllLoanProductsForLookup(); Collection retrieveAllLoanProductsForLookup(boolean activeOnly); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductReadPlatformServiceImpl.java index 00808fa84..c1183ebdd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductReadPlatformServiceImpl.java @@ -309,7 +309,7 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo final int amortizationTypeId = JdbcSupport.getInteger(rs, "amortizationMethod"); final EnumOptionData amortizationType = LoanEnumerations.amortizationType(amortizationTypeId); final boolean isEqualAmortization = rs.getBoolean("isEqualAmortization"); - + final Integer interestRateFrequencyTypeId = JdbcSupport.getInteger(rs, "interestRatePerPeriodFreq"); final EnumOptionData interestRateFrequencyType = LoanEnumerations.interestRateFrequencyType(interestRateFrequencyTypeId); @@ -415,7 +415,7 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo interestRecalculationCompoundingType, rescheduleStrategyType, restFrequencyType, restFrequencyInterval, restFrequencyNthDayEnum, restFrequencyWeekDayEnum, restFrequencyOnDay, compoundingFrequencyType, compoundingInterval, compoundingFrequencyNthDayEnum, compoundingFrequencyWeekDayEnum, compoundingFrequencyOnDay, - isArrearsBasedOnOriginalSchedule, isCompoundingToBePostedAsTransaction, preCloseInterestCalculationStrategy, + isArrearsBasedOnOriginalSchedule, isCompoundingToBePostedAsTransaction, preCloseInterestCalculationStrategy, allowCompoundingOnEod); } @@ -447,7 +447,7 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo final BigDecimal principalThresholdForLastInstallment = rs.getBigDecimal("principalThresholdForLastInstallment"); final boolean accountMovesOutOfNPAOnlyOnArrearsCompletion = rs.getBoolean("accountMovesOutOfNPAOnlyOnArrearsCompletion"); final boolean syncExpectedWithDisbursementDate = rs.getBoolean("syncExpectedWithDisbursementDate"); - + final boolean canUseForTopup = rs.getBoolean("canUseForTopup"); return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance, @@ -621,7 +621,7 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo return this.jdbcTemplate.query(sql, rm, new Object[] { productId, productId }); } - + @Override public LoanProductData retrieveLoanProductFloatingDetails(final Long loanProductId) { @@ -635,14 +635,14 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo throw new LoanProductNotFoundException(loanProductId); } } - - + + private static final class LoanProductFloatingRateMapper implements RowMapper { public LoanProductFloatingRateMapper() {} public String schema() { - return "lp.id as id, lp.name as name," + return "lp.id as id, lp.name as name," + "lp.is_linked_to_floating_interest_rates as isLinkedToFloatingInterestRates, " + "lfr.floating_rates_id as floatingRateId, " + "fr.name as floatingRateName, " + "lfr.interest_rate_differential as interestRateDifferential, " diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java index c0e07428b..3571392f2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java @@ -147,15 +147,15 @@ public class LoanProductWritePlatformServiceJpaRepositoryImpl implements LoanPro // check if the office specific products are enabled. If yes, then save this savings product against a specific office // i.e. this savings product is specific for this office. fineractEntityAccessUtil.checkConfigurationAndAddProductResrictionsForUserOffice( - FineractEntityAccessType.OFFICE_ACCESS_TO_LOAN_PRODUCTS, + FineractEntityAccessType.OFFICE_ACCESS_TO_LOAN_PRODUCTS, loanproduct.getId()); this.businessEventNotifierService.notifyBusinessEventWasExecuted(BUSINESS_EVENTS.LOAN_PRODUCT_CREATE, constructEntityMap(BUSINESS_ENTITY.LOAN_PRODUCT, loanproduct)); - + this.businessEventNotifierService.notifyBusinessEventWasExecuted(BUSINESS_EVENTS.LOAN_PRODUCT_CREATE, constructEntityMap(BUSINESS_ENTITY.LOAN_PRODUCT, loanproduct)); - + return new CommandProcessingResultBuilder() // .withCommandId(command.commandId()) // .withEntityId(loanproduct.getId()) // @@ -203,11 +203,11 @@ public class LoanProductWritePlatformServiceJpaRepositoryImpl implements LoanPro this.fromApiJsonDeserializer.validateForUpdate(command.json(), product); validateInputDates(command); - if(anyChangeInCriticalFloatingRateLinkedParams(command, product) + if(anyChangeInCriticalFloatingRateLinkedParams(command, product) && this.loanRepositoryWrapper.doNonClosedLoanAccountsExistForProduct(product.getId())){ throw new LoanProductCannotBeModifiedDueToNonClosedLoansException(product.getId()); } - + FloatingRate floatingRate = null; if(command.parameterExists("floatingRatesId")){ floatingRate = this.floatingRateRepository diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/Meeting.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/Meeting.java index 577590147..6940beaf9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/Meeting.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/Meeting.java @@ -79,8 +79,8 @@ public class Meeting extends AbstractPersistableCustom { public static Meeting createNew(final CalendarInstance calendarInstance, final Date meetingDate, Boolean isTransactionDateOnNonMeetingDate, final boolean isSkipRepaymentOnFirstMonth, final int numberOfDays) { - - if (!isTransactionDateOnNonMeetingDate && !isValidMeetingDate(calendarInstance, meetingDate,isSkipRepaymentOnFirstMonth, numberOfDays)) + + if (!isTransactionDateOnNonMeetingDate && !isValidMeetingDate(calendarInstance, meetingDate,isSkipRepaymentOnFirstMonth, numberOfDays)) { throw new NotValidRecurringDateException("meeting", "The date '" + meetingDate + "' is not a valid meeting date.", meetingDate); } return new Meeting(calendarInstance, meetingDate); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/MeetingRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/MeetingRepositoryWrapper.java index 09fa6572d..db13f5df3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/MeetingRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/MeetingRepositoryWrapper.java @@ -28,7 +28,7 @@ import org.springframework.stereotype.Service; * {@link Meeting} is returned when using findOne repository method * and throwing an appropriate not found exception. *

            - * + * *

            * This is to avoid need for checking and throwing in multiple areas of code * base where {@link MeetingRepository} is required. diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/service/MeetingWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/service/MeetingWritePlatformServiceJpaRepositoryImpl.java index 83b90c828..64aa8ac88 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/service/MeetingWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/service/MeetingWritePlatformServiceJpaRepositoryImpl.java @@ -105,7 +105,7 @@ public class MeetingWritePlatformServiceJpaRepositoryImpl implements MeetingWrit boolean isSkipRepaymentOnFirstMonthEnabled = configurationDomainService.isSkippingMeetingOnFirstDayOfMonthEnabled(); if(isSkipRepaymentOnFirstMonthEnabled){ isSkipRepaymentOnFirstMonth = isLoanRepaymentsSyncWithMeeting(loan.group(), calendar); - if(isSkipRepaymentOnFirstMonth) { numberOfDays = configurationDomainService.retreivePeroidInNumberOfDaysForSkipMeetingDate().intValue(); } + if(isSkipRepaymentOnFirstMonth) { numberOfDays = configurationDomainService.retreivePeroidInNumberOfDaysForSkipMeetingDate().intValue(); } }*/ try { @@ -116,7 +116,7 @@ public class MeetingWritePlatformServiceJpaRepositoryImpl implements MeetingWrit boolean isSkipRepaymentOnFirstMonthEnabled = configurationDomainService.isSkippingMeetingOnFirstDayOfMonthEnabled(); if(isSkipRepaymentOnFirstMonthEnabled){ if(calendarInstance != null){isSkipRepaymentOnFirstMonth = true;} - if(isSkipRepaymentOnFirstMonth) { numberOfDays = configurationDomainService.retreivePeroidInNumberOfDaysForSkipMeetingDate().intValue(); } + if(isSkipRepaymentOnFirstMonth) { numberOfDays = configurationDomainService.retreivePeroidInNumberOfDaysForSkipMeetingDate().intValue(); } } final Meeting newMeeting = Meeting.createNew(calendarInstance, meetingDate, isTransactionDateOnNonMeetingDate, isSkipRepaymentOnFirstMonth, numberOfDays); @@ -232,12 +232,12 @@ public class MeetingWritePlatformServiceJpaRepositoryImpl implements MeetingWrit @Override public CommandProcessingResult updateMeeting(final JsonCommand command) { this.meetingDataValidator.validateForUpdate(command); - + final CalendarInstance calendarInstance = getCalendarInstance(command); - + // create new meeting Boolean isSkipRepaymentOnFirstMonth = false; - + Integer numberOfDays = 0; boolean isSkipRepaymentOnFirstMonthEnabled = configurationDomainService .isSkippingMeetingOnFirstDayOfMonthEnabled(); @@ -312,7 +312,7 @@ public class MeetingWritePlatformServiceJpaRepositoryImpl implements MeetingWrit try { final CalendarInstance calendarInstance = getCalendarInstance(command); - + final Meeting meeting = this.meetingRepository .findByCalendarInstanceIdAndMeetingDate(calendarInstance.getId(), meetingDate); Boolean isSkipRepaymentOnFirstMonth = false; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/Note.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/Note.java index 02bf69ef6..c6d3cecc5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/Note.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/Note.java @@ -72,12 +72,12 @@ public class Note extends AbstractAuditableCustom { @ManyToOne @JoinColumn(name = "savings_account_transaction_id", nullable = true) private SavingsAccountTransaction savingsTransaction; - + @ManyToOne @JoinColumn(name = "share_account_id", nullable = true) private ShareAccount shareAccount; - - + + public static Note clientNoteFromJson(final Client client, final JsonCommand command) { final String note = command.stringValueOfParameterNamed("note"); return new Note(client, note); @@ -104,7 +104,7 @@ public class Note extends AbstractAuditableCustom { final String note) { return new Note(savingsAccount, savingsTransaction, note); } - + private Note(final SavingsAccount savingsAccount, final SavingsAccountTransaction savingsTransaction, final String note) { this.savingsAccount = savingsAccount; this.savingsTransaction = savingsTransaction; @@ -112,11 +112,11 @@ public class Note extends AbstractAuditableCustom { this.note = note; this.noteTypeId = NoteType.SAVINGS_TRANSACTION.getValue(); } - + public static Note shareNote(final ShareAccount account, final String note) { return new Note(account, note); } - + public Note(final Client client, final String note) { this.client = client; this.note = note; @@ -167,7 +167,7 @@ public class Note extends AbstractAuditableCustom { this.note = note; this.noteTypeId = NoteType.SHARE_ACCOUNT.getValue(); } - + public Map update(final JsonCommand command) { final Map actualChanges = new LinkedHashMap<>(7); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/NoteType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/NoteType.java index b27bf091d..ed61bcf95 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/NoteType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/NoteType.java @@ -30,7 +30,7 @@ public enum NoteType { GROUP(600, "noteType.group", "groups"), SHARE_ACCOUNT(700, "noteType.shares", "accounts/share"), SAVINGS_TRANSACTION(800, "noteType.savings.transaction", "savingsTransactions"); - + private Integer value; private String code; private String apiUrl; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java index 311476f19..92a663d49 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java @@ -98,5 +98,5 @@ public class PaymentType extends AbstractPersistableCustom { public Boolean isCashPayment() { return isCashPayment; } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentTypeRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentTypeRepositoryWrapper.java index b1d0f0599..6b03bdb71 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentTypeRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentTypeRepositoryWrapper.java @@ -24,7 +24,7 @@ import org.springframework.stereotype.Service; @Service public class PaymentTypeRepositoryWrapper { - + private final PaymentTypeRepository repository; @Autowired diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/exception/PaymentTypeNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/exception/PaymentTypeNotFoundException.java index 3e0a82918..e9d2c5bff 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/exception/PaymentTypeNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/exception/PaymentTypeNotFoundException.java @@ -26,7 +26,7 @@ public class PaymentTypeNotFoundException extends AbstractPlatformResourceNotFou public PaymentTypeNotFoundException(final Long id) { super("error.msg.payment.type.invalid", "PaymentType with " + id + " does not exist", id); } -} - +} + diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/api/ProductsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/api/ProductsApiResource.java index 62804507e..8e293b077 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/api/ProductsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/api/ProductsApiResource.java @@ -76,7 +76,7 @@ public class ProductsApiResource { ProductReadPlatformService service = (ProductReadPlatformService) this.applicationContext.getBean(serviceName); ProductData data = service.retrieveTemplate(); final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); - return this.toApiJsonSerializer.serialize(settings, data, service.getResponseDataParams()); + return this.toApiJsonSerializer.serialize(settings, data, service.getResponseDataParams()); }catch(BeansException e) { throw new ResourceNotFoundException() ; } @@ -113,7 +113,7 @@ public class ProductsApiResource { ProductReadPlatformService service = (ProductReadPlatformService) this.applicationContext.getBean(serviceName); Page data = service.retrieveAllProducts(offset, limit); final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); - return this.toApiJsonSerializer.serialize(settings, data, service.getResponseDataParams()); + return this.toApiJsonSerializer.serialize(settings, data, service.getResponseDataParams()); }catch(BeansException e) { throw new ResourceNotFoundException(); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/constants/ProductsApiConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/constants/ProductsApiConstants.java index 58a90d027..2e808bba6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/constants/ProductsApiConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/constants/ProductsApiConstants.java @@ -23,5 +23,5 @@ public interface ProductsApiConstants { public final String READPLATFORM_NAME = "ReadPlatformService" ; public final String PRODUCT_COMMANDSERVICE = "PRODUCT_COMMANDSERVICE" ; - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/service/ProductReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/service/ProductReadPlatformService.java index e0ae46a18..e7fdcb034 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/service/ProductReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/service/ProductReadPlatformService.java @@ -33,6 +33,6 @@ public interface ProductReadPlatformService { public ProductData retrieveTemplate(); public Set getResponseDataParams(); - + public Collection retrieveAllForLookup() ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsAccountTransactionType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsAccountTransactionType.java index d80d1183a..18038330a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsAccountTransactionType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsAccountTransactionType.java @@ -140,7 +140,7 @@ public enum SavingsAccountTransactionType { public boolean isOverDraftInterestPosting() { return this.value.equals(SavingsAccountTransactionType.OVERDRAFT_INTEREST.getValue()); } - + public boolean isWithHoldTax() { return this.value.equals(SavingsAccountTransactionType.WITHHOLD_TAX.getValue()); } @@ -196,7 +196,7 @@ public enum SavingsAccountTransactionType { public boolean isEscheat() { return this.value.equals(SavingsAccountTransactionType.ESCHEAT.getValue()); } - + public boolean isAmountOnHold() { return this.value.equals(SavingsAccountTransactionType.AMOUNT_HOLD.getValue()); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsApiConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsApiConstants.java index 1140c4daf..97eec3639 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsApiConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsApiConstants.java @@ -177,7 +177,7 @@ public class SavingsApiConstants { public static final String onHoldTransactionTypeParamName = "transactionType"; public static final String onHoldTransactionDateParamName = "transactionDate"; public static final String onHoldReversedParamName = "reversed"; - + // Savings Dormancy public static final String isDormancyTrackingActiveParamName = "isDormancyTrackingActive"; public static final String daysToInactiveParamName = "daysToInactive"; @@ -185,6 +185,6 @@ public class SavingsApiConstants { public static final String daysToEscheatParamName = "daysToEscheat"; public static final String datatables = "datatables"; - + public static final String ERROR_MSG_SAVINGS_ACCOUNT_NOT_ACTIVE = "not.in.active.state"; } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsInterestCalculationDaysInYearType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsInterestCalculationDaysInYearType.java index e9ec9b150..439814967 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsInterestCalculationDaysInYearType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsInterestCalculationDaysInYearType.java @@ -22,7 +22,7 @@ import java.util.ArrayList; import java.util.List; /** - * + * * People typically use either of the following settings when calculating there * interest using the daily method: *

              diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsInterestCalculationType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsInterestCalculationType.java index 922e519a6..0b9f24388 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsInterestCalculationType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsInterestCalculationType.java @@ -22,13 +22,13 @@ import java.util.ArrayList; import java.util.List; /** - * + * * There are two methods to calculate the interest on a savings account: *
                *
              • The daily balance method; and
              • *
              • The average daily balance method.
              • *
              - * + * *

              * The interest calculation must be based on a point in time for determining the * balance in the account, such as: @@ -38,7 +38,7 @@ import java.util.List; *

            • end-of-day balance
            • *
            • close-of-business-day balance
            • *
            - * + * *

            * Any one of the three may be used, but must be applied consistently. * End-of-day balance is used by default at present. diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/FixedDepositAccountsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/FixedDepositAccountsApiResource.java index f1ad367f2..ca50378e2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/FixedDepositAccountsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/FixedDepositAccountsApiResource.java @@ -204,7 +204,7 @@ public class FixedDepositAccountsApiResource { final FixedDepositAccountData account = (FixedDepositAccountData) this.depositAccountReadPlatformService.retrieveOneWithChartSlabs( DepositAccountType.FIXED_DEPOSIT, accountId); - + final Set mandatoryResponseParameters = new HashSet<>(); final FixedDepositAccountData accountTemplate = populateTemplateAndAssociations(accountId, account, staffInSelectedOfficeOnly, chargeStatus, uriInfo, mandatoryResponseParameters); @@ -214,7 +214,7 @@ public class FixedDepositAccountsApiResource { return this.toApiJsonSerializer.serialize(settings, accountTemplate, DepositsApiConstants.FIXED_DEPOSIT_ACCOUNT_RESPONSE_DATA_PARAMETERS); } - + private BigDecimal getActivationCharge(Long accountId){ BigDecimal activationCharge = BigDecimal.ZERO; Collection savingCharges = this.savingsAccountChargeReadPlatformService.retrieveSavingsAccountCharges(accountId, "active"); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsAccountTransactionsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsAccountTransactionsApiResource.java index a50a08396..835f9a76c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsAccountTransactionsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsAccountTransactionsApiResource.java @@ -91,8 +91,8 @@ public class SavingsAccountTransactionsApiResource { @Produces({ MediaType.APPLICATION_JSON }) public String retrieveTemplate(@PathParam("savingsId") final Long savingsId, // @QueryParam("command") final String commandParam, - @Context final UriInfo uriInfo) { - + @Context final UriInfo uriInfo) { + this.context.authenticatedUser().validateHasReadPermission(SavingsApiConstants.SAVINGS_ACCOUNT_RESOURCE_NAME); // FIXME - KW - for now just send back generic default information for diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountDataValidator.java index d793f1536..dc1776d85 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountDataValidator.java @@ -136,7 +136,7 @@ public class DepositAccountDataValidator { validateRecurringDetailForSubmit(element, baseDataValidator); validateSavingsCharges(element, baseDataValidator); validateWithHoldTax(element, baseDataValidator); - + throwExceptionIfValidationWarningsExist(dataValidationErrors); } @@ -690,7 +690,7 @@ public class DepositAccountDataValidator { } } } - + private void validateWithHoldTax(final JsonElement element, final DataValidatorBuilder baseDataValidator){ if (this.fromApiJsonHelper.parameterExists(withHoldTaxParamName, element)) { final String withHoldTax = this.fromApiJsonHelper.extractStringNamed(withHoldTaxParamName, element); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositProductData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositProductData.java index bca51268c..5d70ce9ac 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositProductData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositProductData.java @@ -147,7 +147,7 @@ public class DepositProductData { /** * Returns a {@link DepositProductData} that contains and exist * {@link DepositProductData} data with further template data for dropdowns. - * + * * @param taxGroupOptions * TODO */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositProductDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositProductDataValidator.java index 19b65e2e8..3d6138e65 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositProductDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositProductDataValidator.java @@ -335,7 +335,7 @@ public class DepositProductDataValidator { validatePaymentChannelFundSourceMappings(fromApiJsonHelper, baseDataValidator, element); validateChargeToIncomeAccountMappings(fromApiJsonHelper, baseDataValidator, element); } - + validateTaxWithHoldingParams(baseDataValidator, element, true); } @@ -783,7 +783,7 @@ public class DepositProductDataValidator { } } } - + private void validateTaxWithHoldingParams(final DataValidatorBuilder baseDataValidator, final JsonElement element, final boolean isCreate) { if (this.fromApiJsonHelper.parameterExists(withHoldTaxParamName, element)) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositAccountData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositAccountData.java index 251e6b122..dfb8b4e48 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositAccountData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositAccountData.java @@ -514,12 +514,12 @@ public class FixedDepositAccountData extends DepositAccountData { return new HashCodeBuilder(17, 37).append(this.id).append(this.accountNo).toHashCode(); } - + public BigDecimal getActivationCharge() { return this.activationCharge; } - + public void setActivationCharge(BigDecimal activationCharge) { this.activationCharge = activationCharge; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositProductData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositProductData.java index 31a67cade..5a87b7597 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositProductData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositProductData.java @@ -139,7 +139,7 @@ public class FixedDepositProductData extends DepositProductData { * Returns a {@link FixedDepositProductData} that contains and exist * {@link FixedDepositProductData} data with further template data for * dropdowns. - * + * * @param taxGroupOptions * TODO */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositProductData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositProductData.java index e3b1b13a7..fb9f28feb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositProductData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositProductData.java @@ -147,7 +147,7 @@ public class RecurringDepositProductData extends DepositProductData { * Returns a {@link RecurringDepositProductData} that contains and exist * {@link RecurringDepositProductData} data with further template data for * dropdowns. - * + * * @param taxGroupOptions * TODO */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountChargeData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountChargeData.java index 88be5c7f6..ba4a39b5a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountChargeData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountChargeData.java @@ -184,14 +184,14 @@ public class SavingsAccountChargeData implements Serializable { public boolean isAnnualFee() { return ChargeTimeType.fromInt(this.chargeTimeType.getId().intValue()).isAnnualFee(); } - + public boolean isSavingsActivation() { return ChargeTimeType.fromInt(this.chargeTimeType.getId().intValue()).isSavingsActivation(); } public BigDecimal getAmountOutstanding() { return this.amountOutstanding; - } - - + } + + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java index 4d9acde15..1e4ebd1cf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java @@ -332,8 +332,8 @@ public class SavingsAccountData implements Serializable { final BigDecimal overdraftLimit, final BigDecimal minRequiredBalance, final boolean enforceMinRequiredBalance, final BigDecimal minBalanceForInterestCalculation, final BigDecimal onHoldFunds, final BigDecimal nominalAnnualInterestRateOverdraft, - final BigDecimal minOverdraftForInterestCalculation, final boolean withHoldTax, final TaxGroupData taxGroup, - final LocalDate lastActiveTransactionDate, final boolean isDormancyTrackingActive, final Integer daysToInactive, + final BigDecimal minOverdraftForInterestCalculation, final boolean withHoldTax, final TaxGroupData taxGroup, + final LocalDate lastActiveTransactionDate, final boolean isDormancyTrackingActive, final Integer daysToInactive, final Integer daysToDormancy, final Integer daysToEscheat, final BigDecimal savingsAmountOnHold) { final Collection productOptions = null; @@ -357,7 +357,7 @@ public class SavingsAccountData implements Serializable { interestPostingPeriodTypeOptions, interestCalculationTypeOptions, interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions, withdrawalFeeTypeOptions, charges, chargeOptions, allowOverdraft, overdraftLimit, minRequiredBalance, enforceMinRequiredBalance, minBalanceForInterestCalculation, onHoldFunds, - nominalAnnualInterestRateOverdraft, minOverdraftForInterestCalculation, withHoldTax, taxGroup, + nominalAnnualInterestRateOverdraft, minOverdraftForInterestCalculation, withHoldTax, taxGroup, lastActiveTransactionDate, isDormancyTrackingActive, daysToInactive, daysToDormancy, daysToEscheat, savingsAmountOnHold); } @@ -430,7 +430,7 @@ public class SavingsAccountData implements Serializable { interestPostingPeriodTypeOptions, interestCalculationTypeOptions, interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions, withdrawalFeeTypeOptions, charges, chargeOptions, allowOverdraft, overdraftLimit, minRequiredBalance, enforceMinRequiredBalance, minBalanceForInterestCalculation, onHoldFunds, - nominalAnnualInterestRateOverdraft, minOverdraftForInterestCalculation, withHoldTax, taxGroup, + nominalAnnualInterestRateOverdraft, minOverdraftForInterestCalculation, withHoldTax, taxGroup, lastActiveTransactionDate, isDormancyTrackingActive, daysToInactive, daysToDormancy, daysToEscheat, savingsAmountOnHold); } @@ -501,7 +501,7 @@ public class SavingsAccountData implements Serializable { interestPostingPeriodTypeOptions, interestCalculationTypeOptions, interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions, withdrawalFeeTypeOptions, charges, chargeOptions, allowOverdraft, overdraftLimit, minRequiredBalance, enforceMinRequiredBalance, minBalanceForInterestCalculation, onHoldFunds, - nominalAnnualInterestRateOverdraft, minOverdraftForInterestCalculation, withHoldTax, taxGroup, + nominalAnnualInterestRateOverdraft, minOverdraftForInterestCalculation, withHoldTax, taxGroup, lastActiveTransactionDate, isDormancyTrackingActive, daysToInactive, daysToDormancy, daysToEscheat, savingsAmountOnHold); } @@ -536,8 +536,8 @@ public class SavingsAccountData implements Serializable { template.lockinPeriodFrequencyTypeOptions, template.withdrawalFeeTypeOptions, charges, template.chargeOptions, account.allowOverdraft, account.overdraftLimit, account.minRequiredBalance, account.enforceMinRequiredBalance, account.minBalanceForInterestCalculation, account.onHoldFunds, account.nominalAnnualInterestRateOverdraft, - account.minOverdraftForInterestCalculation, account.withHoldTax, account.taxGroup, - account.lastActiveTransactionDate, account.isDormancyTrackingActive, account.daysToInactive, + account.minOverdraftForInterestCalculation, account.withHoldTax, account.taxGroup, + account.lastActiveTransactionDate, account.isDormancyTrackingActive, account.daysToInactive, account.daysToDormancy, account.daysToEscheat, account.savingsAmountOnHold); } @@ -562,7 +562,7 @@ public class SavingsAccountData implements Serializable { lockinPeriodFrequencyTypeOptions, withdrawalFeeTypeOptions, charges, chargeOptions, account.allowOverdraft, account.overdraftLimit, account.minRequiredBalance, account.enforceMinRequiredBalance, account.minBalanceForInterestCalculation, account.onHoldFunds, account.nominalAnnualInterestRateOverdraft, - account.minOverdraftForInterestCalculation, account.withHoldTax, account.taxGroup, account.lastActiveTransactionDate, + account.minOverdraftForInterestCalculation, account.withHoldTax, account.taxGroup, account.lastActiveTransactionDate, account.isDormancyTrackingActive, account.daysToInactive, account.daysToDormancy, account.daysToEscheat, account.savingsAmountOnHold); } @@ -635,7 +635,7 @@ public class SavingsAccountData implements Serializable { interestPostingPeriodTypeOptions, interestCalculationTypeOptions, interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions, withdrawalFeeTypeOptions, charges, chargeOptions, allowOverdraft, overdraftLimit, minRequiredBalance, enforceMinRequiredBalance, minBalanceForInterestCalculation, onHoldFunds, - nominalAnnualInterestRateOverdraft, minOverdraftForInterestCalculation, withHoldTax, taxGroup, + nominalAnnualInterestRateOverdraft, minOverdraftForInterestCalculation, withHoldTax, taxGroup, lastActiveTransactionDate, isDormancyTrackingActive, daysToInactive, daysToDormancy, daysToEscheat, savingsAmountOnHold); } @@ -658,8 +658,8 @@ public class SavingsAccountData implements Serializable { final boolean allowOverdraft, final BigDecimal overdraftLimit, final BigDecimal minRequiredBalance, final boolean enforceMinRequiredBalance, final BigDecimal minBalanceForInterestCalculation, final BigDecimal onHoldFunds, final BigDecimal nominalAnnualInterestRateOverdraft, - final BigDecimal minOverdraftForInterestCalculation, final boolean withHoldTax, final TaxGroupData taxGroup, - final LocalDate lastActiveTransactionDate, final boolean isDormancyTrackingActive, final Integer daysToInactive, + final BigDecimal minOverdraftForInterestCalculation, final boolean withHoldTax, final TaxGroupData taxGroup, + final LocalDate lastActiveTransactionDate, final boolean isDormancyTrackingActive, final Integer daysToInactive, final Integer daysToDormancy, final Integer daysToEscheat, final BigDecimal savingsAmountOnHold) { this.id = id; this.accountNo = accountNo; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataValidator.java index 88ddb229e..149bcb0d0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataValidator.java @@ -208,7 +208,7 @@ public class SavingsAccountDataValidator { baseDataValidator.reset().parameter(withdrawalFeeForTransfersParamName).value(isWithdrawalFeeApplicableForTransfers) .ignoreIfNull().validateForBooleanValue(); } - + if (this.fromApiJsonHelper.parameterExists(withHoldTaxParamName, element)) { final String withHoldTax = this.fromApiJsonHelper.extractStringNamed(withHoldTaxParamName, element); baseDataValidator.reset().parameter(withHoldTaxParamName).value(withHoldTax).ignoreIfNull().validateForBooleanValue(); @@ -398,7 +398,7 @@ public class SavingsAccountDataValidator { baseDataValidator.reset().parameter(withdrawalFeeForTransfersParamName).value(isWithdrawalFeeApplicableForTransfers) .ignoreIfNull().validateForBooleanValue(); } - + if (this.fromApiJsonHelper.parameterExists(withHoldTaxParamName, element)) { final String withHoldTax = this.fromApiJsonHelper.extractStringNamed(withHoldTaxParamName, element); baseDataValidator.reset().parameter(withHoldTaxParamName).value(withHoldTax).ignoreIfNull().validateForBooleanValue(); @@ -438,7 +438,7 @@ public class SavingsAccountDataValidator { public void validateForAssignSavingsOfficer(final String json) { if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); } - + final Set supportedParameters = new HashSet<>(Arrays.asList("fromSavingsOfficerId","toSavingsOfficerId","assignmentDate","locale","dateFormat")); final Type typeOfMap = new TypeToken>() {}.getType(); @@ -460,13 +460,13 @@ public class SavingsAccountDataValidator { baseDataValidator.reset().parameter("assignmentDate").value(assignmentDate).notNull(); } if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", - "Validation errors exist.", dataValidationErrors); } + "Validation errors exist.", dataValidationErrors); } } public void validateForUnAssignSavingsOfficer(final String json) { if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); } - + final Set supportedParameters = new HashSet<>(Arrays.asList("unassignedDate","locale","dateFormat")); final Type typeOfMap = new TypeToken>() {}.getType(); @@ -485,6 +485,6 @@ public class SavingsAccountDataValidator { baseDataValidator.reset().parameter("unassignedDate").value(unassignedDate).notNull(); } if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", - "Validation errors exist.", dataValidationErrors); } + "Validation errors exist.", dataValidationErrors); } } } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDTO.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDTO.java index 4b3da56f8..2b040f190 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDTO.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDTO.java @@ -51,7 +51,7 @@ public class SavingsAccountTransactionDTO { /** * This constructor is used for bulk deposit transactions - * + * * @param formatter * @param transactionDate * @param transactionAmount @@ -102,6 +102,6 @@ public class SavingsAccountTransactionDTO { public Integer getAccountType() { return this.depositAccountType; } - - + + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionData.java index c3210bc1c..2c16087a3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionData.java @@ -54,7 +54,7 @@ public class SavingsAccountTransactionData implements Serializable { private final boolean interestedPostedAsOn; private final String submittedByUsername; private final String note ; - + // templates final Collection paymentTypeOptions; @@ -170,7 +170,7 @@ public class SavingsAccountTransactionData implements Serializable { savingsAccountTransactionData.paymentDetailData, savingsAccountTransactionData.accountId, savingsAccountTransactionData.accountNo, savingsAccountTransactionData.date, savingsAccountTransactionData.currency, savingsAccountTransactionData.amount,savingsAccountTransactionData.outstandingChargeAmount, savingsAccountTransactionData.runningBalance, savingsAccountTransactionData.reversed, - savingsAccountTransactionData.transfer, paymentTypeOptions, savingsAccountTransactionData.interestedPostedAsOn, + savingsAccountTransactionData.transfer, paymentTypeOptions, savingsAccountTransactionData.interestedPostedAsOn, savingsAccountTransactionData.submittedByUsername, savingsAccountTransactionData.note); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDataValidator.java index 7e660c4f5..09335a6c7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDataValidator.java @@ -150,7 +150,7 @@ public class SavingsAccountTransactionDataValidator { baseDataValidator.reset().failWithCodeNoParameterAddedToErrorCode( "amount.is.on.hold.release.the.amount.to.continue", account.getId()); } - + validatePaymentTypeDetails(baseDataValidator, element); throwExceptionIfValidationWarningsExist(dataValidationErrors); @@ -176,7 +176,7 @@ public class SavingsAccountTransactionDataValidator { } } - + public SavingsAccountTransaction validateHoldAndAssembleForm(final String json, final SavingsAccount account, final AppUser createdUser) { if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); } @@ -194,7 +194,7 @@ public class SavingsAccountTransactionDataValidator { final LocalDate transactionDate = this.fromApiJsonHelper.extractLocalDateNamed(transactionDateParamName, element); baseDataValidator.reset().parameter(transactionDateParamName).value(transactionDate).notNull(); boolean isActive = account.isActive(); - + if (!isActive) { baseDataValidator.reset().parameter(SavingsApiConstants.statusParamName) .failWithCodeNoParameterAddedToErrorCode(SavingsApiConstants.ERROR_MSG_SAVINGS_ACCOUNT_NOT_ACTIVE); @@ -213,7 +213,7 @@ public class SavingsAccountTransactionDataValidator { throwExceptionIfValidationWarningsExist(dataValidationErrors); final PaymentDetail paymentDetails = null; Date createdDate = new Date(); - + SavingsAccountTransaction transaction = SavingsAccountTransaction.holdAmount(account, account.office(), paymentDetails, transactionDate, Money.of(account.getCurrency(), amount), createdDate, createdUser); return transaction; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionEnumData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionEnumData.java index da46a244f..af1ce9e98 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionEnumData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionEnumData.java @@ -137,15 +137,15 @@ public class SavingsAccountTransactionEnumData implements Serializable { public boolean isWithholdTax() { return this.withholdTax; } - + public boolean isDividendPayout() { return this.dividendPayout; } - + public boolean isEscheat() { return this.escheat; } - + public boolean isAmountOnHold() { return this.amountHold; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java index 6ed3d5bd4..ffba753c1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java @@ -158,14 +158,14 @@ public class SavingsProductData implements Serializable { product.feeToIncomeAccountMappings, product.penaltyToIncomeAccountMappings, product.allowOverdraft, product.overdraftLimit, product.minRequiredBalance, product.enforceMinRequiredBalance, product.minBalanceForInterestCalculation, product.nominalAnnualInterestRateOverdraft, product.minOverdraftForInterestCalculation, product.withHoldTax, - product.taxGroup, product.taxGroupOptions, product.isDormancyTrackingActive, product.daysToInactive, + product.taxGroup, product.taxGroupOptions, product.isDormancyTrackingActive, product.daysToInactive, product.daysToDormancy, product.daysToEscheat); } /** * Returns a {@link SavingsProductData} that contains and exist * {@link SavingsProductData} data with further template data for dropdowns. - * + * * @param taxGroupOptions * TODO */ @@ -192,7 +192,7 @@ public class SavingsProductData implements Serializable { existingProduct.feeToIncomeAccountMappings, existingProduct.penaltyToIncomeAccountMappings, existingProduct.allowOverdraft, existingProduct.overdraftLimit, existingProduct.minRequiredBalance, existingProduct.enforceMinRequiredBalance, existingProduct.minBalanceForInterestCalculation, existingProduct.nominalAnnualInterestRateOverdraft, - existingProduct.minOverdraftForInterestCalculation, existingProduct.withHoldTax, existingProduct.taxGroup, taxGroupOptions, + existingProduct.minOverdraftForInterestCalculation, existingProduct.withHoldTax, existingProduct.taxGroup, taxGroupOptions, existingProduct.isDormancyTrackingActive, existingProduct.daysToInactive, existingProduct.daysToDormancy, existingProduct.daysToEscheat); } @@ -229,7 +229,7 @@ public class SavingsProductData implements Serializable { existingProduct.minRequiredBalance, existingProduct.enforceMinRequiredBalance, existingProduct.minBalanceForInterestCalculation, existingProduct.nominalAnnualInterestRateOverdraft, existingProduct.minOverdraftForInterestCalculation, existingProduct.withHoldTax, existingProduct.taxGroup, - existingProduct.taxGroupOptions, existingProduct.isDormancyTrackingActive, existingProduct.daysToInactive, + existingProduct.taxGroupOptions, existingProduct.isDormancyTrackingActive, existingProduct.daysToInactive, existingProduct.daysToDormancy, existingProduct.daysToEscheat); } @@ -241,7 +241,7 @@ public class SavingsProductData implements Serializable { final EnumOptionData accountingType, final boolean allowOverdraft, final BigDecimal overdraftLimit, final BigDecimal minRequiredBalance, final boolean enforceMinRequiredBalance, final BigDecimal minBalanceForInterestCalculation, final BigDecimal nominalAnnualInterestRateOverdraft, - final BigDecimal minOverdraftForInterestCalculation, final boolean withHoldTax, final TaxGroupData taxGroup, + final BigDecimal minOverdraftForInterestCalculation, final boolean withHoldTax, final TaxGroupData taxGroup, final Boolean isDormancyTrackingActive, final Long daysToInactive, final Long daysToDormancy, final Long daysToEscheat) { final Map accountingMappings = null; @@ -356,7 +356,7 @@ public class SavingsProductData implements Serializable { final BigDecimal overdraftLimit, final BigDecimal minRequiredBalance, final boolean enforceMinRequiredBalance, final BigDecimal minBalanceForInterestCalculation, final BigDecimal nominalAnnualInterestRateOverdraft, final BigDecimal minOverdraftForInterestCalculation, final boolean withHoldTax, final TaxGroupData taxGroup, - final Collection taxGroupOptions, final Boolean isDormancyTrackingActive, final Long daysToInactive, + final Collection taxGroupOptions, final Boolean isDormancyTrackingActive, final Long daysToInactive, final Long daysToDormancy, final Long daysToEscheat) { this.id = id; this.name = name; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductDataValidator.java index 182d231a0..09af11edc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductDataValidator.java @@ -214,21 +214,21 @@ public class SavingsProductDataValidator { * if * (this.fromApiJsonHelper.parameterExists(withdrawalFeeAmountParamName, * element)) { - * + * * final BigDecimal withdrawalFeeAmount = * this.fromApiJsonHelper.extractBigDecimalWithLocaleNamed * (withdrawalFeeAmountParamName, element); * baseDataValidator.reset().parameter * (withdrawalFeeAmountParamName).value * (withdrawalFeeAmount).zeroOrPositiveAmount(); - * + * * if (withdrawalFeeAmount != null) { final Integer withdrawalFeeType = * this.fromApiJsonHelper.extractIntegerSansLocaleNamed( * withdrawalFeeTypeParamName, element); * baseDataValidator.reset().parameter * (withdrawalFeeTypeParamName).value(withdrawalFeeType) * .isOneOfTheseValues(SavingsWithdrawalFeesType.integerValues()); } } - * + * * if * (this.fromApiJsonHelper.parameterExists(withdrawalFeeTypeParamName, * element)) { final Integer withdrawalFeeType = @@ -237,7 +237,7 @@ public class SavingsProductDataValidator { * baseDataValidator.reset().parameter * (withdrawalFeeTypeParamName).value(withdrawalFeeType).ignoreIfNull() * .isOneOfTheseValues(1, 2); - * + * * if (withdrawalFeeType != null) { final BigDecimal withdrawalFeeAmount * = this.fromApiJsonHelper.extractBigDecimalWithLocaleNamed( * withdrawalFeeAmountParamName, element); @@ -270,10 +270,10 @@ public class SavingsProductDataValidator { baseDataValidator.reset().parameter(feeAmountParamName).value(annualFeeAmount).notNull().zeroOrPositiveAmount(); } } - + //dormancy final Boolean isDormancyActive = this.fromApiJsonHelper.extractBooleanNamed(isDormancyTrackingActiveParamName, element); - + if(null != isDormancyActive && isDormancyActive){ final Long daysToInact = this.fromApiJsonHelper.extractLongNamed(daysToInactiveParamName, element); baseDataValidator.reset().parameter(daysToInactiveParamName).value(daysToInact).notNull().longGreaterThanZero(); @@ -342,7 +342,7 @@ public class SavingsProductDataValidator { SAVINGS_PRODUCT_ACCOUNTING_PARAMS.LOSSES_WRITTEN_OFF.getValue(), element); baseDataValidator.reset().parameter(SAVINGS_PRODUCT_ACCOUNTING_PARAMS.LOSSES_WRITTEN_OFF.getValue()).value(writtenoff) .notNull().integerGreaterThanZero(); - + if(null != isDormancyActive && isDormancyActive){ final Long escheatLiabilityAccountId = this.fromApiJsonHelper.extractLongNamed( SAVINGS_PRODUCT_ACCOUNTING_PARAMS.ESCHEAT_LIABILITY.getValue(), element); @@ -523,7 +523,7 @@ public class SavingsProductDataValidator { final Boolean isDormancyActive = this.fromApiJsonHelper.parameterExists(isDormancyTrackingActiveParamName, element)? this.fromApiJsonHelper.extractBooleanNamed(isDormancyTrackingActiveParamName, element): product.isDormancyTrackingActive(); - + if(null != isDormancyActive && isDormancyActive){ final Long daysToInact = this.fromApiJsonHelper.parameterExists(daysToInactiveParamName, element)? this.fromApiJsonHelper.extractLongNamed(daysToInactiveParamName, element): diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountAssembler.java index ee2025472..9656b5837 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountAssembler.java @@ -170,7 +170,7 @@ public class DepositAccountAssembler { } if (product == null) { throw new SavingsProductNotFoundException(productId); } - + Client client = null; Group group = null; @@ -292,7 +292,7 @@ public class DepositAccountAssembler { if (productChart != null) { accountChart = DepositAccountInterestRateChart.from(productChart); } - + boolean withHoldTax = product.withHoldTax(); if (command.parameterExists(withHoldTaxParamName)) { withHoldTax = command.booleanPrimitiveValueOfParameterNamed(withHoldTaxParamName); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainService.java index f97ed49ef..f69cf18cb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainService.java @@ -37,7 +37,7 @@ public interface DepositAccountDomainService { SavingsAccountTransaction handleRDDeposit(RecurringDepositAccount account, DateTimeFormatter fmt, LocalDate transactionDate, BigDecimal transactionAmount, PaymentDetail paymentDetail, boolean isRegularTransaction); - + SavingsAccountTransaction handleSavingDeposit(SavingsAccount account, DateTimeFormatter fmt, LocalDate transactionDate, BigDecimal transactionAmount, PaymentDetail paymentDetail, boolean isRegularTransaction); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainServiceJpa.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainServiceJpa.java index 0b364f3f2..4b2f07da8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainServiceJpa.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainServiceJpa.java @@ -163,7 +163,7 @@ public class DepositAccountDomainServiceJpa implements DepositAccountDomainServi } return deposit; } - + @Transactional @Override public SavingsAccountTransaction handleSavingDeposit(final SavingsAccount account, final DateTimeFormatter fmt, @@ -247,7 +247,7 @@ public class DepositAccountDomainServiceJpa implements DepositAccountDomainServi null, null, null, AccountTransferType.ACCOUNT_TRANSFER.getValue(), null, null, null, null, toSavingsAccount, account, isAccountTransfer, isExceptionForBalanceCheck); this.accountTransfersWritePlatformService.transferFunds(accountTransferDTO); - updateAlreadyPostedTransactions(existingTransactionIds, account); + updateAlreadyPostedTransactions(existingTransactionIds, account); } else { final SavingsAccountTransaction withdrawal = this.handleWithdrawal(account, fmt, closedDate, account.getAccountBalance(), paymentDetail, false, isRegularTransaction); @@ -322,7 +322,7 @@ public class DepositAccountDomainServiceJpa implements DepositAccountDomainServi null, null, null, AccountTransferType.ACCOUNT_TRANSFER.getValue(), null, null, null, null, toSavingsAccount, account, isRegularTransaction, isExceptionForBalanceCheck); this.accountTransfersWritePlatformService.transferFunds(accountTransferDTO); - updateAlreadyPostedTransactions(existingTransactionIds, account); + updateAlreadyPostedTransactions(existingTransactionIds, account); } else { final SavingsAccountTransaction withdrawal = this.handleWithdrawal(account, fmt, closedDate, account.getAccountBalance(), paymentDetail, false, isRegularTransaction); @@ -394,8 +394,8 @@ public class DepositAccountDomainServiceJpa implements DepositAccountDomainServi final Locale locale = command.extractLocale(); final DateTimeFormatter fmt = DateTimeFormat.forPattern(command.dateFormat()).withLocale(locale); Long savingsTransactionId = null; - - + + // post interest account.postPreMaturityInterest(closedDate, isPreMatureClosure, isSavingsInterestPostingAtCurrentPeriodEnd, financialYearBeginningMonth); @@ -414,14 +414,14 @@ public class DepositAccountDomainServiceJpa implements DepositAccountDomainServi null, null, null, AccountTransferType.ACCOUNT_TRANSFER.getValue(), null, null, null, null, toSavingsAccount, account, isRegularTransaction, isExceptionForBalanceCheck); this.accountTransfersWritePlatformService.transferFunds(accountTransferDTO); - updateAlreadyPostedTransactions(existingTransactionIds, account); + updateAlreadyPostedTransactions(existingTransactionIds, account); } else { final SavingsAccountTransaction withdrawal = this.handleWithdrawal(account, fmt, closedDate, account.getAccountBalance(), paymentDetail, false, isRegularTransaction); savingsTransactionId = withdrawal.getId(); } - + account.prematureClosure(user, command, tenantsTodayDate, changes); this.savingsAccountRepository.save(account); @@ -471,7 +471,7 @@ public class DepositAccountDomainServiceJpa implements DepositAccountDomainServi null, null, null, AccountTransferType.ACCOUNT_TRANSFER.getValue(), null, null, null, null, toSavingsAccount, account, isRegularTransaction, isExceptionForBalanceCheck); this.accountTransfersWritePlatformService.transferFunds(accountTransferDTO); - updateAlreadyPostedTransactions(existingTransactionIds, account); + updateAlreadyPostedTransactions(existingTransactionIds, account); } else { final SavingsAccountTransaction withdrawal = this.handleWithdrawal(account, fmt, closedDate, account.getAccountBalance(), paymentDetail, false, isRegularTransaction); @@ -513,7 +513,7 @@ public class DepositAccountDomainServiceJpa implements DepositAccountDomainServi } } } - + private AppUser getAppUserIfPresent() { AppUser user = null; if (this.context != null) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountRecurringDetail.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountRecurringDetail.java index 28e1d1fdb..a7d27a3e2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountRecurringDetail.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountRecurringDetail.java @@ -67,7 +67,7 @@ public class DepositAccountRecurringDetail extends AbstractPersistableCustom postedAsOnTransactionDates= getManualPostingDates(); - + final List postingPeriodIntervals = this.savingsHelper.determineInterestPostingPeriods( accountSubmittedOrActivationDate(), maturityDate, postingPeriodType, financialYearBeginningMonth, postedAsOnTransactionDates); @@ -826,7 +826,7 @@ public class FixedDepositAccount extends SavingsAccount { public BigDecimal minBalanceForInterestCalculation() { return null; } - + @Override public void loadLazyCollections() { super.loadLazyCollections(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java index 4ad538e3e..ea978df80 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java @@ -913,7 +913,7 @@ public class RecurringDepositAccount extends SavingsAccount { /** * This method is responsible for checking if the current transaction is 'an * advance/early payment' based on the details passed through. - * + * * Default implementation is check transaction date is before installment * due date. */ @@ -1012,7 +1012,7 @@ public class RecurringDepositAccount extends SavingsAccount { /* * //final boolean recurringFrequencyBeforeDepositPeriod = * recurringFrequencyBeforeDepositPeriod(); - * + * * if (!recurringFrequencyBeforeDepositPeriod) { * baseDataValidator.reset().failWithCodeNoParameterAddedToErrorCode( * "recurring.frequency.not.before.deposit.period"); } @@ -1055,7 +1055,7 @@ public class RecurringDepositAccount extends SavingsAccount { /** * final boolean recurringFrequencyBeforeDepositPeriod = * recurringFrequencyBeforeDepositPeriod(); - * + * * if (!recurringFrequencyBeforeDepositPeriod) { * baseDataValidator.reset().failWithCodeNoParameterAddedToErrorCode( * "recurring.frequency.not.before.deposit.period"); } @@ -1129,7 +1129,7 @@ public class RecurringDepositAccount extends SavingsAccount { this.activatedOnDate = now.toDate(); } - + public void setClosedOnDate(final LocalDate closedOnDate) { this.closedOnDate = closedOnDate.toDate(); } @@ -1178,7 +1178,7 @@ public class RecurringDepositAccount extends SavingsAccount { private void addDepositScheduleInstallment(final RecurringDepositScheduleInstallment installment) { this.depositScheduleInstallments.add(installment) ; } - + public boolean isCalendarInherited() { return this.recurringDetail.isCalendarInherited(); } @@ -1218,7 +1218,7 @@ public class RecurringDepositAccount extends SavingsAccount { public DepositAccountRecurringDetail getRecurringDetail() { return this.recurringDetail; } - + class RecurringDepositScheduleInstallmentComparator implements Comparator { @Override @@ -1227,7 +1227,7 @@ public class RecurringDepositAccount extends SavingsAccount { return comparsion ; } } - + @Override public void loadLazyCollections() { this.depositScheduleInstallments.size() ; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositScheduleInstallment.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositScheduleInstallment.java index 1f6ea3b93..368f8b693 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositScheduleInstallment.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositScheduleInstallment.java @@ -74,7 +74,7 @@ public class RecurringDepositScheduleInstallment extends AbstractAuditableCustom private Date obligationsMetOnDate; /** - * + * */ protected RecurringDepositScheduleInstallment() { this.installmentNumber = null; @@ -241,7 +241,7 @@ public class RecurringDepositScheduleInstallment extends AbstractAuditableCustom this.depositAmount = newDepositAmount; this.resetDerivedFields(); } - + public Integer installmentNumber() { return this.installmentNumber ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java index a870eecef..15248d977 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java @@ -221,7 +221,7 @@ public class SavingsAccount extends AbstractPersistableCustom { /** * The interest period is the span of time at the end of which savings in a * client's account earn interest. - * + * * A value from the {@link SavingsCompoundingInterestPeriodType} * enumeration. */ @@ -240,7 +240,7 @@ public class SavingsAccount extends AbstractPersistableCustom { @Column(name = "interest_calculation_type_enum", nullable = false) protected Integer interestCalculationType; - + /** * A value from the {@link SavingsInterestCalculationDaysInYearType} * enumeration. @@ -300,7 +300,7 @@ public class SavingsAccount extends AbstractPersistableCustom { @OrderBy(value = "dateOf, createdDate, id") @OneToMany(cascade = CascadeType.ALL, mappedBy = "savingsAccount", orphanRemoval = true, fetch=FetchType.LAZY) protected List transactions = new ArrayList<>(); - + @OneToMany(cascade = CascadeType.ALL, mappedBy = "savingsAccount", orphanRemoval = true, fetch=FetchType.LAZY) protected Set charges = new HashSet<>(); @@ -495,10 +495,10 @@ public class SavingsAccount extends AbstractPersistableCustom { withholdTransactions.addAll(findWithHoldTransactions()); for (final PostingPeriod interestPostingPeriod : postingPeriods) { - + final LocalDate interestPostingTransactionDate = interestPostingPeriod.dateOfPostingTransaction(); final Money interestEarnedToBePostedForPeriod = interestPostingPeriod.getInterestEarned(); - + if (!interestPostingTransactionDate.isAfter(interestPostingUpToDate)) { interestPostedToDate = interestPostedToDate.plus(interestEarnedToBePostedForPeriod); @@ -506,7 +506,7 @@ public class SavingsAccount extends AbstractPersistableCustom { if (postingTransaction == null) { SavingsAccountTransaction newPostingTransaction; if (interestEarnedToBePostedForPeriod.isGreaterThanOrEqualTo(Money.zero(currency))) { - + newPostingTransaction = SavingsAccountTransaction.interestPosting(this, office(), interestPostingTransactionDate, interestEarnedToBePostedForPeriod, interestPostingPeriod.isUserPosting()); } else { @@ -673,22 +673,22 @@ public class SavingsAccount extends AbstractPersistableCustom { /** * All interest calculation based on END-OF-DAY-BALANCE. - * + * * Interest calculation is performed on-the-fly over all account * transactions. - * - * + * + * * 1. Calculate Interest From Beginning Of Account 1a. determine the * 'crediting' periods that exist for this savings acccount 1b. determine * the 'compounding' periods that exist within each 'crediting' period * calculate the amount of interest due at the end of each 'crediting' * period check if an existing 'interest posting' transaction exists for * date and matches the amount posted - * + * * @param isInterestTransfer * TODO - */ - + */ + public List calculateInterestUsing(final MathContext mc, final LocalDate upToInterestCalculationDate, boolean isInterestTransfer, final boolean isSavingsInterestPostingAtCurrentPeriodEnd, final Integer financialYearBeginningMonth,final LocalDate postInterestOnDate) { @@ -711,7 +711,7 @@ public class SavingsAccount extends AbstractPersistableCustom { .fromInt(this.interestCompoundingPeriodType); final SavingsInterestCalculationDaysInYearType daysInYearType = SavingsInterestCalculationDaysInYearType - .fromInt(this.interestCalculationDaysInYearType); + .fromInt(this.interestCalculationDaysInYearType); List postedAsOnDates= getManualPostingDates(); if(postInterestOnDate != null){ postedAsOnDates.add(postInterestOnDate); @@ -754,7 +754,7 @@ public class SavingsAccount extends AbstractPersistableCustom { final Money minOverdraftForInterestCalculation = Money.of(getCurrency(), this.minOverdraftForInterestCalculation); for (final LocalDateInterval periodInterval : postingPeriodIntervals) { - + boolean isUserPosting = false; if(postedAsOnDates.contains(periodInterval.endDate().plusDays(1))){ isUserPosting = true; @@ -950,7 +950,7 @@ public class SavingsAccount extends AbstractPersistableCustom { savingsAccountTransactionType); addTransaction(transaction); this.summary.updateSummary(this.currency, this.savingsAccountTransactionSummaryWrapper, this.transactions); - + if(this.sub_status.equals(SavingsAccountSubStatusEnum.INACTIVE.getValue()) || this.sub_status.equals(SavingsAccountSubStatusEnum.DORMANT.getValue())){ this.sub_status = SavingsAccountSubStatusEnum.NONE.getValue(); @@ -1132,14 +1132,14 @@ public class SavingsAccount extends AbstractPersistableCustom { lastSavingsDate = transaction.transactionLocalDate(); } - + //In overdraft cases, minRequiredBalance can be in violation after interest posting //and should be checked after processing all transactions if(isOverdraft()) { if (runningBalance.minus(minRequiredBalance).isLessThanZero()) { throw new InsufficientAccountBalanceException( "transactionAmount", getAccountBalance(), withdrawalFee, transactionAmount); } } - + if (this.getSavingsHoldAmount().compareTo(BigDecimal.ZERO) == 1) { if (runningBalance.minus(this.getSavingsHoldAmount()).isLessThanZero()) { throw new InsufficientAccountBalanceException("transactionAmount", getAccountBalance(), withdrawalFee, @@ -1198,7 +1198,7 @@ public class SavingsAccount extends AbstractPersistableCustom { lastSavingsDate = transaction.transactionLocalDate(); } - + BigDecimal withdrawalFee = null; BigDecimal transactionAmount = null; if(isOverdraft()) { @@ -2361,7 +2361,7 @@ public class SavingsAccount extends AbstractPersistableCustom { public void addTransaction(final SavingsAccountTransaction transaction) { this.transactions.add(transaction); } - + public void setStatus(final Integer status) { this.status = status; } @@ -2888,7 +2888,7 @@ public class SavingsAccount extends AbstractPersistableCustom { recalculateDailyBalances(Money.zero(this.currency), transactionDate); this.summary.updateSummary(this.currency, this.savingsAccountTransactionSummaryWrapper, this.transactions); } - + public void setSubStatusDormant() { this.sub_status = SavingsAccountSubStatusEnum.DORMANT.getValue(); @@ -2908,17 +2908,17 @@ public class SavingsAccount extends AbstractPersistableCustom { recalculateDailyBalances(Money.zero(this.currency), transactionDate); this.summary.updateSummary(this.currency, this.savingsAccountTransactionSummaryWrapper, this.transactions); } - + public void loadLazyCollections() { transactions.size(); charges.size(); savingsOfficerHistory.size(); } - + public void updateSavingsAccountSummary(final List transactions) { this.summary.updateSummary(this.currency, this.savingsAccountTransactionSummaryWrapper, transactions); } - + public Map block() { final Map actualChanges = new LinkedHashMap<>(); @@ -2941,7 +2941,7 @@ public class SavingsAccount extends AbstractPersistableCustom { return actualChanges; } - + public Map unblock() { final Map actualChanges = new LinkedHashMap<>(); @@ -2968,7 +2968,7 @@ public class SavingsAccount extends AbstractPersistableCustom { actualChanges.put(SavingsApiConstants.subStatusParamName, SavingsEnumerations.subStatus(this.sub_status)); return actualChanges; } - + public Map blockCredits(Integer currentSubstatus) { final Map actualChanges = new LinkedHashMap<>(); @@ -2998,7 +2998,7 @@ public class SavingsAccount extends AbstractPersistableCustom { return actualChanges; } - + public Map unblockCredits() { final Map actualChanges = new LinkedHashMap<>(); @@ -3027,7 +3027,7 @@ public class SavingsAccount extends AbstractPersistableCustom { actualChanges.put(SavingsApiConstants.subStatusParamName, SavingsEnumerations.subStatus(this.sub_status)); return actualChanges; } - + public Map blockDebits(Integer currentSubstatus) { final Map actualChanges = new LinkedHashMap<>(); @@ -3097,7 +3097,7 @@ public class SavingsAccount extends AbstractPersistableCustom { public Integer getSubStatus() { return this.sub_status; } - + public void validateForAccountBlock() { final SavingsAccountSubStatusEnum currentSubStatus = SavingsAccountSubStatusEnum.fromInt(this.getSubStatus()); if (SavingsAccountSubStatusEnum.BLOCK.hasStateOf(currentSubStatus)) { throw new SavingsAccountBlockedException(this.getId()); } @@ -3139,7 +3139,7 @@ public class SavingsAccount extends AbstractPersistableCustom { public void releaseAmount(BigDecimal amount) { this.savingsOnHoldAmount = getSavingsHoldAmount().subtract(amount); } - + private boolean isOverdraft() { return allowOverdraft; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java index 7a1649669..f04a3e66c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java @@ -43,7 +43,7 @@ import static org.apache.fineract.portfolio.savings.SavingsApiConstants.*; /** * @author dv6 - * + * */ @Entity @Table(name = "m_savings_account_charge") @@ -644,7 +644,7 @@ public class SavingsAccountCharge extends AbstractPersistableCustom { public boolean isSavingsActivation() { return ChargeTimeType.fromInt(this.chargeTime).isSavingsActivation(); } - + public boolean isSavingsNoActivity(){ return ChargeTimeType.fromInt(this.chargeTime).isSavingsNoActivityFee(); } @@ -850,7 +850,7 @@ public class SavingsAccountCharge extends AbstractPersistableCustom { * savings account with account balance of 1000, still these charges can be * collected as these charges are initiated by system and it can bring down * the balance below the enforced minimum balance). - * + * */ public boolean canOverriteSavingAccountRules() { return !(this.isSavingsActivation() || this.isWithdrawalFee()); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainServiceJpa.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainServiceJpa.java index b7d3df2a7..3269d667b 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainServiceJpa.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainServiceJpa.java @@ -67,7 +67,7 @@ public class SavingsAccountDomainServiceJpa implements SavingsAccountDomainServi final ApplicationCurrencyRepositoryWrapper applicationCurrencyRepositoryWrapper, final JournalEntryWritePlatformService journalEntryWritePlatformService, final ConfigurationDomainService configurationDomainService, final PlatformSecurityContext context, - final DepositAccountOnHoldTransactionRepository depositAccountOnHoldTransactionRepository, + final DepositAccountOnHoldTransactionRepository depositAccountOnHoldTransactionRepository, final BusinessEventNotifierService businessEventNotifierService) { this.savingsAccountRepository = savingsAccountRepository; this.savingsAccountTransactionRepository = savingsAccountTransactionRepository; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepository.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepository.java index 44e3e223e..1bd9f6342 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepository.java @@ -51,7 +51,7 @@ public interface SavingsAccountRepository extends JpaRepository findByStatus(Integer status,Pageable pageable); SavingsAccount findByExternalId(String externalId); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepositoryWrapper.java index f4c8dbde6..1b181d4c4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountRepositoryWrapper.java @@ -35,7 +35,7 @@ import org.springframework.transaction.annotation.Transactional; * if {@link SavingsAccount} is returned when using findOne * repository method and throwing an appropriate not found exception. *

            - * + * *

            * This is to avoid need for checking and throwing in multiple areas of code * base where {@link SavingsAccountRepository} is required. @@ -44,7 +44,7 @@ import org.springframework.transaction.annotation.Transactional; @Service public class SavingsAccountRepositoryWrapper { - + private final SavingsAccountRepository repository; @Autowired @@ -71,17 +71,17 @@ public class SavingsAccountRepositoryWrapper { @Transactional(readOnly=true) public List findSavingAccountByClientId(@Param("clientId") Long clientId) { List accounts = this.repository.findSavingAccountByClientId(clientId) ; - loadLazyCollections(accounts); + loadLazyCollections(accounts); return accounts ; } @Transactional(readOnly=true) public List findSavingAccountByStatus(@Param("status") Integer status) { List accounts = this.repository.findSavingAccountByStatus(status) ; - loadLazyCollections(accounts); + loadLazyCollections(accounts); return accounts ; } - + @Transactional(readOnly=true) public Page findByStatus(Integer status, Pageable pageable) { Page accounts = this.repository.findByStatus(status, pageable); @@ -107,7 +107,7 @@ public class SavingsAccountRepositoryWrapper { public SavingsAccount findNonClosedAccountByAccountNumber(@Param("accountNumber") String accountNumber) { return this.repository.findNonClosedAccountByAccountNumber(accountNumber) ; } - + public SavingsAccount save(final SavingsAccount account) { return this.repository.save(account); } @@ -119,7 +119,7 @@ public class SavingsAccountRepositoryWrapper { public SavingsAccount saveAndFlush(final SavingsAccount account) { return this.repository.saveAndFlush(account); } - + private void loadLazyCollections(final List accounts) { if(accounts != null && accounts.size() >0) { for(SavingsAccount account: accounts) { @@ -127,7 +127,7 @@ public class SavingsAccountRepositoryWrapper { } } } - + private void loadLazyCollections(Page accounts) { for (SavingsAccount account : accounts) { account.loadLazyCollections(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSubStatusEnum.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSubStatusEnum.java index 2cc3e17eb..299e0a733 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSubStatusEnum.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSubStatusEnum.java @@ -94,11 +94,11 @@ public enum SavingsAccountSubStatusEnum { public boolean isSubStatusEscheat() { return this.value.equals(SavingsAccountSubStatusEnum.ESCHEAT.getValue()); } - + public boolean isSubStatusAccountBlocked() { return this.value.equals(SavingsAccountSubStatusEnum.BLOCK.getValue()); } - + public boolean isSubStatusCreditBlocked() { return this.value.equals(SavingsAccountSubStatusEnum.BLOCK_CREDIT.getValue()); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSummary.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSummary.java index 735016d85..cff471c67 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSummary.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSummary.java @@ -80,7 +80,7 @@ public final class SavingsAccountSummary { @Column(name = "total_withhold_tax_derived", scale = 6, precision = 19) private BigDecimal totalWithholdTax; - + @Temporal(TemporalType.DATE) @Column(name = "last_interest_calculation_date") private Date lastInterestCalculationDate; @@ -103,7 +103,7 @@ public final class SavingsAccountSummary { this.totalPenaltyChargesWaived = wrapper.calculateTotalPenaltyChargeWaived(currency, transactions); this.totalOverdraftInterestDerived = wrapper.calculateTotalOverdraftInterest(currency, transactions); this.totalWithholdTax = wrapper.calculateTotalWithholdTaxWithdrawal(currency, transactions); - + this.accountBalance = Money.of(currency, this.totalDeposits).plus(this.totalInterestPosted).minus(this.totalWithdrawals) .minus(this.totalWithdrawalFees).minus(this.totalAnnualFees).minus(this.totalFeeCharge).minus(this.totalPenaltyCharge) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java index d6f538b30..b23a99534 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java @@ -115,14 +115,14 @@ public final class SavingsAccountTransaction extends AbstractPersistableCustom taxDetails = new ArrayList<>(); - + @Column(name = "release_id_of_hold_amount", length = 20) private Long releaseIdOfHoldAmountTransaction; @@ -297,7 +297,7 @@ public final class SavingsAccountTransaction extends AbstractPersistableCustom { /** * The interest period is the span of time at the end of which savings in a * client's account earn interest. - * + * * A value from the {@link SavingsCompoundingInterestPeriodType} * enumeration. */ @@ -217,7 +217,7 @@ public class SavingsProduct extends AbstractPersistableCustom { final boolean allowOverdraft, final BigDecimal overdraftLimit, final boolean enforceMinRequiredBalance, final BigDecimal minRequiredBalance, final BigDecimal minBalanceForInterestCalculation, final BigDecimal nominalAnnualInterestRateOverdraft, final BigDecimal minOverdraftForInterestCalculation, - boolean withHoldTax, TaxGroup taxGroup, + boolean withHoldTax, TaxGroup taxGroup, final Boolean isDormancyTrackingActive, final Long daysToInactive, final Long daysToDormancy, final Long daysToEscheat) { return new SavingsProduct(name, shortName, description, currency, interestRate, interestCompoundingPeriodType, @@ -302,13 +302,13 @@ public class SavingsProduct extends AbstractPersistableCustom { this.minBalanceForInterestCalculation = minBalanceForInterestCalculation; this.withHoldTax = withHoldTax; this.taxGroup = taxGroup; - + if(isDormancyTrackingActive == null) { this.isDormancyTrackingActive = Boolean.FALSE ; }else { - this.isDormancyTrackingActive = isDormancyTrackingActive; + this.isDormancyTrackingActive = isDormancyTrackingActive; } - + this.daysToInactive = daysToInactive; this.daysToDormancy = daysToDormancy; this.daysToEscheat = daysToEscheat; @@ -570,7 +570,7 @@ public class SavingsProduct extends AbstractPersistableCustom { } else { this.taxGroup = null; } - + if(command.isChangeInBooleanParameterNamed(isDormancyTrackingActiveParamName, this.isDormancyTrackingActive)){ final boolean newValue = command.booleanPrimitiveValueOfParameterNamed(isDormancyTrackingActiveParamName); actualChanges.put(isDormancyTrackingActiveParamName, newValue); @@ -594,7 +594,7 @@ public class SavingsProduct extends AbstractPersistableCustom { actualChanges.put(daysToEscheatParamName, newValue); this.daysToEscheat = newValue; } - + if(this.isDormancyTrackingActive == null || !this.isDormancyTrackingActive){ this.daysToInactive = null; this.daysToDormancy = null; @@ -724,17 +724,17 @@ public class SavingsProduct extends AbstractPersistableCustom { return this.minOverdraftForInterestCalculation; } - + public TaxGroup getTaxGroup() { return this.taxGroup; } - + public void setTaxGroup(TaxGroup taxGroup) { this.taxGroup = taxGroup; } - + public boolean withHoldTax() { return this.withHoldTax; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductAssembler.java index 81844a615..a209cbeb8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductAssembler.java @@ -177,7 +177,7 @@ public class SavingsProductAssembler { boolean withHoldTax = command.booleanPrimitiveValueOfParameterNamed(withHoldTaxParamName); final TaxGroup taxGroup = assembleTaxGroup(command); - + final Boolean isDormancyTrackingActive = command.booleanObjectValueOfParameterNamed(isDormancyTrackingActiveParamName); final Long daysToInactive = command.longValueOfParameterNamed(daysToInactiveParamName); final Long daysToDormancy = command.longValueOfParameterNamed(daysToDormancyParamName); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/AnnualCompoundingPeriod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/AnnualCompoundingPeriod.java index 32ad959c7..648011925 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/AnnualCompoundingPeriod.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/AnnualCompoundingPeriod.java @@ -69,7 +69,7 @@ public class AnnualCompoundingPeriod implements CompoundingPeriod { } private BigDecimal calculateUsingAverageDailyBalanceMethod(final BigDecimal interestToCompound, final BigDecimal interestRateAsFraction, - final long daysInYear, final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, + final long daysInYear, final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, final BigDecimal minOverdraftForInterestCalculation) { BigDecimal cumulativeBalance = BigDecimal.ZERO; @@ -112,7 +112,7 @@ public class AnnualCompoundingPeriod implements CompoundingPeriod { private BigDecimal calculateUsingDailyBalanceMethod(final SavingsCompoundingInterestPeriodType compoundingInterestPeriodType, final BigDecimal interestToCompound, final BigDecimal interestRateAsFraction, final long daysInYear, - final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, + final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, final BigDecimal minOverdraftForInterestCalculation) { BigDecimal interestEarned = BigDecimal.ZERO; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/BiAnnualCompoundingPeriod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/BiAnnualCompoundingPeriod.java index f995e0d0b..8fbc6e381 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/BiAnnualCompoundingPeriod.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/BiAnnualCompoundingPeriod.java @@ -69,7 +69,7 @@ public class BiAnnualCompoundingPeriod implements CompoundingPeriod { } private BigDecimal calculateUsingAverageDailyBalanceMethod(final BigDecimal interestToCompound, final BigDecimal interestRateAsFraction, - final long daysInYear, final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, + final long daysInYear, final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, final BigDecimal minOverdraftForInterestCalculation) { BigDecimal cumulativeBalance = BigDecimal.ZERO; @@ -112,7 +112,7 @@ public class BiAnnualCompoundingPeriod implements CompoundingPeriod { private BigDecimal calculateUsingDailyBalanceMethod(final SavingsCompoundingInterestPeriodType compoundingInterestPeriodType, final BigDecimal interestToCompound, final BigDecimal interestRateAsFraction, final long daysInYear, - final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, + final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, final BigDecimal minOverdraftForInterestCalculation) { BigDecimal interestEarned = BigDecimal.ZERO; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/CompoundingPeriod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/CompoundingPeriod.java index 7e4286591..bc2dce3dd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/CompoundingPeriod.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/CompoundingPeriod.java @@ -28,7 +28,7 @@ public interface CompoundingPeriod { BigDecimal calculateInterest(SavingsCompoundingInterestPeriodType compoundingInterestPeriodType, SavingsInterestCalculationType interestCalculationType, BigDecimal interestFromPreviousPostingPeriod, - BigDecimal interestRateAsFraction, long daysInYear, BigDecimal minBalanceForInterestCalculation, + BigDecimal interestRateAsFraction, long daysInYear, BigDecimal minBalanceForInterestCalculation, BigDecimal overdraftInterestRateAsFraction, BigDecimal minOverdraftForInterestCalculation); LocalDateInterval getPeriodInterval(); } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/EndOfDayBalance.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/EndOfDayBalance.java index e7ad79480..b63267f68 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/EndOfDayBalance.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/EndOfDayBalance.java @@ -88,19 +88,19 @@ public class EndOfDayBalance { /** * Future Value (FV) = PV x (1+r)^n - * + * * Interest = FV - PV PV = Principal or the Account Balance r = rate per * compounding period (so for daily, r = nominalInterestRateAsFraction x * 1/365 n = number of periods rate is compounded */ public BigDecimal calculateInterestOnBalanceAndInterest(final BigDecimal interestToCompound, final BigDecimal interestRateAsFraction, - final long daysInYear, final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, + final long daysInYear, final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, final BigDecimal minOverdraftForInterestCalculation) { final BigDecimal multiplicand = BigDecimal.ONE.divide(BigDecimal.valueOf(daysInYear), MathContext.DECIMAL64); final BigDecimal presentValue = this.endOfDayBalance.getAmount().add(interestToCompound); BigDecimal futureValue = presentValue.setScale(9, MoneyHelper.getRoundingMode()); - + if(presentValue.compareTo(BigDecimal.ZERO) >= 0){ if (presentValue.compareTo(minBalanceForInterestCalculation) >= 0) { final BigDecimal r = interestRateAsFraction.multiply(multiplicand); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/MonthlyCompoundingPeriod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/MonthlyCompoundingPeriod.java index ef3dac989..9a0be8d1f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/MonthlyCompoundingPeriod.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/MonthlyCompoundingPeriod.java @@ -69,7 +69,7 @@ public class MonthlyCompoundingPeriod implements CompoundingPeriod { } private BigDecimal calculateUsingAverageDailyBalanceMethod(final BigDecimal interestToCompound, final BigDecimal interestRateAsFraction, - final long daysInYear, final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, + final long daysInYear, final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, final BigDecimal minOverdraftForInterestCalculation) { BigDecimal cumulativeBalance = BigDecimal.ZERO; @@ -112,7 +112,7 @@ public class MonthlyCompoundingPeriod implements CompoundingPeriod { private BigDecimal calculateUsingDailyBalanceMethod(final SavingsCompoundingInterestPeriodType compoundingInterestPeriodType, final BigDecimal interestToCompound, final BigDecimal interestRateAsFraction, final long daysInYear, - final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, + final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, final BigDecimal minOverdraftForInterestCalculation) { BigDecimal interestEarned = BigDecimal.ZERO; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/PostingPeriod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/PostingPeriod.java index d71a4f319..326018e01 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/PostingPeriod.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/PostingPeriod.java @@ -35,7 +35,7 @@ import org.joda.time.DateTime; import org.joda.time.LocalDate; public class PostingPeriod { - + private final LocalDateInterval periodInterval; private final MonetaryCurrency currency; private final SavingsCompoundingInterestPeriodType interestCompoundingType; @@ -61,7 +61,7 @@ public class PostingPeriod { private final Money minBalanceForInterestCalculation; private BigDecimal overdraftInterestRateAsFraction; private Money minOverdraftForInterestCalculation; - + private Integer financialYearBeginningMonth; public static PostingPeriod createFrom(final LocalDateInterval periodInterval, final Money periodStartingBalance, @@ -73,11 +73,11 @@ public class PostingPeriod { final BigDecimal overdraftInterestRateAsFraction = BigDecimal.ZERO; final Money minOverdraftForInterestCalculation = Money.zero(currency); - - return createFrom(periodInterval, periodStartingBalance, orderedListOfTransactions, currency, - interestCompoundingPeriodType, interestCalculationType, interestRateAsFraction, daysInYear, - upToInterestCalculationDate, interestPostTransactions, isInterestTransfer, - minBalanceForInterestCalculation, isSavingsInterestPostingAtCurrentPeriodEnd, + + return createFrom(periodInterval, periodStartingBalance, orderedListOfTransactions, currency, + interestCompoundingPeriodType, interestCalculationType, interestRateAsFraction, daysInYear, + upToInterestCalculationDate, interestPostTransactions, isInterestTransfer, + minBalanceForInterestCalculation, isSavingsInterestPostingAtCurrentPeriodEnd, overdraftInterestRateAsFraction, minOverdraftForInterestCalculation, isUserPosting, financialYearBeginningMonth); } @@ -158,7 +158,7 @@ public class PostingPeriod { final Money closingBalance, final SavingsCompoundingInterestPeriodType interestCompoundingType, final SavingsInterestCalculationType interestCalculationType, final BigDecimal interestRateAsFraction, final long daysInYear, final List compoundingPeriods, boolean interestTransfered, final Money minBalanceForInterestCalculation, - final boolean isSavingsInterestPostingAtCurrentPeriodEnd, final BigDecimal overdraftInterestRateAsFraction, + final boolean isSavingsInterestPostingAtCurrentPeriodEnd, final BigDecimal overdraftInterestRateAsFraction, final Money minOverdraftForInterestCalculation, boolean isUserPosting, Integer financialYearBeginningMonth) { this.periodInterval = periodInterval; this.currency = currency; @@ -394,10 +394,10 @@ public class PostingPeriod { periodsInMonth = 4; periodEndDate = getPeriodEndDate(periodEndDate, previousMonth, periodsInMonth, periodStartDate); break; - case BI_ANNUAL: + case BI_ANNUAL: periodsInMonth = 2; periodEndDate = getPeriodEndDate(periodEndDate, previousMonth, periodsInMonth, periodStartDate); - + break; case ANNUAL: periodEndDate = periodStartDate.withMonthOfYear(previousMonth); @@ -436,7 +436,7 @@ public class PostingPeriod { * if start date fall in month of oct,nov or dec then month will be 10, 11 or 12 * so period end date should be taken from next year for march month */ - + for (Integer month : monthSet) { if(monthofYear<=month.intValue()){ periodEndDate = new DateTime().withDate(year, month, DateUtils.getLocalDateOfTenant().withMonthOfYear(month).dayOfMonth().withMaximumValue().getDayOfMonth()).toLocalDate(); @@ -457,15 +457,15 @@ public class PostingPeriod { public LocalDateInterval getPeriodInterval() { return this.periodInterval; } - + public boolean isUserPosting() { return this.isUserPosting; } - + public Integer getFinancialYearBeginningMonth() { return this.financialYearBeginningMonth; } - - + + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/QuarterlyCompoundingPeriod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/QuarterlyCompoundingPeriod.java index 148f0e05b..433949057 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/QuarterlyCompoundingPeriod.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/QuarterlyCompoundingPeriod.java @@ -68,7 +68,7 @@ public class QuarterlyCompoundingPeriod implements CompoundingPeriod { } private BigDecimal calculateUsingAverageDailyBalanceMethod(final BigDecimal interestToCompound, final BigDecimal interestRateAsFraction, - final long daysInYear, final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, + final long daysInYear, final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, final BigDecimal minOverdraftForInterestCalculation) { BigDecimal cumulativeBalance = BigDecimal.ZERO; @@ -111,7 +111,7 @@ public class QuarterlyCompoundingPeriod implements CompoundingPeriod { private BigDecimal calculateUsingDailyBalanceMethod(final SavingsCompoundingInterestPeriodType compoundingInterestPeriodType, final BigDecimal interestToCompound, final BigDecimal interestRateAsFraction, final long daysInYear, - final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, + final BigDecimal minBalanceForInterestCalculation, final BigDecimal overdraftInterestRateAsFraction, final BigDecimal minOverdraftForInterestCalculation) { BigDecimal interestEarned = BigDecimal.ZERO; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/PostInterestAsOnDateException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/PostInterestAsOnDateException.java index 76303682d..7bfa27120 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/PostInterestAsOnDateException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/PostInterestAsOnDateException.java @@ -34,10 +34,10 @@ public class PostInterestAsOnDateException extends AbstractPlatformDomainRuleExc return "Post Interest Date must be after the Activation date"; } else if (name().toString().equalsIgnoreCase("LAST_TRANSACTION_DATE")) { return "Cannot Post Interest before last transaction date"; - } + } return name().toString(); } - + public String errorCode() { if (name().toString().equalsIgnoreCase("FUTURE_DATE")) { return "error.msg.futureDate"; @@ -47,15 +47,15 @@ public class PostInterestAsOnDateException extends AbstractPlatformDomainRuleExc return "error.msg.before activation date"; } else if (name().toString().equalsIgnoreCase("LAST_TRANSACTION_DATE")) { return "error.msg.countInterest"; - } + } return name().toString(); } } - - + + public PostInterestAsOnDateException(final PostInterestAsOnException_TYPE reason) { super(reason.errorCode(), reason.errorMessage()); } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/PostSavingsAccountInterestAsOnDateCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/PostSavingsAccountInterestAsOnDateCommandHandler.java index dc61644af..c74a2450b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/PostSavingsAccountInterestAsOnDateCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/PostSavingsAccountInterestAsOnDateCommandHandler.java @@ -30,14 +30,14 @@ import org.springframework.transaction.annotation.Transactional; @Service @CommandType(entity = "SAVINGSACCOUNT", action = "POSTINTERESTASONDATE") public class PostSavingsAccountInterestAsOnDateCommandHandler implements NewCommandSourceHandler { - + private final SavingsAccountWritePlatformService writePlatformService; - + @Autowired public PostSavingsAccountInterestAsOnDateCommandHandler(final SavingsAccountWritePlatformService writePlatformService) { this.writePlatformService = writePlatformService; } - + @Transactional @Override public CommandProcessingResult processCommand(final JsonCommand command) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java index 451cc70e6..05dc01653 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java @@ -319,12 +319,12 @@ public class DepositAccountInterestRateChartReadPlatformServiceImpl implements D /* * private final String schemaSql; - * + * * public String schema() { return this.schemaSql; } - * + * * private DepositAccountInterestRateChartSlabsMapper() { final * StringBuilder sqlBuilder = new StringBuilder(400); - * + * * sqlBuilder .append( * "ircd.id as ircdId, ircd.description as ircdDescription, ircd.period_type_enum ircdPeriodTypeId, " * ) .append( diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java index 2524363d8..97a7d258d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java @@ -591,7 +591,7 @@ public class DepositAccountReadPlatformServiceImpl implements DepositAccountRead selectFieldsSqlBuilder.append("sa.min_balance_for_interest_calculation as minBalanceForInterestCalculation, "); selectFieldsSqlBuilder.append("sa.withhold_tax as withHoldTax,"); selectFieldsSqlBuilder.append("tg.id as taxGroupId, tg.name as taxGroupName "); - + this.selectFieldsSql = selectFieldsSqlBuilder.toString(); @@ -735,7 +735,7 @@ public class DepositAccountReadPlatformServiceImpl implements DepositAccountRead final BigDecimal totalPenaltyCharge = JdbcSupport.getBigDecimalDefaultToNullIfZero(rs, "totalPenaltyCharge"); final BigDecimal totalWithholdTax = JdbcSupport.getBigDecimalDefaultToNullIfZero(rs, "totalWithholdTax"); final BigDecimal totalOverdraftInterestDerived = null; - + final boolean withHoldTax = rs.getBoolean("withHoldTax"); final Long taxGroupId = JdbcSupport.getLong(rs, "taxGroupId"); final String taxGroupName = rs.getString("taxGroupName"); @@ -1104,7 +1104,7 @@ public class DepositAccountReadPlatformServiceImpl implements DepositAccountRead selectTablesSqlBuilder.append("left join m_deposit_product_term_and_preclosure dptp on sa.id = dptp.savings_product_id "); selectTablesSqlBuilder.append("join m_currency curr on curr.code = sa.currency_code "); selectTablesSqlBuilder.append("left join m_tax_group tg on tg.id = sa.tax_group_id "); - + this.selectTablesSql = selectTablesSqlBuilder.toString(); } @@ -1187,7 +1187,7 @@ public class DepositAccountReadPlatformServiceImpl implements DepositAccountRead final SavingsAccountStatusEnumData status = null; final SavingsAccountSummaryData summary = null; final SavingsAccountApplicationTimelineData timeline = SavingsAccountApplicationTimelineData.templateDefault(); - + final boolean withHoldTax = rs.getBoolean("withHoldTax"); final Long taxGroupId = JdbcSupport.getLong(rs, "taxGroupId"); final String taxGroupName = rs.getString("taxGroupName"); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java index b540cfa52..ce4096396 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java @@ -211,8 +211,8 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo Money activationChargeAmount = getActivationCharge(account); if (!changes.isEmpty()) { final Locale locale = command.extractLocale(); - final DateTimeFormatter fmt = DateTimeFormat.forPattern(command.dateFormat()).withLocale(locale); - Money amountForDeposit = account.activateWithBalance().plus(activationChargeAmount); + final DateTimeFormatter fmt = DateTimeFormat.forPattern(command.dateFormat()).withLocale(locale); + Money amountForDeposit = account.activateWithBalance().plus(activationChargeAmount); if (amountForDeposit.isGreaterThanZero()) { final PortfolioAccountData portfolioAccountData = this.accountAssociationsReadPlatformService .retriveSavingsLinkedAssociation(savingsId); @@ -236,7 +236,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo final LocalDate postInterestOnDate = null; if(activationChargeAmount.isGreaterThanZero()){ payActivationCharge(account, user); - } + } if (account.isBeforeLastPostingPeriod(account.getActivationLocalDate())) { final LocalDate today = DateUtils.getLocalDateOfTenant(); account.postInterest(mc, today, isInterestTransfer, isSavingsInterestPostingAtCurrentPeriodEnd, @@ -261,7 +261,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo account.validateAccountBalanceDoesNotBecomeNegative(SavingsAccountTransactionType.PAY_CHARGE.name(), depositAccountOnHoldTransactions); this.savingAccountRepositoryWrapper.saveAndFlush(account); - } + } postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds); return new CommandProcessingResultBuilder() // @@ -283,7 +283,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo } return activationChargeAmount; } - + private void payActivationCharge(final FixedDepositAccount account, AppUser user){ for (SavingsAccountCharge savingsAccountCharge : account.charges()) { if (savingsAccountCharge.isSavingsActivation()) { @@ -453,7 +453,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo final PaymentDetail paymentDetail = this.paymentDetailWritePlatformService.createAndPersistPaymentDetail(command, changes); final SavingsAccountTransaction deposit = this.depositAccountDomainService.handleRDDeposit(account, fmt, transactionDate, transactionAmount, paymentDetail, isRegularTransaction); - + return new CommandProcessingResultBuilder() // .withEntityId(deposit.getId()) // .withOfficeId(account.officeId()) // @@ -1374,7 +1374,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo existingTransactionIds, existingReversedTransactionIds, isAccountTransfer); this.journalEntryWritePlatformService.createJournalEntriesForSavings(accountingBridgeData); } - + @Transactional @Override public SavingsAccountTransaction mandatorySavingsAccountDeposit(final SavingsAccountTransactionDTO accountTransactionDTO) { @@ -1397,11 +1397,11 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo } else { account = this.depositAccountAssembler.assembleFrom(accountTransactionDTO.getSavingsAccountId(), DepositAccountType.CURRENT_DEPOSIT); - } + } return this.depositAccountDomainService.handleSavingDeposit(account, accountTransactionDTO.getFormatter(), accountTransactionDTO.getTransactionDate(), accountTransactionDTO.getTransactionAmount(), paymentDetail, isRegularTransaction); - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl.java index 1bdc72279..5a18a9b15 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl.java @@ -344,7 +344,7 @@ public class DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl impl final Integer repeatsOnDay = calendarStartDate.getDayOfWeek(); final String title = "recurring_savings_" + account.getId(); - + final Calendar calendar = Calendar.createRepeatingCalendar(title, calendarStartDate, CalendarType.COLLECTION.getValue(), CalendarFrequencyType.from(periodFrequencyType), frequency, repeatsOnDay, null); calendarInstance = CalendarInstance.from(calendar, account.getId(), CalendarEntityType.SAVINGS.getValue()); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositsDropdownReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositsDropdownReadPlatformService.java index 069645238..e7bce1252 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositsDropdownReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositsDropdownReadPlatformService.java @@ -30,9 +30,9 @@ public interface DepositsDropdownReadPlatformService { /* * Collection retrieveDepositTermTypeOptions(); - * + * * Collection retrieveInMultiplesOfDepositTermTypeOptions(); - * + * * Collection retrieveDepositPeriodFrequencyOptions(); */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositsDropdownReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositsDropdownReadPlatformServiceImpl.java index 846e0046a..57397203d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositsDropdownReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositsDropdownReadPlatformServiceImpl.java @@ -37,12 +37,12 @@ public class DepositsDropdownReadPlatformServiceImpl implements DepositsDropdown * retrieveDepositTermTypeOptions() { return * SavingsEnumerations.recurringDepositFrequencyType * (SavingsPeriodFrequencyType.values()); } - * + * * @Override public Collection * retrieveDepositPeriodFrequencyOptions() { return * SavingsEnumerations.depositPeriodFrequency * (SavingsPeriodFrequencyType.values()); } - * + * * @Override public Collection * retrieveInMultiplesOfDepositTermTypeOptions() { return * SavingsEnumerations diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformService.java index c6bceba6b..7d6fa7603 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformService.java @@ -37,7 +37,7 @@ public interface SavingsAccountReadPlatformService { Collection retrieveActiveForLookup(Long clientId, DepositAccountType depositAccountType); public Collection retrieveActiveForLookup(final Long clientId, DepositAccountType depositAccountType, String currencyCode) ; - + SavingsAccountData retrieveOne(Long savingsId); SavingsAccountData retrieveTemplate(Long clientId, Long groupId, Long productId, boolean staffInSelectedOfficeOnly); @@ -52,14 +52,14 @@ public interface SavingsAccountReadPlatformService { SavingsAccountTransactionData retrieveSavingsTransaction(Long savingsId, Long transactionId, DepositAccountType depositAccountType); Collection retrieveForLookup(Long clientId, Boolean overdraft); - + List retrieveSavingsIdsPendingInactive(LocalDate tenantLocalDate); List retrieveSavingsIdsPendingDormant(LocalDate tenantLocalDate); List retrieveSavingsIdsPendingEscheat(LocalDate tenantLocalDate); boolean isAccountBelongsToClient(final Long clientId, final Long accountId, final DepositAccountType depositAccountType, final String currencyCode) ; - + String retrieveAccountNumberByAccountId(Long accountId); } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java index b786888b7..e0e97d7c2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java @@ -199,7 +199,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead if (searchParameters.isOrderByRequested()) { sqlBuilder.append(" order by ").append(searchParameters.getOrderBy()); this.columnValidator.validateSqlInjection(sqlBuilder.toString(), searchParameters.getOrderBy()); - + if (searchParameters.isSortOrderProvided()) { sqlBuilder.append(' ').append(searchParameters.getSortOrder()); this.columnValidator.validateSqlInjection(sqlBuilder.toString(), searchParameters.getSortOrder()); @@ -367,7 +367,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead final Integer subStatusEnum = JdbcSupport.getInteger(rs, "subStatusEnum"); final SavingsAccountSubStatusEnumData subStatus = SavingsEnumerations.subStatus(subStatusEnum); - + final LocalDate lastActiveTransactionDate = JdbcSupport.getLocalDate(rs, "lastActiveTransactionDate"); final boolean isDormancyTrackingActive = rs.getBoolean("isDormancyTrackingActive"); final Integer numDaysToInactive = JdbcSupport.getInteger(rs, "daysToInactive"); @@ -386,7 +386,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead daysToDormancy = Days.daysBetween(localTenantDate,lastActiveTransactionDate.plusDays(numDaysToDormancy)).getDays(); } if(subStatusEnum < SavingsAccountSubStatusEnum.INACTIVE.getValue()){ - daysToInactive = Days.daysBetween(localTenantDate,lastActiveTransactionDate.plusDays(numDaysToInactive)).getDays(); + daysToInactive = Days.daysBetween(localTenantDate,lastActiveTransactionDate.plusDays(numDaysToInactive)).getDays(); } } @@ -465,7 +465,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead /* * final BigDecimal withdrawalFeeAmount = * rs.getBigDecimal("withdrawalFeeAmount"); - * + * * EnumOptionData withdrawalFeeType = null; final Integer * withdrawalFeeTypeValue = JdbcSupport.getInteger(rs, * "withdrawalFeeTypeEnum"); if (withdrawalFeeTypeValue != null) { @@ -489,14 +489,14 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead * final BigDecimal annualFeeAmount = * JdbcSupport.getBigDecimalDefaultToNullIfZero(rs, * "annualFeeAmount"); - * + * * MonthDay annualFeeOnMonthDay = null; final Integer * annualFeeOnMonth = JdbcSupport.getInteger(rs, * "annualFeeOnMonth"); final Integer annualFeeOnDay = * JdbcSupport.getInteger(rs, "annualFeeOnDay"); if (annualFeeAmount * != null && annualFeeOnDay != null) { annualFeeOnMonthDay = new * MonthDay(annualFeeOnMonth, annualFeeOnDay); } - * + * * final LocalDate annualFeeNextDueDate = * JdbcSupport.getLocalDate(rs, "annualFeeNextDueDate"); */ @@ -517,27 +517,27 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead final BigDecimal minBalanceForInterestCalculation = JdbcSupport.getBigDecimalDefaultToNullIfZero(rs, "minBalanceForInterestCalculation"); final BigDecimal onHoldFunds = rs.getBigDecimal("onHoldFunds"); - + final BigDecimal onHoldAmount = rs.getBigDecimal("onHoldAmount"); - + BigDecimal availableBalance = accountBalance; if (availableBalance != null && onHoldFunds != null) { availableBalance = availableBalance.subtract(onHoldFunds); } - + if (availableBalance != null && onHoldAmount != null) { availableBalance = availableBalance.subtract(onHoldAmount); } - + BigDecimal interestNotPosted = BigDecimal.ZERO; LocalDate lastInterestCalculationDate = null; if(totalInterestEarned != null){ interestNotPosted = totalInterestEarned.subtract(totalInterestPosted).add(totalOverdraftInterestDerived); lastInterestCalculationDate = JdbcSupport.getLocalDate(rs, "lastInterestCalculationDate"); } - + final SavingsAccountSummaryData summary = new SavingsAccountSummaryData(currency, totalDeposits, totalWithdrawals, totalWithdrawalFees, totalAnnualFees, totalInterestEarned, totalInterestPosted, accountBalance, totalFeeCharge, totalPenaltyCharge, totalOverdraftInterestDerived, totalWithholdTax, interestNotPosted, lastInterestCalculationDate, availableBalance); @@ -555,7 +555,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead nominalAnnualInterestRate, interestCompoundingPeriodType, interestPostingPeriodType, interestCalculationType, interestCalculationDaysInYearType, minRequiredOpeningBalance, lockinPeriodFrequency, lockinPeriodFrequencyType, withdrawalFeeForTransfers, summary, allowOverdraft, overdraftLimit, minRequiredBalance, enforceMinRequiredBalance, - minBalanceForInterestCalculation, onHoldFunds, nominalAnnualInterestRateOverdraft, minOverdraftForInterestCalculation, withHoldTax, + minBalanceForInterestCalculation, onHoldFunds, nominalAnnualInterestRateOverdraft, minOverdraftForInterestCalculation, withHoldTax, taxGroupData, lastActiveTransactionDate, isDormancyTrackingActive, daysToInactive, daysToDormancy, daysToEscheat, onHoldAmount); } } @@ -773,7 +773,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead * this.annualFeeMapper.schema() + * " where sa.annual_fee_next_due_date is not null and sa.annual_fee_next_due_date <= NOW()" * ; - * + * * return this.jdbcTemplate.query(sql, this.annualFeeMapper, new Object[] * {}); } */ @@ -881,7 +881,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead final boolean toTransferReversed = rs.getBoolean("toTransferReversed"); final String toTransferDescription = rs.getString("toTransferDescription"); - + transfer = AccountTransferData.transferBasicDetails(toTransferId, currency, toTransferAmount, toTransferDate, toTransferDescription, toTransferReversed); @@ -1108,7 +1108,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead nominalAnnualIterestRate, interestCompoundingPeriodType, interestPostingPeriodType, interestCalculationType, interestCalculationDaysInYearType, minRequiredOpeningBalance, lockinPeriodFrequency, lockinPeriodFrequencyType, withdrawalFeeForTransfers, summary, allowOverdraft, overdraftLimit, minRequiredBalance, enforceMinRequiredBalance, - minBalanceForInterestCalculation, onHoldFunds, nominalAnnualInterestRateOverdraft, minOverdraftForInterestCalculation, withHoldTax, + minBalanceForInterestCalculation, onHoldFunds, nominalAnnualInterestRateOverdraft, minOverdraftForInterestCalculation, withHoldTax, taxGroupData, lastActiveTransactionDate, isDormancyTrackingActive, daysToInactive, daysToDormancy, daysToEscheat, savingsAmountOnHold); } } @@ -1143,8 +1143,8 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead sql.append(" from m_savings_account_transaction as sat "); sql.append(" where sat.is_reversed = 0 "); sql.append(" and sat.transaction_type_enum in (1,2) "); - sql.append(" and sat.savings_account_id = sa.id)) >= sp.days_to_inactive "); - + sql.append(" and sat.savings_account_id = sa.id)) >= sp.days_to_inactive "); + try { ret = this.jdbcTemplate.queryForList(sql.toString(), Long.class, new Object[] {formatter.print(tenantLocalDate)}); } catch (EmptyResultDataAccessException e) { @@ -1152,7 +1152,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead } catch (DataAccessException e) { throw e; } - + return ret; } @@ -1169,8 +1169,8 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead sql.append(" from m_savings_account_transaction as sat "); sql.append(" where sat.is_reversed = 0 "); sql.append(" and sat.transaction_type_enum in (1,2) "); - sql.append(" and sat.savings_account_id = sa.id)) >= sp.days_to_dormancy "); - + sql.append(" and sat.savings_account_id = sa.id)) >= sp.days_to_dormancy "); + try { ret = this.jdbcTemplate.queryForList(sql.toString(), Long.class, new Object[] {formatter.print(tenantLocalDate)}); } catch (EmptyResultDataAccessException e) { @@ -1178,7 +1178,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead } catch (DataAccessException e) { throw e; } - + return ret; } @@ -1195,8 +1195,8 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead sql.append(" from m_savings_account_transaction as sat "); sql.append(" where sat.is_reversed = 0 "); sql.append(" and sat.transaction_type_enum in (1,2) "); - sql.append(" and sat.savings_account_id = sa.id)) >= sp.days_to_escheat "); - + sql.append(" and sat.savings_account_id = sa.id)) >= sp.days_to_escheat "); + try { ret = this.jdbcTemplate.queryForList(sql.toString(), Long.class, new Object[] {formatter.print(tenantLocalDate)}); } catch (EmptyResultDataAccessException e) { @@ -1204,7 +1204,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead } catch (DataAccessException e) { throw e; } - + return ret; } @@ -1214,7 +1214,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead try { final StringBuffer buff = new StringBuffer("select count(*) from m_savings_account sa ") ; buff.append(" where sa.id = ? and sa.client_id = ? and sa.deposit_type_enum = ? and sa.currency_code = ? and sa.status_enum = 300"); - return this.jdbcTemplate.queryForObject(buff.toString(), + return this.jdbcTemplate.queryForObject(buff.toString(), new Object[] { accountId, clientId, depositAccountType.getValue(), currencyCode }, Integer.class) > 0; } catch (final EmptyResultDataAccessException e) { throw new SavingsAccountNotFoundException(accountId); @@ -1223,28 +1223,28 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead /* * private static final class SavingsAccountAnnualFeeMapper implements * RowMapper { - * + * * private final String schemaSql; - * + * * public SavingsAccountAnnualFeeMapper() { final StringBuilder sqlBuilder = * new StringBuilder(200); * sqlBuilder.append("sa.id as id, sa.account_no as accountNo, "); * sqlBuilder * .append("sa.annual_fee_next_due_date as annualFeeNextDueDate "); * sqlBuilder.append("from m_savings_account sa "); - * + * * this.schemaSql = sqlBuilder.toString(); } - * + * * public String schema() { return this.schemaSql; } - * + * * @Override public SavingsAccountAnnualFeeData mapRow(final ResultSet rs, - * + * * @SuppressWarnings("unused") final int rowNum) throws SQLException { - * + * * final Long id = rs.getLong("id"); final String accountNo = * rs.getString("accountNo"); final LocalDate annualFeeNextDueDate = * JdbcSupport.getLocalDate(rs, "annualFeeNextDueDate"); - * + * * return SavingsAccountAnnualFeeData.instance(id, accountNo, * annualFeeNextDueDate); } } */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java index 251e04fb5..69b178c41 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java @@ -88,7 +88,7 @@ public interface SavingsAccountWritePlatformService { CommandProcessingResult postInterest(JsonCommand command); void postInterest(SavingsAccount account, boolean postInterestAs, LocalDate transactionDate); - + CommandProcessingResult blockAccount(Long savingsId); CommandProcessingResult unblockAccount(Long savingsId); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java index 32bce4c7b..c33e9e34c 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java @@ -294,7 +294,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi final Note note = Note.savingsTransactionNote(account, deposit, noteText); this.noteRepository.save(note) ; } - + return new CommandProcessingResultBuilder() // .withEntityId(deposit.getId()) // .withOfficeId(account.officeId()) // @@ -303,7 +303,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi .withSavingsId(savingsId) // .with(changes) // .build(); - + } private Long saveTransactionToGenerateTransactionId(final SavingsAccountTransaction transaction) { @@ -343,7 +343,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi final Note note = Note.savingsTransactionNote(account, withdrawal, noteText); this.noteRepository.save(note) ; } - + return new CommandProcessingResultBuilder() // .withEntityId(withdrawal.getId()) // .withOfficeId(account.officeId()) // @@ -762,9 +762,9 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi final boolean isSavingsInterestPostingAtCurrentPeriodEnd = this.configurationDomainService .isSavingsInterestPostingAtCurrentPeriodEnd(); - + validateTransactionsForTransfer(savingsAccount, transferDate); - + final Integer financialYearBeginningMonth = this.configurationDomainService.retrieveFinancialYearBeginningMonth(); this.savingAccountAssembler.setHelpers(savingsAccount); final Set existingTransactionIds = new HashSet<>(); @@ -1379,10 +1379,10 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi /** * Disable all standing instructions linked to the savings account if the * status is "closed" - * + * * @param savingsAccount * -- the savings account object - * + * **/ @Transactional private void disableStandingInstructionsLinkedToClosedSavings(final SavingsAccount savingsAccount) { @@ -1542,7 +1542,7 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi return new CommandProcessingResultBuilder().withEntityId(savingsId).withOfficeId(account.officeId()) .withClientId(account.clientId()).withGroupId(account.groupId()).withSavingsId(savingsId).with(changes).build(); } - + private void validateTransactionsForTransfer(final SavingsAccount savingsAccount, final LocalDate transferDate) { for (SavingsAccountTransaction transaction : savingsAccount.getTransactions()) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsApplicationProcessWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsApplicationProcessWritePlatformServiceJpaRepositoryImpl.java index 23def1fdc..226049b91 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsApplicationProcessWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsApplicationProcessWritePlatformServiceJpaRepositoryImpl.java @@ -97,7 +97,7 @@ public class SavingsApplicationProcessWritePlatformServiceJpaRepositoryImpl impl private final AccountNumberFormatRepositoryWrapper accountNumberFormatRepository; private final BusinessEventNotifierService businessEventNotifierService; private final EntityDatatableChecksWritePlatformService entityDatatableChecksWritePlatformService; - + @Autowired public SavingsApplicationProcessWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, final SavingsAccountRepositoryWrapper savingAccountRepository, final SavingsAccountAssembler savingAccountAssembler, @@ -534,8 +534,8 @@ public class SavingsApplicationProcessWritePlatformServiceJpaRepositoryImpl impl .setRollbackTransaction(rollbackTransaction)// .build(); } - - + + private Map constructEntityMap(final BUSINESS_ENTITY entityEvent, Object entity) { Map map = new HashMap<>(1); map.put(entityEvent, entity); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerations.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerations.java index 8f026f7d4..d74bfe7f5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerations.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerations.java @@ -196,11 +196,11 @@ public class SavingsEnumerations { case AMOUNT_HOLD: optionData = new SavingsAccountTransactionEnumData(SavingsAccountTransactionType.AMOUNT_HOLD.getValue().longValue(), SavingsAccountTransactionType.AMOUNT_HOLD.getCode(), "Amount on hold"); - break; + break; case AMOUNT_RELEASE: optionData = new SavingsAccountTransactionEnumData(SavingsAccountTransactionType.AMOUNT_RELEASE.getValue().longValue(), SavingsAccountTransactionType.AMOUNT_RELEASE.getCode(), "Release Amount"); - break; + break; } return optionData; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java index 121c8acaa..afbabb056 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java @@ -214,12 +214,12 @@ public class SavingsProductReadPlatformServiceImpl implements SavingsProductRead if (taxGroupId != null) { taxGroupData = TaxGroupData.lookup(taxGroupId, taxGroupName); } - + final Boolean isDormancyTrackingActive = rs.getBoolean("isDormancyTrackingActive"); final Long daysToInactive = JdbcSupport.getLong(rs, "daysToInactive"); final Long daysToDormancy = JdbcSupport.getLong(rs, "daysToDormancy"); final Long daysToEscheat = JdbcSupport.getLong(rs, "daysToEscheat"); - + return SavingsProductData.instance(id, name, shortName, description, currency, nominalAnnualInterestRate, compoundingInterestPeriodType, interestPostingPeriodType, interestCalculationType, interestCalculationDaysInYearType, minRequiredOpeningBalance, lockinPeriodFrequency, lockinPeriodFrequencyType, withdrawalFeeForTransfers, @@ -268,7 +268,7 @@ public class SavingsProductReadPlatformServiceImpl implements SavingsProductRead } return this.jdbcTemplate.query(sql, this.savingsProductLookupsRowMapper, new Object[] {isOverdraftType, DepositAccountType.SAVINGS_DEPOSIT.getValue() }); } - + if(inClauseAdded) { sql += " and sp.deposit_type_enum = ?"; }else { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularService.java index b2117fabb..d9ec4443a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularService.java @@ -24,7 +24,7 @@ import org.apache.fineract.infrastructure.jobs.exception.JobExecutionException; public interface SavingsSchedularService { void postInterestForAccounts() throws JobExecutionException; - + void updateSavingsDormancyStatus() throws JobExecutionException; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/api/SearchApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/api/SearchApiResource.java index 6f74f8e43..7e1b624c0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/api/SearchApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/api/SearchApiResource.java @@ -97,7 +97,7 @@ public class SearchApiResource { @ApiResponses({@ApiResponse(code = 200, message = "", response = SearchApiResourceSwagger.GetSearchResponse.class)}) public String searchData(@Context final UriInfo uriInfo, @QueryParam("query") @ApiParam(value = "query")final String query, @QueryParam("resource") @ApiParam(value = "resource") final String resource ,@DefaultValue("false") @QueryParam("exactMatch") @ApiParam(value = "exactMatch") Boolean exactMatch) { - + final SearchConditions searchConditions = new SearchConditions(query, resource,exactMatch); final Collection searchResults = this.searchReadPlatformService.retriveMatchingData(searchConditions); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdHocQuerySearchConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdHocQuerySearchConstants.java index a8952538f..084a4cac4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdHocQuerySearchConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdHocQuerySearchConstants.java @@ -56,7 +56,7 @@ public interface AdHocQuerySearchConstants { public static final String arrearsLoanStatusOption= "arrears"; public static final String closedLoanStatusOption= "closed"; public static final String writeoffLoanStatusOption= "writeoff"; - + public static final Object[] entityTypeOptions = { "clients", "groups", "loans", "clientIdentifiers" }; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/SearchConditions.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/SearchConditions.java index 0ed3f843c..6c9631445 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/SearchConditions.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/SearchConditions.java @@ -88,7 +88,7 @@ public class SearchConditions { public Boolean isSavingSeach() { return this.savingSeach; } - + public Boolean isShareSeach() { return this.shareSeach; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/SearchData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/SearchData.java index 6479ba0ec..10305b894 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/SearchData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/SearchData.java @@ -75,7 +75,7 @@ public class SearchData { public String getParentName() { return this.parentName; } - + public String getParentType() { return this.parentType; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchReadPlatformServiceImpl.java index 62ca5e53a..a5d4d9177 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchReadPlatformServiceImpl.java @@ -79,7 +79,7 @@ public class SearchReadPlatformServiceImpl implements SearchReadPlatformService params.addValue("search", searchConditions.getSearchQuery()); }else{ params.addValue("search", "%" + searchConditions.getSearchQuery() + "%"); - } + } return this.namedParameterjdbcTemplate.query(rm.searchSchema(searchConditions), params, rm); } @@ -101,12 +101,12 @@ public class SearchReadPlatformServiceImpl implements SearchReadPlatformService + " , IFNULL(c.id,g.id) as parentId, IFNULL(c.display_name,g.display_name) as parentName, null as entityMobileNo, s.status_enum as entityStatusEnum, IF(g.id is null, 'client', 'group') as parentType " + " from m_savings_account s left join m_client c on s.client_id = c.id left join m_group g ON s.group_id = g.id left join m_office o on o.id = c.office_id left join m_savings_product sp on sp.id=s.product_id " + " where (o.hierarchy IS NULL OR o.hierarchy like :hierarchy) and (s.account_no like :search or s.external_id like :search)) "; - + final String shareMatchSql = " (select 'SHARE' as entityType, s.id as entityId, sp.name as entityName, s.external_id as entityExternalId, s.account_no as entityAccountNo " + " , c.id as parentId, c.display_name as parentName, null as entityMobileNo, s.status_enum as entityStatusEnum, 'client' as parentType " + " from m_share_account s left join m_client c on s.client_id = c.id left join m_office o on o.id = c.office_id left join m_share_product sp on sp.id=s.product_id " + " where (o.hierarchy IS NULL OR o.hierarchy like :hierarchy) and (s.account_no like :search or s.external_id like :search)) "; - + final String clientIdentifierMatchSql = " (select 'CLIENTIDENTIFIER' as entityType, ci.id as entityId, ci.document_key as entityName, " + " null as entityExternalId, null as entityAccountNo, c.id as parentId, c.display_name as parentName,null as entityMobileNo, c.status_enum as entityStatusEnum, null as parentType " + " from m_client_identifier ci join m_client c on ci.client_id=c.id join m_office o on o.id = c.office_id " @@ -127,7 +127,7 @@ public class SearchReadPlatformServiceImpl implements SearchReadPlatformService if (searchConditions.isSavingSeach()) { sql.append(savingMatchSql).append(union); } - + if (searchConditions.isShareSeach()) { sql.append(shareMatchSql).append(union); } @@ -140,7 +140,7 @@ public class SearchReadPlatformServiceImpl implements SearchReadPlatformService sql.append(groupMatchSql).append(union); } - + sql.replace(sql.lastIndexOf(union), sql.length(), ""); @@ -160,7 +160,7 @@ public class SearchReadPlatformServiceImpl implements SearchReadPlatformService final String entityMobileNo = rs.getString("entityMobileNo"); final Integer entityStatusEnum = JdbcSupport.getInteger(rs, "entityStatusEnum"); final String parentType = rs.getString("parentType"); - + EnumOptionData entityStatus = new EnumOptionData(0L, "", ""); if (entityType.equalsIgnoreCase("client") || entityType.equalsIgnoreCase("clientidentifier")) { @@ -177,7 +177,7 @@ public class SearchReadPlatformServiceImpl implements SearchReadPlatformService entityStatus = LoanEnumerations.status(loanStatusEnumData); } - return new SearchData(entityId, entityAccountNo, entityExternalId, entityName, entityType, parentId, parentName, parentType, + return new SearchData(entityId, entityAccountNo, entityExternalId, entityName, entityType, parentId, parentName, parentType, entityMobileNo, entityStatus); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/data/SelfAccountTemplateData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/data/SelfAccountTemplateData.java index 3ff5d4d0a..eb1a64978 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/data/SelfAccountTemplateData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/data/SelfAccountTemplateData.java @@ -111,5 +111,5 @@ public class SelfAccountTemplateData implements return this.accountType.getId().intValue(); } - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/data/SelfAccountTransferDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/data/SelfAccountTransferDataValidator.java index 8b63b6906..10e0573ad 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/data/SelfAccountTransferDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/data/SelfAccountTransferDataValidator.java @@ -156,13 +156,13 @@ public class SelfAccountTransferDataValidator { validateUserAccounts(fromAccount, toAccount, baseDataValidator, type); throwExceptionIfValidationWarningsExist(dataValidationErrors); - + Map ret = new HashMap<>(); ret.put("fromAccount", fromAccount); ret.put("toAccount", toAccount); ret.put("transactionDate", transactionDate); ret.put("transactionAmount", transactionAmount); - + return ret; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/service/SelfBeneficiariesTPTReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/service/SelfBeneficiariesTPTReadPlatformServiceImpl.java index 1f366c6db..64bdf6f6c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/service/SelfBeneficiariesTPTReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/service/SelfBeneficiariesTPTReadPlatformServiceImpl.java @@ -215,8 +215,8 @@ public class SelfBeneficiariesTPTReadPlatformServiceImpl implements sqlBuilder.append(" and b.account_id = ? "); sqlBuilder.append(" and b.account_type = ? "); sqlBuilder.append(" and b.is_active = 1; "); - - return this.jdbcTemplate.queryForObject(sqlBuilder.toString(), + + return this.jdbcTemplate.queryForObject(sqlBuilder.toString(), new Object[]{appUserId, accountId, accountType}, Long.class); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/client/api/SelfClientsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/client/api/SelfClientsApiResource.java index 3fc238c98..f50ad95e7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/client/api/SelfClientsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/client/api/SelfClientsApiResource.java @@ -247,7 +247,7 @@ public class SelfClientsApiResource { throw new ClientNotFoundException(clientId); } } - + @POST @Path("{clientId}/images") @Consumes({ MediaType.MULTIPART_FORM_DATA }) @@ -262,7 +262,7 @@ public class SelfClientsApiResource { inputStream, fileDetails, bodyPart); } - + @POST @Path("{clientId}/images") @Consumes({ MediaType.TEXT_PLAIN, MediaType.TEXT_HTML, MediaType.APPLICATION_JSON }) @@ -279,7 +279,7 @@ public class SelfClientsApiResource { @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) public String deleteClientImage(@PathParam("clientId") final Long clientId) { - + validateAppuserClientsMapping(clientId); return this.imagesApiResource.deleteClientImage(ClientApiConstants.clientEntityName, clientId); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/client/service/AppuserClientMapperReadService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/client/service/AppuserClientMapperReadService.java index 5d8694aca..319966782 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/client/service/AppuserClientMapperReadService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/client/service/AppuserClientMapperReadService.java @@ -21,7 +21,7 @@ package org.apache.fineract.portfolio.self.client.service; public interface AppuserClientMapperReadService { public Boolean isClientMappedToUser(Long clientId, Long appUserId); - + public void validateAppuserClientsMapping(final Long clientId); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/client/service/AppuserClientMapperReadServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/client/service/AppuserClientMapperReadServiceImpl.java index d51aa76ee..74d331c62 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/client/service/AppuserClientMapperReadServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/client/service/AppuserClientMapperReadServiceImpl.java @@ -47,7 +47,7 @@ public class AppuserClientMapperReadServiceImpl implements + " from m_selfservice_user_client_mapping where client_id = ? and appuser_id = ?", new Object[] { clientId, appUserId }, Boolean.class); } - + @Override public void validateAppuserClientsMapping(final Long clientId) { AppUser user = this.context.authenticatedUser(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/loanaccount/api/SelfLoansApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/loanaccount/api/SelfLoansApiResource.java index 702877d89..6501052c8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/loanaccount/api/SelfLoansApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/loanaccount/api/SelfLoansApiResource.java @@ -157,15 +157,15 @@ public class SelfLoansApiResource { @QueryParam("productId") @ApiParam(value = "productId") final Long productId, @QueryParam("templateType") @ApiParam(value = "templateType") final String templateType, @Context final UriInfo uriInfo) { - + if(clientId != null){ validateAppuserClientsMapping(clientId); } - + if (templateType == null) { final String errorMsg = "Loan template type must be provided"; throw new LoanTemplateTypeRequiredException(errorMsg); - } else if (!(templateType.equalsIgnoreCase("individual") + } else if (!(templateType.equalsIgnoreCase("individual") || templateType.equalsIgnoreCase("collateral"))){ final String errorMsg = "Loan template type '" + templateType + "' is not supported"; throw new NotSupportedLoanTemplateTypeException(errorMsg, templateType); @@ -173,11 +173,11 @@ public class SelfLoansApiResource { final Long groupId = null; final boolean staffInSelectedOfficeOnly = false; final boolean onlyActive = true; - return this.loansApiResource.template(clientId, groupId, productId, + return this.loansApiResource.template(clientId, groupId, productId, templateType, staffInSelectedOfficeOnly, onlyActive, uriInfo); } - + @POST @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) @@ -186,15 +186,15 @@ public class SelfLoansApiResource { @ApiResponses({@ApiResponse(code = 200, message = "OK", response = SelfLoansApiResourceSwagger.PostSelfLoansResponse.class)}) public String calculateLoanScheduleOrSubmitLoanApplication(@QueryParam("command") @ApiParam(value = "command") final String commandParam, @Context final UriInfo uriInfo, @ApiParam(hidden = true) final String apiRequestBodyAsJson) { - + HashMap attr = this.dataValidator.validateLoanApplication(apiRequestBodyAsJson); final Long clientId = (Long) attr.get("clientId"); validateAppuserClientsMapping(clientId); - return this.loansApiResource.calculateLoanScheduleOrSubmitLoanApplication(commandParam, + return this.loansApiResource.calculateLoanScheduleOrSubmitLoanApplication(commandParam, uriInfo, apiRequestBodyAsJson); } - + @PUT @Path("{loanId}") @Consumes({ MediaType.APPLICATION_JSON }) @@ -213,7 +213,7 @@ public class SelfLoansApiResource { return this.loansApiResource.modifyLoanApplication(loanId, apiRequestBodyAsJson); } - + @POST @Path("{loanId}") @Consumes({ MediaType.APPLICATION_JSON }) @@ -229,7 +229,7 @@ public class SelfLoansApiResource { validateAppuserLoanMapping(loanId); return this.loansApiResource.stateTransitions(loanId, commandParam, apiRequestBodyAsJson); } - + private void validateAppuserLoanMapping(final Long loanId) { AppUser user = this.context.authenticatedUser(); final boolean isLoanMappedToUser = this.appuserLoansMapperReadService @@ -238,7 +238,7 @@ public class SelfLoansApiResource { throw new LoanNotFoundException(loanId); } } - + private void validateAppuserClientsMapping(final Long clientId) { AppUser user = this.context.authenticatedUser(); final boolean mappedClientId = this.appUserClientMapperReadService @@ -251,7 +251,7 @@ public class SelfLoansApiResource { private boolean is(final String commandParam, final String commandValue) { return StringUtils.isNotBlank(commandParam) && commandParam.trim().equalsIgnoreCase(commandValue); } - + @GET @Path("{loanId}/guarantors") @Consumes({ MediaType.APPLICATION_JSON }) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/PocketRepository.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/PocketRepository.java index ea031d458..78ec69499 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/PocketRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/PocketRepository.java @@ -25,7 +25,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; public interface PocketRepository extends JpaRepository , JpaSpecificationExecutor{ - + @Query("select pocket.id from Pocket pocket where pocket.appUserId= :appUserId") Long findByAppUserId(@Param("appUserId") Long appUserId); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/service/AccountEntityServiceFactory.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/service/AccountEntityServiceFactory.java index 674c6ba5e..a331e3e59 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/service/AccountEntityServiceFactory.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/service/AccountEntityServiceFactory.java @@ -43,6 +43,6 @@ public class AccountEntityServiceFactory { public AccountEntityService getAccountEntityService(final String key) { return this.accountEntityServiceHashMap.get(key); } - - + + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/registration/SelfServiceApiConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/registration/SelfServiceApiConstants.java index 0c9a7c312..7a2542f1b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/registration/SelfServiceApiConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/registration/SelfServiceApiConstants.java @@ -47,5 +47,5 @@ public class SelfServiceApiConstants { authenticationTokenParamName))); public static final Object[] SUPPORTED_AUTHENTICATION_MODE_PARAMETERS = new Object[] {emailModeParamName, mobileModeParamName}; public static final String SELF_SERVICE_USER_ROLE = "Self Service User"; - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/runreport/SelfRunReportApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/runreport/SelfRunReportApiResource.java index f0bfd8994..f85c8e899 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/runreport/SelfRunReportApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/runreport/SelfRunReportApiResource.java @@ -55,7 +55,7 @@ public class SelfRunReportApiResource { private final PlatformSecurityContext context; private final RunreportsApiResource runreportsApiResource; - + @Autowired public SelfRunReportApiResource(final PlatformSecurityContext context, final RunreportsApiResource runreportsApiResource) { this.context = context; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/savings/data/SelfSavingsDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/savings/data/SelfSavingsDataValidator.java index a47c4ca00..ea51610d8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/savings/data/SelfSavingsDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/savings/data/SelfSavingsDataValidator.java @@ -43,7 +43,7 @@ import com.google.gson.JsonElement; @Component public class SelfSavingsDataValidator { - + private final FromJsonHelper fromApiJsonHelper; @Autowired @@ -99,7 +99,7 @@ public class SelfSavingsDataValidator { unsupportedParams.add("template"); } } - + public HashMap validateSavingsApplication(final String json) { if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/shareaccounts/service/AppUserShareAccountsMapperReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/shareaccounts/service/AppUserShareAccountsMapperReadPlatformServiceImpl.java index eed7dade6..b1f1bff50 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/shareaccounts/service/AppUserShareAccountsMapperReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/shareaccounts/service/AppUserShareAccountsMapperReadPlatformServiceImpl.java @@ -36,7 +36,7 @@ public class AppUserShareAccountsMapperReadPlatformServiceImpl final RoutingDataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } - + @Override public Boolean isShareAccountsMappedToUser(Long accountId, Long appUserId) { return this.jdbcTemplate diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountApplicationTimelineData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountApplicationTimelineData.java index bb4137c4c..3aa861385 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountApplicationTimelineData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountApplicationTimelineData.java @@ -29,12 +29,12 @@ public class ShareAccountApplicationTimelineData implements Serializable { private final String submittedByUsername; private final String submittedByFirstname; private final String submittedByLastname; - + private final LocalDate rejectedDate; private final String rejectedByUsername; private final String rejectedByFirstname; private final String rejectedByLastname; - + private final LocalDate approvedDate; private final String approvedByUsername; private final String approvedByFirstname; @@ -44,7 +44,7 @@ public class ShareAccountApplicationTimelineData implements Serializable { private final String activatedByUsername; private final String activatedByFirstname; private final String activatedByLastname; - + private final LocalDate closedDate; private final String closedByUsername; private final String closedByFirstname; @@ -74,8 +74,8 @@ public class ShareAccountApplicationTimelineData implements Serializable { final String closedByLastname = null; return new ShareAccountApplicationTimelineData(submittedOnDate, submittedByUsername, submittedByFirstname, submittedByLastname, - rejectedOnDate, rejectedByUsername, rejectedByFirstname, rejectedByLastname, approvedOnDate, approvedByUsername, - approvedByFirstname, approvedByLastname, activatedOnDate, activatedByUsername, activatedByFirstname, activatedByLastname, + rejectedOnDate, rejectedByUsername, rejectedByFirstname, rejectedByLastname, approvedOnDate, approvedByUsername, + approvedByFirstname, approvedByLastname, activatedOnDate, activatedByUsername, activatedByFirstname, activatedByLastname, closedOnDate, closedByUsername, closedByFirstname, closedByLastname); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountChargeData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountChargeData.java index ea4eea85c..b2e9808a5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountChargeData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountChargeData.java @@ -98,7 +98,7 @@ public class ShareAccountChargeData implements Serializable { this.percentage = percentage; this.amountPercentageAppliedTo = amountPercentageAppliedTo; this.currency = currency; - this.amount = amount; + this.amount = amount; this.amountPaid = amountPaid; this.amountWaived = amountWaived; this.amountWrittenOff = amountWrittenOff; @@ -108,7 +108,7 @@ public class ShareAccountChargeData implements Serializable { this.isActive = isActive; } - + private BigDecimal getAmountOrPercentage() { return (this.chargeCalculationType != null) && (this.chargeCalculationType.getId().intValue() > 1) ? this.percentage : this.amount; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountData.java index 5ce3af970..90345c139 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountData.java @@ -48,7 +48,7 @@ public class ShareAccountData implements Serializable, AccountData { private String clientName; private Long defaultShares ; - + private Long productId; private String productName; @@ -149,7 +149,7 @@ public class ShareAccountData implements Serializable, AccountData { public Integer getRowIndex() { return rowIndex; } - + // Data for template private Collection productOptions; private Collection chargeOptions; @@ -309,7 +309,7 @@ public class ShareAccountData implements Serializable, AccountData { public void setCurrentMarketPrice(final BigDecimal currentMarketPrice) { this.currentMarketPrice = currentMarketPrice; } - + public void setDividends(Collection dividends) { this.dividends = dividends ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountDividendData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountDividendData.java index 78b1bffe1..ac83a7466 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountDividendData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountDividendData.java @@ -52,7 +52,7 @@ public class ShareAccountDividendData implements Serializable { this.savingsTransactionId = savingsTransactionId; this.postedDate = null ; } - + public ShareAccountDividendData(final Long id, final Date postedDate, final ShareAccountData accountData, final BigDecimal amount, final EnumOptionData status, final Long savingsTransactionId) { this.id = id; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountStatusEnumData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountStatusEnumData.java index 53d9b33c0..1fecb62e8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountStatusEnumData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountStatusEnumData.java @@ -27,7 +27,7 @@ import java.io.Serializable; public class ShareAccountStatusEnumData implements Serializable { private final Long id; - + private final String code; private final String value; private final boolean submittedAndPendingApproval; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountTransactionData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountTransactionData.java index 44976e248..e35d5d018 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountTransactionData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountTransactionData.java @@ -42,11 +42,11 @@ public class ShareAccountTransactionData implements Serializable { private final EnumOptionData type; private final BigDecimal amount ; - + private final BigDecimal chargeAmount ; - + private final BigDecimal amountPaid ; - + public ShareAccountTransactionData(final Long id, final Long accountId, final LocalDate purchasedDate, final Long numberOfShares, final BigDecimal purchasedPrice, final EnumOptionData status, final EnumOptionData type, final BigDecimal amount, final BigDecimal chargeAmount, final BigDecimal amountPaid) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountTransactionEnumData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountTransactionEnumData.java index cc8793c8c..a41a80ec7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountTransactionEnumData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/data/ShareAccountTransactionEnumData.java @@ -77,7 +77,7 @@ public class ShareAccountTransactionEnumData implements Serializable { return this.isRedeemed; } - + public boolean isChargePayment() { return this.isChargePayment; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/PurchasedSharesStatusType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/PurchasedSharesStatusType.java index 0989146f6..8274e9d2b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/PurchasedSharesStatusType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/PurchasedSharesStatusType.java @@ -69,7 +69,7 @@ public enum PurchasedSharesStatusType { public boolean isApproved() { return this.value.equals(PurchasedSharesStatusType.APPROVED.getValue()); } - + public boolean isRejected() { return this.value.equals(PurchasedSharesStatusType.REJECTED.getValue()); } @@ -77,7 +77,7 @@ public enum PurchasedSharesStatusType { public boolean isPurchased() { return this.value.equals(PurchasedSharesStatusType.PURCHASED.getValue()); } - + public boolean isChargePayment() { return this.value.equals(PurchasedSharesStatusType.CHARGE_PAYMENT.getValue()); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java index 73e24dcc9..16fb6f96b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java @@ -263,20 +263,20 @@ public class ShareAccount extends AbstractPersistableCustom { if(this.totalSharesPending == null) { this.totalSharesPending = transaction.getTotalShares() ; }else { - this.totalSharesPending += transaction.getTotalShares() ; + this.totalSharesPending += transaction.getTotalShares() ; } - + }else if(transaction.isPurchasTransaction()) { if(this.totalSharesApproved == null) { - this.totalSharesApproved = transaction.getTotalShares() ; + this.totalSharesApproved = transaction.getTotalShares() ; }else { this.totalSharesApproved += transaction.getTotalShares() ; } } - + this.shareAccountTransactions.add(transaction); } - + public boolean setAllowDividendCalculationForInactiveClients(Boolean allowDividendCalculationForInactiveClients) { boolean returnValue = false; if (this.allowDividendCalculationForInactiveClients == null || !this.allowDividendCalculationForInactiveClients.equals(allowDividendCalculationForInactiveClients)) { @@ -347,7 +347,7 @@ public class ShareAccount extends AbstractPersistableCustom { public Client getClient() { return this.client ; } - + public String getSavingsAccountNo() { return this.savingsAccount.getAccountNumber(); } @@ -373,7 +373,7 @@ public class ShareAccount extends AbstractPersistableCustom { public void updateRequestedShares(ShareAccountTransaction purchased) { for(ShareAccountTransaction transaction: this.shareAccountTransactions) { if(!transaction.isChargeTransaction() && transaction.getId().equals(purchased.getId())) { - transaction.update(purchased.getPurchasedDate(), purchased.getTotalShares(), purchased.getPurchasePrice()); + transaction.update(purchased.getPurchasedDate(), purchased.getTotalShares(), purchased.getPurchasePrice()); } } } @@ -503,7 +503,7 @@ public class ShareAccount extends AbstractPersistableCustom { public Long getTotalApprovedShares() { return this.totalSharesApproved ; } - + public void removePendingShares(Long totalShares) { this.totalSharesPending -= totalShares; } @@ -515,7 +515,7 @@ public class ShareAccount extends AbstractPersistableCustom { public void setTotalPendingShares(final Long shares) { this.totalSharesPending = shares ; } - + public ShareAccountTransaction getShareAccountTransaction(final ShareAccountTransaction transaction) { ShareAccountTransaction returnTrans = null; for (ShareAccountTransaction tran : this.shareAccountTransactions) { @@ -530,11 +530,11 @@ public class ShareAccount extends AbstractPersistableCustom { } return returnTrans; } - + public Date getSubmittedDate(){ return this.submittedDate ; } - + public Date getApprovedDate() { return this.approvedDate ; } @@ -556,19 +556,19 @@ public class ShareAccount extends AbstractPersistableCustom { public void addCharges(Set charges) { this.charges.addAll(charges) ; } - + public Integer getLockinPeriodFrequency() { return this.lockinPeriodFrequency ; } - + public PeriodFrequencyType getLockinPeriodFrequencyType() { return this.lockinPeriodFrequencyType ; } - + public Date getActivatedDate() { return this.activatedDate ; } - + public Integer status() { return this.status ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountChargePaidBy.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountChargePaidBy.java index d52d777ca..4a3422581 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountChargePaidBy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountChargePaidBy.java @@ -36,45 +36,45 @@ public class ShareAccountChargePaidBy extends AbstractPersistableCustom{ @ManyToOne(optional = false) @JoinColumn(name = "share_transaction_id", referencedColumnName = "id", nullable = false) private ShareAccountTransaction shareAccountTransaction; - + @ManyToOne(optional = false) @JoinColumn(name = "charge_transaction_id", referencedColumnName = "id", nullable = false) private ShareAccountCharge shareAccountCharge; - - @Column(name = "amount", scale = 6, precision = 19, nullable = false) + + @Column(name = "amount", scale = 6, precision = 19, nullable = false) private BigDecimal amount ; - + protected ShareAccountChargePaidBy() { - + } - + public ShareAccountChargePaidBy(final ShareAccountTransaction shareAccountTransaction, final ShareAccountCharge shareAccountCharge, final BigDecimal amount) { this.shareAccountTransaction = shareAccountTransaction ; this.shareAccountCharge = shareAccountCharge ; this.amount = amount ; } - + public ShareAccountCharge getCharge() { return this.shareAccountCharge ; } - + public BigDecimal getAmount() { return this.amount ; } - + public ShareAccountTransaction getShareAccountTransaction() { return this.shareAccountTransaction ; } - + public Long getChargeId() { return this.shareAccountCharge.getChargeId() ; } - + public Long getShareChargeId() { return this.shareAccountCharge.getId() ; } - + public void reset() { this.shareAccountTransaction = null ; this.shareAccountCharge = null ; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountRepositoryWrapper.java index 6f3e392df..cf5a16faf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountRepositoryWrapper.java @@ -31,7 +31,7 @@ public class ShareAccountRepositoryWrapper { public ShareAccountRepositoryWrapper(final ShareAccountRepository shareAccountRepository) { this.shareAccountRepository = shareAccountRepository ; } - + public ShareAccount findOneWithNotFoundDetection(final Long accountId) { return this.shareAccountRepository.findById(accountId) .orElseThrow(() -> new ShareAccountNotFoundException(accountId)); @@ -39,7 +39,7 @@ public class ShareAccountRepositoryWrapper { public void save(final ShareAccount shareAccount) { this.shareAccountRepository.save(shareAccount) ; } - + public void saveAndFlush(final ShareAccount shareAccount) { this.shareAccountRepository.saveAndFlush(shareAccount) ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java index b521fdda2..4ba218912 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java @@ -44,27 +44,27 @@ public class ShareAccountTransaction extends AbstractPersistableCustom { @Column(name = "unit_price") private BigDecimal shareValue; - @Column(name = "amount") + @Column(name = "amount") private BigDecimal amount ; - - @Column(name = "amount_paid") + + @Column(name = "amount_paid") private BigDecimal amountPaid ; - - @Column(name = "charge_amount") + + @Column(name = "charge_amount") private BigDecimal chargeAmount ; - + @Column(name = "status_enum", nullable = true) private Integer status; - @Column(name = "type_enum", nullable = true) + @Column(name = "type_enum", nullable = true) private Integer type ; - + @Column(name = "is_active", nullable = false) private boolean active = true ; - + @OneToMany(cascade = CascadeType.ALL, mappedBy = "shareAccountTransaction", orphanRemoval = true, fetch=FetchType.EAGER) private Set shareAccountChargesPaid = new HashSet<>(); - + protected ShareAccountTransaction() { } @@ -94,15 +94,15 @@ public class ShareAccountTransaction extends AbstractPersistableCustom { this.chargeAmount = chargeAmount ; this.amountPaid = amountPaid ; } - + public static ShareAccountTransaction createRedeemTransaction(final Date transactionDate, final Long totalShares, final BigDecimal shareValue) { final Integer status = PurchasedSharesStatusType.APPROVED.getValue() ; final Integer type = PurchasedSharesStatusType.REDEEMED.getValue() ; final BigDecimal amount = shareValue.multiply(BigDecimal.valueOf(totalShares)) ; BigDecimal amountPaid = new BigDecimal(amount.doubleValue()) ; - return new ShareAccountTransaction(transactionDate, totalShares, shareValue, status, type, amount, null, amountPaid) ; + return new ShareAccountTransaction(transactionDate, totalShares, shareValue, status, type, amount, null, amountPaid) ; } - + public static ShareAccountTransaction createChargeTransaction(final Date transactionDate, final ShareAccountCharge charge) { final Long totalShares = null ; final BigDecimal unitPrice = null ; @@ -113,7 +113,7 @@ public class ShareAccountTransaction extends AbstractPersistableCustom { BigDecimal amountPaid = null ; return new ShareAccountTransaction(transactionDate, totalShares, unitPrice, status, type, amount, chargeAmount, amountPaid) ; } - + public Date getPurchasedDate() { return this.transactionDate; } @@ -138,7 +138,7 @@ public class ShareAccountTransaction extends AbstractPersistableCustom { public void approve() { this.status = PurchasedSharesStatusType.APPROVED.getValue() ; } - + public void undoApprove() { this.status = PurchasedSharesStatusType.APPLIED.getValue() ; } @@ -149,31 +149,31 @@ public class ShareAccountTransaction extends AbstractPersistableCustom { this.amount = this.amount.subtract(chargeAmount) ; } } - + public boolean isPendingForApprovalTransaction() { return this.status.equals(PurchasedSharesStatusType.APPLIED.getValue()) && this.type.equals(PurchasedSharesStatusType.PURCHASED.getValue()) ; } - + public boolean isPurchasTransaction() { return this.status.equals(PurchasedSharesStatusType.APPROVED.getValue()) && this.type.equals(PurchasedSharesStatusType.PURCHASED.getValue()) ; } - + public boolean isRedeemTransaction() { return this.status.equals(PurchasedSharesStatusType.APPROVED.getValue()) && this.type.equals(PurchasedSharesStatusType.REDEEMED.getValue()) ; } - + public boolean isChargeTransaction() { return this.status.equals(PurchasedSharesStatusType.APPROVED.getValue()) && this.type.equals(PurchasedSharesStatusType.CHARGE_PAYMENT.getValue()) ; } - + public boolean isPurchaseRejectedTransaction() { return this.status.equals(PurchasedSharesStatusType.REJECTED.getValue()) && this.type.equals(PurchasedSharesStatusType.PURCHASED.getValue()) ; } - + public void addShareAccountChargePaidBy(final ShareAccountChargePaidBy chargePaidBy) { this.shareAccountChargesPaid.add(chargePaidBy) ; } - + public BigDecimal amount() { return this.amount ; } @@ -181,60 +181,60 @@ public class ShareAccountTransaction extends AbstractPersistableCustom { public BigDecimal chargeAmount() { return this.chargeAmount ; } - + public void updateChargeAmount(BigDecimal totalChargeAmount) { this.amount = this.amount.add(totalChargeAmount); this.chargeAmount = totalChargeAmount ; } - + public void deductChargesFromTotalAmount(BigDecimal totalChargeAmount) { this.amount = this.amount.subtract(totalChargeAmount); this.chargeAmount = totalChargeAmount ; } - + public Set getChargesPaidBy() { return this.shareAccountChargesPaid ; } - + public Integer getTransactionStatus() { return this.status ; } - + public Integer getTransactionType() { return this.type ; } - + public void updateAmountPaid(final BigDecimal amountPaid) { this.amountPaid = amountPaid ; } - + public void addAmountPaid(final BigDecimal amountPaid) { if(isRedeemTransaction()) { this.amountPaid = this.amountPaid.subtract(amountPaid) ; }else if(isPurchasTransaction() /*|| isPurchaseRejectedTransaction()*/) { - this.amountPaid = this.amountPaid.add(amountPaid) ; + this.amountPaid = this.amountPaid.add(amountPaid) ; } } - + public void resetAmountPaid() { this.amountPaid = BigDecimal.ZERO ; } - + public void setActive(boolean active) { this.active = active ; if(!this.active) { - //this.shareAccountChargesPaid.clear(); + //this.shareAccountChargesPaid.clear(); } } - + public void updateTransactionDate(final Date transactionDate) { this.transactionDate = transactionDate ; } - + public boolean isActive() { return this.active ; } - + public BigDecimal shareValue() { return this.shareValue ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/exceptions/IssueableSharesExceededException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/exceptions/IssueableSharesExceededException.java index c924df061..72eb6fae1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/exceptions/IssueableSharesExceededException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/exceptions/IssueableSharesExceededException.java @@ -21,7 +21,7 @@ package org.apache.fineract.portfolio.shareaccounts.exceptions; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; /** - * A {@link RuntimeException} + * A {@link RuntimeException} */ public class IssueableSharesExceededException extends AbstractPlatformResourceNotFoundException { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/ActivateShareAccountCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/ActivateShareAccountCommandHandler.java index f40f2dc72..2f2feccad 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/ActivateShareAccountCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/ActivateShareAccountCommandHandler.java @@ -33,7 +33,7 @@ public class ActivateShareAccountCommandHandler implements NewCommandSourceHandl private final ShareAccountWritePlatformService shareAccountWritePlatformService ; - + @Autowired public ActivateShareAccountCommandHandler(final ShareAccountWritePlatformService shareAccountWritePlatformService) { this.shareAccountWritePlatformService = shareAccountWritePlatformService ; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/ApplyAddtionalSharesCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/ApplyAddtionalSharesCommandHandler.java index ce9c7ddb4..71aea7ad3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/ApplyAddtionalSharesCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/ApplyAddtionalSharesCommandHandler.java @@ -33,7 +33,7 @@ public class ApplyAddtionalSharesCommandHandler implements NewCommandSourceHandl private final ShareAccountWritePlatformService shareAccountWritePlatformService ; - + @Autowired public ApplyAddtionalSharesCommandHandler(final ShareAccountWritePlatformService shareAccountWritePlatformService) { this.shareAccountWritePlatformService = shareAccountWritePlatformService ; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/ApproveAddtionalSharesCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/ApproveAddtionalSharesCommandHandler.java index 4d81eeb86..3fbf2d453 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/ApproveAddtionalSharesCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/ApproveAddtionalSharesCommandHandler.java @@ -33,7 +33,7 @@ public class ApproveAddtionalSharesCommandHandler implements NewCommandSourceHan private final ShareAccountWritePlatformService shareAccountWritePlatformService ; - + @Autowired public ApproveAddtionalSharesCommandHandler(final ShareAccountWritePlatformService shareAccountWritePlatformService) { this.shareAccountWritePlatformService = shareAccountWritePlatformService ; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/ApproveShareAccountCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/ApproveShareAccountCommandHandler.java index 194627a2f..d1d69f8c0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/ApproveShareAccountCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/ApproveShareAccountCommandHandler.java @@ -33,7 +33,7 @@ public class ApproveShareAccountCommandHandler implements NewCommandSourceHandle private final ShareAccountWritePlatformService shareAccountWritePlatformService ; - + @Autowired public ApproveShareAccountCommandHandler(final ShareAccountWritePlatformService shareAccountWritePlatformService) { this.shareAccountWritePlatformService = shareAccountWritePlatformService ; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/CloseShareAccountCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/CloseShareAccountCommandHandler.java index 62fefa469..0ba2917dd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/CloseShareAccountCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/CloseShareAccountCommandHandler.java @@ -33,7 +33,7 @@ public class CloseShareAccountCommandHandler implements NewCommandSourceHandler{ private final ShareAccountWritePlatformService shareAccountWritePlatformService ; - + @Autowired public CloseShareAccountCommandHandler(final ShareAccountWritePlatformService shareAccountWritePlatformService) { this.shareAccountWritePlatformService = shareAccountWritePlatformService ; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/CreateShareAccountCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/CreateShareAccountCommandHandler.java index 5226d3237..dd12a273e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/CreateShareAccountCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/CreateShareAccountCommandHandler.java @@ -33,7 +33,7 @@ public class CreateShareAccountCommandHandler implements NewCommandSourceHandler private final ShareAccountWritePlatformService shareAccountWritePlatformService ; - + @Autowired public CreateShareAccountCommandHandler(final ShareAccountWritePlatformService shareAccountWritePlatformService) { this.shareAccountWritePlatformService = shareAccountWritePlatformService ; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/RedeemSharesCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/RedeemSharesCommandHandler.java index 09bf0b416..44cab3938 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/RedeemSharesCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/RedeemSharesCommandHandler.java @@ -33,7 +33,7 @@ public class RedeemSharesCommandHandler implements NewCommandSourceHandler{ private final ShareAccountWritePlatformService shareAccountWritePlatformService ; - + @Autowired public RedeemSharesCommandHandler(final ShareAccountWritePlatformService shareAccountWritePlatformService) { this.shareAccountWritePlatformService = shareAccountWritePlatformService ; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/RejectAddtionalSharesCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/RejectAddtionalSharesCommandHandler.java index dce0f842e..577b301bd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/RejectAddtionalSharesCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/RejectAddtionalSharesCommandHandler.java @@ -33,7 +33,7 @@ public class RejectAddtionalSharesCommandHandler implements NewCommandSourceHand private final ShareAccountWritePlatformService shareAccountWritePlatformService ; - + @Autowired public RejectAddtionalSharesCommandHandler(final ShareAccountWritePlatformService shareAccountWritePlatformService) { this.shareAccountWritePlatformService = shareAccountWritePlatformService ; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/RejectShareAccountCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/RejectShareAccountCommandHandler.java index 962eacb84..9ef4479a9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/RejectShareAccountCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/RejectShareAccountCommandHandler.java @@ -33,7 +33,7 @@ public class RejectShareAccountCommandHandler implements NewCommandSourceHandler private final ShareAccountWritePlatformService shareAccountWritePlatformService ; - + @Autowired public RejectShareAccountCommandHandler(final ShareAccountWritePlatformService shareAccountWritePlatformService) { this.shareAccountWritePlatformService = shareAccountWritePlatformService ; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/UndoApproveShareAccountCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/UndoApproveShareAccountCommandHandler.java index bbfe92fc4..ef2b3a1b3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/UndoApproveShareAccountCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/UndoApproveShareAccountCommandHandler.java @@ -33,7 +33,7 @@ public class UndoApproveShareAccountCommandHandler implements NewCommandSourceHa private final ShareAccountWritePlatformService shareAccountWritePlatformService ; - + @Autowired public UndoApproveShareAccountCommandHandler(final ShareAccountWritePlatformService shareAccountWritePlatformService) { this.shareAccountWritePlatformService = shareAccountWritePlatformService ; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/UpdateShareAccountCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/UpdateShareAccountCommandHandler.java index d71ab1279..b7e6993d2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/UpdateShareAccountCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/handler/UpdateShareAccountCommandHandler.java @@ -32,7 +32,7 @@ import org.springframework.transaction.annotation.Transactional; public class UpdateShareAccountCommandHandler implements NewCommandSourceHandler { private final ShareAccountWritePlatformService shareAccountWritePlatformService ; - + @Autowired public UpdateShareAccountCommandHandler(final ShareAccountWritePlatformService shareAccountWritePlatformService) { this.shareAccountWritePlatformService = shareAccountWritePlatformService ; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java index d3efb05d4..870c9d613 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java @@ -110,7 +110,7 @@ public class ShareAccountDataSerializer { ShareAccountApiConstants.requesteddate_paramname, ShareAccountApiConstants.requestedshares_paramname, ShareAccountApiConstants.purchasedprice_paramname, ShareAccountApiConstants.dateformat_paramname)); - + @Autowired public ShareAccountDataSerializer(final PlatformSecurityContext platformSecurityContext, final FromJsonHelper fromApiJsonHelper, final ChargeRepositoryWrapper chargeRepository, final SavingsAccountRepositoryWrapper savingsAccountRepositoryWrapper, @@ -152,17 +152,17 @@ public class ShareAccountDataSerializer { final Long requestedShares = this.fromApiJsonHelper.extractLongNamed(ShareAccountApiConstants.requestedshares_paramname, element); baseDataValidator.reset().parameter(ShareAccountApiConstants.requestedshares_paramname).value(requestedShares).notNull() .longGreaterThanZero(); - + if(shareProduct.getMinimumClientShares() != null && requestedShares < shareProduct.getMinimumClientShares()) { baseDataValidator.reset().parameter(ShareAccountApiConstants.requestedshares_paramname).value(requestedShares) .failWithCode("client.can.not.purchase.shares.lessthan.product.definition", "Client can not purchase shares less than product definition"); } - + if(shareProduct.getMaximumClientShares() != null && requestedShares > shareProduct.getMaximumClientShares()) { baseDataValidator.reset().parameter(ShareAccountApiConstants.requestedshares_paramname).value(requestedShares) .failWithCode("client.can.not.purchase.shares.morethan.product.definition", "Client can not purchase shares more than product definition"); } - + LocalDate applicationDate = this.fromApiJsonHelper.extractLocalDateNamed(ShareAccountApiConstants.applicationdate_param, element); baseDataValidator.reset().parameter(ShareAccountApiConstants.applicationdate_param).value(applicationDate).notNull(); @@ -304,14 +304,14 @@ public class ShareAccountDataSerializer { SavingsAccount savingsAccount = this.savingsAccountRepositoryWrapper.findOneWithNotFoundDetection(savingsAccountId); if (account.setSavingsAccount(savingsAccount)) { actualChanges.put(ShareAccountApiConstants.savingsaccountid_paramname, savingsAccount.getId()); - } + } } } Date existingApplicationDate = null ; List purchaseTransactionsList = new ArrayList<>() ; Set chargesList = new HashSet<>() ; - + if (this.fromApiJsonHelper.parameterExists(ShareAccountApiConstants.requestedshares_paramname, element) || this.fromApiJsonHelper.parameterExists(ShareAccountApiConstants.charges_paramname, element)) { Set transactions = account.getShareAccountTransactions(); @@ -328,7 +328,7 @@ public class ShareAccountDataSerializer { } } } - + actualChanges.put("reversalIds", reveralIds); Set charges = account.getCharges() ; for(ShareAccountCharge charge: charges) { @@ -339,7 +339,7 @@ public class ShareAccountDataSerializer { Boolean status = Boolean.TRUE; ShareAccountCharge accountCharge = ShareAccountCharge.createNewWithoutShareAccount(charge.getCharge(), charge.percentageOrAmount(), chargeTime, chargeCalculation, status); - chargesList.add(accountCharge) ; + chargesList.add(accountCharge) ; } } } @@ -360,24 +360,24 @@ public class ShareAccountDataSerializer { ShareAccountTransaction transaction = new ShareAccountTransaction(applicationDate, requestedShares, unitPrice); purchaseTransactionsList.add(transaction) ; actualChanges.put(ShareAccountApiConstants.requestedshares_paramname, "Transaction"); - + if(shareProduct.getMinimumClientShares() != null && requestedShares < shareProduct.getMinimumClientShares()) { baseDataValidator.reset().parameter(ShareAccountApiConstants.requestedshares_paramname).value(requestedShares) .failWithCode("client.can.not.purchase.shares.lessthan.product.definition", "Client can not purchase shares less than product definition"); } - + if(shareProduct.getMaximumClientShares() != null && requestedShares > shareProduct.getMaximumClientShares()) { baseDataValidator.reset().parameter(ShareAccountApiConstants.requestedshares_paramname).value(requestedShares) .failWithCode("client.can.not.purchase.shares.morethan.product.definition", "Client can not purchase shares more than product definition"); } } - + if(!purchaseTransactionsList.isEmpty()) { ShareAccountTransaction transaction = purchaseTransactionsList.get(0) ; account.addTransaction(transaction); account.setTotalPendingShares(transaction.getTotalShares()); } - + if (this.fromApiJsonHelper.parameterExists(ShareAccountApiConstants.allowdividendcalculationforinactiveclients_paramname, element)) { Boolean allowdividendsForInactiveClients = this.fromApiJsonHelper.extractBooleanNamed( ShareAccountApiConstants.allowdividendcalculationforinactiveclients_paramname, element); @@ -436,7 +436,7 @@ public class ShareAccountDataSerializer { } account.addCharges(chargesList); } - + createChargeTransaction(account); if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } return actualChanges; @@ -462,16 +462,16 @@ public class ShareAccountDataSerializer { baseDataValidator.reset().parameter(ShareAccountApiConstants.approveddate_paramname).value(submittalDateAsString) .failWithCodeNoParameterAddedToErrorCode("approved.date.cannot.be.before.submitted.date"); } - + Set transactions = account.getShareAccountTransactions() ; for(ShareAccountTransaction transaction: transactions) { if(transaction.isActive() && transaction.isPendingForApprovalTransaction()) { validateTotalSubsribedShares(account, transaction, baseDataValidator) ; } } - + if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } - + AppUser approvedUser = this.platformSecurityContext.authenticatedUser(); account.approve(approvedDate.toDate(), approvedUser); actualChanges.put(ShareAccountApiConstants.id_paramname, account.getId()); @@ -681,7 +681,7 @@ public class ShareAccountDataSerializer { if(requestedDate.isBefore(transactionDate)) { isTransactionBeforeExistingTransactions = true ; break ; - } + } } } if(isTransactionBeforeExistingTransactions) { @@ -689,7 +689,7 @@ public class ShareAccountDataSerializer { .value(requestedDate) .failWithCodeNoParameterAddedToErrorCode("purchase.transaction.date.cannot.be.before.existing.transactions"); } - + if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } final BigDecimal unitPrice = shareProduct.deriveMarketPrice(requestedDate.toDate()); ShareAccountTransaction purchaseTransaction = new ShareAccountTransaction(requestedDate.toDate(), sharesRequested, unitPrice); @@ -830,7 +830,7 @@ public class ShareAccountDataSerializer { if(requestedDate.isBefore(transactionDate)) { isTransactionBeforeExistingTransactions = true ; break ; - } + } } } if(isTransactionBeforeExistingTransactions) { @@ -845,21 +845,21 @@ public class ShareAccountDataSerializer { validateRedeemRequest(account, transaction, baseDataValidator, dataValidationErrors) ; account.addAdditionalPurchasedShares(transaction); actualChanges.put(ShareAccountApiConstants.requestedshares_paramname, transaction); - + handleRedeemSharesChargeTransactions(account, transaction); return actualChanges; } - + private void validateRedeemRequest(final ShareAccount account, ShareAccountTransaction redeemTransaction, final DataValidatorBuilder baseDataValidator, final List dataValidationErrors ) { - + if (account.getTotalApprovedShares() < redeemTransaction.getTotalShares()) { baseDataValidator.reset().parameter(ShareAccountApiConstants.requestedshares_paramname) .value(redeemTransaction.getTotalShares()) .failWithCodeNoParameterAddedToErrorCode("cannot.be.redeemed.due.to.insufficient.shares"); } if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } - + LocalDate redeemDate = new LocalDate(redeemTransaction.getPurchasedDate()); final Integer lockinPeriod = account.getLockinPeriodFrequency(); final PeriodFrequencyType periodType = account.getLockinPeriodFrequencyType(); @@ -867,7 +867,7 @@ public class ShareAccountDataSerializer { Long totalSharesCanBeRedeemed = new Long(0); Long totalSharesPurchasedBeforeRedeem = new Long(0) ; boolean isPurchaseTransactionExist = false ; - + Set transactions = account.getShareAccountTransactions(); for (ShareAccountTransaction transaction : transactions) { if (transaction.isActive() && !transaction.isChargeTransaction()) { @@ -880,7 +880,7 @@ public class ShareAccountDataSerializer { totalSharesCanBeRedeemed -= transaction.getTotalShares(); } } - + if(!purchaseDate.isAfter(redeemDate)) { isPurchaseTransactionExist = true ; if (transaction.isPurchasTransaction()) { @@ -906,7 +906,7 @@ public class ShareAccountDataSerializer { } if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } } - + private LocalDate deriveLockinPeriodDuration(final Integer lockinPeriod, final PeriodFrequencyType periodType, LocalDate purchaseDate) { LocalDate lockinDate = purchaseDate ; if(periodType != null) { @@ -925,11 +925,11 @@ public class ShareAccountDataSerializer { case YEARS: lockinDate = purchaseDate.plusYears(lockinPeriod) ; break ; - } + } } return lockinDate ; } - + private void handleRedeemSharesChargeTransactions(final ShareAccount account, final ShareAccountTransaction transaction) { Set charges = account.getCharges(); BigDecimal totalChargeAmount = BigDecimal.ZERO; @@ -974,7 +974,7 @@ public class ShareAccountDataSerializer { if(closedDate.isBefore(transactionDate)) { isTransactionBeforeExistingTransactions = true ; break ; - } + } } } if(isTransactionBeforeExistingTransactions) { @@ -982,9 +982,9 @@ public class ShareAccountDataSerializer { .value(closedDate) .failWithCodeNoParameterAddedToErrorCode("share.account.cannot.be.closed.before.existing.transactions"); } - + if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } - + AppUser approvedUser = this.platformSecurityContext.authenticatedUser(); final BigDecimal unitPrice = account.getShareProduct().deriveMarketPrice(DateUtils.getDateOfTenant()); ShareAccountTransaction transaction = ShareAccountTransaction.createRedeemTransaction(closedDate.toDate(), diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/PurchasedSharesReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/PurchasedSharesReadPlatformServiceImpl.java index 6011fd88a..0a0cd382f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/PurchasedSharesReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/PurchasedSharesReadPlatformServiceImpl.java @@ -38,7 +38,7 @@ public class PurchasedSharesReadPlatformServiceImpl implements PurchasedSharesReadPlatformService { private final JdbcTemplate jdbcTemplate; - + @Autowired public PurchasedSharesReadPlatformServiceImpl(final RoutingDataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource) ; @@ -54,7 +54,7 @@ public class PurchasedSharesReadPlatformServiceImpl implements private final static class PurchasedSharesDataRowMapper implements RowMapper { private final String schema ; - + public PurchasedSharesDataRowMapper() { StringBuffer buff = new StringBuffer() .append("saps.id, saps.account_id, saps.transaction_date, saps.total_shares, saps.unit_price, ") @@ -78,10 +78,10 @@ public class PurchasedSharesReadPlatformServiceImpl implements final BigDecimal amount = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "amount") ; final BigDecimal chargeAmount = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "chargeamount") ; final BigDecimal amountPaid = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "amountPaid") ; - + return new ShareAccountTransactionData(id,accountId, purchasedDate, numberOfShares, purchasedPrice, statusEnum, typeEnum, amount, chargeAmount, amountPaid); } - + public String schema() { return this.schema ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountChargeReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountChargeReadPlatformServiceImpl.java index 04f688c9d..65f3cf842 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountChargeReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountChargeReadPlatformServiceImpl.java @@ -134,7 +134,7 @@ public class ShareAccountChargeReadPlatformServiceImpl implements .chargeCalculationType(chargeCalculation); final Boolean isActive = rs.getBoolean("isActive"); final BigDecimal chargeamountorpercentage = rs.getBigDecimal("charge_amount_or_percentage") ; - + final Collection chargeOptions = null; return new ShareAccountChargeData(id, chargeId, accountId, name, currency, amount, amountPaid, amountWaived, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountCommandsServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountCommandsServiceImpl.java index 2b5c7e300..dc4b4effa 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountCommandsServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountCommandsServiceImpl.java @@ -33,9 +33,9 @@ import com.google.gson.JsonElement; public class ShareAccountCommandsServiceImpl implements AccountsCommandsService { private final FromJsonHelper fromApiJsonHelper; - + private final ShareAccountDataSerializer shareAccountDataSerializer ; - + @Autowired public ShareAccountCommandsServiceImpl(final FromJsonHelper fromApiJsonHelper, final ShareAccountDataSerializer shareAccountDataSerializer) { @@ -59,7 +59,7 @@ public class ShareAccountCommandsServiceImpl implements AccountsCommandsService }else if(ShareAccountApiConstants.REJECT_ADDITIONSHARES_COMMAND.equals(command)) { return rejectAdditionalShares(accountId, jsonCommand) ; } - + return CommandProcessingResult.empty(); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountDividendReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountDividendReadPlatformServiceImpl.java index a1797c1f7..f8d828bd9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountDividendReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountDividendReadPlatformServiceImpl.java @@ -89,7 +89,7 @@ public class ShareAccountDividendReadPlatformServiceImpl implements ShareAccount if (searchParameters.isSortOrderProvided()) { sqlBuilder.append(' ').append(searchParameters.getSortOrder()); this.columnValidator.validateSqlInjection(sqlBuilder.toString(), searchParameters.getSortOrder()); - + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformService.java index 42a1bf67e..54d3494be 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformService.java @@ -37,6 +37,6 @@ public interface ShareAccountReadPlatformService extends AccountReadPlatformServ public Set getResponseDataParams(); Collection retrieveAllShareAccountDataForDividends(Long productId, boolean fetchInActiveAccounts, LocalDate startDate); - + String retrieveAccountNumberByAccountId(Long accountId); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java index 4b95d9af0..f25985051 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java @@ -83,7 +83,7 @@ public class ShareAccountReadPlatformServiceImpl implements ShareAccountReadPlat private final JdbcTemplate jdbcTemplate; private final DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd"); private final PaginationHelper shareAccountDataPaginationHelper = new PaginationHelper<>(); - + @Autowired public ShareAccountReadPlatformServiceImpl(final RoutingDataSource dataSource, final ApplicationContext applicationContext, final ChargeReadPlatformService chargeReadPlatformService, @@ -150,7 +150,7 @@ public class ShareAccountReadPlatformServiceImpl implements ShareAccountReadPlat public ShareAccountData retrieveOne(final Long id, final boolean includeTemplate) { Collection charges = this.shareAccountChargeReadPlatformService.retrieveAccountCharges(id, "active"); Collection purchasedShares = this.purchasedSharesReadPlatformService.retrievePurchasedShares(id); - + ShareAccountMapper mapper = new ShareAccountMapper(charges, purchasedShares); String query = "select " + mapper.schema() + "where sa.id=?"; ShareAccountData data = (ShareAccountData)this.jdbcTemplate.queryForObject(query, mapper, new Object[] { id }); @@ -161,7 +161,7 @@ public class ShareAccountReadPlatformServiceImpl implements ShareAccountReadPlat data.setCurrentMarketPrice(currentMarketPrice); if(!includeTemplate) { Collection dividends = this.retrieveAssociatedDividends(id) ; - data.setDividends(dividends); + data.setDividends(dividends); } if (includeTemplate) { final Collection lockinPeriodFrequencyTypeOptions = this.shareProductDropdownReadPlatformService @@ -448,7 +448,7 @@ public class ShareAccountReadPlatformServiceImpl implements ShareAccountReadPlat .append("saps.id as purchasedId, saps.account_id as accountId, saps.transaction_date as transactionDate, saps.total_shares as purchasedShares, saps.unit_price as unitPrice, ") .append("saps.status_enum as purchaseStatus, saps.type_enum as purchaseType, saps.amount as amount, saps.charge_amount as chargeamount, ") .append("saps.amount_paid as amountPaid "); - + schema = buff.toString(); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountSchedularService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountSchedularService.java index 31e93099e..604f34410 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountSchedularService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountSchedularService.java @@ -23,5 +23,5 @@ package org.apache.fineract.portfolio.shareaccounts.service; public interface ShareAccountSchedularService { void postDividend(final Long dividendDetailId, final Long savingsId); - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountWritePlatformService.java index 76c53b2b4..e416a6068 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountWritePlatformService.java @@ -25,9 +25,9 @@ import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; public interface ShareAccountWritePlatformService { public CommandProcessingResult createShareAccount(JsonCommand jsonCommand) ; - + public CommandProcessingResult updateShareAccount(Long accountId, JsonCommand jsonCommand) ; - + public CommandProcessingResult approveShareAccount(Long accountId, JsonCommand jsonCommand) ; public CommandProcessingResult activateShareAccount(Long accountId, JsonCommand jsonCommand) ; @@ -35,13 +35,13 @@ public interface ShareAccountWritePlatformService { public CommandProcessingResult rejectShareAccount(Long entityId, JsonCommand jsonCommand); public CommandProcessingResult undoApproveShareAccount(Long entityId, JsonCommand jsonCommand); - + public CommandProcessingResult closeShareAccount(Long accountId, JsonCommand jsonCommand) ; - + public CommandProcessingResult applyAddtionalShares(final Long accountId, JsonCommand jsonCommand) ; - + public CommandProcessingResult approveAdditionalShares(Long accountId, JsonCommand jsonCommand) ; - + public CommandProcessingResult rejectAdditionalShares(Long accountId, JsonCommand jsonCommand) ; public CommandProcessingResult redeemShares(Long accountId, JsonCommand jsonCommand); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountWritePlatformServiceJpaRepositoryImpl.java index 192449b22..f7144f114 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountWritePlatformServiceJpaRepositoryImpl.java @@ -71,7 +71,7 @@ public class ShareAccountWritePlatformServiceJpaRepositoryImpl implements ShareA private final ShareAccountRepositoryWrapper shareAccountRepository; private final ShareProductRepositoryWrapper shareProductRepository ; - + private final AccountNumberGenerator accountNumberGenerator; private final AccountNumberFormatRepositoryWrapper accountNumberFormatRepository; @@ -81,10 +81,10 @@ public class ShareAccountWritePlatformServiceJpaRepositoryImpl implements ShareA private final NoteRepository noteRepository; private final BusinessEventNotifierService businessEventNotifierService; - + @Autowired public ShareAccountWritePlatformServiceJpaRepositoryImpl(final ShareAccountDataSerializer accountDataSerializer, - final ShareAccountRepositoryWrapper shareAccountRepository, + final ShareAccountRepositoryWrapper shareAccountRepository, final ShareProductRepositoryWrapper shareProductRepository, final AccountNumberGenerator accountNumberGenerator, final AccountNumberFormatRepositoryWrapper accountNumberFormatRepository, @@ -168,9 +168,9 @@ public class ShareAccountWritePlatformServiceJpaRepositoryImpl implements ShareA } transactionDto.put("amount", amount); }else { - transactionDto.put("amount", transaction.amount()); + transactionDto.put("amount", transaction.amount()); } - + transactionDto.put("chargeAmount", transaction.chargeAmount()); transactionDto.put("paymentTypeId", null); // FIXME::make it cash // payment @@ -273,7 +273,7 @@ public class ShareAccountWritePlatformServiceJpaRepositoryImpl implements ShareA Set transactions = account.getShareAccountTransactions(); Set journalTransactions = new HashSet<>(); Long totalSubsribedShares = new Long(0) ; - + for (ShareAccountTransaction transaction : transactions) { if (transaction.isActive() && transaction.isPurchasTransaction()) { journalTransactions.add(transaction); @@ -283,7 +283,7 @@ public class ShareAccountWritePlatformServiceJpaRepositoryImpl implements ShareA ShareProduct shareProduct = account.getShareProduct() ; shareProduct.addSubscribedShares(totalSubsribedShares); this.shareProductRepository.save(shareProduct); - + this.journalEntryWritePlatformService.createJournalEntriesForShares(populateJournalEntries(account, journalTransactions)); this.businessEventNotifierService.notifyBusinessEventWasExecuted(BUSINESS_EVENTS.SHARE_ACCOUNT_APPROVE, @@ -321,7 +321,7 @@ public class ShareAccountWritePlatformServiceJpaRepositoryImpl implements ShareA journalTransactions.add(transaction); } } - + this.journalEntryWritePlatformService.createJournalEntriesForShares(populateJournalEntries(account, journalTransactions)); return new CommandProcessingResultBuilder() // .withCommandId(jsonCommand.commandId()) // @@ -348,7 +348,7 @@ public class ShareAccountWritePlatformServiceJpaRepositoryImpl implements ShareA this.noteRepository.save(note); } } - + Set transactions = account.getShareAccountTransactions() ; ArrayList journalEntryTransactions = new ArrayList<>() ; for(ShareAccountTransaction transaction: transactions) { @@ -469,13 +469,13 @@ public class ShareAccountWritePlatformServiceJpaRepositoryImpl implements ShareA ShareAccountTransaction transaction = (ShareAccountTransaction) changes .get(ShareAccountApiConstants.requestedshares_paramname); // after saving, entity will have different object. So need to retrieve the entity object - transaction = account.getShareAccountTransaction(transaction); + transaction = account.getShareAccountTransaction(transaction); Long redeemShares = transaction.getTotalShares() ; ShareProduct shareProduct = account.getShareProduct() ; - //remove the redeem shares from total subscribed shares - shareProduct.removeSubscribedShares(redeemShares); + //remove the redeem shares from total subscribed shares + shareProduct.removeSubscribedShares(redeemShares); this.shareProductRepository.save(shareProduct); - + Set transactions = new HashSet<>(); transactions.add(transaction); this.journalEntryWritePlatformService.createJournalEntriesForShares(populateJournalEntries(account, transactions)); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/SharesEnumerations.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/SharesEnumerations.java index f6bb97603..9265568dd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/SharesEnumerations.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/SharesEnumerations.java @@ -124,7 +124,7 @@ public class SharesEnumerations { public static EnumOptionData minimumActivePeriodFrequencyType(final int id) { return minimumActivePeriodFrequencyType(SharePeriodFrequencyType.fromInt(id)); } - + public static EnumOptionData minimumActivePeriodFrequencyType(final SharePeriodFrequencyType type) { final String codePrefix = "shares.minimumactive." ; EnumOptionData optionData = new EnumOptionData(SharePeriodFrequencyType.INVALID.getValue().longValue(), @@ -151,7 +151,7 @@ public class SharesEnumerations { } return optionData; } - + public static EnumOptionData lockinPeriodFrequencyType(final SharePeriodFrequencyType type) { final String codePrefix = "shares.lockin." ; EnumOptionData optionData = new EnumOptionData(SharePeriodFrequencyType.INVALID.getValue().longValue(), diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/data/ShareProductMarketPriceData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/data/ShareProductMarketPriceData.java index fcaf1c4a0..b09312f73 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/data/ShareProductMarketPriceData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/data/ShareProductMarketPriceData.java @@ -24,9 +24,9 @@ import java.util.Date; public class ShareProductMarketPriceData { private final Long id ; - + private final Date fromDate; - + private final BigDecimal shareValue; public ShareProductMarketPriceData(final Long id, final Date fromDate, final BigDecimal shareValue) { @@ -34,11 +34,11 @@ public class ShareProductMarketPriceData { this.fromDate = fromDate ; this.shareValue = shareValue ; } - + public Long getId() { return this.id ; } - + public Date getStartDate() { return this.fromDate; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java index fefd1d4d0..cd18bb664 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java @@ -87,7 +87,7 @@ public class ShareProduct extends AbstractAuditableCustom { @Column(name = "totalsubscribed_shares", nullable = true) private Long totalSubscribedShares; - + @Column(name = "unit_price", nullable = false) private BigDecimal unitPrice; @@ -416,30 +416,30 @@ public class ShareProduct extends AbstractAuditableCustom { } return marketValue; } - + public void addSubscribedShares(final Long subscribedShares) { if(this.totalSubscribedShares == null) { this.totalSubscribedShares = new Long(0) ; } this.totalSubscribedShares += subscribedShares ; } - + public void removeSubscribedShares(final Long subscribedShares) { this.totalSubscribedShares -= subscribedShares ; } - + public Long getSubscribedShares() { return this.totalSubscribedShares ; } - + public Long getMinimumClientShares() { return this.minimumShares ; } - + public Long getMaximumClientShares() { return this.maximumShares ; } - + public Long getDefaultClientShares() { return this.nominalShares ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductMarketPrice.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductMarketPrice.java index 9bcc16532..65714f22a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductMarketPrice.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductMarketPrice.java @@ -34,43 +34,43 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; @Entity @Table(name = "m_share_product_market_price") public class ShareProductMarketPrice extends AbstractPersistableCustom { - + @ManyToOne(optional = false) @JoinColumn(name = "product_id", referencedColumnName = "id", nullable = false) private ShareProduct product; - + @Column(name = "from_date") @Temporal(TemporalType.DATE) private Date fromDate; - + @Column(name = "share_value", nullable = false) private BigDecimal shareValue ; - + public ShareProductMarketPrice() { - + } - + public ShareProductMarketPrice(final Date fromDate, final BigDecimal shareValue) { this.fromDate = fromDate ; this.shareValue = shareValue ; } - + public void setShareProduct(final ShareProduct product) { this.product = product ; } - + public Date getStartDate() { return this.fromDate ; } - + public BigDecimal getPrice() { return this.shareValue ; } - + public void setStartDate(Date date) { this.fromDate = date ; } - + public void setShareValue(BigDecimal value) { this.shareValue = value ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductRepositoryWrapper.java index 038cecf3e..07ddbc770 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductRepositoryWrapper.java @@ -26,21 +26,21 @@ import org.springframework.stereotype.Service; public class ShareProductRepositoryWrapper { private final ShareProductRepository shareProductRepository ; - + @Autowired public ShareProductRepositoryWrapper(final ShareProductRepository shareProductRepository) { this.shareProductRepository = shareProductRepository ; } - + public ShareProduct findOneWithNotFoundDetection(final Long productId) { return this.shareProductRepository.findById(productId) .orElseThrow(() -> new ProductNotFoundException(productId, "share")); } - + public void save(ShareProduct product) { this.shareProductRepository.save(product) ; } - + public void saveAndFlush(ShareProduct product) { this.shareProductRepository.saveAndFlush(product) ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/handler/CreateShareProductCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/handler/CreateShareProductCommandHandler.java index 7b495c1f9..aaaa26f69 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/handler/CreateShareProductCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/handler/CreateShareProductCommandHandler.java @@ -32,7 +32,7 @@ import org.springframework.transaction.annotation.Transactional; public class CreateShareProductCommandHandler implements NewCommandSourceHandler { private final ShareProductWritePlatformService shareProductWritePlatformService ; - + @Autowired public CreateShareProductCommandHandler(final ShareProductWritePlatformService shareProductWritePlatformService) { this.shareProductWritePlatformService = shareProductWritePlatformService ; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/handler/UpdateShareProductCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/handler/UpdateShareProductCommandHandler.java index f4b57109b..29ff0eeca 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/handler/UpdateShareProductCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/handler/UpdateShareProductCommandHandler.java @@ -32,7 +32,7 @@ import org.springframework.transaction.annotation.Transactional; public class UpdateShareProductCommandHandler implements NewCommandSourceHandler { private final ShareProductWritePlatformService shareProductWritePlatformService ; - + @Autowired public UpdateShareProductCommandHandler(final ShareProductWritePlatformService shareProductWritePlatformService) { this.shareProductWritePlatformService = shareProductWritePlatformService ; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/serialization/ShareProductDataSerializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/serialization/ShareProductDataSerializer.java index 59fda9792..c4fc98cfe 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/serialization/ShareProductDataSerializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/serialization/ShareProductDataSerializer.java @@ -118,7 +118,7 @@ public class ShareProductDataSerializer { final String shortName = this.fromApiJsonHelper.extractStringNamed(ShareProductApiConstants.shortname_paramname, element); baseDataValidator.reset().parameter(ShareProductApiConstants.shortname_paramname).value(shortName).notBlank() .notExceedingLengthOf(4); - + final String description = this.fromApiJsonHelper .extractStringNamed(ShareProductApiConstants.description_paramname, element); baseDataValidator.reset().parameter(ShareProductApiConstants.description_paramname).value(description) @@ -141,7 +141,7 @@ public class ShareProductDataSerializer { final Integer inMultiplesOf = this.fromApiJsonHelper.extractIntegerWithLocaleNamed( ShareProductApiConstants.inmultiplesof_paramname, element); final MonetaryCurrency currency = new MonetaryCurrency(currencyCode, digitsAfterDecimal, inMultiplesOf); - + final BigDecimal unitPrice = this.fromApiJsonHelper.extractBigDecimalNamed(ShareProductApiConstants.unitprice_paramname, element, locale); baseDataValidator.reset().parameter(ShareProductApiConstants.unitprice_paramname).value(unitPrice).notNull().positiveAmount(); @@ -199,7 +199,7 @@ public class ShareProductDataSerializer { sharesIssued, unitPrice, shareCapitalValue, minimumClientShares, nominalClientShares, maximumClientShares, marketPriceSet, charges, allowdividendsForInactiveClients, lockinPeriod, lockPeriodType, minimumActivePeriod, minimumActivePeriodType, createdBy, createdDate, modifiedBy, modifiedOn, accountingRuleType); - + for (ShareProductMarketPrice data : marketPriceSet) { data.setShareProduct(product); } @@ -330,13 +330,13 @@ public class ShareProductDataSerializer { }else { product.setTotalIssuedShares(sharesIssued) ; } - + if(sharesIssued != null && product.getSubscribedShares() != null && sharesIssued < product.getSubscribedShares()) { baseDataValidator.reset().parameter(ShareProductApiConstants.totalsharesissued_paramname).value(sharesIssued) .failWithCodeNoParameterAddedToErrorCode("sharesissued.can.not.be.lessthan.accounts.subscribed.shares"); } - - + + if (this.fromApiJsonHelper.parameterExists(ShareProductApiConstants.currency_paramname, element) && this.fromApiJsonHelper.parameterExists(ShareProductApiConstants.digitsafterdecimal_paramname, element) && this.fromApiJsonHelper.parameterExists(ShareProductApiConstants.inmultiplesof_paramname, element)) { @@ -458,7 +458,7 @@ public class ShareProductDataSerializer { } if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } - + BigDecimal shareCapitalValue; if (sharesIssued != null || unitPrice != null) { if (sharesIssued == null) sharesIssued = product.getTotalShares(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductDividendAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductDividendAssembler.java index 12ac51e30..bf5fe07ea 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductDividendAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductDividendAssembler.java @@ -63,10 +63,10 @@ public class ShareProductDividendAssembler { if(shareAccountDatas == null || shareAccountDatas.isEmpty()) { throw new ShareAccountsNotFoundException(product.getId()) ; } - + ShareProductDividendPayOutDetails productDividendPayOutDetails = null; int minimumActivePeriod = 0 ; - if(product.getMinimumActivePeriod() != null) { //minimum active period may be null + if(product.getMinimumActivePeriod() != null) { //minimum active period may be null minimumActivePeriod = product.getMinimumActivePeriod(); } final Map numberOfSharesdaysPerAccount = new HashMap<>(); @@ -105,7 +105,7 @@ public class ShareProductDividendAssembler { final PurchasedSharesStatusType type = PurchasedSharesStatusType.fromInt(purchasedSharesData.getType().getId() .intValue()); if (status.isApproved() && !type.isChargePayment()) { - + LocalDate shareStartDate = purchasedSharesData.getPurchasedDate(); if (shareStartDate.isBefore(lastDividendPostDate)) { shareStartDate = lastDividendPostDate; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductDividendReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductDividendReadPlatformServiceImpl.java index a1833f1f4..ca1516db2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductDividendReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductDividendReadPlatformServiceImpl.java @@ -73,7 +73,7 @@ public class ShareProductDividendReadPlatformServiceImpl implements ShareProduct if (searchParameters.isOrderByRequested()) { sqlBuilder.append(" order by ").append(searchParameters.getOrderBy()); this.columnValidator.validateSqlInjection(sqlBuilder.toString(), searchParameters.getOrderBy()); - + if (searchParameters.isSortOrderProvided()) { sqlBuilder.append(' ').append(searchParameters.getSortOrder()); this.columnValidator.validateSqlInjection(sqlBuilder.toString(), searchParameters.getSortOrder()); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductDropdownReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductDropdownReadPlatformService.java index ff1126e0b..94bbc5af7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductDropdownReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductDropdownReadPlatformService.java @@ -25,6 +25,6 @@ import org.apache.fineract.infrastructure.core.data.EnumOptionData; public interface ShareProductDropdownReadPlatformService { Collection retrieveLockinPeriodFrequencyTypeOptions(); - + Collection retrieveMinimumActivePeriodFrequencyTypeOptions() ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductWritePlatformServiceJpaRepositoryImpl.java index 278db437f..f0168fb44 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductWritePlatformServiceJpaRepositoryImpl.java @@ -203,14 +203,14 @@ public class ShareProductWritePlatformServiceJpaRepositoryImpl implements ShareP "Unknown data integrity issue with resource."); } - + private void handleDataIntegrityIssues(final JsonCommand command, final Throwable realCause, final Exception dve) { if (realCause.getMessage().contains("'name'")) { final String name = command.stringValueOfParameterNamed(ShareProductApiConstants.name_paramname); throw new PlatformDataIntegrityException("error.msg.shareproduct.duplicate.name", "Share Product with name `" + name + "` already exists", "name", name); - } + } throw new PlatformDataIntegrityException("error.msg.shareproduct.unknown.data.integrity.issue", "Unknown data integrity issue with resource."); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java index 8b8ba23f5..db42ae5b6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java @@ -199,22 +199,22 @@ public class TaxComponent extends AbstractAuditableCustom { return dates; } - + public Integer getDebitAccountType() { return this.debitAccountType; } - + public GLAccount getDebitAcount() { return this.debitAcount; } - + public Integer getCreditAccountType() { return this.creditAccountType; } - + public GLAccount getCreditAcount() { return this.creditAcount; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java index 907489594..b1d077603 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java @@ -60,7 +60,7 @@ public class TaxComponentHistory extends AbstractAuditableCustom final LocalDate endDate) { return new TaxComponentHistory(percentage, startDate, endDate); } - + public LocalDate startDate(){ LocalDate startDate = null; if(this.startDate != null){ @@ -68,7 +68,7 @@ public class TaxComponentHistory extends AbstractAuditableCustom } return startDate; } - + public LocalDate endDate(){ LocalDate endDate = null; if(this.endDate != null){ @@ -76,7 +76,7 @@ public class TaxComponentHistory extends AbstractAuditableCustom } return endDate; } - + public boolean occursOnDayFromAndUpToAndIncluding(final LocalDate target) { if(this.endDate == null){ return target != null && target.isAfter(startDate()); @@ -84,7 +84,7 @@ public class TaxComponentHistory extends AbstractAuditableCustom return target != null && target.isAfter(startDate()) && !target.isAfter(endDate()); } - + public BigDecimal getPercentage() { return this.percentage; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/data/TransfersDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/data/TransfersDataValidator.java index 5db949fd1..d9a32095b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/data/TransfersDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/data/TransfersDataValidator.java @@ -133,7 +133,7 @@ public final class TransfersDataValidator { .extractLongNamed(TransferApiConstants.destinationOfficeIdParamName, element); baseDataValidator.reset().parameter(TransferApiConstants.destinationOfficeIdParamName).value(destinationOfficeId).notNull() .integerGreaterThanZero(); - + validateNote(baseDataValidator, element); throwExceptionIfValidationWarningsExist(dataValidationErrors); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java index a08ac5d86..43764fdb7 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java @@ -101,7 +101,7 @@ public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWr this.savingsAccountWritePlatformService = savingsAccountWritePlatformService; this.clientTransferDetailsRepositoryWrapper = clientTransferDetailsRepositoryWrapper; this.context = context; - + } @Override @@ -250,7 +250,7 @@ public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWr /** * This API is meant for transferring clients between branches mainly by * Organizations following an Individual lending Model
            - * + * * @param clientId * @param jsonCommand * @return @@ -281,7 +281,7 @@ public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWr * If the Client is linked to any Groups, we can optionally choose to have * all the linkages broken and all JLG Loans are converted into Individual * Loans - * + * * @param clientId * @param jsonCommand * @return @@ -314,7 +314,7 @@ public class TransferWritePlatformServiceJpaRepositoryImpl implements TransferWr * If the Client is linked to any Groups, we can optionally choose to have * all the linkages broken and all JLG Loans are converted into Individual * Loans - * + * * @param clientId * @param jsonCommand * @return diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/api/SpmApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/spm/api/SpmApiResource.java index 3fdf45822..4bfeb8191 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/spm/api/SpmApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/spm/api/SpmApiResource.java @@ -145,9 +145,9 @@ public class SpmApiResource { }else{ throw new UnrecognizedQueryParamException("command", command); } - + } - + private String getResponse(Long id) { Gson gson = new Gson(); HashMap response = new HashMap<>(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/data/ScorecardValue.java b/fineract-provider/src/main/java/org/apache/fineract/spm/data/ScorecardValue.java index c45b19bff..46f7299a1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/spm/data/ScorecardValue.java +++ b/fineract-provider/src/main/java/org/apache/fineract/spm/data/ScorecardValue.java @@ -66,15 +66,15 @@ public class ScorecardValue { this.value = value; } - + public Date getCreatedOn() { return this.createdOn; } - + public void setCreatedOn(Date createdOn) { this.createdOn = createdOn; } - - + + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Survey.java b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Survey.java index ad4f96170..811351272 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Survey.java +++ b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Survey.java @@ -80,7 +80,7 @@ public class Survey extends AbstractPersistableCustom { }else{ this.questions = new ArrayList<>(); } - + this.questions.addAll(questions); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/repository/SurveyRepository.java b/fineract-provider/src/main/java/org/apache/fineract/spm/repository/SurveyRepository.java index 4e60376ae..f217bbea4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/spm/repository/SurveyRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/spm/repository/SurveyRepository.java @@ -30,7 +30,7 @@ public interface SurveyRepository extends JpaRepository { @Query("select s from Survey s where :pointInTime between s.validFrom and s.validTo") List fetchActiveSurveys(@Param("pointInTime") final Date pointInTime); - + @Query("select s from Survey s ") List fetchAllSurveys(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/service/ScorecardReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/spm/service/ScorecardReadPlatformService.java index 78d74dca9..0aeb7e38e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/spm/service/ScorecardReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/spm/service/ScorecardReadPlatformService.java @@ -24,10 +24,10 @@ import org.apache.fineract.spm.data.ScorecardData; public interface ScorecardReadPlatformService { - + Collection retrieveScorecardByClient(final Long clientId); - + Collection retrieveScorecardBySurveyAndClient(final Long surveyId,final Long clientId); - + Collection retrieveScorecardBySurvey(final Long surveyId); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/service/SpmService.java b/fineract-provider/src/main/java/org/apache/fineract/spm/service/SpmService.java index edea42094..b7156c7be 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/spm/service/SpmService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/spm/service/SpmService.java @@ -61,7 +61,7 @@ public class SpmService { return this.surveyRepository.fetchActiveSurveys(new Date()); } - + public List fetchAllSurveys() { this.securityContext.authenticatedUser(); @@ -86,7 +86,7 @@ public class SpmService { // set valid to for 100 years Calendar cal = Calendar.getInstance() ; cal.setTime(validFrom.toDate()); - cal.add(Calendar.YEAR, 100); + cal.add(Calendar.YEAR, 100); survey.setValidFrom(validFrom.toDate()); survey.setValidTo(cal.getTime()); try { @@ -102,7 +102,7 @@ public class SpmService { } return survey ; } - + public Survey updateSurvey(final Survey survey) { try { this.surveyValidator.validate(survey); @@ -128,7 +128,7 @@ public class SpmService { this.surveyRepository.save(survey); } - + public void activateSurvey(final Long id) { this.securityContext.authenticatedUser(); @@ -142,12 +142,12 @@ public class SpmService { this.surveyRepository.save(survey); } - - + + public static DateTime getStartOfToday() { return DateTime.now().withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0).withMillisOfSecond(0); } - + private void handleDataIntegrityIssues(final Throwable realCause, final Exception dve, String key) { if (realCause.getMessage().contains("m_survey_scorecards")) { throw new PlatformDataIntegrityException( diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/util/SurveyApiConstants.java b/fineract-provider/src/main/java/org/apache/fineract/spm/util/SurveyApiConstants.java index 6b9351105..454758ae8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/spm/util/SurveyApiConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/spm/util/SurveyApiConstants.java @@ -20,7 +20,7 @@ package org.apache.fineract.spm.util; public class SurveyApiConstants { - + public static final String SURVEY_RESOURCE_NAME = "survey"; public static final String keyParamName = "key"; public static final String nameParamName = "name"; @@ -32,13 +32,13 @@ public class SurveyApiConstants { public static final String optionsParamName = "options"; public static final String textParamName = "text"; public static final String lengthParamName = "length"; - - //to validate length/max value + + //to validate length/max value public static final Integer maxCountryCodeLength = 2; public static final Integer maxTextLength = 255; public static final Integer maxNameLength = 255; public static final Integer maxKeyLength = 32; public static final Integer maxOptionsValue = 9999; public static final Integer maxDescriptionLength = 4000; - + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/util/SurveyMapper.java b/fineract-provider/src/main/java/org/apache/fineract/spm/util/SurveyMapper.java index db3718df2..5d4c7c32c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/spm/util/SurveyMapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/spm/util/SurveyMapper.java @@ -45,7 +45,7 @@ public class SurveyMapper { return surveyData; } - public static Survey map(final SurveyData surveyData, Survey survey) { + public static Survey map(final SurveyData surveyData, Survey survey) { survey.setComponents(SurveyMapper.mapComponentDatas(surveyData.getComponentDatas(), survey)); survey.setQuestions(SurveyMapper.mapQuestionDatas(surveyData.getQuestionDatas(), survey)); survey.setKey(surveyData.getKey()); diff --git a/fineract-provider/src/main/java/org/apache/fineract/template/service/TemplateMergeService.java b/fineract-provider/src/main/java/org/apache/fineract/template/service/TemplateMergeService.java index e53f1ce07..66463c12e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/template/service/TemplateMergeService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/template/service/TemplateMergeService.java @@ -45,7 +45,7 @@ import java.util.Map.Entry; @Service public class TemplateMergeService { private final static Logger logger = LoggerFactory.getLogger(TemplateMergeService.class); - + // private final FromJsonHelper fromApiJsonHelper; private Map scopes; @@ -55,12 +55,12 @@ public class TemplateMergeService { public void setAuthToken(final String authToken) { this.authToken = authToken; } - + public String compile(final Template template, final Map scopes) throws IOException { this.scopes = scopes; this.scopes.put("static", new TemplateFunctions()); - + final MustacheFactory mf = new DefaultMustacheFactory(); final Mustache mustache = mf.compile(new StringReader(template.getText()), template.getName()); @@ -169,7 +169,7 @@ public class TemplateMergeService { return sb.toString(); } - + @SuppressWarnings("unchecked") private void expandMapArrays(Object value) { if (value instanceof Map) { @@ -188,14 +188,14 @@ public class TemplateMergeService { valueAsMap_second.put(valueAsMapEntryKey + "#" + i, object); ++i; expandMapArrays(object); - + } } } valueAsMap.putAll(valueAsMap_second); - } + } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/api/RolesApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/api/RolesApiResource.java index d3c6f30ad..016fc3301 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/api/RolesApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/api/RolesApiResource.java @@ -154,7 +154,7 @@ public class RolesApiResource { /** * Roles enable or disable - * + * * @param roleId * @param commandParam * @param apiRequestBodyAsJson @@ -242,7 +242,7 @@ public class RolesApiResource { /** * Delete Role - * + * * @param roleId * @return */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/AppUserData.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/AppUserData.java index e1bb4f315..fc1561aca 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/AppUserData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/AppUserData.java @@ -53,7 +53,7 @@ public class AppUserData { private final Collection selectedRoles; private final StaffData staff; private final Boolean isSelfServiceUser; - + @SuppressWarnings("unused") private Set clients; @@ -158,11 +158,11 @@ public class AppUserData { public int hashCode() { return id != null ? id.hashCode() : 0; } - + public void setClients(Set clients){ this.clients = clients; } - + public boolean isSelfServiceUser() { return this.isSelfServiceUser==null?false:this.isSelfServiceUser; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java index 9e6357aab..846d00d76 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java @@ -119,12 +119,12 @@ public class AppUser extends AbstractPersistableCustom implements Platform @Column(name = "is_self_service_user", nullable = false) private boolean isSelfServiceUser; - + @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch=FetchType.EAGER) @JoinColumn(name = "appuser_id", referencedColumnName= "id", nullable = false) private Set appUserClientMappings = new HashSet<>(); - public static AppUser fromJson(final Office userOffice, final Staff linkedStaff, final Set allRoles, + public static AppUser fromJson(final Office userOffice, final Staff linkedStaff, final Set allRoles, final Collection clients, final JsonCommand command) { final String username = command.stringValueOfParameterNamed("username"); @@ -155,7 +155,7 @@ public class AppUser extends AbstractPersistableCustom implements Platform final String email = command.stringValueOfParameterNamed("email"); final String firstname = command.stringValueOfParameterNamed("firstname"); final String lastname = command.stringValueOfParameterNamed("lastname"); - + final boolean isSelfServiceUser = command.booleanPrimitiveValueOfParameterNamed(AppUserConstants.IS_SELF_SERVICE_USER); return new AppUser(userOffice, user, allRoles, email, firstname, lastname, linkedStaff, passwordNeverExpire, @@ -169,7 +169,7 @@ public class AppUser extends AbstractPersistableCustom implements Platform } public AppUser(final Office office, final User user, final Set roles, final String email, final String firstname, - final String lastname, final Staff staff, final boolean passwordNeverExpire, + final String lastname, final Staff staff, final boolean passwordNeverExpire, final boolean isSelfServiceUser, final Collection clients) { this.office = office; this.email = email.trim(); @@ -301,7 +301,7 @@ public class AppUser extends AbstractPersistableCustom implements Platform this.passwordNeverExpires = newValue; } } - + if(command.hasParameter(AppUserConstants.IS_SELF_SERVICE_USER)){ if (command.isChangeInBooleanParameterNamed(AppUserConstants.IS_SELF_SERVICE_USER, this.isSelfServiceUser)){ final boolean newValue = command.booleanPrimitiveValueOfParameterNamed(AppUserConstants.IS_SELF_SERVICE_USER); @@ -309,10 +309,10 @@ public class AppUser extends AbstractPersistableCustom implements Platform this.isSelfServiceUser = newValue; } } - + if(this.isSelfServiceUser && command.hasParameter(AppUserConstants.CLIENTS)){ actualChanges.put(AppUserConstants.CLIENTS, command.arrayValueOfParameterNamed(AppUserConstants.CLIENTS)); - Set newClients = createAppUserClientMappings(clients); + Set newClients = createAppUserClientMappings(clients); if(this.appUserClientMappings == null){ this.appUserClientMappings = new HashSet<>(); }else{ @@ -342,7 +342,7 @@ public class AppUser extends AbstractPersistableCustom implements Platform /** * Delete is a soft delete. Updates flag so it wont appear in * query/report results. - * + * * Any fields with unique constraints and prepended with id of record. */ public void delete() { @@ -649,7 +649,7 @@ public class AppUser extends AbstractPersistableCustom implements Platform public boolean isSelfServiceUser() { return this.isSelfServiceUser; } - + public Set getAppUserClientMappings() { return this.appUserClientMappings; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserClientMapping.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserClientMapping.java index 417d56755..f8d401c13 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserClientMapping.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserClientMapping.java @@ -30,13 +30,13 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; @Entity @Table(name = "m_selfservice_user_client_mapping") public class AppUserClientMapping extends AbstractPersistableCustom { - + @ManyToOne(optional = false, cascade = CascadeType.PERSIST) @JoinColumn(name = "client_id", nullable = false) private Client client; public AppUserClientMapping(){ - + } public AppUserClientMapping(Client client){ @@ -46,7 +46,7 @@ public class AppUserClientMapping extends AbstractPersistableCustom { public Client getClient() { return this.client; } - + @Override public boolean equals(Object obj) { @@ -66,7 +66,7 @@ public class AppUserClientMapping extends AbstractPersistableCustom { return null == this.client.getId() ? false : this.client.getId().equals(that.client.getId()); } - + @Override public int hashCode() { diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserRepositoryWrapper.java index 3af780549..69e042468 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserRepositoryWrapper.java @@ -26,12 +26,12 @@ import org.springframework.stereotype.Service; public class AppUserRepositoryWrapper { private final AppUserRepository appUserRepository ; - + @Autowired public AppUserRepositoryWrapper(final AppUserRepository appUserRepository) { this.appUserRepository = appUserRepository ; } - + public AppUser fetchSystemUser() { String userName = "system" ; AppUser user = this.appUserRepository.findAppUserByName(userName); diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/Role.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/Role.java index fedc7e495..d02c87ac1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/Role.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/Role.java @@ -133,7 +133,7 @@ public class Role extends AbstractPersistableCustom implements Serializabl public String getName() { return this.name; } - + public void disableRole() { this.disabled = true; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/RoleRepository.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/RoleRepository.java index dd2c1c95d..2eb4d2b31 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/RoleRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/RoleRepository.java @@ -27,8 +27,8 @@ public interface RoleRepository extends JpaRepository, JpaSpecificat @Query("SELECT COUNT(a) FROM AppUser a JOIN a.roles r WHERE r.id = :roleId AND a.deleted = false") Integer getCountOfRolesAssociatedWithUsers(@Param("roleId") Long roleId); - + @Query("SELECT role FROM Role role WHERE role.name = :name") Role getRoleByName(@Param("name") String name); - + } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/exception/RoleNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/exception/RoleNotFoundException.java index 163531169..5159a5224 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/exception/RoleNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/exception/RoleNotFoundException.java @@ -28,7 +28,7 @@ public class RoleNotFoundException extends AbstractPlatformResourceNotFoundExcep public RoleNotFoundException(final Long id) { super("error.msg.role.id.invalid", "Role with identifier " + id + " does not exist", id); } - + public RoleNotFoundException(final String name) { super("error.msg.role.name.invalid", "Role with name " + name + " does not exist", name); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/exception/UserNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/exception/UserNotFoundException.java index ae534971c..2515494b4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/exception/UserNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/exception/UserNotFoundException.java @@ -28,7 +28,7 @@ public class UserNotFoundException extends AbstractPlatformResourceNotFoundExcep public UserNotFoundException(final Long id) { super("error.msg.user.id.invalid", "User with identifier " + id + " does not exist", id); } - + public UserNotFoundException(final String userName) { super("error.msg.user.name.not.found", "User with identifier " + userName + " does not exist"); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserReadPlatformService.java index b17f6a1ac..7f6a01f30 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserReadPlatformService.java @@ -31,6 +31,6 @@ public interface AppUserReadPlatformService { AppUserData retrieveNewUserDetails(); AppUserData retrieveUser(Long userId); - + boolean isUsernameExist(String username); } \ No newline at end of file diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserReadPlatformServiceImpl.java index 083f02c18..4e478f267 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserReadPlatformServiceImpl.java @@ -141,18 +141,18 @@ public class AppUserReadPlatformServiceImpl implements AppUserReadPlatformServic AppUserData retUser = AppUserData.instance(user.getId(), user.getUsername(), user.getEmail(), user.getOffice().getId(), user.getOffice().getName(), user.getFirstname(), user.getLastname(), availableRoles, null, selectedUserRoles, linkedStaff, user.getPasswordNeverExpires(), user.isSelfServiceUser()); - + if(retUser.isSelfServiceUser()){ Set clients = new HashSet<>(); for(AppUserClientMapping clientMap : user.getAppUserClientMappings()){ Client client = clientMap.getClient(); - clients.add(ClientData.lookup(client.getId(), client.getDisplayName(), + clients.add(ClientData.lookup(client.getId(), client.getDisplayName(), client.getOffice().getId(), client.getOffice().getName())); } retUser.setClients(clients); } - - return retUser; + + return retUser; } private static final class AppUserMapper implements RowMapper { diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImpl.java index e01ade4e4..3b8414d56 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImpl.java @@ -136,7 +136,7 @@ public class AppUserWritePlatformServiceJpaRepositoryImpl implements AppUserWrit if (staffId != null) { linkedStaff = this.staffRepositoryWrapper.findByOfficeWithNotFoundDetection(staffId, userOffice.getId()); } - + Collection clients = null; if(command.hasParameter(AppUserConstants.IS_SELF_SERVICE_USER) && command.booleanPrimitiveValueOfParameterNamed(AppUserConstants.IS_SELF_SERVICE_USER) @@ -153,7 +153,7 @@ public class AppUserWritePlatformServiceJpaRepositoryImpl implements AppUserWrit final Boolean sendPasswordToEmail = command.booleanObjectValueOfParameterNamed("sendPasswordToEmail"); this.userDomainService.create(appUser, sendPasswordToEmail); - + this.topicDomainService.subscribeUserToTopic(appUser); return new CommandProcessingResultBuilder() // @@ -198,13 +198,13 @@ public class AppUserWritePlatformServiceJpaRepositoryImpl implements AppUserWrit .orElseThrow(() -> new UserNotFoundException(userId)); final AppUserPreviousPassword currentPasswordToSaveAsPreview = getCurrentPasswordToSaveAsPreview(userToUpdate, command); - + Collection clients = null; boolean isSelfServiceUser = userToUpdate.isSelfServiceUser(); if(command.hasParameter(AppUserConstants.IS_SELF_SERVICE_USER)){ - isSelfServiceUser = command.booleanPrimitiveValueOfParameterNamed(AppUserConstants.IS_SELF_SERVICE_USER); + isSelfServiceUser = command.booleanPrimitiveValueOfParameterNamed(AppUserConstants.IS_SELF_SERVICE_USER); } - + if(isSelfServiceUser && command.hasParameter(AppUserConstants.CLIENTS)){ JsonArray clientsArray = command.arrayOfParameterNamed(AppUserConstants.CLIENTS); @@ -269,7 +269,7 @@ public class AppUserWritePlatformServiceJpaRepositoryImpl implements AppUserWrit /** * encode the new submitted password retrieve the last n used password check * if the current submitted password, match with one of them - * + * * @param user * @param command * @return diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleReadPlatformServiceImpl.java index 13c5424be..eb0c0bfd1 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleReadPlatformServiceImpl.java @@ -89,7 +89,7 @@ public class RoleReadPlatformServiceImpl implements RoleReadPlatformService { final String name = rs.getString("name"); final String description = rs.getString("description"); final Boolean disabled = rs.getBoolean("disabled"); - + return new RoleData(id, name, description, disabled); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleWritePlatformServiceJpaRepositoryImpl.java index 93aaf88c1..248b185ab 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleWritePlatformServiceJpaRepositoryImpl.java @@ -83,7 +83,7 @@ public class RoleWritePlatformServiceJpaRepositoryImpl implements RoleWritePlatf final Role entity = Role.fromJson(command); this.roleRepository.save(entity); - + this.topicDomainService.createTopic(entity); return new CommandProcessingResultBuilder().withCommandId(command.commandId()).withEntityId(entity.getId()).build(); @@ -227,9 +227,9 @@ public class RoleWritePlatformServiceJpaRepositoryImpl implements RoleWritePlatf */ final Integer count = this.roleRepository.getCountOfRolesAssociatedWithUsers(roleId); if (count > 0) { throw new RoleAssociatedException("error.msg.role.associated.with.users.deleted", roleId); } - + this.topicDomainService.deleteTopic(role); - + this.roleRepository.delete(role); return new CommandProcessingResultBuilder().withEntityId(roleId).build(); } catch (final DataIntegrityViolationException e) { @@ -250,13 +250,13 @@ public class RoleWritePlatformServiceJpaRepositoryImpl implements RoleWritePlatf */ final Role role = this.roleRepository.findById(roleId).orElseThrow(() -> new RoleNotFoundException(roleId)); //if(role.isDisabled()){throw new RoleNotFoundException(roleId);} - + /** * Roles associated with users can't be disable */ final Integer count = this.roleRepository.getCountOfRolesAssociatedWithUsers(roleId); if (count > 0) { throw new RoleAssociatedException("error.msg.role.associated.with.users.disabled", roleId); } - + /** * Disabling the role */ @@ -283,7 +283,7 @@ public class RoleWritePlatformServiceJpaRepositoryImpl implements RoleWritePlatf final Role role = this.roleRepository.findById(roleId) .orElseThrow(() -> new RoleNotFoundException(roleId)); //if(!role.isEnabled()){throw new RoleNotFoundException(roleId);} - + role.enableRole(); this.roleRepository.save(role); return new CommandProcessingResultBuilder().withEntityId(roleId).build(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/UserDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/UserDataValidator.java index b74eace27..201d5ffe3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/UserDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/UserDataValidator.java @@ -115,7 +115,7 @@ public final class UserDataValidator { .extractBooleanNamed(AppUserConstants.PASSWORD_NEVER_EXPIRES, element); baseDataValidator.reset().parameter("passwordNeverExpire").value(passwordNeverExpire).validateForBooleanValue(); } - + Boolean isSelfServiceUser = null; if(this.fromApiJsonHelper.parameterExists(AppUserConstants.IS_SELF_SERVICE_USER, element)){ isSelfServiceUser = this.fromApiJsonHelper.extractBooleanNamed(AppUserConstants.IS_SELF_SERVICE_USER, element); @@ -123,7 +123,7 @@ public final class UserDataValidator { baseDataValidator.reset().parameter(AppUserConstants.IS_SELF_SERVICE_USER).trueOrFalseRequired(false); } } - + if(this.fromApiJsonHelper.parameterExists(AppUserConstants.CLIENTS, element)){ if(isSelfServiceUser == null || !isSelfServiceUser){ baseDataValidator.reset().parameter(AppUserConstants.CLIENTS).failWithCode("not.supported.when.isSelfServiceUser.is.false", @@ -213,7 +213,7 @@ public final class UserDataValidator { final boolean passwordNeverExpire = this.fromApiJsonHelper.extractBooleanNamed("passwordNeverExpire", element); baseDataValidator.reset().parameter("passwordNeverExpire").value(passwordNeverExpire).validateForBooleanValue(); } - + Boolean isSelfServiceUser = null; if(this.fromApiJsonHelper.parameterExists(AppUserConstants.IS_SELF_SERVICE_USER, element)){ isSelfServiceUser = this.fromApiJsonHelper.extractBooleanNamed(AppUserConstants.IS_SELF_SERVICE_USER, element); @@ -221,7 +221,7 @@ public final class UserDataValidator { baseDataValidator.reset().parameter(AppUserConstants.IS_SELF_SERVICE_USER).trueOrFalseRequired(false); } } - + if(this.fromApiJsonHelper.parameterExists(AppUserConstants.CLIENTS, element)){ if(isSelfServiceUser != null && !isSelfServiceUser){ baseDataValidator.reset().parameter(AppUserConstants.CLIENTS).failWithCode("not.supported.when.isSelfServiceUser.is.false", diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/BatchBuilder.java b/fineract-provider/src/test/java/org/apache/fineract/batch/BatchBuilder.java index 650dfe700..a43f5e15c 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/BatchBuilder.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/BatchBuilder.java @@ -33,7 +33,7 @@ import org.mockito.Mockito; /** * Runs a unit test for BatchApiResource by mocking the BatchRequest and * BatchApiService objects. - * + * * @author Rishabh Shukla */ public class BatchBuilder { diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/configuration/spring/SpringConfigurationTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/configuration/spring/SpringConfigurationTest.java index eeebc01bc..5e71525f3 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/configuration/spring/SpringConfigurationTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/configuration/spring/SpringConfigurationTest.java @@ -49,7 +49,7 @@ public class SpringConfigurationTest { * to, as the SpringJUnit4ClassRunner with this @ContextConfiguration will * automatically fail if e.g. there is any invalid Spring XML, an invalid * bean definition somewhere or anything like that. - * + * * @see https://www.google.ch/search?q=Aal+izz+well */ @Test diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/boot/tests/SpringBootServerLoginTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/boot/tests/SpringBootServerLoginTest.java index 11a2e4c50..ff81aedd1 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/boot/tests/SpringBootServerLoginTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/boot/tests/SpringBootServerLoginTest.java @@ -31,7 +31,7 @@ import org.junit.Test; /** * This is an integration test for the Spring Boot launch stuff. - * + * * @see ServerApplication */ public class SpringBootServerLoginTest extends AbstractSpringBootWithMariaDB4jIntegrationTest { diff --git a/fineract-provider/src/test/java/org/apache/fineract/notification/TopicTest.java b/fineract-provider/src/test/java/org/apache/fineract/notification/TopicTest.java index 2255900bc..374d3c17e 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/notification/TopicTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/notification/TopicTest.java @@ -45,27 +45,27 @@ public class TopicTest { @Mock private OfficeRepository officeRepository; - + @Mock private RoleRepository roleRepository; - + @Mock private TopicWritePlatformService topicWritePltfService; - + @Mock private TopicRepository topicRepository; - + @Mock private TopicSubscriberWritePlatformService topicSubscriberWritePltfService; - + @Mock private AppUserRepository appUserRepository; - + @Test public void testTopicStorage() { Office office = officeRepository.getOne(1L); Role role = new Role("New Member_Type", "Testing topic creation"); - + String title = role.getName() + " of " + office.getName(); Long entityId = office.getId(); String entityType = ""; @@ -79,32 +79,32 @@ public class TopicTest { when(this.officeRepository.getOne(1L)).thenReturn(office); when(this.roleRepository.save(role)).thenReturn(role); when(this.topicWritePltfService.create(refEq(topic))).thenReturn(1L); - + this.roleRepository.save(role); Long topicId = this.topicWritePltfService.create(topic); - + verify(this.roleRepository, times(1)).save(role); verify(this.topicWritePltfService, times(1)).create(refEq(topic)); assertEquals(topicId, new Long(1)); - + } - + @Test public void testTopicSubscriberStorage() { AppUser user = appUserRepository.findById(1L).get(); Topic topic = topicRepository.findById(1L).get(); - + TopicSubscriber topicSubscriber = new TopicSubscriber(topic, user, new Date()); - + when(this.appUserRepository.getOne(1L)).thenReturn(user); when(this.topicRepository.getOne(1L)).thenReturn(topic); when(this.topicSubscriberWritePltfService.create(refEq(topicSubscriber))).thenReturn(1L); - + Long subscriberId = this.topicSubscriberWritePltfService.create(topicSubscriber); - + verify(this.topicSubscriberWritePltfService, times(1)).create(refEq(topicSubscriber)); assertEquals(subscriberId, new Long(1)); - + } - + } diff --git a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/HeavensFamilyLoanRepaymentScheduleTransactionProcessorTest.java b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/HeavensFamilyLoanRepaymentScheduleTransactionProcessorTest.java index 418ac8999..760e55871 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/HeavensFamilyLoanRepaymentScheduleTransactionProcessorTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/HeavensFamilyLoanRepaymentScheduleTransactionProcessorTest.java @@ -58,7 +58,7 @@ public class HeavensFamilyLoanRepaymentScheduleTransactionProcessorTest { /** * Scenario 1: Single transaction which is less than the interest component * of the first installment. - * + * * Expectation: - First installment shows interest completed equal to that * of transactions, zero principal completed. (payment order interest, * principal) - transaction has interest portion equal to transaction diff --git a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/LoanScheduleTestDataHelper.java b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/LoanScheduleTestDataHelper.java index 90411885b..aef79313b 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/LoanScheduleTestDataHelper.java +++ b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/LoanScheduleTestDataHelper.java @@ -32,9 +32,9 @@ public class LoanScheduleTestDataHelper { /** * Creates brand new three installment loan: - * + * * For example: with firstDueDate = 02 July 2011 - * + * * Date Principal Interest Interest Waived * ================================== * ================================================ 02 July 2011 1,000 200 0 @@ -56,9 +56,9 @@ public class LoanScheduleTestDataHelper { /** * Creates three installment loan with first installment fully completed: - * + * * For example: with firstDueDate = 02 July 2011 - * + * * Date Principal Interest Interest Waived Completed * ======================== * ================================================== diff --git a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/LoanTransactionBuilder.java b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/LoanTransactionBuilder.java index a8baf7a30..111058685 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/LoanTransactionBuilder.java +++ b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/LoanTransactionBuilder.java @@ -32,12 +32,12 @@ public class LoanTransactionBuilder { /** * public LoanTransaction build() { - * + * * LoanTransaction transaction = null; - * + * * if (repayment) { transaction = * LoanTransaction.repayment(transactionAmount, transactionDate); } - * + * * return transaction; } **/