You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ar...@apache.org on 2022/07/15 11:15:24 UTC

[fineract] branch develop updated: Quick code cleaning for client and loan: around the native queries

This is an automated email from the ASF dual-hosted git repository.

arnold pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new 81be86373 Quick code cleaning for client and loan: around the native queries
81be86373 is described below

commit 81be8637390a7e2826bf414a8b149c795520063f
Author: Adam Saghy <ad...@gmail.com>
AuthorDate: Thu Jul 14 23:13:24 2022 +0200

    Quick code cleaning for client and loan: around the native queries
---
 .../ClientAddressReadPlatformServiceImpl.java      |   2 +-
 .../ClientChargeReadPlatformServiceImpl.java       |   7 +-
 ...ClientFamilyMembersReadPlatformServiceImpl.java |   4 +-
 .../ClientIdentifierReadPlatformServiceImpl.java   |   4 +-
 .../service/ClientReadPlatformServiceImpl.java     |  16 +--
 .../ClientTransactionReadPlatformServiceImpl.java  |   2 +-
 .../service/GuarantorReadPlatformServiceImpl.java  |  14 +--
 ...LoanScheduleHistoryReadPlatformServiceImpl.java |   8 +-
 ...anRescheduleRequestReadPlatformServiceImpl.java |  14 +--
 .../service/BulkLoansReadPlatformServiceImpl.java  |   4 +-
 .../GLIMAccountInfoReadPlatformServiceImpl.java    |  12 +-
 .../LoanAccrualWritePlatformServiceImpl.java       |   6 +-
 .../service/LoanArrearsAgingServiceImpl.java       |  10 +-
 .../LoanChargePaidByReadPlatformServiceImpl.java   |   2 +-
 .../service/LoanChargeReadPlatformServiceImpl.java |  23 ++--
 .../service/LoanReadPlatformServiceImpl.java       | 121 +++++++++------------
 16 files changed, 109 insertions(+), 140 deletions(-)

diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientAddressReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientAddressReadPlatformServiceImpl.java
index 4623adbc3..0ce164a69 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientAddressReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientAddressReadPlatformServiceImpl.java
@@ -67,7 +67,7 @@ public class ClientAddressReadPlatformServiceImpl implements ClientAddressReadPl
         final ClientAddrMapper rm = new ClientAddrMapper();
         final String sql = "select " + rm.schema() + " where fld.entity=?";
 
-        return this.jdbcTemplate.query(sql, rm, new Object[] { entity }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, entity); // NOSONAR
     }
 
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeReadPlatformServiceImpl.java
index b79154e28..dc7756bba 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeReadPlatformServiceImpl.java
@@ -23,6 +23,7 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.time.LocalDate;
 import java.util.Collection;
+import org.apache.commons.lang3.BooleanUtils;
 import org.apache.fineract.infrastructure.core.data.EnumOptionData;
 import org.apache.fineract.infrastructure.core.domain.JdbcSupport;
 import org.apache.fineract.infrastructure.core.service.Page;
@@ -128,7 +129,7 @@ public class ClientChargeReadPlatformServiceImpl implements ClientChargeReadPlat
 
             final String sql = "select " + rm.schema() + " where cc.client_id=? and cc.id=? ";
 
-            return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { clientId, clientChargeId }); // NOSONAR
+            return this.jdbcTemplate.queryForObject(sql, rm, clientId, clientChargeId); // NOSONAR
         } catch (final EmptyResultDataAccessException e) {
             throw new ClientChargeNotFoundException(clientChargeId, clientId, e);
         }
@@ -149,9 +150,9 @@ public class ClientChargeReadPlatformServiceImpl implements ClientChargeReadPlat
         }
 
         // filter for paid charges
-        if (pendingPayment != null && pendingPayment) {
+        if (BooleanUtils.isTrue(pendingPayment)) {
             sqlBuilder.append(" and ( cc.is_paid_derived = false and cc.waived = false) ");
-        } else if (pendingPayment != null && !pendingPayment) {
+        } else if (BooleanUtils.isFalse(pendingPayment)) {
             sqlBuilder.append(" and (cc.is_paid_derived = true or cc.waived = true) ");
         }
 
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 0ad311828..d046b8ba9 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
@@ -98,7 +98,7 @@ public class ClientFamilyMembersReadPlatformServiceImpl implements ClientFamilyM
         final ClientFamilyMembersMapper rm = new ClientFamilyMembersMapper();
         final String sql = "select " + rm.schema() + " where fmb.client_id=?";
 
-        return this.jdbcTemplate.query(sql, rm, new Object[] { clientId }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, clientId); // NOSONAR
     }
 
     @Override
@@ -109,7 +109,7 @@ public class ClientFamilyMembersReadPlatformServiceImpl implements ClientFamilyM
         final ClientFamilyMembersMapper rm = new ClientFamilyMembersMapper();
         final String sql = "select " + rm.schema() + " where fmb.id=? ";
 
-        return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { id }); // NOSONAR
+        return this.jdbcTemplate.queryForObject(sql, rm, id); // NOSONAR
     }
 
     @Override
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientIdentifierReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientIdentifierReadPlatformServiceImpl.java
index 300f16cce..88dace77f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientIdentifierReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientIdentifierReadPlatformServiceImpl.java
@@ -54,7 +54,7 @@ public class ClientIdentifierReadPlatformServiceImpl implements ClientIdentifier
 
         sql += " order by ci.id";
 
-        return this.jdbcTemplate.query(sql, rm, new Object[] { clientId, hierarchySearchString }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, clientId, hierarchySearchString); // NOSONAR
     }
 
     @Override
@@ -71,7 +71,7 @@ public class ClientIdentifierReadPlatformServiceImpl implements ClientIdentifier
             sql += " and ci.id = ?";
 
             final ClientIdentifierData clientIdentifierData = this.jdbcTemplate.queryForObject(sql, rm, // NOSONAR
-                    new Object[] { clientId, hierarchySearchString, clientIdentifierId });
+                    clientId, hierarchySearchString, clientIdentifierId);
 
             return clientIdentifierData;
         } catch (final EmptyResultDataAccessException e) {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java
index 150d2520c..4c8525e5a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java
@@ -297,7 +297,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
             final String sql = "select " + this.clientMapper.schema()
                     + " where ( o.hierarchy like ? or transferToOffice.hierarchy like ?) and c.id = ?";
             final ClientData clientData = this.jdbcTemplate.queryForObject(sql, this.clientMapper, // NOSONAR
-                    new Object[] { hierarchySearchString, hierarchySearchString, clientId });
+                    hierarchySearchString, hierarchySearchString, clientId);
 
             // Get client collaterals
             final Collection<ClientCollateralManagement> clientCollateralManagements = this.clientCollateralManagementRepositoryWrapper
