diff --git a/config/alfresco/site-services-context.xml b/config/alfresco/site-services-context.xml
index d75ff2de2b..07dc859e18 100644
--- a/config/alfresco/site-services-context.xml
+++ b/config/alfresco/site-services-context.xml
@@ -130,14 +130,6 @@
-
-
-
-
-
-
-
-
diff --git a/source/java/org/alfresco/repo/site/SiteMembersCannedQuery.java b/source/java/org/alfresco/repo/site/SiteMembersCannedQuery.java
index 9b1c938861..a2a1df4989 100644
--- a/source/java/org/alfresco/repo/site/SiteMembersCannedQuery.java
+++ b/source/java/org/alfresco/repo/site/SiteMembersCannedQuery.java
@@ -96,7 +96,7 @@ public class SiteMembersCannedQuery extends AbstractCannedQuery
{
this.siteShortName = siteShortName;
this.siteInfo = siteService.getSite(siteShortName);
- this.siteMembers = sortPairs != null && sortPairs.size() > 0 ? new TreeSet(new SiteMembershipComparator(sortPairs)) : new HashSet();
+ this.siteMembers = sortPairs != null && sortPairs.size() > 0 ? new TreeSet(new SiteMembershipComparator(sortPairs, SiteMembershipComparator.Type.MEMBERS)) : new HashSet();
}
@Override
@@ -140,153 +140,4 @@ public class SiteMembersCannedQuery extends AbstractCannedQuery
{
}
}
-
- private static class SiteMembershipComparator implements Comparator
- {
- private List> sortPairs;
- private static Collator collator = Collator.getInstance();
-
- public SiteMembershipComparator(List> sortPairs)
- {
- if(sortPairs.size() < 1)
- {
- throw new IllegalArgumentException("Must provide at least one sort criterion");
- }
- this.sortPairs = sortPairs;
- }
-
- private int safeCompare(Comparable o1, T o2)
- {
- int ret = 0;
-
- if(o1 == null)
- {
- if(o2 == null)
- {
- ret = 0;
- }
- else
- {
- ret = -1;
- }
- }
- else
- {
- if(o2 == null)
- {
- ret = 1;
- }
- else
- {
- ret = o1.compareTo(o2);
- }
- }
-
- return ret;
- }
-
- private int safeCompare(String s1, String s2)
- {
- int ret = 0;
-
- if(s1 == null)
- {
- if(s2 == null)
- {
- ret = 0;
- }
- else
- {
- ret = -1;
- }
- }
- else
- {
- if(s2 == null)
- {
- ret = 1;
- }
- else
- {
- ret = collator.compare(s1, s2);
- }
- }
-
- return ret;
- }
-
- @Override
- public int compare(SiteMembership o1, SiteMembership o2)
- {
- String personId1 = o1.getPersonId();
- String personId2 = o2.getPersonId();
- SiteInfo siteInfo1 = o1.getSiteInfo();
- SiteInfo siteInfo2 = o2.getSiteInfo();
- String shortName1 = siteInfo1.getShortName();
- String shortName2 = siteInfo2.getShortName();
- String firstName1 = o1.getFirstName();
- String firstName2 = o2.getFirstName();
- String lastName1 = o1.getLastName();
- String lastName2 = o2.getLastName();
- String siteRole1 = o1.getRole();
- String siteRole2 = o2.getRole();
-
- int personId = safeCompare(personId1, personId2);
- int firstName = safeCompare(firstName1, firstName2);
- int siteShortName = safeCompare(shortName1, shortName2);
- int lastName = safeCompare(lastName1, lastName2);
- int siteRole = safeCompare(siteRole1, siteRole2);
-
- if(siteRole == 0 && siteShortName == 0 && personId == 0)
- {
- // equals contract
- return 0;
- }
-
- int ret = 0;
-
- for(Pair extends Object, SortOrder> pair : sortPairs)
- {
- Object name = pair.getFirst();
- SortOrder sortOrder = pair.getSecond();
-
- int multiplier = sortOrder.equals(SortOrder.ASCENDING) ? 1 : -1;
- if(name.equals(SiteService.SortFields.FirstName))
- {
- ret = firstName * multiplier;
- }
- else if(name.equals(SiteService.SortFields.LastName))
- {
- if(lastName1 == null || lastName2 == null)
- {
- continue;
- }
- ret = lastName * multiplier;
- }
- else if(name.equals(SiteService.SortFields.Role))
- {
- if(siteRole1 == null || siteRole2 == null)
- {
- continue;
- }
- ret = siteRole * multiplier;
- }
- else if(name.equals(SiteService.SortFields.Username))
- {
- if(personId1 == null || personId2 == null)
- {
- continue;
- }
- ret = personId * multiplier;
- }
-
- if(ret != 0)
- {
- break;
- }
- }
-
- return ret;
- }
- }
}
diff --git a/source/java/org/alfresco/repo/site/SiteMembershipCannedQueryFactory.java b/source/java/org/alfresco/repo/site/SiteMembershipCannedQueryFactory.java
deleted file mode 100644
index b8b09ce7d4..0000000000
--- a/source/java/org/alfresco/repo/site/SiteMembershipCannedQueryFactory.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2005-2012 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- */
-package org.alfresco.repo.site;
-
-import org.alfresco.query.AbstractCannedQueryFactory;
-import org.alfresco.query.CannedQuery;
-import org.alfresco.query.CannedQueryParameters;
-import org.alfresco.service.cmr.repository.NodeService;
-import org.alfresco.service.cmr.security.AuthorityService;
-import org.alfresco.service.cmr.security.PersonService;
-import org.alfresco.service.cmr.site.SiteService;
-
-/**
- * A factory for creating site membership canned queries.
- *
- * @author steveglover
- *
- */
-public class SiteMembershipCannedQueryFactory extends AbstractCannedQueryFactory
-{
- private NodeService nodeService;
- private PersonService personService;
- private AuthorityService authorityService;
- private SiteService siteService;
-
- public void setAuthorityService(AuthorityService authorityService)
- {
- this.authorityService = authorityService;
- }
-
- public void setSiteService(SiteService siteService)
- {
- this.siteService = siteService;
- }
-
- public void setNodeService(NodeService nodeService)
- {
- this.nodeService = nodeService;
- }
-
- public void setPersonService(PersonService personService)
- {
- this.personService = personService;
- }
-
- @Override
- public CannedQuery getCannedQuery(CannedQueryParameters parameters)
- {
- Object parameterBean = parameters.getParameterBean();
- CannedQuery cq = null;
- if(parameterBean instanceof SitesCannedQueryParams)
- {
- cq = new SitesCannedQuery(authorityService, siteService, parameters);
- }
- else if(parameterBean instanceof SiteMembersCannedQueryParams)
- {
- cq = new SiteMembersCannedQuery(siteService, personService, nodeService, parameters);
- }
- return (CannedQuery) cq;
- }
-
-}
diff --git a/source/java/org/alfresco/repo/site/SiteMembershipComparator.java b/source/java/org/alfresco/repo/site/SiteMembershipComparator.java
new file mode 100644
index 0000000000..f8994fe264
--- /dev/null
+++ b/source/java/org/alfresco/repo/site/SiteMembershipComparator.java
@@ -0,0 +1,230 @@
+package org.alfresco.repo.site;
+
+import java.text.Collator;
+import java.util.Comparator;
+import java.util.List;
+
+import org.alfresco.query.CannedQuerySortDetails.SortOrder;
+import org.alfresco.service.cmr.site.SiteInfo;
+import org.alfresco.service.cmr.site.SiteService;
+import org.alfresco.util.Pair;
+
+public class SiteMembershipComparator implements Comparator
+{
+ public enum Type
+ {
+ SITES, MEMBERS
+ }
+
+ private List> sortPairs;
+ private static Collator collator = Collator.getInstance();
+ private Type comparatorType;
+
+ public SiteMembershipComparator(List> sortPairs, Type comparatorType)
+ {
+ if (sortPairs.size() < 1)
+ {
+ throw new IllegalArgumentException("Must provide at least one sort criterion");
+ }
+ this.sortPairs = sortPairs;
+ this.comparatorType = comparatorType;
+ }
+
+ private int safeCompare(Comparable o1, T o2)
+ {
+ int ret = 0;
+
+ if (o1 == null)
+ {
+ if (o2 == null)
+ {
+ ret = 0;
+ }
+ else
+ {
+ ret = -1;
+ }
+ }
+ else
+ {
+ if (o2 == null)
+ {
+ ret = 1;
+ }
+ else
+ {
+ ret = o1.compareTo(o2);
+ }
+ }
+
+ return ret;
+ }
+
+ private int safeCompare(String s1, String s2)
+ {
+ int ret = 0;
+
+ if (s1 == null)
+ {
+ if (s2 == null)
+ {
+ ret = 0;
+ }
+ else
+ {
+ ret = -1;
+ }
+ }
+ else
+ {
+ if (s2 == null)
+ {
+ ret = 1;
+ }
+ else
+ {
+ ret = collator.compare(s1, s2);
+ }
+ }
+
+ return ret;
+ }
+
+ private int compareMembersBody(String personId1, String personId2, String lastName1, String lastName2, String siteRole1, String siteRole2, int personId, int firstName,
+ int lastName, int siteRole, int ret)
+ {
+ for (Pair extends Object, SortOrder> pair : sortPairs)
+ {
+ Object name = pair.getFirst();
+ SortOrder sortOrder = pair.getSecond();
+
+ int multiplier = sortOrder.equals(SortOrder.ASCENDING) ? 1 : -1;
+ if (name.equals(SiteService.SortFields.FirstName))
+ {
+ ret = firstName * multiplier;
+ }
+ else if (name.equals(SiteService.SortFields.LastName))
+ {
+ if (lastName1 == null || lastName2 == null)
+ {
+ continue;
+ }
+ ret = lastName * multiplier;
+ }
+ else if (name.equals(SiteService.SortFields.Role))
+ {
+ if (siteRole1 == null || siteRole2 == null)
+ {
+ continue;
+ }
+ ret = siteRole * multiplier;
+ }
+ else if (name.equals(SiteService.SortFields.Username))
+ {
+ if (personId1 == null || personId2 == null)
+ {
+ continue;
+ }
+ ret = personId * multiplier;
+ }
+
+ if (ret != 0)
+ {
+ break;
+ }
+ }
+ return ret;
+ }
+
+ private int compareSitesBody(String shortName1, String shortName2, String siteRole1, String siteRole2, String siteTitle1, String siteTitle2, int siteShortName, int siteRole,
+ int siteTitle, int ret)
+ {
+ for (Pair extends Object, SortOrder> pair : sortPairs)
+ {
+ Object name = pair.getFirst();
+ SortOrder sortOrder = pair.getSecond();
+
+ int multiplier = sortOrder.equals(SortOrder.ASCENDING) ? 1 : -1;
+ if (name.equals(SiteService.SortFields.SiteShortName))
+ {
+ if (shortName1 == null || shortName2 == null)
+ {
+ continue;
+ }
+ ret = siteShortName * multiplier;
+ }
+ else if (name.equals(SiteService.SortFields.SiteTitle))
+ {
+ if (siteTitle1 == null || siteTitle2 == null)
+ {
+ continue;
+ }
+ ret = siteTitle * multiplier;
+ }
+ else if (name.equals(SiteService.SortFields.Role))
+ {
+ if (siteRole1 == null || siteRole2 == null)
+ {
+ continue;
+ }
+ ret = siteRole * multiplier;
+ }
+
+ if (ret != 0)
+ {
+ break;
+ }
+ }
+ return ret;
+ }
+
+ @Override
+ public int compare(SiteMembership o1, SiteMembership o2)
+ {
+ String personId1 = o1.getPersonId();
+ String personId2 = o2.getPersonId();
+ SiteInfo siteInfo1 = o1.getSiteInfo();
+ SiteInfo siteInfo2 = o2.getSiteInfo();
+ String shortName1 = siteInfo1.getShortName();
+ String shortName2 = siteInfo2.getShortName();
+ String firstName1 = o1.getFirstName();
+ String firstName2 = o2.getFirstName();
+ String lastName1 = o1.getLastName();
+ String lastName2 = o2.getLastName();
+ String siteRole1 = o1.getRole();
+ String siteRole2 = o2.getRole();
+ String siteTitle1 = siteInfo1.getTitle();
+ String siteTitle2 = siteInfo2.getTitle();
+
+ int personId = safeCompare(personId1, personId2);
+ int firstName = safeCompare(firstName1, firstName2);
+ int siteShortName = safeCompare(shortName1, shortName2);
+ int lastName = safeCompare(lastName1, lastName2);
+ int siteRole = safeCompare(siteRole1, siteRole2);
+ int siteTitle = safeCompare(siteTitle1, siteTitle2);
+
+ if (siteRole == 0 && siteShortName == 0 && personId == 0)
+ {
+ // equals contract
+ return 0;
+ }
+
+ int ret = 0;
+
+ switch (comparatorType)
+ {
+ case SITES:
+ {
+ ret = compareSitesBody(shortName1, shortName2, siteRole1, siteRole2, siteTitle1, siteTitle2, siteShortName, siteRole, siteTitle, ret);
+ break;
+ }
+ case MEMBERS:
+ {
+ ret = compareMembersBody(personId1, personId2, lastName1, lastName2, siteRole1, siteRole2, personId, firstName, lastName, siteRole, ret);
+ break;
+ }
+ }
+
+ return ret;
+ }
+}
diff --git a/source/java/org/alfresco/repo/site/SiteServiceImpl.java b/source/java/org/alfresco/repo/site/SiteServiceImpl.java
index 523d6e9697..ed253f1e86 100644
--- a/source/java/org/alfresco/repo/site/SiteServiceImpl.java
+++ b/source/java/org/alfresco/repo/site/SiteServiceImpl.java
@@ -45,6 +45,7 @@ import org.alfresco.query.CannedQueryParameters;
import org.alfresco.query.CannedQueryResults;
import org.alfresco.query.CannedQuerySortDetails;
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.activities.ActivityType;
@@ -106,6 +107,7 @@ import org.alfresco.service.cmr.tagging.TaggingService;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
import org.alfresco.service.transaction.TransactionService;
+import org.alfresco.util.GUID;
import org.alfresco.util.Pair;
import org.alfresco.util.PropertyCheck;
import org.alfresco.util.PropertyMap;
@@ -1818,8 +1820,6 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic
public PagingResults listMembersPaged(String shortName, boolean collapseGroups, List> sortProps, PagingRequest pagingRequest)
{
- SiteMembershipCannedQueryFactory sitesCannedQueryFactory = (SiteMembershipCannedQueryFactory)cannedQueryRegistry.getNamedObject("sitesCannedQueryFactory");
-
CannedQueryPageDetails pageDetails = new CannedQueryPageDetails(pagingRequest.getSkipCount(), pagingRequest.getMaxItems());
// sort details
@@ -1838,7 +1838,7 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic
SiteMembersCannedQueryParams parameterBean = new SiteMembersCannedQueryParams(shortName, collapseGroups);
CannedQueryParameters params = new CannedQueryParameters(parameterBean, pageDetails, sortDetails, pagingRequest.getRequestTotalCountMax(), pagingRequest.getQueryExecutionId());
- CannedQuery query = sitesCannedQueryFactory.getCannedQuery(params);
+ CannedQuery query = new SiteMembersCannedQuery(this, personService, nodeService, params);
CannedQueryResults results = query.execute();
@@ -3092,31 +3092,51 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic
public PagingResults listSitesPaged(final String userName, List> sortProps, final PagingRequest pagingRequest)
{
- SiteMembershipCannedQueryFactory sitesCannedQueryFactory = (SiteMembershipCannedQueryFactory)cannedQueryRegistry.getNamedObject("sitesCannedQueryFactory");
-
- CannedQueryPageDetails pageDetails = new CannedQueryPageDetails(pagingRequest.getSkipCount(), pagingRequest.getMaxItems());
-
- // sort details
- CannedQuerySortDetails sortDetails = null;
- if(sortProps != null)
- {
- List> sortPairs = new ArrayList>(sortProps.size());
+ List siteMembers = listSiteMemberships (userName, -1);
+ final int totalSize = siteMembers.size();
+ final PageDetails pageDetails = PageDetails.getPageDetails(pagingRequest, totalSize);
+ final List resultList;
+ if (sortProps == null)
+ {
+ resultList = siteMembers;
+ }
+ else
+ {
+ List> sortPairs = new ArrayList>(sortProps.size());
for (Pair sortProp : sortProps)
{
sortPairs.add(new Pair(sortProp.getFirst(), (sortProp.getSecond() ? SortOrder.ASCENDING : SortOrder.DESCENDING)));
}
-
- sortDetails = new CannedQuerySortDetails(sortPairs);
- }
+ TreeSet sortedSet = new TreeSet(new SiteMembershipComparator(sortPairs, SiteMembershipComparator.Type.SITES));
+ sortedSet.addAll(siteMembers);
+ resultList = new ArrayList(sortedSet);
+ }
+
+ PagingResults res = new PagingResults() {
+
+ @Override
+ public boolean hasMoreItems() {
+ return pageDetails.hasMoreItems();
+ }
+
+ @Override
+ public Pair getTotalResultCount() {
+ Integer size = totalSize;
+ return new Pair(size, size);
+ }
+
+ @Override
+ public String getQueryExecutionId() {
+ return GUID.generate();
+ }
+
+ @Override
+ public List getPage() {
+ return resultList;
+ }
+ };
- SitesCannedQueryParams parameterBean = new SitesCannedQueryParams(userName);
- CannedQueryParameters params = new CannedQueryParameters(parameterBean, pageDetails, sortDetails, pagingRequest.getRequestTotalCountMax(), pagingRequest.getQueryExecutionId());
-
- CannedQuery query = sitesCannedQueryFactory.getCannedQuery(params);
-
- CannedQueryResults results = query.execute();
-
- return getPagingResults(pagingRequest, results);
+ return res;
}
private PagingResults getPagingResults(PagingRequest pagingRequest, final CannedQueryResults results)
@@ -3175,7 +3195,7 @@ public class SiteServiceImpl extends AbstractLifecycleBean implements SiteServic
}
};
}
-
+
/**
* Private sites have separate ACLs on each component and don't inherit from the
* site which has consumer role for everyone.
diff --git a/source/java/org/alfresco/repo/site/SitesCannedQuery.java b/source/java/org/alfresco/repo/site/SitesCannedQuery.java
deleted file mode 100644
index 5ca59fa714..0000000000
--- a/source/java/org/alfresco/repo/site/SitesCannedQuery.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * Copyright (C) 2005-2012 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- */
-package org.alfresco.repo.site;
-
-import java.text.Collator;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.TreeSet;
-
-import org.alfresco.query.AbstractCannedQuery;
-import org.alfresco.query.CannedQueryPageDetails;
-import org.alfresco.query.CannedQueryParameters;
-import org.alfresco.query.CannedQuerySortDetails;
-import org.alfresco.query.CannedQuerySortDetails.SortOrder;
-import org.alfresco.service.cmr.security.AuthorityService;
-import org.alfresco.service.cmr.security.AuthorityService.AuthorityFilter;
-import org.alfresco.service.cmr.security.AuthorityType;
-import org.alfresco.service.cmr.site.SiteInfo;
-import org.alfresco.service.cmr.site.SiteRole;
-import org.alfresco.service.cmr.site.SiteService;
-import org.alfresco.util.Pair;
-
-/**
- * A canned query to retrieve the sites for a user.
- *
- * @author steveglover
- *
- */
-// TODO currently have to read all sites into memory for sorting purposes. Find a way that doesn't involve doing this.
-public class SitesCannedQuery extends AbstractCannedQuery
-{
- private AuthorityService authorityService;
- private SiteService siteService;
-
- protected SitesCannedQuery(AuthorityService authorityService, SiteService siteService, CannedQueryParameters parameters)
- {
- super(parameters);
- this.authorityService = authorityService;
- this.siteService = siteService;
- }
-
- @Override
- protected List queryAndFilter(CannedQueryParameters parameters)
- {
- // get paramBean - note: this currently has both optional filter and optional sort param
- SitesCannedQueryParams paramBean = (SitesCannedQueryParams)parameters.getParameterBean();
-
- String userName = paramBean.getUsername();
-
- final int size = CannedQueryPageDetails.DEFAULT_PAGE_SIZE;
-
- CannedQuerySortDetails sortDetails = parameters.getSortDetails();
- List> sortPairs = sortDetails.getSortPairs();
-
- CQAuthorityFilter filter = new CQAuthorityFilter(userName, sortPairs);
- authorityService.getContainingAuthoritiesInZone(AuthorityType.GROUP, userName, AuthorityService.ZONE_APP_SHARE, filter, size);
-
- return filter.getSiteMemberships();
- }
-
- @Override
- protected boolean isApplyPostQuerySorting()
- {
- // already sorted as a side effect by CQAuthorityFilter
- return false;
- }
-
- private class CQAuthorityFilter implements AuthorityFilter
- {
- private String userName;
- private Set siteMembers;
-
- CQAuthorityFilter(String userName, List> sortPairs)
- {
- this.userName = userName;
- this.siteMembers = sortPairs != null && sortPairs.size() > 0 ? new TreeSet(new SiteMembershipComparator(sortPairs)) : new HashSet();
- }
-
- @Override
- public boolean includeAuthority(String authority)
- {
- String siteName = siteService.resolveSite(authority);
- if(siteName != null)
- {
- SiteInfo siteInfo = siteService.getSite(siteName);
- if(siteInfo != null)
- {
- String role = siteService.getMembersRole(siteName, userName);
- if (role != null)
- {
- siteMembers.add(new SiteMembership(siteInfo, authority, role));
- }
- }
- }
-
- return true; // need to get all items so that the canned query can do the sort in memory
- }
-
- List getSiteMemberships()
- {
- // "drain" the site memberships into a (sorted) list
-
- List siteMemberships = new ArrayList(siteMembers.size());
- Iterator it = siteMembers.iterator();
- while(it.hasNext())
- {
- siteMemberships.add(it.next());
- it.remove();
- }
- return siteMemberships;
- }
- }
-
- private static class SiteMembershipComparator implements Comparator
- {
- private List> sortPairs;
- private static Collator collator = Collator.getInstance();
-
- public SiteMembershipComparator(List> sortPairs)
- {
- if(sortPairs.size() < 1)
- {
- throw new IllegalArgumentException("Must provide at least one sort criterion");
- }
- this.sortPairs = sortPairs;
- }
-
- private int safeCompare(Comparable o1, T o2)
- {
- int ret = 0;
-
- if(o1 == null)
- {
- if(o2 == null)
- {
- ret = 0;
- }
- else
- {
- ret = -1;
- }
- }
- else
- {
- if(o2 == null)
- {
- ret = 1;
- }
- else
- {
- ret = o1.compareTo(o2);
- }
- }
-
- return ret;
- }
-
- private int safeCompare(String s1, String s2)
- {
- int ret = 0;
-
- if(s1 == null)
- {
- if(s2 == null)
- {
- ret = 0;
- }
- else
- {
- ret = -1;
- }
- }
- else
- {
- if(s2 == null)
- {
- ret = 1;
- }
- else
- {
-
- ret = collator.compare(s1, s2);
- }
- }
-
- return ret;
- }
-
- @Override
- public int compare(SiteMembership o1, SiteMembership o2)
- {
- String personId1 = o1.getPersonId();
- String personId2 = o2.getPersonId();
- SiteInfo siteInfo1 = o1.getSiteInfo();
- SiteInfo siteInfo2 = o2.getSiteInfo();
- String shortName1 = siteInfo1.getShortName();
- String shortName2 = siteInfo2.getShortName();
- String firstName1 = o1.getFirstName();
- String firstName2 = o2.getFirstName();
- String lastName1 = o1.getLastName();
- String lastName2 = o2.getLastName();
- String siteRole1 = o1.getRole();
- String siteRole2 = o2.getRole();
- String siteTitle1 = siteInfo1.getTitle();
- String siteTitle2 = siteInfo2.getTitle();
-
- int personId = safeCompare(personId1, personId2);
- int firstName = safeCompare(firstName1, firstName2);
- int siteShortName = safeCompare(shortName1, shortName2);
- int lastName = safeCompare(lastName1, lastName2);
- int siteRole = safeCompare(siteRole1, siteRole2);
- int siteTitle = safeCompare(siteTitle1, siteTitle2);
-
- if(siteRole == 0 && siteShortName == 0 && personId == 0)
- {
- // equals contract
- return 0;
- }
-
- int ret = 0;
-
- for(Pair extends Object, SortOrder> pair : sortPairs)
- {
- Object name = pair.getFirst();
- SortOrder sortOrder = pair.getSecond();
-
- int multiplier = sortOrder.equals(SortOrder.ASCENDING) ? 1 : -1;
- if(name.equals(SiteService.SortFields.SiteShortName))
- {
- if(shortName1 == null || shortName2 == null)
- {
- continue;
- }
- ret = siteShortName * multiplier;
- }
- else if(name.equals(SiteService.SortFields.SiteTitle))
- {
- if(siteTitle1 == null || siteTitle2 == null)
- {
- continue;
- }
- ret = siteTitle * multiplier;
- }
- else if(name.equals(SiteService.SortFields.Role))
- {
- if(siteRole1 == null || siteRole2 == null)
- {
- continue;
- }
- ret = siteRole * multiplier;
- }
-
- if(ret != 0)
- {
- break;
- }
- }
-
- return ret;
- }
- }
-}
diff --git a/source/java/org/alfresco/repo/site/SitesCannedQueryParams.java b/source/java/org/alfresco/repo/site/SitesCannedQueryParams.java
deleted file mode 100644
index 280d24ec9b..0000000000
--- a/source/java/org/alfresco/repo/site/SitesCannedQueryParams.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2005-2012 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- */
-package org.alfresco.repo.site;
-
-/**
- * Conveys parameters for a user site membership canned query.
- *
- * @author steveglover
- *
- */
-public class SitesCannedQueryParams
-{
- private String username;
-
- public SitesCannedQueryParams(String username)
- {
- this.username = username;
- }
-
- public String getUsername()
- {
- return username;
- }
-}