From d6ffc3d21e8e7253a8dc601a06c0a39734d66f73 Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Mon, 14 Nov 2011 14:34:04 +0000 Subject: [PATCH] Batch loading of nodes doesn't pull back deleted nodes; search-NodeService interaction fix git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@31935 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../org.hibernate.dialect.Dialect/node-common-SqlMap.xml | 1 + .../alfresco/repo/domain/node/AbstractNodeDAOImpl.java | 6 +++--- .../repo/domain/node/ibatis/NodeBatchLoadEntity.java | 9 +++++++++ .../alfresco/repo/domain/node/ibatis/NodeDAOImpl.java | 8 +++++++- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-common-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-common-SqlMap.xml index 4e450f0c9d..767c29da5c 100644 --- a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-common-SqlMap.xml +++ b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-common-SqlMap.xml @@ -735,6 +735,7 @@ #{item} + and node.node_deleted = #{deleted} diff --git a/source/java/org/alfresco/repo/domain/node/AbstractNodeDAOImpl.java b/source/java/org/alfresco/repo/domain/node/AbstractNodeDAOImpl.java index 52c6264c2f..aa6db3fac1 100644 --- a/source/java/org/alfresco/repo/domain/node/AbstractNodeDAOImpl.java +++ b/source/java/org/alfresco/repo/domain/node/AbstractNodeDAOImpl.java @@ -3840,14 +3840,14 @@ public abstract class AbstractNodeDAOImpl implements NodeDAO, BatchingDAO if (batch.size() >= batchSize) { // Preload - cacheNodesNoBatch(selectNodesByIds(batch)); + cacheNodesNoBatch(selectNodesByIds(batch, Boolean.FALSE)); batch.clear(); } } // Load any remaining nodes if (batch.size() > 0) { - cacheNodesNoBatch(selectNodesByIds(batch)); + cacheNodesNoBatch(selectNodesByIds(batch, Boolean.FALSE)); } } @@ -4048,7 +4048,7 @@ public abstract class AbstractNodeDAOImpl implements NodeDAO, BatchingDAO protected abstract NodeEntity selectNodeById(Long id, Boolean deleted); protected abstract NodeEntity selectNodeByNodeRef(NodeRef nodeRef, Boolean deleted); protected abstract List selectNodesByUuids(Long storeId, SortedSet uuids); - protected abstract List selectNodesByIds(SortedSet ids); + protected abstract List selectNodesByIds(SortedSet ids, Boolean deleted); protected abstract Map> selectNodeProperties(Set nodeIds); protected abstract Map> selectNodeProperties(Long nodeId); protected abstract Map> selectNodeProperties(Long nodeId, Set qnameIds); diff --git a/source/java/org/alfresco/repo/domain/node/ibatis/NodeBatchLoadEntity.java b/source/java/org/alfresco/repo/domain/node/ibatis/NodeBatchLoadEntity.java index 7c21d82744..7bf3a5aff8 100644 --- a/source/java/org/alfresco/repo/domain/node/ibatis/NodeBatchLoadEntity.java +++ b/source/java/org/alfresco/repo/domain/node/ibatis/NodeBatchLoadEntity.java @@ -31,6 +31,7 @@ public class NodeBatchLoadEntity private Long storeId; private List uuids; private List ids; + private Boolean deleted; public Long getStoreId() { @@ -56,4 +57,12 @@ public class NodeBatchLoadEntity { this.ids = ids; } + public Boolean getDeleted() + { + return deleted; + } + public void setDeleted(Boolean deleted) + { + this.deleted = deleted; + } } diff --git a/source/java/org/alfresco/repo/domain/node/ibatis/NodeDAOImpl.java b/source/java/org/alfresco/repo/domain/node/ibatis/NodeDAOImpl.java index 0ef4de257c..c0a02c8046 100644 --- a/source/java/org/alfresco/repo/domain/node/ibatis/NodeDAOImpl.java +++ b/source/java/org/alfresco/repo/domain/node/ibatis/NodeDAOImpl.java @@ -421,10 +421,16 @@ public class NodeDAOImpl extends AbstractNodeDAOImpl @SuppressWarnings("unchecked") @Override - protected List selectNodesByIds(SortedSet ids) + protected List selectNodesByIds(SortedSet ids, Boolean deleted) { NodeBatchLoadEntity nodeBatchLoadEntity = new NodeBatchLoadEntity(); + // IDs nodeBatchLoadEntity.setIds(new ArrayList(ids)); + // Deleted + if (deleted != null) + { + nodeBatchLoadEntity.setDeleted(deleted); + } return (List) template.selectList(SELECT_NODES_BY_IDS, nodeBatchLoadEntity); }