@@ -315,7 +315,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
             final String clientGroupsSql = "select " + this.clientGroupsMapper.parentGroupsSchema();
 
             final Collection<GroupGeneralData> parentGroups = this.jdbcTemplate.query(clientGroupsSql, this.clientGroupsMapper, // NOSONAR
-                    new Object[] { clientId });
+                    clientId);
 
             return ClientData.setParentGroups(clientData, parentGroups, clientCollateralManagementDataSet);
 
@@ -341,7 +341,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
 
         final String sql = "select " + this.lookupMapper.schema() + " where c.office_id = ? and c.status_enum != ?";
 
-        return this.jdbcTemplate.query(sql, this.lookupMapper, new Object[] { officeId, ClientStatus.CLOSED.getValue() }); // NOSONAR
+        return this.jdbcTemplate.query(sql, this.lookupMapper, officeId, ClientStatus.CLOSED.getValue()); // NOSONAR
     }
 
     @Override
@@ -353,7 +353,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
 
         final String sql = "select " + this.membersOfGroupMapper.schema() + " where o.hierarchy like ? and pgc.group_id = ?";
 
-        return this.jdbcTemplate.query(sql, this.membersOfGroupMapper, new Object[] { hierarchySearchString, groupId }); // NOSONAR
+        return this.jdbcTemplate.query(sql, this.membersOfGroupMapper, hierarchySearchString, groupId); // NOSONAR
     }
 
     @Override
@@ -367,7 +367,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
                 + " where o.hierarchy like ? and pgc.group_id = ? and c.status_enum = ? ";
 
         return this.jdbcTemplate.query(sql, this.membersOfGroupMapper, // NOSONAR
-                new Object[] { hierarchySearchString, groupId, ClientStatus.ACTIVE.getValue() });
+                hierarchySearchString, groupId, ClientStatus.ACTIVE.getValue());
     }
 
     private static final class ClientMembersOfGroupMapper implements RowMapper<ClientData> {
@@ -556,7 +556,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
                 + " left join m_group g on pgc.group_id=g.id where o.hierarchy like ? and g.parent_id = ? and c.status_enum = ? group by c.id";
 
         return this.jdbcTemplate.query(sql, this.membersOfGroupMapper, // NOSONAR
-                new Object[] { hierarchySearchString, centerId, ClientStatus.ACTIVE.getValue() });
+                hierarchySearchString, centerId, ClientStatus.ACTIVE.getValue());
     }
 
     private static final class ClientMapper implements RowMapper<ClientData> {
@@ -788,7 +788,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
 
             final String sql = "select " + mapper.clientLookupByIdentifierSchema();
 
-            return this.jdbcTemplate.queryForObject(sql, mapper, new Object[] { identifierTypeId, identifierKey }); // NOSONAR
+            return this.jdbcTemplate.queryForObject(sql, mapper, identifierTypeId, identifierKey); // NOSONAR
         } catch (final EmptyResultDataAccessException e) {
             return null;
         }
