From 49042e8dcb33c10b9553f89ee6936606f667386f Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Fri, 25 Jul 2008 12:21:03 +0000 Subject: [PATCH] Sites collection added to person rest API, check point of tagging rest API git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@10025 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../org/alfresco/repo/site/SiteService.java | 8 ++++ .../alfresco/repo/site/SiteServiceImpl.java | 37 +++++++++++++++++++ .../repo/site/SiteServiceImplTest.java | 15 ++++++++ .../repo/site/script/ScriptSiteService.java | 19 +++++++++- 4 files changed, 78 insertions(+), 1 deletion(-) diff --git a/source/java/org/alfresco/repo/site/SiteService.java b/source/java/org/alfresco/repo/site/SiteService.java index ca6ada2ec5..32fa425de9 100644 --- a/source/java/org/alfresco/repo/site/SiteService.java +++ b/source/java/org/alfresco/repo/site/SiteService.java @@ -37,6 +37,14 @@ public interface SiteService */ List listSites(String nameFilter, String sitePresetFilter); + /** + * List all the sites that the specified user has a explicit membership to. + * + * @param userName user name + * @return List list of site information + */ + List listSites(String userName); + /** * Gets site information based on the short name of a site. *

diff --git a/source/java/org/alfresco/repo/site/SiteServiceImpl.java b/source/java/org/alfresco/repo/site/SiteServiceImpl.java index 97f511b6f6..22cdd321a5 100644 --- a/source/java/org/alfresco/repo/site/SiteServiceImpl.java +++ b/source/java/org/alfresco/repo/site/SiteServiceImpl.java @@ -222,6 +222,11 @@ public class SiteServiceImpl implements SiteService, SiteModel return getSiteRoot(); } + /** + * Get the node reference that is the site root + * + * @return NodeRef node reference + */ private NodeRef getSiteRoot() { // Get the root 'sites' folder @@ -240,6 +245,9 @@ public class SiteServiceImpl implements SiteService, SiteModel return resultSet.getNodeRef(0); } + /** + * @see org.alfresco.repo.site.SiteService#listSites(java.lang.String, java.lang.String) + */ public List listSites(String nameFilter, String sitePresetFilter) { // TODO @@ -258,7 +266,30 @@ public class SiteServiceImpl implements SiteService, SiteModel return result; } + + /** + * @see org.alfresco.repo.site.SiteService#listSites(java.lang.String) + */ + public List listSites(String userName) + { + List sites = listSites(null, null); + List result = new ArrayList(sites.size()); + for (SiteInfo site : sites) + { + if (isMember(site.getShortName(), userName) == true) + { + result.add(site); + } + } + return result; + } + /** + * Creates a site informatoin object given a site node reference + * + * @param siteNodeRef site node reference + * @return SiteInfo site information object + */ private SiteInfo createSiteInfo(NodeRef siteNodeRef) { // Get the properties @@ -276,6 +307,12 @@ public class SiteServiceImpl implements SiteService, SiteModel return siteInfo; } + /** + * Indicates whether a site is public or not + * + * @param siteNodeRef site node reference + * @return boolean true if the site is public, false otherwise + */ private boolean isSitePublic(NodeRef siteNodeRef) { boolean isPublic = false; diff --git a/source/java/org/alfresco/repo/site/SiteServiceImplTest.java b/source/java/org/alfresco/repo/site/SiteServiceImplTest.java index 1d60940a52..3b1674d7cc 100644 --- a/source/java/org/alfresco/repo/site/SiteServiceImplTest.java +++ b/source/java/org/alfresco/repo/site/SiteServiceImplTest.java @@ -152,6 +152,21 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest } } + sites = this.siteService.listSites(USER_TWO); + assertNotNull(sites); + assertEquals(0, sites.size()); + + this.siteService.setMembership("mySiteOne", USER_TWO, SiteModel.SITE_CONSUMER); + this.siteService.setMembership("mySiteTwo", USER_TWO, SiteModel.SITE_CONSUMER); + + sites = this.siteService.listSites(USER_TWO); + assertNotNull(sites); + assertEquals(2, sites.size()); + + sites = this.siteService.listSites(USER_ONE); + assertNotNull(sites); + assertEquals(4, sites.size()); + } public void testGetSite() diff --git a/source/java/org/alfresco/repo/site/script/ScriptSiteService.java b/source/java/org/alfresco/repo/site/script/ScriptSiteService.java index af02930f06..3beb23b3d3 100644 --- a/source/java/org/alfresco/repo/site/script/ScriptSiteService.java +++ b/source/java/org/alfresco/repo/site/script/ScriptSiteService.java @@ -103,7 +103,24 @@ public class ScriptSiteService extends BaseScopableProcessorExtension sites.add(new Site(siteInfo, this.serviceRegistry, this.siteService, getScope())); } return (Site[])sites.toArray(new Site[sites.size()]); - } + } + + /** + * List all the sites that the specified user has an explicit membership to. + * + * @param userName user name + * @return Site[] a list of sites the user has an explicit membership to + */ + public Site[] listUserSites(String userName) + { + List siteInfos = this.siteService.listSites(userName); + List sites = new ArrayList(siteInfos.size()); + for (SiteInfo siteInfo : siteInfos) + { + sites.add(new Site(siteInfo, this.serviceRegistry, this.siteService, getScope())); + } + return (Site[])sites.toArray(new Site[sites.size()]); + } /** * Get a site for a provided site short name.