From a1e58b7768b3253611ce401e5d9393a8a09c72c6 Mon Sep 17 00:00:00 2001 From: Chandrika Date: Mon, 11 May 2015 15:02:21 -0400 Subject: [PATCH] MIFOSX-2028 Adding query param OrphansOnly to Groups API. --- .../core/service/SearchParameters.java | 40 ++++++++++++++----- .../ClientReadPlatformServiceImpl.java | 2 +- .../group/api/CentersApiResource.java | 3 +- .../group/api/GroupsApiResource.java | 5 ++- .../service/GroupReadPlatformServiceImpl.java | 4 ++ 5 files changed, 39 insertions(+), 15 deletions(-) diff --git a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/service/SearchParameters.java b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/service/SearchParameters.java index dedf1abb6..279f52610 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/service/SearchParameters.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/service/SearchParameters.java @@ -27,6 +27,7 @@ public final class SearchParameters { private final Long loanId; private final Long savingsId; + private final Boolean orphansOnly; public static SearchParameters from(final String sqlSearch, final Long officeId, final String externalId, final String name, final String hierarchy) { @@ -34,8 +35,9 @@ public final class SearchParameters { final String accountNo = null; final Long loanId = null; final Long savingsId = null; + final Boolean orphansOnly = false; return new SearchParameters(sqlSearch, officeId, externalId, name, hierarchy, null, null, null, null, null, null, staffId, - accountNo, loanId, savingsId); + accountNo, loanId, savingsId, orphansOnly); } public static SearchParameters forClients(final String sqlSearch, final Long officeId, final String externalId, @@ -47,14 +49,15 @@ public final class SearchParameters { final String accountNo = null; final Long loanId = null; final Long savingsId = null; + final Boolean orphansOnly = false; return new SearchParameters(sqlSearch, officeId, externalId, displayName, hierarchy, firstname, lastname, offset, maxLimitAllowed, - orderBy, sortOrder, staffId, accountNo, loanId, savingsId); + orderBy, sortOrder, staffId, accountNo, loanId, savingsId, orphansOnly); } 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 String sortOrder, final Boolean orphansOnly) { final Integer maxLimitAllowed = getCheckedLimit(limit); final String accountNo = null; @@ -62,11 +65,12 @@ public final class SearchParameters { final Long savingsId = null; return new SearchParameters(sqlSearch, officeId, externalId, name, hierarchy, null, null, offset, maxLimitAllowed, orderBy, - sortOrder, staffId, accountNo, loanId, savingsId); + sortOrder, staffId, accountNo, loanId, savingsId, orphansOnly); } public static SearchParameters forOffices(final String orderBy, final String sortOrder) { - return new SearchParameters(null, null, null, null, null, null, null, null, null, orderBy, sortOrder, null, null, null, null); + final Boolean orphansOnly = false; + return new SearchParameters(null, null, null, null, null, null, null, null, null, orderBy, sortOrder, null, null, null, null, orphansOnly); } public static SearchParameters forLoans(final String sqlSearch, final String externalId, final Integer offset, final Integer limit, @@ -76,9 +80,10 @@ public final class SearchParameters { final Long staffId = null; final Long loanId = null; final Long savingsId = null; + final Boolean orphansOnly = false; return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, - staffId, accountNo, loanId, savingsId); + staffId, accountNo, loanId, savingsId, orphansOnly); } public static SearchParameters forJournalEntries(final Long officeId, final Integer offset, final Integer limit, final String orderBy, @@ -86,9 +91,10 @@ public final class SearchParameters { final Integer maxLimitAllowed = getCheckedLimit(limit); final Long staffId = null; + final Boolean orphansOnly = false; return new SearchParameters(null, officeId, null, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId, - null, loanId, savingsId); + null, loanId, savingsId, orphansOnly); } public static SearchParameters forPagination(final Integer offset, final Integer limit, final String orderBy, final String sortOrder) { @@ -97,9 +103,10 @@ public final class SearchParameters { final Long staffId = null; final Long loanId = null; final Long savingsId = null; + final Boolean orphansOnly = false; return new SearchParameters(null, null, null, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId, null, - loanId, savingsId); + loanId, savingsId, orphansOnly); } public static SearchParameters forSavings(final String sqlSearch, final String externalId, final Integer offset, final Integer limit, @@ -110,9 +117,10 @@ public final class SearchParameters { final String accountNo = null; final Long loanId = null; final Long savingsId = null; + final Boolean orphansOnly = false; return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, - staffId, accountNo, loanId, savingsId); + staffId, accountNo, loanId, savingsId, orphansOnly); } public static SearchParameters forAccountTransfer(final String sqlSearch, final String externalId, final Integer offset, @@ -123,15 +131,16 @@ public final class SearchParameters { final String accountNo = null; final Long loanId = null; final Long savingsId = null; + final Boolean orphansOnly = false; return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, - staffId, accountNo, loanId, savingsId); + staffId, accountNo, loanId, savingsId, orphansOnly); } 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, - final Long savingsId) { + final Long savingsId, final Boolean orphansOnly) { this.sqlSearch = sqlSearch; this.officeId = officeId; this.externalId = externalId; @@ -147,6 +156,7 @@ public final class SearchParameters { this.accountNo = accountNo; this.loanId = loanId; this.savingsId = savingsId; + this.orphansOnly = orphansOnly; } public boolean isOrderByRequested() { @@ -260,4 +270,12 @@ public final class SearchParameters { public Long getSavingsId() { return this.savingsId; } + + public Boolean isOrphansOnly(){ + if(this.orphansOnly != null){ + return this.orphansOnly; + } + return false; + + } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientReadPlatformServiceImpl.java index 9c4675e15..6793d0891 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientReadPlatformServiceImpl.java @@ -176,7 +176,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService if (displayName != null) { extraCriteria += " and concat(ifnull(c.firstname, ''), if(c.firstname > '',' ', '') , ifnull(c.lastname, '')) like " - + ApiParameterHelper.sqlEncodeString(displayName); + + ApiParameterHelper.sqlEncodeString("%" + displayName + "%"); } if (firstname != null) { diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/api/CentersApiResource.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/api/CentersApiResource.java index b1dfb3ca4..eb7e193b9 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/api/CentersApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/api/CentersApiResource.java @@ -148,8 +148,9 @@ public class CentersApiResource { GroupingTypesApiConstants.STAFF_CENTER_RESPONSE_DATA_PARAMETERS); } final PaginationParameters parameters = PaginationParameters.instance(paged, offset, limit, orderBy, sortOrder); + final Boolean isOrphansOnly = false; final SearchParameters searchParameters = SearchParameters.forGroups(sqlSearch, officeId, staffId, externalId, name, hierarchy, - offset, limit, orderBy, sortOrder); + offset, limit, orderBy, sortOrder, isOrphansOnly); if (parameters.isPaged()) { final Page centers = this.centerReadPlatformService.retrievePagedAll(searchParameters, parameters); return this.toApiJsonSerializer.serialize(settings, centers, GroupingTypesApiConstants.CENTER_RESPONSE_DATA_PARAMETERS); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/api/GroupsApiResource.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/api/GroupsApiResource.java index d1ca45cc1..00f1a40c1 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/api/GroupsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/api/GroupsApiResource.java @@ -157,14 +157,15 @@ public class GroupsApiResource { @QueryParam("externalId") final String externalId, @QueryParam("name") final String name, @QueryParam("underHierarchy") final String hierarchy, @QueryParam("paged") final Boolean paged, @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("orphansOnly") final Boolean orphansOnly) { this.context.authenticatedUser().validateHasReadPermission(GroupingTypesApiConstants.GROUP_RESOURCE_NAME); final PaginationParameters parameters = PaginationParameters.instance(paged, offset, limit, orderBy, sortOrder); final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); final SearchParameters searchParameters = SearchParameters.forGroups(sqlSearch, officeId, staffId, externalId, name, hierarchy, - offset, limit, orderBy, sortOrder); + offset, limit, orderBy, sortOrder, orphansOnly); if (parameters.isPaged()) { final Page groups = this.groupReadPlatformService.retrievePagedAll(searchParameters, parameters); return this.toApiJsonSerializer.serialize(settings, groups, GroupingTypesApiConstants.GROUP_RESPONSE_DATA_PARAMETERS); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformServiceImpl.java index 6c58067cb..3dfd57e0d 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformServiceImpl.java @@ -237,6 +237,10 @@ public class GroupReadPlatformServiceImpl implements GroupReadPlatformService { if (staffId != null) { extraCriteria.append(" and g.staff_id = ").append(staffId); } + + if(searchCriteria.isOrphansOnly()){ + extraCriteria.append(" and g.parent_id IS NULL"); + } return extraCriteria.toString(); }