mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged V3.2 to HEAD
17262: Fix for ETHREEOH-2898: Share Login - using return with auto-complete clears login screen details 17264: Fix for ETHREEOH-2368 Added category is not visible in "Categories" in Side Bar even after the page is refreshed. 17266: Merged V3.1 to V3.2 17265: ETHREEOH-3213 - Error occurs if you try to Configure of Site Wiki dashlet if wiki page name contains russian letters 17279: Fix for ETHREEOH-3110 - Error page if Add broken number by create(edit) ASR or FSR. 17281: Fix to unreported error where the NodeBrowser would not display nodes that ... 17283: ETHREEOH-3037 and ETHREEOH-2158 17286: Fix for ETHREEOH-3075 Encoding field is displayed as empty on Versioned details page. 17289: Merged V3.1 to V3.2 17288: Fix for ETHREEOH-3164 Link Destination (with modify properties of a space link) does ... 17291: Fix for ETHREEOH-2403 It's possible to create a content with spaces. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@18034 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -729,16 +729,17 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
|
||||
return nodeDaoService.getNodeAspects(nodePair.getFirst());
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete Node
|
||||
*/
|
||||
public void deleteNode(NodeRef nodeRef)
|
||||
{
|
||||
// Pair contains NodeId, NodeRef
|
||||
Pair<Long, NodeRef> nodePair = getNodePairNotNull(nodeRef);
|
||||
Long nodeId = nodePair.getFirst();
|
||||
|
||||
Boolean requiresDelete = null;
|
||||
|
||||
// Invoke policy behaviours
|
||||
invokeBeforeDeleteNode(nodeRef);
|
||||
|
||||
// get the primary parent-child relationship before it is gone
|
||||
Pair<Long, ChildAssociationRef> childAssocPair = nodeDaoService.getPrimaryParentAssoc(nodeId);
|
||||
ChildAssociationRef childAssocRef = childAssocPair.getSecond();
|
||||
@@ -746,12 +747,16 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
|
||||
QName nodeTypeQName = nodeDaoService.getNodeType(nodeId);
|
||||
Set<QName> nodeAspectQNames = nodeDaoService.getNodeAspects(nodeId);
|
||||
|
||||
// check if we need to archive the node
|
||||
StoreRef storeRef = nodeRef.getStoreRef();
|
||||
StoreRef archiveStoreRef = storeArchiveMap.get(storeRef);
|
||||
|
||||
/**
|
||||
* Work out whether we need to archive or delete the node.
|
||||
*/
|
||||
|
||||
if (archiveStoreRef == null)
|
||||
{
|
||||
// The store does not specify archiving
|
||||
requiresDelete = true;
|
||||
}
|
||||
else
|
||||
@@ -784,12 +789,18 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Now we have worked out whether to archive or delete, go ahead and do it
|
||||
*/
|
||||
if (requiresDelete == null || requiresDelete)
|
||||
{
|
||||
// Cascade as required
|
||||
// Invoke policy behaviours
|
||||
invokeBeforeDeleteNode(nodeRef);
|
||||
|
||||
// Cascade delecte as required
|
||||
if (cascadeInTransaction)
|
||||
{
|
||||
deletePrimaryChildren(nodePair, true);
|
||||
deletePrimaryChildrenNotArchived(nodePair, true);
|
||||
}
|
||||
// perform a normal deletion
|
||||
nodeDaoService.deleteNode(nodeId);
|
||||
@@ -801,20 +812,31 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
|
||||
}
|
||||
else
|
||||
{
|
||||
// archive it
|
||||
/**
|
||||
* Go ahead and archive the node
|
||||
*
|
||||
* Archiving will take responsibility for firing the policy behaviours on
|
||||
* the nodes it modifies.
|
||||
*/
|
||||
archiveNode(nodeRef, archiveStoreRef);
|
||||
// The archive performs a move, which will fire the appropriate OnDeleteNode
|
||||
invokeOnDeleteNode(childAssocRef, nodeTypeQName, nodeAspectQNames, true);
|
||||
}
|
||||
}
|
||||
|
||||
private void deletePrimaryChildren(Pair<Long, NodeRef> nodePair, boolean cascade)
|
||||
/**
|
||||
* delete primary children - private method for deleteNode.
|
||||
*
|
||||
* recurses through children when deleting a node. Does not archive.
|
||||
*
|
||||
* @param nodePair
|
||||
* @param cascade
|
||||
*/
|
||||
private void deletePrimaryChildrenNotArchived(Pair<Long, NodeRef> nodePair, boolean cascade)
|
||||
{
|
||||
Long nodeId = nodePair.getFirst();
|
||||
// Get the node's primary children
|
||||
final List<Pair<Long, NodeRef>> childNodePairs = new ArrayList<Pair<Long, NodeRef>>(5);
|
||||
// TODO: Fix issues when invoking onDeleteNode
|
||||
// final Map<Long, ChildAssociationRef> childAssocRefsByChildId = new HashMap<Long, ChildAssociationRef>(5);
|
||||
|
||||
final Map<Long, ChildAssociationRef> childAssocRefsByChildId = new HashMap<Long, ChildAssociationRef>(5);
|
||||
NodeDaoService.ChildAssocRefQueryCallback callback = new NodeDaoService.ChildAssocRefQueryCallback()
|
||||
{
|
||||
public boolean handle(
|
||||
@@ -825,7 +847,7 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
|
||||
{
|
||||
// Add it
|
||||
childNodePairs.add(childNodePair);
|
||||
// childAssocRefsByChildId.put(childNodePair.getFirst(), childAssocPair.getSecond());
|
||||
childAssocRefsByChildId.put(childNodePair.getFirst(), childAssocPair.getSecond());
|
||||
// No recurse
|
||||
return false;
|
||||
}
|
||||
@@ -844,9 +866,9 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
|
||||
// Fire node policies. This ensures that each node in the hierarchy gets a notification fired.
|
||||
Long childNodeId = childNodePair.getFirst();
|
||||
NodeRef childNodeRef = childNodePair.getSecond();
|
||||
// QName childNodeType = nodeDaoService.getNodeType(childNodeId);
|
||||
// Set<QName> childNodeQNames = nodeDaoService.getNodeAspects(childNodeId);
|
||||
// ChildAssociationRef childParentAssocRef = childAssocRefsByChildId.get(childNodeId);
|
||||
QName childNodeType = nodeDaoService.getNodeType(childNodeId);
|
||||
Set<QName> childNodeQNames = nodeDaoService.getNodeAspects(childNodeId);
|
||||
ChildAssociationRef childParentAssocRef = childAssocRefsByChildId.get(childNodeId);
|
||||
|
||||
invokeBeforeDeleteNode(childNodeRef);
|
||||
|
||||
@@ -855,11 +877,11 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
|
||||
// the actual delete starts.
|
||||
if (cascade)
|
||||
{
|
||||
deletePrimaryChildren(childNodePair, true);
|
||||
deletePrimaryChildrenNotArchived(childNodePair, true);
|
||||
}
|
||||
// Delete the child
|
||||
nodeDaoService.deleteNode(childNodeId);
|
||||
// invokeOnDeleteNode(childParentAssocRef, childNodeType, childNodeQNames, true);
|
||||
invokeOnDeleteNode(childParentAssocRef, childNodeType, childNodeQNames, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2054,6 +2076,8 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
|
||||
}
|
||||
|
||||
/**
|
||||
* Move Node
|
||||
*
|
||||
* Drops the old primary association and creates a new one
|
||||
*/
|
||||
public ChildAssociationRef moveNode(
|
||||
@@ -2101,7 +2125,7 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
|
||||
handleStoreMoveConflicts(nodeToMovePair, newStoreRef);
|
||||
}
|
||||
|
||||
// Invoke policy behaviour
|
||||
// Invoke "Before"policy behaviour
|
||||
if (movingStore)
|
||||
{
|
||||
invokeBeforeDeleteNode(nodeToMoveRef);
|
||||
|
Reference in New Issue
Block a user