Merge pull request #1371 from chandrikamohith/MIFOSX-2028

MIFOSX-2028 Adding query param OrphansOnly to Groups API.
This commit is contained in:
Vishwas Babu A J
2015-05-11 17:11:07 -07:00
5 changed files with 39 additions and 15 deletions
@@ -27,6 +27,7 @@ public final class SearchParameters {
private final Long loanId; private final Long loanId;
private final Long savingsId; private final Long savingsId;
private final Boolean orphansOnly;
public static SearchParameters from(final String sqlSearch, final Long officeId, final String externalId, final String name, public static SearchParameters from(final String sqlSearch, final Long officeId, final String externalId, final String name,
final String hierarchy) { final String hierarchy) {
@@ -34,8 +35,9 @@ public final class SearchParameters {
final String accountNo = null; final String accountNo = null;
final Long loanId = null; final Long loanId = null;
final Long savingsId = null; final Long savingsId = null;
final Boolean orphansOnly = false;
return new SearchParameters(sqlSearch, officeId, externalId, name, hierarchy, null, null, null, null, null, null, staffId, 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, 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 String accountNo = null;
final Long loanId = null; final Long loanId = null;
final Long savingsId = null; final Long savingsId = null;
final Boolean orphansOnly = false;
return new SearchParameters(sqlSearch, officeId, externalId, displayName, hierarchy, firstname, lastname, offset, maxLimitAllowed, 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, 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 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 Integer maxLimitAllowed = getCheckedLimit(limit);
final String accountNo = null; final String accountNo = null;
@@ -62,11 +65,12 @@ public final class SearchParameters {
final Long savingsId = null; final Long savingsId = null;
return new SearchParameters(sqlSearch, officeId, externalId, name, hierarchy, null, null, offset, maxLimitAllowed, orderBy, 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) { 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, 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 staffId = null;
final Long loanId = null; final Long loanId = null;
final Long savingsId = null; final Long savingsId = null;
final Boolean orphansOnly = false;
return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, 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, 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 Integer maxLimitAllowed = getCheckedLimit(limit);
final Long staffId = null; final Long staffId = null;
final Boolean orphansOnly = false;
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, loanId, savingsId); null, loanId, savingsId, orphansOnly);
} }
public static SearchParameters forPagination(final Integer offset, final Integer limit, final String orderBy, final String sortOrder) { 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 staffId = null;
final Long loanId = null; final Long loanId = null;
final Long savingsId = 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, 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, 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 String accountNo = null;
final Long loanId = null; final Long loanId = null;
final Long savingsId = null; final Long savingsId = null;
final Boolean orphansOnly = false;
return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, 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, 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 String accountNo = null;
final Long loanId = null; final Long loanId = null;
final Long savingsId = null; final Long savingsId = null;
final Boolean orphansOnly = false;
return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, 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, 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 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 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.sqlSearch = sqlSearch;
this.officeId = officeId; this.officeId = officeId;
this.externalId = externalId; this.externalId = externalId;
@@ -147,6 +156,7 @@ public final class SearchParameters {
this.accountNo = accountNo; this.accountNo = accountNo;
this.loanId = loanId; this.loanId = loanId;
this.savingsId = savingsId; this.savingsId = savingsId;
this.orphansOnly = orphansOnly;
} }
public boolean isOrderByRequested() { public boolean isOrderByRequested() {
@@ -260,4 +270,12 @@ public final class SearchParameters {
public Long getSavingsId() { public Long getSavingsId() {
return this.savingsId; return this.savingsId;
} }
public Boolean isOrphansOnly(){
if(this.orphansOnly != null){
return this.orphansOnly;
}
return false;
}
} }
@@ -176,7 +176,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
if (displayName != null) { if (displayName != null) {
extraCriteria += " and concat(ifnull(c.firstname, ''), if(c.firstname > '',' ', '') , ifnull(c.lastname, '')) like " extraCriteria += " and concat(ifnull(c.firstname, ''), if(c.firstname > '',' ', '') , ifnull(c.lastname, '')) like "
+ ApiParameterHelper.sqlEncodeString(displayName); + ApiParameterHelper.sqlEncodeString("%" + displayName + "%");
} }
if (firstname != null) { if (firstname != null) {
@@ -148,8 +148,9 @@ public class CentersApiResource {
GroupingTypesApiConstants.STAFF_CENTER_RESPONSE_DATA_PARAMETERS); GroupingTypesApiConstants.STAFF_CENTER_RESPONSE_DATA_PARAMETERS);
} }
final PaginationParameters parameters = PaginationParameters.instance(paged, offset, limit, orderBy, sortOrder); 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, final SearchParameters searchParameters = SearchParameters.forGroups(sqlSearch, officeId, staffId, externalId, name, hierarchy,
offset, limit, orderBy, sortOrder); offset, limit, orderBy, sortOrder, isOrphansOnly);
if (parameters.isPaged()) { if (parameters.isPaged()) {
final Page<CenterData> centers = this.centerReadPlatformService.retrievePagedAll(searchParameters, parameters); final Page<CenterData> centers = this.centerReadPlatformService.retrievePagedAll(searchParameters, parameters);
return this.toApiJsonSerializer.serialize(settings, centers, GroupingTypesApiConstants.CENTER_RESPONSE_DATA_PARAMETERS); return this.toApiJsonSerializer.serialize(settings, centers, GroupingTypesApiConstants.CENTER_RESPONSE_DATA_PARAMETERS);
@@ -157,14 +157,15 @@ public class GroupsApiResource {
@QueryParam("externalId") final String externalId, @QueryParam("name") final String name, @QueryParam("externalId") final String externalId, @QueryParam("name") final String name,
@QueryParam("underHierarchy") final String hierarchy, @QueryParam("paged") final Boolean paged, @QueryParam("underHierarchy") final String hierarchy, @QueryParam("paged") final Boolean paged,
@QueryParam("offset") final Integer offset, @QueryParam("limit") final Integer limit, @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); this.context.authenticatedUser().validateHasReadPermission(GroupingTypesApiConstants.GROUP_RESOURCE_NAME);
final PaginationParameters parameters = PaginationParameters.instance(paged, offset, limit, orderBy, sortOrder); final PaginationParameters parameters = PaginationParameters.instance(paged, offset, limit, orderBy, sortOrder);
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
final SearchParameters searchParameters = SearchParameters.forGroups(sqlSearch, officeId, staffId, externalId, name, hierarchy, final SearchParameters searchParameters = SearchParameters.forGroups(sqlSearch, officeId, staffId, externalId, name, hierarchy,
offset, limit, orderBy, sortOrder); offset, limit, orderBy, sortOrder, orphansOnly);
if (parameters.isPaged()) { if (parameters.isPaged()) {
final Page<GroupGeneralData> groups = this.groupReadPlatformService.retrievePagedAll(searchParameters, parameters); final Page<GroupGeneralData> groups = this.groupReadPlatformService.retrievePagedAll(searchParameters, parameters);
return this.toApiJsonSerializer.serialize(settings, groups, GroupingTypesApiConstants.GROUP_RESPONSE_DATA_PARAMETERS); return this.toApiJsonSerializer.serialize(settings, groups, GroupingTypesApiConstants.GROUP_RESPONSE_DATA_PARAMETERS);
@@ -237,6 +237,10 @@ public class GroupReadPlatformServiceImpl implements GroupReadPlatformService {
if (staffId != null) { if (staffId != null) {
extraCriteria.append(" and g.staff_id = ").append(staffId); extraCriteria.append(" and g.staff_id = ").append(staffId);
} }
if(searchCriteria.isOrphansOnly()){
extraCriteria.append(" and g.parent_id IS NULL");
}
return extraCriteria.toString(); return extraCriteria.toString();
} }