@@ -867,6 +867,6 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
     @Override
     public Collection<Long> retrieveUserClients(Long aUserID) {
         String sql = "SELECT  m.client_id FROM m_selfservice_user_client_mapping m INNER JOIN m_client c ON c.id = m.client_id WHERE m.appuser_id = ?";
-        return jdbcTemplate.queryForList(sql, Long.class, new Object[] { aUserID });
+        return jdbcTemplate.queryForList(sql, Long.class, aUserID);
     }
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientTransactionReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientTransactionReadPlatformServiceImpl.java
index d240e58c0..5f9194de9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientTransactionReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientTransactionReadPlatformServiceImpl.java
@@ -177,7 +177,7 @@ public class ClientTransactionReadPlatformServiceImpl implements ClientTransacti
     public ClientTransactionData retrieveTransaction(Long clientId, Long transactionId) {
         try {
             final String sql = "select " + this.clientTransactionMapper.schema() + " where c.id = ? and tr.id= ?";
-            return this.jdbcTemplate.queryForObject(sql, this.clientTransactionMapper, new Object[] { clientId, transactionId }); // NOSONAR
+            return this.jdbcTemplate.queryForObject(sql, this.clientTransactionMapper, clientId, transactionId); // NOSONAR
         } catch (final EmptyResultDataAccessException e) {
             throw new ClientTransactionNotFoundException(clientId, transactionId, e);
         }
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 027a0e39d..c68ecf911 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
@@ -214,7 +214,7 @@ public class GuarantorReadPlatformServiceImpl implements GuarantorReadPlatformSe
         public GuarantorFundingData mapRow(final ResultSet rs, final int rowNum) throws SQLException {
             GuarantorFundingData guarantorFundingData = null;
             final Long id = rs.getLong("gfdId");
-            if (id != null && id > 0) {
+            if (id > 0) {
                 final BigDecimal amount = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "amount");
                 final BigDecimal amountReleased = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "amountReleased");
                 final BigDecimal amountRemaining = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "amountRemaining");
@@ -231,7 +231,7 @@ public class GuarantorReadPlatformServiceImpl implements GuarantorReadPlatformSe
                         guarantorTransactions.add(guarantorTransactionData);
                         while (rs.next()) {
                             final Long tempFundId = rs.getLong("gfdId");
-                            if (tempFundId != null && tempFundId.equals(id)) {
+                            if (tempFundId.equals(id)) {
                                 guarantorTransactionData = this.guarantorTransactionMapper.mapRow(rs, rowNum);
                                 guarantorTransactions.add(guarantorTransactionData);
                             } else {
@@ -276,11 +276,9 @@ public class GuarantorReadPlatformServiceImpl implements GuarantorReadPlatformSe
             EnumOptionData transactionType = SavingsEnumerations.onHoldTransactionType(transactionTypeEnum);
             final boolean reversed = rs.getBoolean("reversed");
             final boolean transactionReversed = rs.getBoolean("transactionReversed");
-            if (id != null) {
-                DepositAccountOnHoldTransactionData onHoldTransactionData = DepositAccountOnHoldTransactionData.instance(transactionId,
-                        amount, transactionType, date, transactionReversed);
-                guarantorTransactionData = GuarantorTransactionData.instance(id, onHoldTransactionData, null, reversed);
-            }
+            DepositAccountOnHoldTransactionData onHoldTransactionData = DepositAccountOnHoldTransactionData.instance(transactionId, amount,
+                    transactionType, date, transactionReversed);
+            guarantorTransactionData = GuarantorTransactionData.instance(id, onHoldTransactionData, null, reversed);
             return guarantorTransactionData;
         }
 
@@ -305,7 +303,7 @@ public class GuarantorReadPlatformServiceImpl implements GuarantorReadPlatformSe
         final ObligeeMapper rm = new ObligeeMapper();
         String sql = rm.schema();
         try {
-            return this.jdbcTemplate.query(sql, rm, new Object[] { clientId });
+            return this.jdbcTemplate.query(sql, rm, clientId);
         } catch (final EmptyResultDataAccessException e) {
             return null;
         }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleHistoryReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleHistoryReadPlatformServiceImpl.java
index 9b3f2e322..ebf487643 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleHistoryReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleHistoryReadPlatformServiceImpl.java
@@ -80,7 +80,7 @@ public class LoanScheduleHistoryReadPlatformServiceImpl implements LoanScheduleH
             final String sql = "select " + fullResultsetExtractor.schema()
                     + " where ls.loan_id = ? and ls.version = ? order by ls.loan_id, ls.installment";
 
-            return this.jdbcTemplate.query(sql, fullResultsetExtractor, new Object[] { loanId, versionNumber }); // NOSONAR
+            return this.jdbcTemplate.query(sql, fullResultsetExtractor, loanId, versionNumber); // NOSONAR
         } catch (final EmptyResultDataAccessException e) {
             throw new LoanNotFoundException(loanId, e);
         }
@@ -142,7 +142,7 @@ public class LoanScheduleHistoryReadPlatformServiceImpl implements LoanScheduleH
             totalFeeChargesCharged = totalFeeChargesCharged.plus(disbursementPeriod.feeChargesDue());
             totalRepaymentExpected = totalRepaymentExpected.plus(disbursementPeriod.feeChargesDue());
 
-            Integer loanTermInDays = Integer.valueOf(0);
+            Integer loanTermInDays = 0;
             while (rs.next()) {
                 final Integer period = JdbcSupport.getInteger(rs, "period");
                 LocalDate fromDate = JdbcSupport.getLocalDate(rs, "fromDate");
@@ -168,10 +168,10 @@ public class LoanScheduleHistoryReadPlatformServiceImpl implements LoanScheduleH
                     totalPrincipalDisbursed = totalPrincipalDisbursed.add(principal);
                 }
 
-                Integer daysInPeriod = Integer.valueOf(0);
+                Integer daysInPeriod = 0;
                 if (fromDate != null) {
                     daysInPeriod = Math.toIntExact(ChronoUnit.DAYS.between(fromDate, dueDate));
-                    loanTermInDays = Integer.valueOf(loanTermInDays.intValue() + daysInPeriod.intValue());
+                    loanTermInDays = loanTermInDays + daysInPeriod;
                 }
 
                 final BigDecimal principalDue = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "principalDue");
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 46026c8f5..a32550a2b 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
@@ -182,10 +182,8 @@ public class LoanRescheduleRequestReadPlatformServiceImpl implements LoanResched
             final boolean isSpecificToInstallment = rs.getBoolean("isSpecificToInstallment");
             final int termType = rs.getInt("termType");
 
-            final LoanTermVariationsData loanTermVariationsData = new LoanTermVariationsData(id,
-                    LoanEnumerations.loanvariationType(termType), variationApplicableFrom, decimalValue, dateValue,
-                    isSpecificToInstallment);
-            return loanTermVariationsData;
+            return new LoanTermVariationsData(id, LoanEnumerations.loanvariationType(termType), variationApplicableFrom, decimalValue,
+                    dateValue, isSpecificToInstallment);
         }
 
     }
@@ -229,7 +227,7 @@ public class LoanRescheduleRequestReadPlatformServiceImpl implements LoanResched
         this.loanRepositoryWrapper.findOneWithNotFoundDetection(loanId);
         final String sql = "select " + this.loanRescheduleRequestRowMapper.schema() + " where lr.loan_id = ?";
 
-        return this.jdbcTemplate.query(sql, this.loanRescheduleRequestRowMapper, new Object[] { loanId }); // NOSONAR
+        return this.jdbcTemplate.query(sql, this.loanRescheduleRequestRowMapper, loanId); // NOSONAR
     }
 
     @Override
@@ -238,7 +236,7 @@ public class LoanRescheduleRequestReadPlatformServiceImpl implements LoanResched
         try {
             final String sql = "select " + this.loanRescheduleRequestRowMapper.schema() + " where lr.id = ?";
 
-            return this.jdbcTemplate.queryForObject(sql, this.loanRescheduleRequestRowMapper, new Object[] { requestId }); // NOSONAR
+            return this.jdbcTemplate.queryForObject(sql, this.loanRescheduleRequestRowMapper, requestId); // NOSONAR
         }
 
         catch (final EmptyResultDataAccessException e) {
@@ -250,7 +248,7 @@ public class LoanRescheduleRequestReadPlatformServiceImpl implements LoanResched
     public List<LoanRescheduleRequestData> readLoanRescheduleRequests(Long loanId, Integer statusEnum) {
         this.loanRepositoryWrapper.findOneWithNotFoundDetection(loanId);
         final String sql = "select " + this.loanRescheduleRequestRowMapper.schema() + " where lr.loan_id = ?" + " and lr.status_enum = ?";
-        return this.jdbcTemplate.query(sql, this.loanRescheduleRequestRowMapper, new Object[] { loanId, statusEnum }); // NOSONAR
+        return this.jdbcTemplate.query(sql, this.loanRescheduleRequestRowMapper, loanId, statusEnum); // NOSONAR
     }
 
     @Override
@@ -288,7 +286,7 @@ public class LoanRescheduleRequestReadPlatformServiceImpl implements LoanResched
             } else if (command.equalsIgnoreCase(RescheduleLoansApiConstants.rejectCommandParamName)) {
                 statusParam = 300;
             }
-            return this.jdbcTemplate.query(sql, loanRescheduleRequestRowMapperForBulkApproval, new Object[] { statusParam }); // NOSONAR
+            return this.jdbcTemplate.query(sql, loanRescheduleRequestRowMapperForBulkApproval, statusParam); // NOSONAR
         }
         return this.jdbcTemplate.query(sql, loanRescheduleRequestRowMapperForBulkApproval); // NOSONAR
     }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/BulkLoansReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/BulkLoansReadPlatformServiceImpl.java
