diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/classification/usersecurityclearance.get.desc.xml b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/classification/usersecurityclearance.get.desc.xml index 41c57ee309..8202e19df4 100644 --- a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/classification/usersecurityclearance.get.desc.xml +++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/classification/usersecurityclearance.get.desc.xml @@ -1,7 +1,7 @@ Users security clearance REST API to GET users security clearance - /api/classification/clearance?nameFilter={nameFilter?}&startIndex={startIndex?}&pageSize={pageSize?} + /api/classification/clearance?nameFilter={nameFilter?}&startIndex={startIndex?}&pageSize={pageSize?}&sortField={sortField?}&sortAscending={sortAscending?} argument admin required diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/classification/usersecurityclearance.get.json.ftl b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/classification/usersecurityclearance.get.json.ftl index 454e681932..83e952d7d3 100644 --- a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/classification/usersecurityclearance.get.json.ftl +++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/classification/usersecurityclearance.get.json.ftl @@ -1,5 +1,18 @@ <#import "/org/alfresco/repository/generic-paged-results.lib.ftl" as gen/> -<#import "./usersecurityclearance.lib.ftl" as usersecurityclearanceLib/> + +<#macro usersecurityclearanceJSON item> + <#local cl=item.classificationLevel> + <#local pi=item.personInfo> + <#escape x as jsonUtils.encodeJSONString(x)> + "classificationId": "${cl.id}", + "classificationLabel": "${cl.displayLabel}", + "userName": <#if pi.userName??>"${pi.userName}"<#else>null, + "firstName": <#if pi.firstName??>"${pi.firstName}"<#else>null, + "lastName": <#if pi.lastName??>"${pi.lastName}"<#else>null, + "fullName": <#if pi.firstName?? && pi.lastName??>"${pi.firstName} ${pi.lastName}"<#else>"${pi.userName}", + "completeName": <#if pi.firstName?? && pi.lastName?? && pi.userName??>"${pi.firstName} ${pi.lastName} (${pi.userName})"<#else>"${pi.userName}" + + <#escape x as jsonUtils.encodeJSONString(x)> { @@ -7,7 +20,7 @@ { <@gen.pagedResults data=data ; item> { - <@usersecurityclearanceLib.usersecurityclearanceJSON item=item /> + <@usersecurityclearanceJSON item=item /> } } diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/classification/usersecurityclearance.lib.ftl b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/classification/usersecurityclearance.lib.ftl deleted file mode 100644 index 3c643d618d..0000000000 --- a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/classification/usersecurityclearance.lib.ftl +++ /dev/null @@ -1,13 +0,0 @@ -<#macro usersecurityclearanceJSON item> - <#local cl=item.classificationLevel> - <#local pi=item.personInfo> - <#escape x as jsonUtils.encodeJSONString(x)> - "classificationId": "${cl.id}", - "classificationLabel": "${cl.displayLabel}", - "userName": <#if pi.userName??>"${pi.userName}"<#else>null, - "firstName": <#if pi.firstName??>"${pi.firstName}"<#else>null, - "lastName": <#if pi.lastName??>"${pi.lastName}"<#else>null, - "fullName": <#if pi.firstName?? && pi.lastName??>"${pi.firstName} ${pi.lastName}"<#else>"${pi.userName}", - "completeName": <#if pi.firstName?? && pi.lastName?? && pi.userName??>"${pi.firstName} ${pi.lastName} (${pi.userName})"<#else>"${pi.userName}" - - \ No newline at end of file diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearanceGet.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearanceGet.java index eee367ee0a..89cf2602cb 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearanceGet.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearanceGet.java @@ -18,6 +18,7 @@ */ package org.alfresco.module.org_alfresco_module_rm.script.classification; +import static java.lang.Boolean.parseBoolean; import static java.lang.Integer.parseInt; import static org.apache.commons.lang.StringUtils.isNotBlank; import static org.springframework.extensions.webscripts.Status.STATUS_INTERNAL_SERVER_ERROR; @@ -31,6 +32,7 @@ import org.alfresco.module.org_alfresco_module_rm.classification.SecurityClearan import org.alfresco.module.org_alfresco_module_rm.classification.UserQueryParams; import org.alfresco.module.org_alfresco_module_rm.script.AbstractRmWebScript; import org.alfresco.query.PagingResults; +import org.alfresco.service.namespace.QName; import org.alfresco.util.Pair; import org.springframework.extensions.webscripts.Cache; import org.springframework.extensions.webscripts.Status; @@ -49,6 +51,8 @@ public class UserSecurityClearanceGet extends AbstractRmWebScript private static final String TOTAL = "total"; private static final String SKIP_COUNT = "startIndex"; private static final String MAX_ITEMS = "pageSize"; + private static final String SORT_FIELD = "sortField"; + private static final String SORT_ASCENDING = "sortAscending"; private static final String ITEM_COUNT = "itemCount"; private static final String ITEMS = "items"; private static final String DATA = "data"; @@ -85,6 +89,7 @@ public class UserSecurityClearanceGet extends AbstractRmWebScript UserQueryParams userQueryParams = new UserQueryParams(nameFilter); setMaxItems(userQueryParams, req); setSkipCount(userQueryParams, req); + setSortProps(userQueryParams, req); PagingResults usersSecurityClearance = getSecurityClearanceService().getUsersSecurityClearance(userQueryParams); List securityClearanceItems = getSecurityClearanceItems(usersSecurityClearance); @@ -169,4 +174,22 @@ public class UserSecurityClearanceGet extends AbstractRmWebScript userQueryParams.withSkipCount(parseInt(skipCount)); } } + + /** + * Helper method to set sort properties for the query object + * + * @param userQueryParams {@link UserQueryParams} The request query object + * @param req {@link WebScriptRequest} The webscript request + */ + @SuppressWarnings("unchecked") + private void setSortProps(UserQueryParams userQueryParams, WebScriptRequest req) + { + String sortField = req.getParameter(SORT_FIELD); + String sortAscending = req.getParameter(SORT_ASCENDING); + + if (isNotBlank(sortField) && isNotBlank(sortAscending)) + { + userQueryParams.withSortProps(new Pair<>(QName.createQName(sortField, getNamespaceService()), parseBoolean(sortAscending))); + } + } }