org.alfresco.repo.copy
Class CopyServiceImpl

java.lang.Object
  extended by org.alfresco.repo.copy.CopyServiceImpl
All Implemented Interfaces:
CopyService

public class CopyServiceImpl
extends java.lang.Object
implements CopyService

Node operations service implmentation.


Constructor Summary
CopyServiceImpl()
           
 
Method Summary
 void copy(NodeRef sourceNodeRef, NodeRef targetNodeRef)
          Copies the state of one node on top of another.
 NodeRef copy(NodeRef sourceNodeRef, NodeRef targetParentNodeRef, QName assocTypeQName, QName assocQName)
          By default children of the source node are not copied. Defer to the standard implementation with copyChildren set to false
 NodeRef copy(NodeRef sourceNodeRef, NodeRef targetParentRef, QName assocTypeQName, QName assocQName, boolean copyChildren)
          Creates a copy of the given node.
 NodeRef copyAndRename(NodeRef sourceNodeRef, NodeRef destinationParent, QName assocTypeQName, QName assocQName, boolean copyChildren)
           
 CopyBehaviourCallback getCallbackForCopiedFromAspect(QName classRef, CopyDetails copyDetails)
          Callback behaviour retrieval for the 'copiedFrom' aspect.
 CopyBehaviourCallback getCallbackForFolderType(QName classRef, CopyDetails copyDetails)
          Callback behaviour retrieval for ContentModel.TYPE_FOLDER aspect.
 CopyBehaviourCallback getCallbackForOwnableAspect(QName classRef, CopyDetails copyDetails)
          Callback behaviour retrieval for the 'ownable' aspect.
 java.util.List getCopies(NodeRef nodeRef)
          Gets all the copies of a given node that have been made using this service.
 void init()
          Initialise method
 void setAuthenticationService(AuthenticationService authenticationService)
          Sets the authentication service
 void setDictionaryService(DictionaryService dictionaryService)
          Sets the dictionary service
 void setInternalNodeService(NodeService internalNodeService)
          Sets the internal node service
 void setNodeService(NodeService nodeService)
          Set the node service
 void setPermissionService(PermissionService permissionService)
          Set the permission service
 void setPolicyComponent(PolicyComponent policyComponent)
          Sets the policy component
 void setRuleService(RuleService ruleService)
          Set the rule service
 void setSearchService(SearchService searchService)
          Sets the search service
 
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(NodeService nodeService)
Set the node service

Parameters:
nodeService - the node service

setInternalNodeService

public void setInternalNodeService(NodeService internalNodeService)
Sets the internal node service

Parameters:
internalNodeService - the internal node service

setDictionaryService

public void setDictionaryService(DictionaryService dictionaryService)
Sets the dictionary service

Parameters:
dictionaryService - the dictionary service

setPolicyComponent

public void setPolicyComponent(PolicyComponent policyComponent)
Sets the policy component

Parameters:
policyComponent - the policy component

setSearchService

public void setSearchService(SearchService searchService)
Sets the search service

Parameters:
searchService - the search service

setRuleService

public void setRuleService(RuleService ruleService)
Set the rule service

Parameters:
ruleService - the rule service

setPermissionService

public void setPermissionService(PermissionService permissionService)
Set the permission service

Parameters:
permissionService - the permission service

setAuthenticationService

public void setAuthenticationService(AuthenticationService authenticationService)
Sets the authentication service

Parameters:
authenticationService - the authentication service

init

public void init()
Initialise method


copy

public NodeRef copy(NodeRef sourceNodeRef,
                    NodeRef targetParentRef,
                    QName assocTypeQName,
                    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 NodeRef copyAndRename(NodeRef sourceNodeRef,
                             NodeRef destinationParent,
                             QName assocTypeQName,
                             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 NodeRef copy(NodeRef sourceNodeRef,
                    NodeRef targetParentNodeRef,
                    QName assocTypeQName,
                    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(NodeRef sourceNodeRef,
                 NodeRef targetNodeRef)
Description copied from interface: CopyService
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.

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

getCopies

public java.util.List getCopies(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

getCallbackForCopiedFromAspect

public CopyBehaviourCallback getCallbackForCopiedFromAspect(QName classRef,
                                                            CopyDetails copyDetails)
Callback behaviour retrieval for the 'copiedFrom' aspect.

Returns:
Returns DoNothingCopyBehaviourCallback always

getCallbackForFolderType

public CopyBehaviourCallback getCallbackForFolderType(QName classRef,
                                                      CopyDetails copyDetails)
Callback behaviour retrieval for ContentModel.TYPE_FOLDER aspect.

Returns:
Returns FolderTypeCopyBehaviourCallback

getCallbackForOwnableAspect

public CopyBehaviourCallback getCallbackForOwnableAspect(QName classRef,
                                                         CopyDetails copyDetails)
Callback behaviour retrieval for the 'ownable' aspect.

Returns:
Returns DoNothingCopyBehaviourCallback always


Copyright © 2005 - 2010 Alfresco Software, Inc. All Rights Reserved.