index da35d4c04..20e8ac585 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/BulkLoansReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/BulkLoansReadPlatformServiceImpl.java
@@ -54,7 +54,7 @@ public class BulkLoansReadPlatformServiceImpl implements BulkLoansReadPlatformSe
         final String groupSql = "select distinct " + staffGroupMapper.schema() + " and g.status_enum=?";
 
         final List<StaffAccountSummaryCollectionData.LoanAccountSummary> clientSummaryList = this.jdbcTemplate.query(clientSql, // NOSONAR
-                staffClientMapper, new Object[] { loanOfficerId, ClientStatus.ACTIVE.getValue() });
+                staffClientMapper, loanOfficerId, ClientStatus.ACTIVE.getValue());
 
         for (final StaffAccountSummaryCollectionData.LoanAccountSummary clientSummary : clientSummaryList) {
 
@@ -65,7 +65,7 @@ public class BulkLoansReadPlatformServiceImpl implements BulkLoansReadPlatformSe
         }
 
         final List<StaffAccountSummaryCollectionData.LoanAccountSummary> groupSummaryList = this.jdbcTemplate.query(groupSql, // NOSONAR
-                staffGroupMapper, new Object[] { loanOfficerId, GroupingTypeStatus.ACTIVE.getValue() });
+                staffGroupMapper, loanOfficerId, GroupingTypeStatus.ACTIVE.getValue());
 
         for (final StaffAccountSummaryCollectionData.LoanAccountSummary groupSummary : groupSummaryList) {
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoReadPlatformServiceImpl.java
index a0ec16c8d..76a9936df 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoReadPlatformServiceImpl.java
@@ -93,7 +93,7 @@ public class GLIMAccountInfoReadPlatformServiceImpl implements GLIMAccountInfoRe
         final GLIMFieldsMapper rm = new GLIMFieldsMapper();
         final String sql = "select " + rm.schema() + " and glim.id=?";
 
-        return this.jdbcTemplate.query(sql, rm, new Object[] { glimId }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, glimId); // NOSONAR
     }
 
     @Override
@@ -103,7 +103,7 @@ public class GLIMAccountInfoReadPlatformServiceImpl implements GLIMAccountInfoRe
         final GLIMFieldsMapper rm = new GLIMFieldsMapper();
         final String sql = "select " + rm.schema() + " and ln.group_id=?";
 
-        return this.jdbcTemplate.query(sql, rm, new Object[] { Long.parseLong(groupId) }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, Long.parseLong(groupId)); // NOSONAR
     }
 
     @Override
@@ -114,7 +114,7 @@ public class GLIMAccountInfoReadPlatformServiceImpl implements GLIMAccountInfoRe
 
         final String sql = "select " + rm.schema() + " where glim.group_id=?";
 
-        return this.jdbcTemplate.query(sql, rm, new Object[] { Long.parseLong(groupId) }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, Long.parseLong(groupId)); // NOSONAR
     }
 
     @Override
@@ -124,7 +124,7 @@ public class GLIMAccountInfoReadPlatformServiceImpl implements GLIMAccountInfoRe
         final GLIMFieldsMapper rm = new GLIMFieldsMapper();
         final String sql = "select " + rm.schema() + " and glim.accountNumber=?";
 
-        return this.jdbcTemplate.query(sql, rm, new Object[] { parentAccountIds }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, parentAccountIds); // NOSONAR
     }
 
     @Override
@@ -135,7 +135,7 @@ public class GLIMAccountInfoReadPlatformServiceImpl implements GLIMAccountInfoRe
 
         final String sql = "select " + rm.schema() + " where glim.group_id=? and glim.account_number=?";
 
-        return this.jdbcTemplate.query(sql, rm, new Object[] { groupId, accountNo }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, groupId, accountNo); // NOSONAR
     }
 
     @Override
@@ -188,7 +188,7 @@ public class GLIMAccountInfoReadPlatformServiceImpl implements GLIMAccountInfoRe
 
         final String sql = "select " + rm.schema() + " where glim.id=?";
 
-        return this.jdbcTemplate.query(sql, rm, new Object[] { glimId }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, glimId); // NOSONAR
 
     }
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualWritePlatformServiceImpl.java
index a5af8b816..35ade2781 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualWritePlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualWritePlatformServiceImpl.java
@@ -492,10 +492,8 @@ public class LoanAccrualWritePlatformServiceImpl implements LoanAccrualWritePlat
             if (loan == null) {
                 throw new LoanNotFoundException(loanId);
             }
-            final List<Long> existingTransactionIds = new ArrayList<>();
-            final List<Long> existingReversedTransactionIds = new ArrayList<>();
-            existingTransactionIds.addAll(loan.findExistingTransactionIds());
-            existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds());
+            final List<Long> existingTransactionIds = new ArrayList<>(loan.findExistingTransactionIds());
+            final List<Long> existingReversedTransactionIds = new ArrayList<>(loan.findExistingReversedTransactionIds());
             loan.processIncomeTransactions();
             this.loanRepositoryWrapper.saveAndFlush(loan);
             postJournalEntries(loan, existingTransactionIds, existingReversedTransactionIds);
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanArrearsAgingServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanArrearsAgingServiceImpl.java
index d512fd5ed..2d92b400b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanArrearsAgingServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanArrearsAgingServiceImpl.java
@@ -156,7 +156,7 @@ public class LoanArrearsAgingServiceImpl implements LoanArrearsAgingService {
                 this.jdbcTemplate.update(updateStatement.get(0));
             } else {
                 String deletestatement = "DELETE FROM m_loan_arrears_aging WHERE  loan_id=?";
-                this.jdbcTemplate.update(deletestatement, new Object[] { loan.getId() }); // NOSONAR
+                this.jdbcTemplate.update(deletestatement, loan.getId()); // NOSONAR
             }
         }
     }
