Class CopyServiceImpl

    • Constructor Summary

      Constructors 
      Constructor Description
      CopyServiceImpl()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void beforeDeleteOriginalAssociation​(org.alfresco.service.cmr.repository.AssociationRef nodeAssocRef)
      Callback behaviour for the 'original' assoc ('copiedfrom' aspect).
      void copy​(org.alfresco.service.cmr.repository.NodeRef sourceNodeRef, org.alfresco.service.cmr.repository.NodeRef targetNodeRef)
      Copies the state of one node on top of another.
      org.alfresco.service.cmr.repository.NodeRef copy​(org.alfresco.service.cmr.repository.NodeRef sourceNodeRef, org.alfresco.service.cmr.repository.NodeRef targetParentNodeRef, org.alfresco.service.namespace.QName assocTypeQName, org.alfresco.service.namespace.QName assocQName)
      By default children of the source node are not copied.
      org.alfresco.service.cmr.repository.NodeRef copy​(org.alfresco.service.cmr.repository.NodeRef sourceNodeRef, org.alfresco.service.cmr.repository.NodeRef targetParentRef, org.alfresco.service.namespace.QName assocTypeQName, org.alfresco.service.namespace.QName assocQName, boolean copyChildren)
      Creates a copy of the given node.
      org.alfresco.service.cmr.repository.NodeRef copyAndRename​(org.alfresco.service.cmr.repository.NodeRef sourceNodeRef, org.alfresco.service.cmr.repository.NodeRef destinationParent, org.alfresco.service.namespace.QName assocTypeQName, org.alfresco.service.namespace.QName assocQName, boolean copyChildren)  
      CopyBehaviourCallback getCallbackForCopiedFromAspect​(org.alfresco.service.namespace.QName classRef, CopyDetails copyDetails)
      Callback behaviour retrieval for the 'copiedfrom' aspect.
      CopyBehaviourCallback getCallbackForFolderType​(org.alfresco.service.namespace.QName classRef, CopyDetails copyDetails)
      Callback behaviour retrieval for ContentModel.TYPE_FOLDER aspect.
      CopyBehaviourCallback getCallbackForOwnableAspect​(org.alfresco.service.namespace.QName classRef, CopyDetails copyDetails)
      Callback behaviour retrieval for the 'ownable' aspect.
      java.util.List<org.alfresco.service.cmr.repository.NodeRef> getCopies​(org.alfresco.service.cmr.repository.NodeRef nodeRef)
      Gets all the copies of a given node that have been made using this service.
      org.alfresco.query.PagingResults<CopyService.CopyInfo> getCopies​(org.alfresco.service.cmr.repository.NodeRef originalNodeRef, org.alfresco.query.PagingRequest pagingRequest)
      Get the copies of a given node
      org.alfresco.query.PagingResults<CopyService.CopyInfo> getCopies​(org.alfresco.service.cmr.repository.NodeRef originalNodeRef, org.alfresco.service.cmr.repository.NodeRef copyParentNodeRef, org.alfresco.query.PagingRequest pagingRequest)
      Get the copies of a given node
      org.alfresco.service.cmr.repository.NodeRef getOriginal​(org.alfresco.service.cmr.repository.NodeRef nodeRef)
      Get the original for a given copied node
      java.lang.String getTopLevelNodeNewName​(org.alfresco.service.cmr.repository.NodeRef sourceNodeRef, org.alfresco.service.cmr.repository.NodeRef targetParentRef, org.alfresco.service.namespace.QName assocTypeQName, org.alfresco.service.namespace.QName assocQName)
      Determines if top-level node name will be changed during copy according to policies.
      void init()
      Initialise method
      void setBehaviourFilter​(BehaviourFilter behaviourFilter)  
      void setCannedQueryRegistry​(org.alfresco.util.registry.NamedObjectRegistry<org.alfresco.query.CannedQueryFactory<CopyService.CopyInfo>> cannedQueryRegistry)  
      void setDictionaryService​(org.alfresco.service.cmr.dictionary.DictionaryService dictionaryService)  
      void setInternalNodeService​(org.alfresco.service.cmr.repository.NodeService internalNodeService)  
      void setNodeService​(org.alfresco.service.cmr.repository.NodeService nodeService)  
      void setPermissionService​(org.alfresco.service.cmr.security.PermissionService permissionService)  
      void setPolicyComponent​(PolicyComponent policyComponent)  
      void setPublicServiceAccessService​(PublicServiceAccessService publicServiceAccessService)  
      void setRuleService​(RuleService ruleService)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • CopyServiceImpl

        public CopyServiceImpl()
    • Method Detail

      • setNodeService

        public void setNodeService​(org.alfresco.service.cmr.repository.NodeService nodeService)
        Parameters:
        nodeService - the node service
      • setInternalNodeService

        public void setInternalNodeService​(org.alfresco.service.cmr.repository.NodeService internalNodeService)
        Parameters:
        internalNodeService - the internal node service
      • setCannedQueryRegistry

        public void setCannedQueryRegistry​(org.alfresco.util.registry.NamedObjectRegistry<org.alfresco.query.CannedQueryFactory<CopyService.CopyInfo>> cannedQueryRegistry)
      • setDictionaryService

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

        public void setPolicyComponent​(PolicyComponent policyComponent)
        Parameters:
        policyComponent - the policy component
      • setBehaviourFilter

        public void setBehaviourFilter​(BehaviourFilter behaviourFilter)
        Parameters:
        behaviourFilter - used to disable specific behaviours while doing background tasks
      • setRuleService

        public void setRuleService​(RuleService ruleService)
        Parameters:
        ruleService - the rule service
      • setPermissionService

        public void setPermissionService​(org.alfresco.service.cmr.security.PermissionService permissionService)
        Parameters:
        permissionService - the permissionService to set
      • setPublicServiceAccessService

        public void setPublicServiceAccessService​(PublicServiceAccessService publicServiceAccessService)
        Parameters:
        publicServiceAccessService - the publicServiceAccessService to set
      • init

        public void init()
        Initialise method
      • copy

        public org.alfresco.service.cmr.repository.NodeRef copy​(org.alfresco.service.cmr.repository.NodeRef sourceNodeRef,
                                                                org.alfresco.service.cmr.repository.NodeRef targetParentRef,
                                                                org.alfresco.service.namespace.QName assocTypeQName,
                                                                org.alfresco.service.namespace.QName assocQName,
                                                                boolean copyChildren)
        Description copied from interface: CopyService
        Creates a copy of the given node.

        If the new node resides in a different workspace the new node will have the same id.

        NOTE: It is up to the client code to set the name of the newly created node. Use the node service and catch the DuplicateChildNodeNameException

        If the new node resides in the same workspace then the new node will have the Copy aspect applied to it which will reference the original node.

        The aspects applied to source node will also be applied to destination node and all the property value will be duplicated accordingly. This is with the exception of the aspects that have been marked as having 'Non-Transferable State'. In this case the aspect will be applied to the copy, but the properties will take on the default values.

        Child associations are copied onto the destination node. If the child of copied association is not present in the destination workspace the child association is not copied. This is unless is has been specified that the children of the source node should also be copied.

        Target associations are copied to the destination node. If the target of the association is not present in the destination workspace then the association is not copied.

        Source association are not copied.

        NOTE: The top-level node has it's cm:name property removed for associations that do not allow duplicately named children in order to prevent any chance of a duplicate name clash. Reassign the cm:name property and catch the DuplicateChildNodeNameException.

        Specified by:
        copy in interface CopyService
        Parameters:
        sourceNodeRef - the node reference used as the source of the copy
        targetParentRef - the intended parent of the new node
        assocTypeQName - the type of the new child assoc
        assocQName - the qualified name of the child association from the parent to the new node
        copyChildren - indicates that the children of the node should also be copied
        Returns:
        the new node reference
      • copyAndRename

        public org.alfresco.service.cmr.repository.NodeRef copyAndRename​(org.alfresco.service.cmr.repository.NodeRef sourceNodeRef,
                                                                         org.alfresco.service.cmr.repository.NodeRef destinationParent,
                                                                         org.alfresco.service.namespace.QName assocTypeQName,
                                                                         org.alfresco.service.namespace.QName assocQName,
                                                                         boolean copyChildren)
        Specified by:
        copyAndRename in interface CopyService
        Parameters:
        sourceNodeRef - the node reference used as the source of the copy
        destinationParent - the intended parent of the new node
        assocTypeQName - the type of the new child assoc
        assocQName - the qualified name of the child association from the parent to the new node
        copyChildren - indicates that the children of the node should also be copied
        Returns:
        the new node reference
        See Also:
        Ensures the copy name is the same as the origional or is renamed to prevent duplicate names.
      • copy

        public org.alfresco.service.cmr.repository.NodeRef copy​(org.alfresco.service.cmr.repository.NodeRef sourceNodeRef,
                                                                org.alfresco.service.cmr.repository.NodeRef targetParentNodeRef,
                                                                org.alfresco.service.namespace.QName assocTypeQName,
                                                                org.alfresco.service.namespace.QName assocQName)
        By default children of the source node are not copied. Defer to the standard implementation with copyChildren set to false
        Specified by:
        copy in interface CopyService
        Parameters:
        sourceNodeRef - the node reference used as the source of the copy
        targetParentNodeRef - the intended parent of the new node
        assocTypeQName - the type of the new child assoc
        assocQName - the qualified name of the child association from the parent to the new node
        Returns:
        the new node reference
        See Also:
        CopyService.copy(NodeRef, NodeRef, QName, QName, boolean)
      • copy

        public void copy​(org.alfresco.service.cmr.repository.NodeRef sourceNodeRef,
                         org.alfresco.service.cmr.repository.NodeRef targetNodeRef)
        Copies the state of one node on top of another.

        The state of destination node is overlayed with the state of the source node. Any conflicts are resolved by setting the state to that of the source node.

        If data (for example an association) does not exist on the source node, but does exist on the destination node this data is NOT deleted from the destination node.

        Child associations and target associations are updated on the destination based on the current state of the source node.

        If the node that either a child or target association points to on the source node is not present in the destinations workspace then the association is not updated to the destination node.

        All aspects found on the source node are applied to the destination node where missing. The properties of the aspects are updated accordingly except in the case where the aspect has been marked as having 'Non-Transferable State'. In this case aspect properties will take on the values already assigned to them in the destination node. Defer to the standard implementation with copyChildren set to false

        Specified by:
        copy in interface CopyService
        Parameters:
        sourceNodeRef - the source node reference
        targetNodeRef - the destination node reference
      • getOriginal

        public org.alfresco.service.cmr.repository.NodeRef getOriginal​(org.alfresco.service.cmr.repository.NodeRef nodeRef)
        Description copied from interface: CopyService
        Get the original for a given copied node
        Specified by:
        getOriginal in interface CopyService
        Parameters:
        nodeRef - the copied node reference
        Returns:
        the original node reference or null if it isn't a copy or the original has been deleted
      • getCopies

        public java.util.List<org.alfresco.service.cmr.repository.NodeRef> getCopies​(org.alfresco.service.cmr.repository.NodeRef nodeRef)
        Description copied from interface: CopyService
        Gets all the copies of a given node that have been made using this service.
        Specified by:
        getCopies in interface CopyService
        Parameters:
        nodeRef - the original node reference
        Returns:
        a list of copies, empty is none
      • getCopies

        public org.alfresco.query.PagingResults<CopyService.CopyInfo> getCopies​(org.alfresco.service.cmr.repository.NodeRef originalNodeRef,
                                                                                org.alfresco.query.PagingRequest pagingRequest)
        Description copied from interface: CopyService
        Get the copies of a given node
        Specified by:
        getCopies in interface CopyService
        Parameters:
        originalNodeRef - the original node reference
        pagingRequest - page request details
        Returns:
        the page(s) of nodes that were copied from the given node
      • getCopies

        public org.alfresco.query.PagingResults<CopyService.CopyInfo> getCopies​(org.alfresco.service.cmr.repository.NodeRef originalNodeRef,
                                                                                org.alfresco.service.cmr.repository.NodeRef copyParentNodeRef,
                                                                                org.alfresco.query.PagingRequest pagingRequest)
        Description copied from interface: CopyService
        Get the copies of a given node
        Specified by:
        getCopies in interface CopyService
        Parameters:
        originalNodeRef - the original node reference
        copyParentNodeRef - only find copies that are homed in this node
        pagingRequest - page request details
        Returns:
        the page(s) of nodes that were copied from the given node
      • beforeDeleteOriginalAssociation

        public void beforeDeleteOriginalAssociation​(org.alfresco.service.cmr.repository.AssociationRef nodeAssocRef)
        Callback behaviour for the 'original' assoc ('copiedfrom' aspect).
      • getCallbackForFolderType

        public CopyBehaviourCallback getCallbackForFolderType​(org.alfresco.service.namespace.QName classRef,
                                                              CopyDetails copyDetails)
        Callback behaviour retrieval for ContentModel.TYPE_FOLDER aspect.
        Returns:
        Returns FolderTypeCopyBehaviourCallback.INSTANCE
      • getTopLevelNodeNewName

        public java.lang.String getTopLevelNodeNewName​(org.alfresco.service.cmr.repository.NodeRef sourceNodeRef,
                                                       org.alfresco.service.cmr.repository.NodeRef targetParentRef,
                                                       org.alfresco.service.namespace.QName assocTypeQName,
                                                       org.alfresco.service.namespace.QName assocQName)
        Determines if top-level node name will be changed during copy according to policies.
        Specified by:
        getTopLevelNodeNewName in interface CopyService
        Parameters:
        sourceNodeRef - the node reference used as the source of the copy
        targetParentRef - the intended parent of the new node
        assocTypeQName - the type of the new child assoc
        assocQName - the qualified name of the child association from the parent to the new node
        Returns:
        new name if top-level node will be renamed during copy or null if it will remain the same