From 2191fe7a23d858d244045cca306e8a80d466b886 Mon Sep 17 00:00:00 2001 From: Kevin Roast Date: Wed, 20 Jun 2007 20:28:38 +0000 Subject: [PATCH] Lucene search support for AVM FreeMarker Template API git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6043 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/template/AVMTemplateStore.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/source/java/org/alfresco/repo/template/AVMTemplateStore.java b/source/java/org/alfresco/repo/template/AVMTemplateStore.java index 783a6e0a75..69f05544c1 100644 --- a/source/java/org/alfresco/repo/template/AVMTemplateStore.java +++ b/source/java/org/alfresco/repo/template/AVMTemplateStore.java @@ -24,12 +24,22 @@ */ package org.alfresco.repo.template; +import java.util.ArrayList; +import java.util.Collections; import java.util.Date; +import java.util.List; +import org.alfresco.error.AlfrescoRuntimeException; +import org.alfresco.repo.jscript.ScriptNode; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.avm.AVMNodeDescriptor; import org.alfresco.service.cmr.avm.AVMStoreDescriptor; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.cmr.repository.TemplateImageResolver; +import org.alfresco.service.cmr.search.ResultSet; +import org.alfresco.service.cmr.search.ResultSetRow; +import org.alfresco.service.cmr.search.SearchService; /** * Representation of an AVM Store for the template model. Accessed via the AVM helper object @@ -130,4 +140,47 @@ public class AVMTemplateStore } return node; } + + /** + * + * @param query + * @return + */ + public List luceneSearch(String query) + { + List nodes = null; + + // perform the search against the repo + ResultSet results = null; + try + { + results = this.services.getSearchService().query( + new StoreRef(StoreRef.PROTOCOL_AVM, this.descriptor.getName()), + SearchService.LANGUAGE_LUCENE, + query); + + if (results.length() != 0) + { + nodes = new ArrayList(results.length()); + for (ResultSetRow row : results) + { + NodeRef nodeRef = row.getNodeRef(); + nodes.add(new AVMTemplateNode(nodeRef, this.services, this.resolver)); + } + } + } + catch (Throwable err) + { + throw new AlfrescoRuntimeException("Failed to execute search: " + query, err); + } + finally + { + if (results != null) + { + results.close(); + } + } + + return (nodes != null ? nodes : (List)Collections.emptyList()); + } }