@@ -168,7 +168,7 @@ public class LoanArrearsAgingServiceImpl implements LoanArrearsAgingService {
         String updateStatement = constructUpdateStatement(loan, count == 0);
         if (updateStatement == null) {
             String deletestatement = "DELETE FROM m_loan_arrears_aging WHERE  loan_id=?";
-            this.jdbcTemplate.update(deletestatement, new Object[] { loan.getId() }); // NOSONAR
+            this.jdbcTemplate.update(deletestatement, loan.getId()); // NOSONAR
         } else {
             this.jdbcTemplate.update(updateStatement);
         }
@@ -453,11 +453,7 @@ public class LoanArrearsAgingServiceImpl implements LoanArrearsAgingService {
             while (rs.next()) {
                 Long loanId = rs.getLong("loanId");
 
-                List<LoanSchedulePeriodData> periodDatas = scheduleDate.get(loanId);
-                if (periodDatas == null) {
-                    periodDatas = new ArrayList<>();
-                    scheduleDate.put(loanId, periodDatas);
-                }
+                List<LoanSchedulePeriodData> periodDatas = scheduleDate.computeIfAbsent(loanId, k -> new ArrayList<>());
 
                 periodDatas.add(fetchLoanSchedulePeriodData(rs));
             }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargePaidByReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargePaidByReadPlatformServiceImpl.java
index 24acff251..82591ec5a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargePaidByReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargePaidByReadPlatformServiceImpl.java
@@ -48,7 +48,7 @@ public class LoanChargePaidByReadPlatformServiceImpl implements LoanChargePaidBy
         this.context.authenticatedUser();
         final LoanChargePaidByMapper rm = new LoanChargePaidByMapper();
         final String sql = "select " + rm.loanChargePaidBySchema() + " where lcpd.loan_transaction_id = ?";
-        return this.jdbcTemplate.query(sql, rm, new Object[] { transactionId }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, transactionId); // NOSONAR
     }
 
     private static final class LoanChargePaidByMapper implements RowMapper<LoanChargePaidByData> {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformServiceImpl.java
index f390e7cc6..62b95d458 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformServiceImpl.java
@@ -76,7 +76,6 @@ public class LoanChargeReadPlatformServiceImpl implements LoanChargeReadPlatform
 
         @Override
         public LoanChargeData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException {
-
             final Long id = rs.getLong("id");
             final Long chargeId = rs.getLong("chargeId");
             final String name = rs.getString("name");
@@ -130,8 +129,6 @@ public class LoanChargeReadPlatformServiceImpl implements LoanChargeReadPlatform
 
     @Override
     public ChargeData retrieveLoanChargeTemplate() {
-        this.context.authenticatedUser();
-
         final List<EnumOptionData> allowedChargeCalculationTypeOptions = this.chargeDropdownReadPlatformService.retrieveCalculationTypes();
         final List<EnumOptionData> allowedChargeTimeOptions = this.chargeDropdownReadPlatformService.retrieveCollectionTimeTypes();
         final List<EnumOptionData> loansChargeCalculationTypeOptions = this.chargeDropdownReadPlatformService
@@ -164,25 +161,21 @@ public class LoanChargeReadPlatformServiceImpl implements LoanChargeReadPlatform
 
     @Override
     public LoanChargeData retrieveLoanChargeDetails(final Long id, final Long loanId) {
-        this.context.authenticatedUser();
-
         final LoanChargeMapper rm = new LoanChargeMapper();
 
         final String sql = "select " + rm.schema() + " where lc.id=? and lc.loan_id=?";
 
-        return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { id, loanId }); // NOSONAR
+        return this.jdbcTemplate.queryForObject(sql, rm, id, loanId); // NOSONAR
     }
 
     @Override
     public Collection<LoanChargeData> retrieveLoanCharges(final Long loanId) {
-        this.context.authenticatedUser();
-
         final LoanChargeMapper rm = new LoanChargeMapper();
 
         final String sql = "select " + rm.schema() + " where lc.loan_id=? AND lc.is_active = true"
                 + " order by coalesce(lc.due_for_collection_as_of_date,date(coalesce(dd.disbursedon_date,dd.expected_disburse_date))),lc.charge_time_enum ASC, lc.due_for_collection_as_of_date ASC, lc.is_penalty ASC";
 
-        return this.jdbcTemplate.query(sql, rm, new Object[] { loanId }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, loanId); // NOSONAR
     }
 
     @Override
@@ -190,7 +183,7 @@ public class LoanChargeReadPlatformServiceImpl implements LoanChargeReadPlatform
         final LoanChargeMapperWithLoanId rm = new LoanChargeMapperWithLoanId();
         final String sql = "select " + rm.schema()
                 + "where loan.loan_status_id= ? and lc.charge_payment_mode_enum=? and lc.waived = false and lc.is_paid_derived=false and lc.is_active = true";
-        return this.jdbcTemplate.query(sql, rm, new Object[] { loanStatus, paymentMode }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, loanStatus, paymentMode); // NOSONAR
     }
 
     private static final class LoanChargeMapperWithLoanId implements RowMapper<LoanChargeData> {
@@ -223,7 +216,7 @@ public class LoanChargeReadPlatformServiceImpl implements LoanChargeReadPlatform
             sql = sql + "and lic.waived = false and lic.is_paid_derived=false";
         }
         sql = sql + " order by lsi.installment";
-        return this.jdbcTemplate.query(sql, rm, new Object[] { loanChargeId }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, loanChargeId); // NOSONAR
     }
 
     private static final class LoanInstallmentChargeMapper implements RowMapper<LoanInstallmentChargeData> {
@@ -271,7 +264,7 @@ public class LoanChargeReadPlatformServiceImpl implements LoanChargeReadPlatform
                 + " order by lc.charge_time_enum ASC, lc.due_for_collection_as_of_date ASC, lc.is_penalty ASC";
 
         Collection<LoanChargeData> charges = this.jdbcTemplate.query(sql, rm, // NOSONAR
-                new Object[] { LoanTransactionType.ACCRUAL.getValue(), loanId, loanId });
+                LoanTransactionType.ACCRUAL.getValue(), loanId, loanId);
         charges = updateLoanChargesWithUnrecognizedIncome(loanId, charges);
 
         Collection<LoanChargeData> removeCharges = new ArrayList<>();
@@ -348,7 +341,7 @@ public class LoanChargeReadPlatformServiceImpl implements LoanChargeReadPlatform
         final String sql = "select " + rm.schema() + " where lc.loan_id=? AND lc.is_active = true group by  lc.id "
                 + " order by lc.charge_time_enum ASC, lc.due_for_collection_as_of_date ASC, lc.is_penalty ASC";
 
-        return this.jdbcTemplate.query(sql, rm, new Object[] { LoanTransactionType.WAIVE_CHARGES.getValue(), loanId, loanId }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, LoanTransactionType.WAIVE_CHARGES.getValue(), loanId, loanId); // NOSONAR
     }
 
     private static final class LoanChargeUnRecognizedIncomeMapper implements RowMapper<LoanChargeData> {
@@ -396,7 +389,7 @@ public class LoanChargeReadPlatformServiceImpl implements LoanChargeReadPlatform
         String sql = "select " + rm.schema()
                 + " where lic.loan_charge_id= ?  group by lsi.installment, lsi.duedate, lic.amount_outstanding_derived, lic.amount, lic.is_paid_derived, lic.amount_waived_derived, lic.waived";
         Collection<LoanInstallmentChargeData> chargeDatas = this.jdbcTemplate.query(sql, rm, // NOSONAR
-                new Object[] { LoanTransactionType.ACCRUAL.getValue(), loanChargeId });
+                LoanTransactionType.ACCRUAL.getValue(), loanChargeId);
         final Map<Integer, LoanInstallmentChargeData> installmentChargeDatas = new HashMap<>();
         for (LoanInstallmentChargeData installmentChargeData : chargeDatas) {
             installmentChargeDatas.put(installmentChargeData.getInstallmentNumber(), installmentChargeData);
@@ -457,7 +450,7 @@ public class LoanChargeReadPlatformServiceImpl implements LoanChargeReadPlatform
             final Map<Integer, LoanInstallmentChargeData> installmentChargeDatas) {
         final LoanInstallmentChargeUnRecognizedIncomeMapper rm = new LoanInstallmentChargeUnRecognizedIncomeMapper(installmentChargeDatas);
         String sql = "select " + rm.schema() + " where cpb.loan_charge_id = ? group by cpb.installment_number  ";
-        return this.jdbcTemplate.query(sql, rm, new Object[] { LoanTransactionType.WAIVE_CHARGES.getValue(), loanChargeId }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, LoanTransactionType.WAIVE_CHARGES.getValue(), loanChargeId); // NOSONAR
     }
 
     private static final class LoanInstallmentChargeUnRecognizedIncomeMapper implements RowMapper<LoanInstallmentChargeData> {
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 90ba8a5a8..e87b7f10f 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
@@ -215,8 +215,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
             sqlBuilder.append(" left join m_office transferToOffice on transferToOffice.id = c.transfer_to_office_id ");
             sqlBuilder.append(" where l.id=? and ( o.hierarchy like ? or transferToOffice.hierarchy like ?)");
 
-            return this.jdbcTemplate.queryForObject(sqlBuilder.toString(), rm,
-                    new Object[] { loanId, hierarchySearchString, hierarchySearchString });
+            return this.jdbcTemplate.queryForObject(sqlBuilder.toString(), rm, loanId, hierarchySearchString, hierarchySearchString);
         } catch (final EmptyResultDataAccessException e) {
             throw new LoanNotFoundException(loanId, e);
         }
