From 55a405d41fa78ddecbe0da664e11c2028bfcf664 Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Tue, 6 Sep 2016 22:08:39 +0000 Subject: [PATCH] Merged 5.2.N (5.2.1) to HEAD (5.2) 130285 gjames: Merged searchapi (5.2.1) to 5.2.N (5.2.1) 130022 gjames: Merged 5.2.N-AHIND (5.2.1) to searchapi (5.2.1) 129926 ahind: SEARCH-31 SOLR 6 - Shard based on date - SOLR implementation - Support returning a date, datetime or string property to use for sharding git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@130357 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../org/alfresco/repository/solr/solr.lib.ftl | 1 + .../repo/web/scripts/solr/NodesGet.java | 21 +++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/solr/solr.lib.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/solr/solr.lib.ftl index fbe4dfb0cd..d04527b3ef 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/solr/solr.lib.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/solr/solr.lib.ftl @@ -53,6 +53,7 @@ "txnId": ${node.txnId?c}, "status": "<#if node.deleted>d<#else>u", <#if node.aclId??>"aclId": ${node.aclId?c}, + <#if node.shardPropertyValue??>"shardPropertyValue": "${node.shardPropertyValue?string}", "tenant": "${node.tenant}" } diff --git a/source/java/org/alfresco/repo/web/scripts/solr/NodesGet.java b/source/java/org/alfresco/repo/web/scripts/solr/NodesGet.java index 571ee21371..7c6933f5c2 100644 --- a/source/java/org/alfresco/repo/web/scripts/solr/NodesGet.java +++ b/source/java/org/alfresco/repo/web/scripts/solr/NodesGet.java @@ -34,7 +34,8 @@ import java.util.Map; import java.util.Set; import org.alfresco.repo.domain.node.Node; -import org.alfresco.repo.domain.qname.QNameDAO; +import org.alfresco.repo.domain.qname.QNameDAO; +import org.alfresco.repo.search.impl.QueryParserUtils; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.solr.NodeParameters; import org.alfresco.repo.solr.SOLRTrackingComponent; @@ -165,6 +166,8 @@ public class NodesGet extends DeclarativeWebScript txnIds.add(aTxnIds.getLong(i)); } } + + String shardProperty = o.has("shardProperty") ? o.getString("shardProperty") : null; NodeParameters nodeParameters = new NodeParameters(); nodeParameters.setTransactionIds(txnIds); @@ -175,7 +178,8 @@ public class NodesGet extends DeclarativeWebScript nodeParameters.setExcludeAspects(excludeAspects); nodeParameters.setIncludeAspects(includeAspects); nodeParameters.setExcludeNodeTypes(excludeNodeTypes); - nodeParameters.setIncludeNodeTypes(includeNodeTypes); + nodeParameters.setIncludeNodeTypes(includeNodeTypes); + nodeParameters.setShardProperty(shardProperty); StoreRef storeRef = null; @@ -225,7 +229,8 @@ public class NodesGet extends DeclarativeWebScript private final boolean isDeleted; private final String nodeRef; private final String tenant; - private final Long aclId; + private final Long aclId; + private final String shardPropertyValue; public NodeRecord(Node node, QNameDAO qnameDAO, TenantService tenantService) { @@ -234,7 +239,8 @@ public class NodesGet extends DeclarativeWebScript this.isDeleted = node.getNodeStatus(qnameDAO).isDeleted(); this.nodeRef = node.getNodeRef().toString(); this.tenant = tenantService.getDomain(node.getNodeRef().getStoreRef().getIdentifier()); - this.aclId = node.getAclId(); + this.aclId = node.getAclId(); + this.shardPropertyValue = node.getShardKey(); } public Long getId() @@ -265,9 +271,12 @@ public class NodesGet extends DeclarativeWebScript public Long getAclId() { return aclId; + } + + public String getShardPropertyValue() + { + return this.shardPropertyValue; } - - } /**