From a73cccdc8b38facbb31bd0563db9423dd1173a67 Mon Sep 17 00:00:00 2001 From: Andrew Hind Date: Mon, 15 Aug 2011 12:57:19 +0000 Subject: [PATCH] ALF-9856: RSOLR 046: Index track and build from SOLR: ALF-9857 Track changes to PATH and optimised support for getting AUX doc only data - path tracking complete git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@29758 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/solr/MetaDataResultsFilter.java | 9 +++++ .../org/alfresco/repo/solr/NodeMetaData.java | 10 +++++- .../repo/solr/SOLRTrackingComponentImpl.java | 35 ++++++++++++++++--- 3 files changed, 49 insertions(+), 5 deletions(-) diff --git a/source/java/org/alfresco/repo/solr/MetaDataResultsFilter.java b/source/java/org/alfresco/repo/solr/MetaDataResultsFilter.java index aab9b43538..079341ff88 100644 --- a/source/java/org/alfresco/repo/solr/MetaDataResultsFilter.java +++ b/source/java/org/alfresco/repo/solr/MetaDataResultsFilter.java @@ -35,6 +35,7 @@ public class MetaDataResultsFilter private boolean includeParentAssociations = true; private boolean includeChildAssociations = true; private boolean includeNodeRef = true; + private boolean includeChildIds = true; public boolean getIncludeChildAssociations() { @@ -107,6 +108,14 @@ public class MetaDataResultsFilter public void setIncludePaths(boolean includePaths) { this.includePaths = includePaths; + } + public boolean getIncludeChildIds() + { + return includeChildIds; + } + public void setIncludeChildIds(boolean includeChildIds) + { + this.includeChildIds = includeChildIds; } } diff --git a/source/java/org/alfresco/repo/solr/NodeMetaData.java b/source/java/org/alfresco/repo/solr/NodeMetaData.java index 0ddb27e5f8..4e873f2bef 100644 --- a/source/java/org/alfresco/repo/solr/NodeMetaData.java +++ b/source/java/org/alfresco/repo/solr/NodeMetaData.java @@ -48,6 +48,7 @@ public class NodeMetaData private List childAssocs; private List parentAssocs; private Long parentAssocsCrc; + private List childIds; public String getOwner() { @@ -138,6 +139,13 @@ public class NodeMetaData public Long getParentAssocsCrc() { return parentAssocsCrc; + } + public List getChildIds() + { + return childIds; + } + public void setChildIds(List childIds) + { + this.childIds = childIds; } - } diff --git a/source/java/org/alfresco/repo/solr/SOLRTrackingComponentImpl.java b/source/java/org/alfresco/repo/solr/SOLRTrackingComponentImpl.java index 72ebcd64ab..d95de094c5 100644 --- a/source/java/org/alfresco/repo/solr/SOLRTrackingComponentImpl.java +++ b/source/java/org/alfresco/repo/solr/SOLRTrackingComponentImpl.java @@ -471,6 +471,7 @@ public class SOLRTrackingComponentImpl implements SOLRTrackingComponent boolean includeParentAssociations = (resultFilter == null ? true : resultFilter.getIncludeParentAssociations()); boolean includeChildAssociations = (resultFilter == null ? true : resultFilter.getIncludeChildAssociations()); boolean includeOwner = (resultFilter == null ? true : resultFilter.getIncludeOwner()); + boolean includeChildIds = (resultFilter == null ? true : resultFilter.getIncludeChildIds()); List nodeIds = preCacheNodes(nodeMetaDataParameters); @@ -497,19 +498,18 @@ public class SOLRTrackingComponentImpl implements SOLRTrackingComponent nodeMetaData.setNodeType(nodeType); } - if(includePaths || includeProperties) + if(includeProperties) { props = nodeDAO.getNodeProperties(nodeId); } nodeMetaData.setProperties(props); - if(includePaths || includeAspects) + if(includeAspects) { aspects = nodeDAO.getNodeAspects(nodeId); } nodeMetaData.setAspects(aspects); - - // TODO paths may change during get i.e. node moved around in the graph + if(includePaths) { Collection> categoryPaths = getCategoryPaths(pair.getSecond(), aspects, props); @@ -556,6 +556,33 @@ public class SOLRTrackingComponentImpl implements SOLRTrackingComponent }); nodeMetaData.setChildAssocs(childAssocs); } + + if(includeChildIds) + { + final List childIds = new ArrayList(100); + nodeDAO.getChildAssocs(nodeId, null, null, null, null, null, new ChildAssocRefQueryCallback() + { + @Override + public boolean preLoadNodes() + { + return false; + } + + @Override + public boolean handle(Pair childAssocPair, Pair parentNodePair, + Pair childNodePair) + { + childIds.add(childNodePair.getFirst()); + return true; + } + + @Override + public void done() + { + } + }); + nodeMetaData.setChildIds(childIds); + } if(includeParentAssociations) {