@@ -231,7 +230,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
 
         final String sql = "select " + rm.loanSchema() + " where l.account_no=?";
 
-        return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { loanAccountNumber }); // NOSONAR
+        return this.jdbcTemplate.queryForObject(sql, rm, loanAccountNumber); // NOSONAR
 
     }
 
@@ -244,7 +243,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
                 + " left join glim_parent_child_mapping as glim on glim.glim_child_account_id=l.account_no "
                 + "where glim.glim_parent_account_id=?";
 
-        return this.jdbcTemplate.query(sql, rm, new Object[] { parentloanAccountNumber }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, parentloanAccountNumber); // NOSONAR
 
     }
 
@@ -260,7 +259,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
                     repaymentScheduleRelatedLoanData, disbursementData, isInterestRecalculationEnabled, totalPaidFeeCharges);
             final String sql = "select " + fullResultsetExtractor.schema() + " where ls.loan_id = ? order by ls.loan_id, ls.installment";
 
-            return this.jdbcTemplate.query(sql, fullResultsetExtractor, new Object[] { loanId }); // NOSONAR
+            return this.jdbcTemplate.query(sql, fullResultsetExtractor, loanId); // NOSONAR
         } catch (final EmptyResultDataAccessException e) {
             throw new LoanNotFoundException(loanId, e);
         }
@@ -282,7 +281,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
              ***/
             final String sql = "select " + rm.loanPaymentsSchema()
                     + " where tr.loan_id = ? and tr.transaction_type_enum not in (0, 3) and  (tr.is_reversed=false or tr.manually_adjusted_or_reversed = true) order by tr.transaction_date ASC,id ";
-            return this.jdbcTemplate.query(sql, rm, new Object[] { loanId }); // NOSONAR
+            return this.jdbcTemplate.query(sql, rm, loanId); // NOSONAR
         } catch (final EmptyResultDataAccessException e) {
             return null;
         }
@@ -435,7 +434,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
         RepaymentTransactionTemplateMapper mapper = new RepaymentTransactionTemplateMapper(sqlGenerator);
         String sql = "select " + mapper.schema();
         LoanTransactionData loanTransactionData = this.jdbcTemplate.queryForObject(sql, mapper, // NOSONAR
-                new Object[] { LoanTransactionType.REPAYMENT.getValue(), LoanTransactionType.REPAYMENT.getValue(), loanId, loanId });
+                LoanTransactionType.REPAYMENT.getValue(), LoanTransactionType.REPAYMENT.getValue(), loanId, loanId);
         final Collection<PaymentTypeData> paymentOptions = this.paymentTypeReadPlatformService.retrieveAllPaymentTypes();
         return LoanTransactionData.templateOnTop(loanTransactionData, paymentOptions);
     }
@@ -574,7 +573,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
         try {
             final LoanTransactionsMapper rm = new LoanTransactionsMapper(sqlGenerator);
             final String sql = "select " + rm.loanPaymentsSchema() + " where l.id = ? and tr.id = ? ";
-            return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { loanId, transactionId }); // NOSONAR
+            return this.jdbcTemplate.queryForObject(sql, rm, loanId, transactionId); // NOSONAR
         } catch (final EmptyResultDataAccessException e) {
             throw new LoanTransactionNotFoundException(transactionId, e);
         }
@@ -1050,10 +1049,9 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
             final BigDecimal interestOutstanding = interestActualDue.subtract(interestPaid);
 
             final Integer installmentNumber = JdbcSupport.getIntegerDefaultToNullIfZero(rs, "period");
-            final OverdueLoanScheduleData overdueLoanScheduleData = new OverdueLoanScheduleData(loanId, chargeId, dueDate, amount,
-                    dateFormat, locale, principalOutstanding, interestOutstanding, installmentNumber);
 
-            return overdueLoanScheduleData;
+            return new OverdueLoanScheduleData(loanId, chargeId, dueDate, amount, dateFormat, locale, principalOutstanding,
+                    interestOutstanding, installmentNumber);
         }
     }
 
