From 8361ff98205ca7bd0265eb8b3cb149a2a9d05bf3 Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Fri, 30 Oct 2015 00:15:02 +0000 Subject: [PATCH] Merged 5.1-MNT1 (5.1.0) to HEAD (5.1) 115473 adavis: Merged 5.1.N (5.1.1) to 5.1-MNT1 (5.1.0) 114742 rmunteanu: Merged 5.0.N (5.0.3) to 5.1.N (5.1.1) 114701 amorarasu: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3) 114590 amorarasu: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6) 114466 abozianu: MNT-14994 : CLONE - Alfresco Mobile: All Sites is throwing error when listing sites git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@115682 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../org/alfresco/rest/api/impl/SitesImpl.java | 43 ++++++++++++++++--- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/source/java/org/alfresco/rest/api/impl/SitesImpl.java b/source/java/org/alfresco/rest/api/impl/SitesImpl.java index 3ae2c3e2a2..abcdf97759 100644 --- a/source/java/org/alfresco/rest/api/impl/SitesImpl.java +++ b/source/java/org/alfresco/rest/api/impl/SitesImpl.java @@ -33,12 +33,14 @@ import java.util.TreeSet; import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.model.ContentModel; +import org.alfresco.query.CannedQuerySortDetails.SortOrder; import org.alfresco.query.PageDetails; import org.alfresco.query.PagingRequest; import org.alfresco.query.PagingResults; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authority.UnknownAuthorityException; import org.alfresco.repo.site.SiteMembership; +import org.alfresco.repo.site.SiteMembershipComparator; import org.alfresco.repo.site.SiteModel; import org.alfresco.rest.api.Nodes; import org.alfresco.rest.api.People; @@ -59,6 +61,7 @@ import org.alfresco.rest.framework.jacksonextensions.BeanPropertiesFilter; import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo; import org.alfresco.rest.framework.resource.parameters.Paging; import org.alfresco.rest.framework.resource.parameters.Parameters; +import org.alfresco.rest.framework.resource.parameters.SortColumn; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.favourites.FavouritesService; import org.alfresco.service.cmr.model.FileInfo; @@ -416,17 +419,43 @@ public class SitesImpl implements Sites PagingRequest pagingRequest = Util.getPagingRequest(paging); - final Collator collator = Collator.getInstance(); - final Set sortedSiteMembers = new TreeSet(new Comparator() + // get the sorting options + List> sortPairs = new ArrayList>(parameters.getSorting().size()); + for (SortColumn sortColumn : parameters.getSorting()) { - @Override - public int compare(SiteMembership o1, SiteMembership o2) + SiteService.SortFields sortField; + try { - return collator.compare(o1.getSiteInfo().getTitle(), o2.getSiteInfo().getTitle()); + sortField= SiteService.SortFields.valueOf(sortColumn.column); + } + catch (IllegalArgumentException ex) + { + // invalid sort field + continue; } - }); + + sortPairs.add(new Pair( + sortField, + (sortColumn.asc ? SortOrder.ASCENDING : SortOrder.DESCENDING))); + } - List siteMembers = siteService.listSiteMemberships (personId, -1); + // if no sorting options were specify, sort by title + if(sortPairs.size() == 0) + { + sortPairs.add(new Pair( + SiteService.SortFields.SiteTitle, + SortOrder.ASCENDING )); + } + + final Set sortedSiteMembers = new TreeSet( + new SiteMembershipComparator( + sortPairs, + SiteMembershipComparator.Type.SITES)); + + // get the unsorted list of site memberships + List siteMembers = siteService.listSiteMemberships (personId, 0); + + // sort the list of site memberships int totalSize = siteMembers.size(); sortedSiteMembers.addAll(siteMembers); PageDetails pageDetails = PageDetails.getPageDetails(pagingRequest, totalSize);