Class SiteServiceImpl

    • Field Detail

      • logger

        protected static org.apache.commons.logging.Log logger
        Logger
      • SITE_STORE

        public static final org.alfresco.service.cmr.repository.StoreRef SITE_STORE
        The DM store where site's are kept
    • Constructor Detail

      • SiteServiceImpl

        public SiteServiceImpl()
    • Method Detail

      • setSitesXPath

        public void setSitesXPath​(String sitesXPath)
        Set the path to the location of the sites root folder. For example:
         ./app:company_home/st:sites
         
        Parameters:
        sitesXPath - a valid XPath
      • setNodeService

        public void setNodeService​(org.alfresco.service.cmr.repository.NodeService nodeService)
        Set node service
      • setDirectNodeService

        public void setDirectNodeService​(org.alfresco.service.cmr.repository.NodeService directNodeService)
        Set the unprotected node service
      • setFileFolderService

        public void setFileFolderService​(FileFolderService fileFolderService)
        Set file folder service
      • setSearchService

        public void setSearchService​(org.alfresco.service.cmr.search.SearchService searchService)
        Set search service
      • setNamespaceService

        public void setNamespaceService​(org.alfresco.service.namespace.NamespaceService namespaceService)
        Set Namespace service
      • setPermissionService

        public void setPermissionService​(org.alfresco.service.cmr.security.PermissionService permissionService)
        Set permission service
      • setActivityService

        public void setActivityService​(ActivityService activityService)
        Set activity service
      • setPersonService

        public void setPersonService​(PersonService personService)
        Set person service
      • setAuthenticationContext

        public void setAuthenticationContext​(AuthenticationContext authenticationContext)
        Set authentication component
      • setTaggingService

        public void setTaggingService​(TaggingService taggingService)
        Set the tagging service
      • setAuthorityService

        public void setAuthorityService​(AuthorityService authorityService)
        Set the authority service
      • setDictionaryService

        public void setDictionaryService​(org.alfresco.service.cmr.dictionary.DictionaryService dictionaryService)
        Set the dictionary service
        Parameters:
        dictionaryService - dictionary service
      • setTenantService

        public void setTenantService​(org.alfresco.repo.tenant.TenantService tenantService)
        Set the tenant service
        Parameters:
        tenantService - tenant service
      • setSingletonCache

        public void setSingletonCache​(org.alfresco.repo.cache.SimpleCache<String,​Object> singletonCache)
      • setSiteNodeRefCache

        public void setSiteNodeRefCache​(org.alfresco.repo.cache.SimpleCache<String,​org.alfresco.service.cmr.repository.NodeRef> siteNodeRefCache)
      • setTransactionHelper

        public void setTransactionHelper​(RetryingTransactionHelper retryingTransactionHelper)
        Sets helper that provides transaction callbacks
      • setPolicyComponent

        public void setPolicyComponent​(PolicyComponent policyComponent)
      • setRoleComparator

        public void setRoleComparator​(Comparator<String> roleComparator)
      • setSysAdminParams

        public void setSysAdminParams​(SysAdminParams sysAdminParams)
      • setBehaviourFilter

        public void setBehaviourFilter​(BehaviourFilter behaviourFilter)
      • setSitesPermissionsCleaner

        public void setSitesPermissionsCleaner​(SitesPermissionCleaner sitesPermissionsCleaner)
      • setPublicServiceAccessService

        public void setPublicServiceAccessService​(PublicServiceAccessService publicServiceAccessService)
      • setNodeDAO

        public void setNodeDAO​(NodeDAO nodeDAO)
      • setCannedQueryRegistry

        public void setCannedQueryRegistry​(org.alfresco.util.registry.NamedObjectRegistry<org.alfresco.query.CannedQueryFactory<? extends Object>> cannedQueryRegistry)
        Set the registry of canned queries
      • init

        public void init()
        Checks that all necessary properties and services have been provided.
      • onBootstrap

        protected void onBootstrap​(org.springframework.context.ApplicationEvent event)
        Specified by:
        onBootstrap in class org.springframework.extensions.surf.util.AbstractLifecycleBean
      • onShutdown

        protected void onShutdown​(org.springframework.context.ApplicationEvent event)
        Specified by:
        onShutdown in class org.springframework.extensions.surf.util.AbstractLifecycleBean
      • hasCreateSitePermissions

        public boolean hasCreateSitePermissions()
        Description copied from interface: SiteService
        This method checks if the currently authenticated user has permission to create sites.
        Specified by:
        hasCreateSitePermissions in interface SiteService
        Returns:
        true if current user can create sites, else false.
      • createSite

        public SiteInfo createSite​(String sitePreset,
                                   String passedShortName,
                                   String title,
                                   String description,
                                   SiteVisibility visibility,
                                   org.alfresco.service.namespace.QName siteType)
        Description copied from interface: SiteService
        Create a new site.
        Specified by:
        createSite in interface SiteService
        Parameters:
        sitePreset - site preset name
        passedShortName - site short name, must be unique
        title - site title
        description - site description
        visibility - site visibility (public|moderated|private)
        siteType - type of site to create, must be a sub-type of st:site
        Returns:
        SiteInfo information about the created site
      • getSiteGroup

        public String getSiteGroup​(String shortName,
                                   boolean withGroupPrefix)
        Helper method to get the name of the site group
        Parameters:
        shortName - site short name
        Returns:
        String site group name
      • getSiteRoleGroup

        public String getSiteRoleGroup​(String shortName,
                                       String permission,
                                       boolean withGroupPrefix)
        Helper method to get the name of the site permission group
        Parameters:
        shortName - site short name
        permission - permission name
        withGroupPrefix - - should the name have the GROUP_ prefix?
        Returns:
        String site permission group name
      • getSiteRoot

        public org.alfresco.service.cmr.repository.NodeRef getSiteRoot()
        Get the node reference that is the site root
        Specified by:
        getSiteRoot in interface SiteService
        Specified by:
        getSiteRoot in interface SiteServiceInternal
        Returns:
        NodeRef node reference
      • findSites

        public List<SiteInfo> findSites​(String filter,
                                        int size)
        Description copied from interface: SiteService
        This method will find all sites available to the currently authenticated user based on the specified site filter and result set size. The filter parameter will match any sites whose cm:name, cm:title or cm:description contain the specified string (ignoring case).

        Note that this method uses Alfresco Full Text Search to retrieve results and depending on server Lucene, SOLR configuration may only offer eventually consistent results.

        Specified by:
        findSites in interface SiteService
        Parameters:
        filter - Any supplied filter will be wrapped in asterisks (e.g. 'foo*') and used to match the sites' cm:name, cm:title or cm:description.
        size - this parameter specifies a maximum result set size.
        Returns:
        Site objects for all matching sites up to the maximum result size.
      • findSites

        public List<SiteInfo> findSites​(String filter,
                                        String sitePresetFilter,
                                        int size)
        Description copied from interface: SiteService
        This method will find all sites available to the currently authenticated user based on the specified site filter, site preset filter and result set size. The filter parameter will match any sites whose cm:name, cm:title or cm:description contain the specified string (ignoring case).

        Note that this method uses Alfresco Full Text Search to retrieve results and depending on server Lucene, SOLR configuration may only offer eventually consistent results.

        Specified by:
        findSites in interface SiteService
        Parameters:
        filter - Any supplied filter will be wrapped in asterisks (e.g. '*foo*') and used to match the sites' cm:name, cm:title or cm:description.
        sitePresetFilter - a site preset filter name to match against.
        size - this parameter specifies a maximum result set size.
        Returns:
        Site objects for all matching sites up to the maximum result size.
      • listSites

        public List<SiteInfo> listSites​(String nameFilter,
                                        String sitePresetFilter)
        Description copied from interface: SiteService
        List the available sites. This list can optionally be filtered by site name/title/description and/or site preset.

        Note: Starting with Alfresco 4.0, the filter parameter will only match sites whose cm:name or cm:title or cm:description start with the specified string (ignoring case). The listing of sites whose cm:names (or titles or descriptions) contain the specified string is no longer supported. To retrieve sites whose cm:names etc contain a substring, SiteService.findSites(String, String, int) should be used instead.

        Specified by:
        listSites in interface SiteService
        Parameters:
        nameFilter - filter
        sitePresetFilter - site preset filter
        Returns:
        list of site information
        See Also:
        SiteService.listSites(java.lang.String, java.lang.String)
      • listSites

        public List<SiteInfo> listSites​(String filter,
                                        String sitePresetFilter,
                                        int size)
        Description copied from interface: SiteService
        List the available sites. This list can optionally be filtered by site name/title/description and/or site preset.

        Note: Starting with Alfresco 4.0, the filter parameter will only match sites whose cm:name or cm:title or cm:description start with the specified string (ignoring case). The listing of sites whose cm:names (or titles or descriptions) contain the specified string is no longer supported. To retrieve sites whose cm:names etc contain a substring, SiteService.findSites(String, String, int) should be used instead.

        THIS METHOD CAN RETURN INCOMPLETE RESULTS WHILE CACHES CATCH UP WITH REALITY (BM-0012: Run v420b1494_01: (CMIS) GetSites is Slow).

        Specified by:
        listSites in interface SiteService
        Parameters:
        filter - filter (sites whose cm:name, cm:title or cm:description START WITH filter)
        sitePresetFilter - site preset filter (sites whose preset EQUALS sitePresetFilter)
        size - list maximum size or zero for all
        Returns:
        list of site information
        See Also:
        SiteService.listSites(java.lang.String, java.lang.String, int)
      • listSites

        public List<SiteInfo> listSites​(String userName)
        Description copied from interface: SiteService
        List all the sites that the specified user has a explicit membership to.
        Specified by:
        listSites in interface SiteService
        Parameters:
        userName - user name
        Returns:
        list of site information
      • listSites

        public org.alfresco.query.PagingResults<SiteInfo> listSites​(List<FilterProp> filterProps,
                                                                    List<org.alfresco.util.Pair<org.alfresco.service.namespace.QName,​Boolean>> sortProps,
                                                                    org.alfresco.query.PagingRequest pagingRequest)
        This method uses canned queries to retrieve st:site NodeRefs with support for result paging.
        Specified by:
        listSites in interface SiteService
        Parameters:
        filterProps - property filters
        sortProps - sorting options
        pagingRequest - paging options
        Returns:
        a page of SiteInfo objects.
      • getSite

        public SiteInfo getSite​(org.alfresco.service.cmr.repository.NodeRef nodeRef)
        Description copied from interface: SiteService
        This method gets the SiteInfo for the Share Site which contains the given NodeRef. If the given NodeRef is not contained within a Share Site, then null is returned.
        Specified by:
        getSite in interface SiteService
        Parameters:
        nodeRef - the node whose containing site's info is to be found.
        Returns:
        SiteInfo site information for the containing site or null if node is not in a site.
        See Also:
        SiteService.getSite(org.alfresco.service.cmr.repository.NodeRef)
      • getSiteShortName

        public String getSiteShortName​(org.alfresco.service.cmr.repository.NodeRef nodeRef)
        Description copied from interface: SiteService
        This method gets the shortName for the Share Site which contains the given NodeRef. If the given NodeRef is not contained within a Share Site, then null is returned.
        Specified by:
        getSiteShortName in interface SiteService
        Parameters:
        nodeRef - the node whose containing site's info is to be found.
        Returns:
        String site short name for the containing site or null if node is not in a site.
        See Also:
        SiteService.getSiteShortName(org.alfresco.service.cmr.repository.NodeRef)
      • hasSite

        public boolean hasSite​(String shortName)
        Description copied from interface: SiteService
        Returns true if the site exists. This allows create scripts to confirm the existence of private sites - they would not normally be returned from getSite() if the user does not have permission on the site noderef.
        Specified by:
        hasSite in interface SiteService
        Parameters:
        shortName - the site short name
        Returns:
        true if the site exists, false otherwise
        See Also:
        SiteService.hasSite(java.lang.String)
      • deleteSiteImpl

        protected void deleteSiteImpl​(String shortName)
      • listMembers

        public void listMembers​(String shortName,
                                String nameFilter,
                                String roleFilter,
                                boolean collapseGroups,
                                SiteService.SiteMembersCallback callback)
        Description copied from interface: SiteService
        List the members of the site. This includes both users and groups.

        Name and role filters are optional and if not specified all the members of the site are returned.

        Specified by:
        listMembers in interface SiteService
        Parameters:
        shortName - site short name
        nameFilter - name filter
        roleFilter - role filter
        collapseGroups - true if collapse member groups into user list, false otherwise
        callback - callback
      • listMembersPaged

        public org.alfresco.query.PagingResults<SiteMembership> listMembersPaged​(String shortName,
                                                                                 boolean collapseGroups,
                                                                                 List<org.alfresco.util.Pair<SiteService.SortFields,​Boolean>> sortProps,
                                                                                 org.alfresco.query.PagingRequest pagingRequest)
        Description copied from interface: SiteService
        Gets the role of the specified user. Returns a paged list of the members of the site. This includes both users and groups if collapseGroups is set to false, otherwise all groups that are members are collapsed into their component users and listed.
        Specified by:
        listMembersPaged in interface SiteService
        Parameters:
        shortName - site short name
        collapseGroups - true if collapse member groups into user list, false otherwise
        pagingRequest - the paging request
        Returns:
        the authority name and their role
      • listMembers

        public Map<String,​String> listMembers​(String shortName,
                                                    String nameFilter,
                                                    String roleFilter,
                                                    int size,
                                                    boolean collapseGroups)
        Description copied from interface: SiteService
        List the members of the site. This includes both users and groups if collapseGroups is set to false, otherwise all groups that are members are collapsed into their component users and listed.
        Specified by:
        listMembers in interface SiteService
        Parameters:
        shortName - site short name
        nameFilter - name filter
        roleFilter - role filter
        size - max results size crop if >0
        collapseGroups - true if collapse member groups into user list, false otherwise
        Returns:
        the authority name and their role
      • listMembersInfo

        public List<SiteMemberInfo> listMembersInfo​(String shortName,
                                                    String nameFilter,
                                                    String roleFilter,
                                                    int size,
                                                    boolean collapseGroups)
        Description copied from interface: SiteService
        List the members of the site. This includes both users and groups if collapseGroups is set to false, otherwise all groups that are members are collapsed into their component users and listed.
        Specified by:
        listMembersInfo in interface SiteService
        Parameters:
        shortName - site short name
        nameFilter - name filter
        roleFilter - role filter
        size - max results size crop if >0
        collapseGroups - true if collapse member groups into user list, false otherwise
        Returns:
        List of site authorities’ information objects
        See Also:
        SiteService.listMembersInfo(String, String, String, int, boolean)
      • listMembersImpl

        protected Map<String,​String> listMembersImpl​(String shortName,
                                                           String nameFilter,
                                                           String roleFilter,
                                                           int size,
                                                           boolean collapseGroups)
      • isMember

        public boolean isMember​(String shortName,
                                String authorityName)
        Description copied from interface: SiteService
        Indicates whether an authority is a member of a site or not
        Specified by:
        isMember in interface SiteService
        Parameters:
        shortName - site short name
        authorityName - authority name (so if it's a group then its prefixed with 'GROUP_')
        Returns:
        boolean true if the authority is a member of the site, false otherwise
        See Also:
        SiteService.isMember(java.lang.String, java.lang.String)
      • createContainer

        public org.alfresco.service.cmr.repository.NodeRef createContainer​(String shortName,
                                                                           String componentId,
                                                                           org.alfresco.service.namespace.QName containerType,
                                                                           Map<org.alfresco.service.namespace.QName,​Serializable> containerProperties)
        Description copied from interface: SiteService
        Creates a container for a component is a site of the given container type (must be a sub-type of st:siteContainer)

        If no container type is specified then a node of type st:siteContainer is created.

        The map of container properties are set on the created container node. Null can be provided when no properties need to be set.

        Specified by:
        createContainer in interface SiteService
        Parameters:
        shortName - site short name
        componentId - component id
        containerType - container type to create (can be null)
        containerProperties - container property values (can be null)
        Returns:
        noderef of container or null if a container can't be created.
        See Also:
        SiteService.createContainer(java.lang.String, java.lang.String, org.alfresco.service.namespace.QName, java.util.Map)
      • cleanSitePermissions

        public void cleanSitePermissions​(org.alfresco.service.cmr.repository.NodeRef targetNode,
                                         SiteInfo containingSite)
        This method recursively cleans the site permissions on the specified NodeRef and all its primary descendants. This consists of
        • the removal of all site permissions pertaining to a site other than the containingSite
        If the containingSite is null then the targetNode's current containing site is used.
        Specified by:
        cleanSitePermissions in interface SiteService
        Parameters:
        targetNode - NodeRef
        containingSite - the site which the site is a member of. If null, it will be calculated.
      • listContainers

        public org.alfresco.query.PagingResults<FileInfo> listContainers​(String shortName,
                                                                         org.alfresco.query.PagingRequest pagingRequest)
        Description copied from interface: SiteService
        Returns a paged list of top level containers for the site
        Specified by:
        listContainers in interface SiteService
        Parameters:
        shortName - short name of site
        pagingRequest - paging request
        Returns:
        paged list of top level containers
      • getSiteContainer

        public static org.alfresco.service.cmr.repository.NodeRef getSiteContainer​(String siteShortName,
                                                                                   String componentName,
                                                                                   boolean create,
                                                                                   SiteService siteService,
                                                                                   TransactionService transactionService,
                                                                                   TaggingService taggingService)
        Helper method to create a container if missing, and mark it as a tag scope if it isn't already one
      • listSiteMemberships

        public List<SiteMembership> listSiteMemberships​(String userName,
                                                        int size)
        Description copied from interface: SiteService
        Lists all the memberships in sites that the specified user is in.
        Specified by:
        listSiteMemberships in interface SiteService
        Parameters:
        userName - String
        size - list maximum size or zero for all
        Returns:
        a list of SiteMembership objects
      • listSitesPaged

        public org.alfresco.query.PagingResults<SiteMembership> listSitesPaged​(String userName,
                                                                               List<org.alfresco.util.Pair<SiteService.SortFields,​Boolean>> sortProps,
                                                                               org.alfresco.query.PagingRequest pagingRequest)
        Description copied from interface: SiteService
        List all the sites that the specified user has a explicit membership to.
        Specified by:
        listSitesPaged in interface SiteService
        Parameters:
        userName - user name
        Returns:
        paged list of site information
      • isSiteAdmin

        public boolean isSiteAdmin​(String userName)
        Indicates whether the specified user is a site administrator or not.

        Note: The super/repo admin is considered to be a site administrator too.

        Specified by:
        isSiteAdmin in interface SiteService
        Parameters:
        userName - The user name
        Returns:
        true if the specified user is a 'site administrator', false otherwise
      • setEventPublisher

        public void setEventPublisher​(org.alfresco.sync.repo.events.EventPublisher eventPublisher)