@@ -1106,7 +1104,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
                     this.currency.currencyInMultiplesOf());
             BigDecimal totalPrincipalDisbursed = BigDecimal.ZERO;
             BigDecimal disbursementChargeAmount = this.totalFeeChargesDueAtDisbursement;
-            if (disbursementData == null || disbursementData.isEmpty()) {
+            if (disbursementData.isEmpty()) {
                 periods.add(disbursementPeriod);
                 totalPrincipalDisbursed = Money.of(monCurrency, this.disbursement.amount()).getAmount();
             } else {
@@ -1140,7 +1138,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
             totalRepayment = totalRepayment.plus(disbursementPeriod.feeChargesPaid()).minus(waivedChargeAmount);
             totalOutstanding = totalOutstanding.plus(disbursementPeriod.feeChargesDue()).minus(disbursementPeriod.feeChargesPaid());
 
-            Integer loanTermInDays = Integer.valueOf(0);
+            Integer loanTermInDays = 0;
             while (rs.next()) {
 
                 final Long loanId = rs.getLong("loanId");
@@ -1149,50 +1147,43 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
                 final LocalDate dueDate = JdbcSupport.getLocalDate(rs, "dueDate");
                 final LocalDate obligationsMetOnDate = JdbcSupport.getLocalDate(rs, "obligationsMetOnDate");
                 final boolean complete = rs.getBoolean("complete");
-                if (disbursementData != null) {
-                    BigDecimal principal = BigDecimal.ZERO;
-                    for (final DisbursementData data : disbursementData) {
-                        if (fromDate.equals(this.disbursement.disbursementDate()) && data.disbursementDate().equals(fromDate)) {
+                BigDecimal principal = BigDecimal.ZERO;
+                for (final DisbursementData data : disbursementData) {
+                    if (fromDate.equals(this.disbursement.disbursementDate()) && data.disbursementDate().equals(fromDate)) {
+                        principal = principal.add(data.amount());
+                        LoanSchedulePeriodData periodData = null;
+                        if (data.getChargeAmount() == null) {
+                            periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), data.amount(),
+                                    disbursementChargeAmount, data.isDisbursed());
+                        } else {
+                            periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), data.amount(),
+                                    disbursementChargeAmount.add(data.getChargeAmount()).subtract(waivedChargeAmount), data.isDisbursed());
+                        }
+                        periods.add(periodData);
+                        this.outstandingLoanPrincipalBalance = this.outstandingLoanPrincipalBalance.add(data.amount());
+                    } else if (data.isDueForDisbursement(fromDate, dueDate)) {
+                        if (!excludePastUndisbursed || data.isDisbursed()
+                                || !data.disbursementDate().isBefore(DateUtils.getBusinessLocalDate())) {
                             principal = principal.add(data.amount());
-                            LoanSchedulePeriodData periodData = null;
+                            LoanSchedulePeriodData periodData;
                             if (data.getChargeAmount() == null) {
                                 periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), data.amount(),
-                                        disbursementChargeAmount, data.isDisbursed());
+                                        BigDecimal.ZERO, data.isDisbursed());
                             } else {
                                 periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), data.amount(),
-                                        disbursementChargeAmount.add(data.getChargeAmount()).subtract(waivedChargeAmount),
-                                        data.isDisbursed());
-                            }
-                            if (periodData != null) {
-                                periods.add(periodData);
+                                        data.getChargeAmount(), data.isDisbursed());
                             }
+                            periods.add(periodData);
                             this.outstandingLoanPrincipalBalance = this.outstandingLoanPrincipalBalance.add(data.amount());
-                        } else if (data.isDueForDisbursement(fromDate, dueDate)) {
-                            if (!excludePastUndisbursed || (excludePastUndisbursed
-                                    && (data.isDisbursed() || !data.disbursementDate().isBefore(DateUtils.getBusinessLocalDate())))) {
-                                principal = principal.add(data.amount());
-                                LoanSchedulePeriodData periodData = null;
-                                if (data.getChargeAmount() == null) {
-                                    periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), data.amount(),
-                                            BigDecimal.ZERO, data.isDisbursed());
-                                } else {
-                                    periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), data.amount(),
-                                            data.getChargeAmount(), data.isDisbursed());
-                                }
-                                if (periodData != null) {
-                                    periods.add(periodData);
-                                }
-                                this.outstandingLoanPrincipalBalance = this.outstandingLoanPrincipalBalance.add(data.amount());
-                            }
                         }
                     }
-                    totalPrincipalDisbursed = totalPrincipalDisbursed.add(principal);
                 }
+                totalPrincipalDisbursed = totalPrincipalDisbursed.add(principal);
 
-                Integer daysInPeriod = Integer.valueOf(0);
+                Integer daysInPeriod = 0;
                 if (fromDate != null) {
                     daysInPeriod = Math.toIntExact(ChronoUnit.DAYS.between(fromDate, dueDate));
-                    loanTermInDays = Integer.valueOf(loanTermInDays.intValue() + daysInPeriod.intValue());
+                    loanTermInDays = loanTermInDays + daysInPeriod;
                 }
 
                 final BigDecimal principalDue = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "principalDue");
@@ -1575,7 +1566,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
         final LoanDisbursementDetailMapper rm = new LoanDisbursementDetailMapper(sqlGenerator);
         final String sql = "select " + rm.schema()
                 + " where dd.loan_id=? group by dd.id, lc.amount_waived_derived order by dd.expected_disburse_date";
-        return this.jdbcTemplate.query(sql, rm, new Object[] { loanId }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, loanId); // NOSONAR
     }
 
     private static final class LoanDisbursementDetailMapper implements RowMapper<DisbursementData> {
@@ -1606,9 +1597,8 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
             if (chargeAmount != null && waivedAmount != null) {
                 chargeAmount = chargeAmount.subtract(waivedAmount);
             }
-            final DisbursementData disbursementData = new DisbursementData(id, expectedDisbursementdate, actualDisbursementdate, principal,
-                    netDisbursalAmount, loanChargeId, chargeAmount, waivedAmount);
-            return disbursementData;
+            return new DisbursementData(id, expectedDisbursementdate, actualDisbursementdate, principal, netDisbursalAmount, loanChargeId,
+                    chargeAmount, waivedAmount);
         }
 
     }
