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 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;
}
}
@@ -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) {
@@ -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<CenterData> centers = this.centerReadPlatformService.retrievePagedAll(searchParameters, 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("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<GroupGeneralData> groups = this.groupReadPlatformService.retrievePagedAll(searchParameters, parameters);
return this.toApiJsonSerializer.serialize(settings, groups, GroupingTypesApiConstants.GROUP_RESPONSE_DATA_PARAMETERS);
@@ -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();
}