Merged HEAD-BUG-FIX (5.1/Cloud) to HEAD (5.1/Cloud)

98720: Merged 5.0.N (5.0.2) to HEAD-BUG-FIX (5.1/Cloud)
      98568: Merged V4.2-BUG-FIX (4.2.5) to 5.0.N (5.0.2)
         98334: Merged DEV (4.2.5) to V4.2-BUG-FIX (4.2.5)
            98326: MNT-13198: BM-0012: Run v420b1494_01: (CMIS) GetSites is Slow
              - Changed the PersonSitesRelation to use a faster API (SiteServiceImpl.listSiteMemberships(String, int)).
         98452: MNT-13198: BM-0012: Run v420b1494_01: (CMIS) GetSites is Slow
            - Corrected the solution to fix the build failures.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@98811 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2015-03-06 08:05:06 +00:00
parent 0dd0c87f93
commit 935887658c

View File

@@ -416,21 +416,43 @@ public class SitesImpl implements Sites
PagingRequest pagingRequest = Util.getPagingRequest(paging); PagingRequest pagingRequest = Util.getPagingRequest(paging);
final List<Pair<SiteService.SortFields, Boolean>> sort = new ArrayList<Pair<SiteService.SortFields, Boolean>>(); final Collator collator = Collator.getInstance();
sort.add(new Pair<SiteService.SortFields, Boolean>(SiteService.SortFields.SiteTitle, Boolean.TRUE)); final Set<SiteMembership> sortedSiteMembers = new TreeSet<SiteMembership>(new Comparator<SiteMembership>()
sort.add(new Pair<SiteService.SortFields, Boolean>(SiteService.SortFields.Role, Boolean.TRUE)); {
@Override
public int compare(SiteMembership o1, SiteMembership o2)
{
return collator.compare(o1.getSiteInfo().getTitle(), o2.getSiteInfo().getTitle());
}
});
PagingResults<SiteMembership> results = siteService.listSitesPaged(personId, sort, pagingRequest); List<SiteMembership> siteMembers = siteService.listSiteMemberships (personId, -1);
List<SiteMembership> siteMembers = results.getPage(); int totalSize = siteMembers.size();
List<MemberOfSite> ret = new ArrayList<MemberOfSite>(siteMembers.size()); sortedSiteMembers.addAll(siteMembers);
for(SiteMembership siteMember : siteMembers) PageDetails pageDetails = PageDetails.getPageDetails(pagingRequest, totalSize);
{ List<MemberOfSite> ret = new ArrayList<MemberOfSite>(totalSize);
SiteInfo siteInfo = siteMember.getSiteInfo();
MemberOfSite memberOfSite = new MemberOfSite(siteInfo.getShortName(), siteInfo.getNodeRef(), siteMember.getRole()); Iterator<SiteMembership> it = sortedSiteMembers.iterator();
ret.add(memberOfSite); for(int counter = 0; counter < pageDetails.getEnd() && it.hasNext(); counter++)
} {
SiteMembership siteMember = it.next();
if(counter < pageDetails.getSkipCount())
{
continue;
}
if(counter > pageDetails.getEnd() - 1)
{
break;
}
SiteInfo siteInfo = siteMember.getSiteInfo();
MemberOfSite memberOfSite = new MemberOfSite(siteInfo.getShortName(), siteInfo.getNodeRef(), siteMember.getRole());
ret.add(memberOfSite);
}
return CollectionWithPagingInfo.asPaged(paging, ret, pageDetails.hasMoreItems(), null);
return CollectionWithPagingInfo.asPaged(paging, ret, results.hasMoreItems(), null);
} }
public SiteContainer getSiteContainer(String siteId, String containerId) public SiteContainer getSiteContainer(String siteId, String containerId)