From 660d46a829383fcbda5eaaca411c222b8f57e973 Mon Sep 17 00:00:00 2001 From: Jan Vonka Date: Mon, 19 Sep 2016 10:56:09 +0000 Subject: [PATCH] REPO-1058 / REPO-1242: REST API - list sites that person is member of - fix orderBy (id, title or role) - fix orderBy validation as per existing capabilities - TODO add tests (see REPO-1244) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@130774 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- source/java/org/alfresco/rest/api/Sites.java | 2 + .../org/alfresco/rest/api/impl/SitesImpl.java | 42 +++++++++++-------- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/source/java/org/alfresco/rest/api/Sites.java b/source/java/org/alfresco/rest/api/Sites.java index 8093187d2f..adab390df7 100644 --- a/source/java/org/alfresco/rest/api/Sites.java +++ b/source/java/org/alfresco/rest/api/Sites.java @@ -77,4 +77,6 @@ public interface Sites String PARAM_SITE_ID = "id"; String PARAM_SITE_TITLE = "title"; String PARAM_SITE_DESCRIPTION = "description"; + + String PARAM_SITE_ROLE = "role"; } diff --git a/source/java/org/alfresco/rest/api/impl/SitesImpl.java b/source/java/org/alfresco/rest/api/impl/SitesImpl.java index 744e39c5bf..e998da28eb 100644 --- a/source/java/org/alfresco/rest/api/impl/SitesImpl.java +++ b/source/java/org/alfresco/rest/api/impl/SitesImpl.java @@ -125,6 +125,16 @@ public class SitesImpl implements Sites SORT_PARAMS_TO_QNAMES = Collections.unmodifiableMap(aMap); } + private final static Map SORT_SITE_MEMBERSHIP; + static + { + Map aMap = new HashMap<>(3); + aMap.put(PARAM_SITE_TITLE, SiteService.SortFields.SiteTitle); + aMap.put(PARAM_SITE_ID, SiteService.SortFields.SiteShortName); + aMap.put(PARAM_SITE_ROLE, SiteService.SortFields.Role); + SORT_SITE_MEMBERSHIP = Collections.unmodifiableMap(aMap); + } + protected Nodes nodes; protected People people; @@ -500,35 +510,31 @@ public class SitesImpl implements Sites PagingRequest pagingRequest = Util.getPagingRequest(paging); // get the sorting options - List> sortPairs = new ArrayList>(parameters.getSorting().size()); - for (SortColumn sortColumn : parameters.getSorting()) + List> sortPairs = new ArrayList<>(parameters.getSorting().size()); + + List sortCols = parameters.getSorting(); + if ((sortCols != null) && (sortCols.size() > 0)) { - SiteService.SortFields sortField; - try + for (SortColumn sortCol : sortCols) { - sortField= SiteService.SortFields.valueOf(sortColumn.column); - } - catch (IllegalArgumentException ex) - { - // invalid sort field - continue; + SiteService.SortFields sortProp = SORT_SITE_MEMBERSHIP.get(sortCol.column); + if (sortProp == null) + { + throw new InvalidArgumentException("Invalid sort field: "+sortCol.column); + } + sortPairs.add(new Pair<>(sortProp, (sortCol.asc ? SortOrder.ASCENDING : SortOrder.DESCENDING))); } - - sortPairs.add(new Pair( - sortField, - (sortColumn.asc ? SortOrder.ASCENDING : SortOrder.DESCENDING))); } - - // if no sorting options were specify, sort by title - if(sortPairs.size() == 0) + else { + // default sort order sortPairs.add(new Pair( SiteService.SortFields.SiteTitle, SortOrder.ASCENDING )); } // get the unsorted list of site memberships - List siteMembers = siteService.listSiteMemberships (personId, 0); + List siteMembers = siteService.listSiteMemberships(personId, 0); // sort the list of site memberships int totalSize = siteMembers.size();