mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-10-08 14:51:49 +00:00
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/BRANCHES/DEV/5.2.N/root@130285 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -52,7 +52,8 @@ import org.alfresco.repo.domain.solr.SOLRDAO;
|
||||
import org.alfresco.repo.index.shard.ShardRegistry;
|
||||
import org.alfresco.repo.index.shard.ShardState;
|
||||
import org.alfresco.repo.search.AspectIndexFilter;
|
||||
import org.alfresco.repo.search.TypeIndexFilter;
|
||||
import org.alfresco.repo.search.TypeIndexFilter;
|
||||
import org.alfresco.repo.search.impl.QueryParserUtils;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
import org.alfresco.repo.tenant.TenantService;
|
||||
import org.alfresco.service.cmr.dictionary.AspectDefinition;
|
||||
@@ -69,10 +70,13 @@ import org.alfresco.service.cmr.repository.Path;
|
||||
import org.alfresco.service.cmr.repository.Path.ChildAssocElement;
|
||||
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
|
||||
import org.alfresco.service.cmr.security.OwnableService;
|
||||
import org.alfresco.service.cmr.security.PermissionService;
|
||||
import org.alfresco.service.cmr.security.PermissionService;
|
||||
import org.alfresco.service.namespace.NamespaceService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.util.Pair;
|
||||
import org.alfresco.util.PropertyCheck;
|
||||
import org.alfresco.util.PropertyCheck;
|
||||
|
||||
import com.sun.xml.txw2.NamespaceResolver;
|
||||
|
||||
/**
|
||||
* Component providing data for SOLR tracking
|
||||
@@ -94,7 +98,8 @@ public class SOLRTrackingComponentImpl implements SOLRTrackingComponent
|
||||
private boolean cacheAncestors =true;
|
||||
private TypeIndexFilter typeIndexFilter;
|
||||
private AspectIndexFilter aspectIndexFilter;
|
||||
private ShardRegistry shardRegistry;
|
||||
private ShardRegistry shardRegistry;
|
||||
private NamespaceService namespaceService;
|
||||
|
||||
|
||||
@Override
|
||||
@@ -177,6 +182,11 @@ public class SOLRTrackingComponentImpl implements SOLRTrackingComponent
|
||||
this.shardRegistry = shardRegistry;
|
||||
}
|
||||
|
||||
public void setNamespaceService(NamespaceService namespaceService)
|
||||
{
|
||||
this.namespaceService = namespaceService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize
|
||||
*/
|
||||
@@ -192,7 +202,8 @@ public class SOLRTrackingComponentImpl implements SOLRTrackingComponent
|
||||
PropertyCheck.mandatory(this, "dictionaryDAO", dictionaryDAO);
|
||||
PropertyCheck.mandatory(this, "aclDAO", aclDAO);
|
||||
PropertyCheck.mandatory(this, "typeIndexFilter", typeIndexFilter);
|
||||
PropertyCheck.mandatory(this, "aspectIndexFilter", aspectIndexFilter);
|
||||
PropertyCheck.mandatory(this, "aspectIndexFilter", aspectIndexFilter);
|
||||
PropertyCheck.mandatory(this, "namespaceService", namespaceService);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -343,8 +354,23 @@ public class SOLRTrackingComponentImpl implements SOLRTrackingComponent
|
||||
public void getNodes(NodeParameters nodeParameters, NodeQueryCallback callback)
|
||||
{
|
||||
if(enabled)
|
||||
{
|
||||
List<Node> nodes = solrDAO.getNodes(nodeParameters);
|
||||
{
|
||||
QName shardPropertQName = null;
|
||||
if(nodeParameters.getShardProperty() != null)
|
||||
{
|
||||
PropertyDefinition pdef = QueryParserUtils.matchPropertyDefinition(NamespaceService.CONTENT_MODEL_1_0_URI, namespaceService, dictionaryService, nodeParameters.getShardProperty());
|
||||
if(pdef == null)
|
||||
{
|
||||
throw new AlfrescoRuntimeException("Invalid shard property: "+nodeParameters.getShardProperty());
|
||||
}
|
||||
if((!pdef.getDataType().getName().equals(DataTypeDefinition.TEXT)) && (!pdef.getDataType().getName().equals(DataTypeDefinition.DATE)) && (!pdef.getDataType().getName().equals(DataTypeDefinition.DATETIME)))
|
||||
{
|
||||
throw new AlfrescoRuntimeException("Unsupported shard property type: "+(pdef.getDataType().getName() + " for " +nodeParameters.getShardProperty()));
|
||||
}
|
||||
shardPropertQName = pdef.getName();
|
||||
}
|
||||
|
||||
List<Node> nodes = solrDAO.getNodes(nodeParameters, shardPropertQName);
|
||||
|
||||
for (Node node : nodes)
|
||||
{
|
||||
|
Reference in New Issue
Block a user