From 9f08539e595ec13fa1868bbc1b87d5f0f6ad7c2d Mon Sep 17 00:00:00 2001 From: Vishwanath R Date: Mon, 27 Jan 2014 18:01:04 +0530 Subject: [PATCH] [MIFOSX-876] AND [MIFOSX-877] has been fixed and resolved --- .../api/AccountTransfersApiResource.java | 2 +- .../group/service/SearchParameters.java | 45 +++++++++++++++---- .../loanaccount/api/LoansApiResource.java | 6 +-- .../service/LoanReadPlatformServiceImpl.java | 26 +++++++---- .../api/SavingsAccountsApiResource.java | 2 +- 5 files changed, 59 insertions(+), 22 deletions(-) diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/account/api/AccountTransfersApiResource.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/account/api/AccountTransfersApiResource.java index ed09fc841..44ec1ce32 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/account/api/AccountTransfersApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/account/api/AccountTransfersApiResource.java @@ -98,7 +98,7 @@ public class AccountTransfersApiResource { this.context.authenticatedUser().validateHasReadPermission(AccountTransfersApiConstants.ACCOUNT_TRANSFER_RESOURCE_NAME); - final SearchParameters searchParameters = SearchParameters.forLoans(sqlSearch, externalId, offset, limit, orderBy, sortOrder); + final SearchParameters searchParameters = SearchParameters.forAccountTransfer(sqlSearch, externalId, offset, limit, orderBy, sortOrder); final Page transfers = this.accountTransfersReadPlatformService.retrieveAll(searchParameters); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/SearchParameters.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/SearchParameters.java index bce69087c..305d73695 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/SearchParameters.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/SearchParameters.java @@ -20,6 +20,7 @@ public final class SearchParameters { private final Integer limit; private final String orderBy; private final String sortOrder; + private final String accountNo; @SuppressWarnings("unused") private final Long staffId; @@ -27,7 +28,8 @@ public final class SearchParameters { public static SearchParameters from(final String sqlSearch, final Long officeId, final String externalId, final String name, final String hierarchy) { final Long staffId = null; - return new SearchParameters(sqlSearch, officeId, externalId, name, hierarchy, null, null, null, null, null, null, staffId); + final String accountNo = null; + return new SearchParameters(sqlSearch, officeId, externalId, name, hierarchy, null, null, null, null, null, null, staffId, accountNo); } public static SearchParameters forClients(final String sqlSearch, final Long officeId, final String externalId, @@ -36,27 +38,29 @@ public final class SearchParameters { final Integer maxLimitAllowed = getCheckedLimit(limit); final Long staffId = null; + final String accountNo = null; return new SearchParameters(sqlSearch, officeId, externalId, displayName, hierarchy, firstname, lastname, offset, maxLimitAllowed, - orderBy, sortOrder, staffId); + orderBy, sortOrder, staffId, accountNo); } public static SearchParameters forGroups(final String sqlSearch, final Long officeId, final Long staffId, final String externalId, final String name, final String hierarchy, final Integer offset, final Integer limit, final String orderBy, final String sortOrder) { final Integer maxLimitAllowed = getCheckedLimit(limit); + final String accountNo = null; return new SearchParameters(sqlSearch, officeId, externalId, name, hierarchy, null, null, offset, maxLimitAllowed, orderBy, - sortOrder, staffId); + sortOrder, staffId, accountNo); } public static SearchParameters forLoans(final String sqlSearch, final String externalId, final Integer offset, final Integer limit, - final String orderBy, final String sortOrder) { + final String orderBy, final String sortOrder, final String accountNo) { final Integer maxLimitAllowed = getCheckedLimit(limit); final Long staffId = null; - return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId); + return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId, accountNo); } public static SearchParameters forJournalEntries(final Long officeId, final Integer offset, final Integer limit, final String orderBy, @@ -65,7 +69,7 @@ public final class SearchParameters { final Integer maxLimitAllowed = getCheckedLimit(limit); final Long staffId = null; - return new SearchParameters(null, officeId, null, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId); + return new SearchParameters(null, officeId, null, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId, null); } public static SearchParameters forPagination(final Integer offset, final Integer limit, final String orderBy, final String sortOrder) { @@ -73,12 +77,32 @@ public final class SearchParameters { final Integer maxLimitAllowed = getCheckedLimit(limit); final Long staffId = null; - return new SearchParameters(null, null, null, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId); + return new SearchParameters(null, null, null, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId, null); + } + + public static SearchParameters forSavings(final String sqlSearch, final String externalId, final Integer offset, final Integer limit, + final String orderBy, final String sortOrder) { + + final Integer maxLimitAllowed = getCheckedLimit(limit); + final Long staffId = null; + final String accountNo = null; + + return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId, accountNo); + } + + public static SearchParameters forAccountTransfer(final String sqlSearch, final String externalId, final Integer offset, final Integer limit, + final String orderBy, final String sortOrder) { + + final Integer maxLimitAllowed = getCheckedLimit(limit); + final Long staffId = null; + final String accountNo = null; + + return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId, accountNo); } 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 orderBy, final String sortOrder, final Long staffId, final String accountNo) { this.sqlSearch = sqlSearch; this.officeId = officeId; this.externalId = externalId; @@ -91,6 +115,7 @@ public final class SearchParameters { this.orderBy = orderBy; this.sortOrder = sortOrder; this.staffId = staffId; + this.accountNo = accountNo; } public boolean isOrderByRequested() { @@ -185,4 +210,8 @@ public final class SearchParameters { return this.staffId; } + public String getAccountNo() { + return this.accountNo; + } + } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/api/LoansApiResource.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/api/LoansApiResource.java index ad9f4025a..e98acf008 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/api/LoansApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/api/LoansApiResource.java @@ -422,14 +422,14 @@ public class LoansApiResource { @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) public String retrieveAll(@Context final UriInfo uriInfo, @QueryParam("sqlSearch") final String sqlSearch, - @QueryParam("externalId") final String externalId, + @QueryParam("externalId") final String externalId, // @QueryParam("underHierarchy") final String hierarchy, @QueryParam("offset") final Integer offset, @QueryParam("limit") final Integer limit, - @QueryParam("orderBy") final String orderBy, @QueryParam("sortOrder") final String sortOrder) { + @QueryParam("orderBy") final String orderBy, @QueryParam("sortOrder") final String sortOrder, @QueryParam("accountNo") final String accountNo) { this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermissions); - final SearchParameters searchParameters = SearchParameters.forLoans(sqlSearch, externalId, offset, limit, orderBy, sortOrder); + final SearchParameters searchParameters = SearchParameters.forLoans(sqlSearch, externalId, offset, limit, orderBy, sortOrder, accountNo); final Page loanBasicDetails = this.loanReadPlatformService.retrieveAll(searchParameters); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java index 35e19aec5..7a1fc1362 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java @@ -11,6 +11,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.List; import org.apache.commons.lang.StringUtils; import org.joda.time.Days; @@ -209,12 +210,12 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { sqlBuilder.append(" join m_office o on o.id = c.office_id"); sqlBuilder.append(" left join m_office transferToOffice on transferToOffice.id = c.transfer_to_office_id "); sqlBuilder.append(" where ( o.hierarchy like ? or transferToOffice.hierarchy like ?)"); - - final Object[] objectArray = new Object[2]; - objectArray[0] = hierarchySearchString; - objectArray[1] = hierarchySearchString; + int arrayPos = 2; - + List extraCriterias = new ArrayList(); + extraCriterias.add(hierarchySearchString); + extraCriterias.add(hierarchySearchString); + String sqlQueryCriteria = searchParameters.getSqlSearch(); if (StringUtils.isNotBlank(sqlQueryCriteria)) { sqlQueryCriteria = sqlQueryCriteria.replaceAll("accountNo", "l.account_no"); @@ -222,8 +223,14 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { } if (StringUtils.isNotBlank(searchParameters.getExternalId())) { - sqlBuilder.append(" and l.external_id = ?"); - objectArray[arrayPos] = searchParameters.getExternalId(); + sqlBuilder.append(" and l.external_id = ?"); + extraCriterias.add(searchParameters.getExternalId()); + arrayPos = arrayPos + 1; + } + + if (StringUtils.isNotBlank(searchParameters.getAccountNo())) { + sqlBuilder.append(" and l.account_no = ?"); + extraCriterias.add(searchParameters.getAccountNo()); arrayPos = arrayPos + 1; } @@ -234,14 +241,15 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { sqlBuilder.append(' ').append(searchParameters.getSortOrder()); } } - + if (searchParameters.isLimited()) { sqlBuilder.append(" limit ").append(searchParameters.getLimit()); if (searchParameters.isOffset()) { sqlBuilder.append(" offset ").append(searchParameters.getOffset()); } } - + + final Object[] objectArray = extraCriterias.toArray(); final Object[] finalObjectArray = Arrays.copyOf(objectArray, arrayPos); final String sqlCountRows = "SELECT FOUND_ROWS()"; return this.paginationHelper.fetchPage(this.jdbcTemplate, sqlCountRows, sqlBuilder.toString(), finalObjectArray, diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/api/SavingsAccountsApiResource.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/api/SavingsAccountsApiResource.java index 2cbdb21c9..cbe41e378 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/api/SavingsAccountsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/api/SavingsAccountsApiResource.java @@ -103,7 +103,7 @@ public class SavingsAccountsApiResource { this.context.authenticatedUser().validateHasReadPermission(SavingsApiConstants.SAVINGS_ACCOUNT_RESOURCE_NAME); - final SearchParameters searchParameters = SearchParameters.forLoans(sqlSearch, externalId, offset, limit, orderBy, sortOrder); + final SearchParameters searchParameters = SearchParameters.forSavings(sqlSearch, externalId, offset, limit, orderBy, sortOrder); final Page products = this.savingsAccountReadPlatformService.retrieveAll(searchParameters);