@@ -1617,14 +1607,14 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
     public DisbursementData retrieveLoanDisbursementDetail(Long loanId, Long disbursementId) {
         final LoanDisbursementDetailMapper rm = new LoanDisbursementDetailMapper(sqlGenerator);
         final String sql = "select " + rm.schema() + " where dd.loan_id=? and dd.id=? group by dd.id, lc.amount_waived_derived";
-        return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { loanId, disbursementId }); // NOSONAR
+        return this.jdbcTemplate.queryForObject(sql, rm, loanId, disbursementId); // NOSONAR
     }
 
     @Override
     public Collection<LoanTermVariationsData> retrieveLoanTermVariations(Long loanId, Integer termType) {
         final LoanTermVariationsMapper rm = new LoanTermVariationsMapper();
         final String sql = "select " + rm.schema() + " where tv.loan_id=? and tv.term_type=?";
-        return this.jdbcTemplate.query(sql, rm, new Object[] { loanId, termType }); // NOSONAR
+        return this.jdbcTemplate.query(sql, rm, loanId, termType); // NOSONAR
     }
 
     private static final class LoanTermVariationsMapper implements RowMapper<LoanTermVariationsData> {
@@ -1642,10 +1632,8 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
             final LocalDate dateValue = JdbcSupport.getLocalDate(rs, "dateValue");
             final boolean isSpecificToInstallment = rs.getBoolean("isSpecificToInstallment");
 
-            final LoanTermVariationsData loanTermVariationsData = new LoanTermVariationsData(id,
-                    LoanEnumerations.loanvariationType(LoanTermVariationType.EMI_AMOUNT), variationApplicableFrom, decimalValue, dateValue,
-                    isSpecificToInstallment);
-            return loanTermVariationsData;
+            return new LoanTermVariationsData(id, LoanEnumerations.loanvariationType(LoanTermVariationType.EMI_AMOUNT),
+                    variationApplicableFrom, decimalValue, dateValue, isSpecificToInstallment);
         }
 
     }
@@ -1866,7 +1854,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
         sqlBuilder.append(" WHERE ml.loan_status_id = ? ");
         sqlBuilder.append(" and ml.is_npa = false ");
         sqlBuilder.append(" and ((");
-        sqlBuilder.append("ml.interest_recalculation_enabled = 1 ");
+        sqlBuilder.append("ml.interest_recalculation_enabled = true ");
         sqlBuilder.append(" and (ml.interest_recalcualated_on is null or ml.interest_recalcualated_on <> ?)");
         sqlBuilder.append(" and ((");
         sqlBuilder.append(" mr.completed_derived is false ");
@@ -1884,8 +1872,8 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
             LocalDate currentdate = DateUtils.getBusinessLocalDate();
             // will look only for yesterday modified rates
             LocalDate yesterday = DateUtils.getBusinessLocalDate().minusDays(1);
-            return this.jdbcTemplate.queryForList(sqlBuilder.toString(), Long.class,
-                    new Object[] { yesterday, LoanStatus.ACTIVE.getValue(), currentdate, currentdate, currentdate, yesterday });
+            return this.jdbcTemplate.queryForList(sqlBuilder.toString(), Long.class, yesterday, LoanStatus.ACTIVE.getValue(), currentdate,
+                    currentdate, currentdate, yesterday);
         } catch (final EmptyResultDataAccessException e) {
             return null;
         }
@@ -1931,9 +1919,9 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
         sqlBuilder.append(" group by ml.id ");
         sqlBuilder.append(" limit ? ");
         try {
-            return Collections.synchronizedList(this.jdbcTemplate.queryForList(sqlBuilder.toString(), Long.class,
-                    new Object[] { yesterday, LoanStatus.ACTIVE.getValue(), currentdate, currentdate, currentdate, yesterday,
-                            maxLoanIdInList, officeHierarchy, pageSize }));
+            return Collections.synchronizedList(
+                    this.jdbcTemplate.queryForList(sqlBuilder.toString(), Long.class, yesterday, LoanStatus.ACTIVE.getValue(), currentdate,
+                            currentdate, currentdate, yesterday, maxLoanIdInList, officeHierarchy, pageSize));
         } catch (final EmptyResultDataAccessException e) {
             return null;
         }
@@ -1947,7 +1935,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
 
             final String sql = "select " + rm.schema()
                     + " where tr.loan_id = ? and tr.transaction_type_enum = ? and tr.is_reversed=false order by tr.transaction_date ASC,id ";
-            return this.jdbcTemplate.query(sql, rm, new Object[] { loanId, LoanTransactionType.WAIVE_INTEREST.getValue() }); // NOSONAR
+            return this.jdbcTemplate.query(sql, rm, loanId, LoanTransactionType.WAIVE_INTEREST.getValue()); // NOSONAR
         } catch (final EmptyResultDataAccessException e) {
             return null;
         }
@@ -2006,7 +1994,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
 
             final String sql = "select " + rm.getSchema()
                     + " where lrs.loan_id = ? and lrs.interest_waived_derived is not null order by lrs.installment ASC ";
-            return this.jdbcTemplate.query(sql, rm, new Object[] { loanId }); // NOSONAR
+            return this.jdbcTemplate.query(sql, rm, loanId); // NOSONAR
         } catch (final EmptyResultDataAccessException e) {
             return null;
         }
@@ -2081,12 +2069,9 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
 
     @Override
     public LocalDate retrieveMinimumDateOfRepaymentTransaction(Long loanId) {
-        // TODO Auto-generated method stub
-        LocalDate date = this.jdbcTemplate.queryForObject(
+        return this.jdbcTemplate.queryForObject(
                 "select min(transaction_date) from m_loan_transaction where loan_id=? and transaction_type_enum=2", LocalDate.class,
                 loanId);
-
-        return date;
     }
 
     @Override
@@ -2253,7 +2238,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
     private static final class RepaymentTransactionTemplateMapper implements RowMapper<LoanTransactionData> {
 
         private final DatabaseSpecificSQLGenerator sqlGenerator;
-        private CurrencyMapper currencyMapper = new CurrencyMapper();
+        private final CurrencyMapper currencyMapper = new CurrencyMapper();
 
         RepaymentTransactionTemplateMapper(DatabaseSpecificSQLGenerator sqlGenerator) {
             this.sqlGenerator = sqlGenerator;
@@ -2348,7 +2333,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
     public CollectionData retrieveLoanCollectionData(Long loanId) {
         final CollectionDataMapper mapper = new CollectionDataMapper(sqlGenerator);
         String sql = "select " + mapper.schema();
-        CollectionData collectionData = this.jdbcTemplate.queryForObject(sql, mapper, new Object[] { loanId }); // NOSONAR
+        CollectionData collectionData = this.jdbcTemplate.queryForObject(sql, mapper, loanId); // NOSONAR
         return collectionData;
     }