From 886f0295b320af7621f562be22856c40ea84c971 Mon Sep 17 00:00:00 2001 From: Kevin Roast Date: Mon, 23 Mar 2009 09:52:17 +0000 Subject: [PATCH] Merged V3.1 to HEAD 13700: ETHREEOH-1724 - Site finder does not search site names git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@13708 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/repo/site/SiteServiceImpl.java | 24 +++++++++++++++---- .../repo/site/SiteServiceImplTest.java | 16 +++++++++++++ .../repo/template/BaseContentNode.java | 12 ++++++++++ 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/source/java/org/alfresco/repo/site/SiteServiceImpl.java b/source/java/org/alfresco/repo/site/SiteServiceImpl.java index c77dcb0fa7..29ab274e42 100644 --- a/source/java/org/alfresco/repo/site/SiteServiceImpl.java +++ b/source/java/org/alfresco/repo/site/SiteServiceImpl.java @@ -572,19 +572,35 @@ public class SiteServiceImpl implements SiteService, SiteModel NodeRef siteRoot = getSiteRoot(); if (nameFilter != null && nameFilter.length() != 0) { - // Perform a Lucene search under the Site parent node using *name* search query - QueryParameterDefinition[] params = new QueryParameterDefinition[1]; + // Perform a Lucene search under the Site parent node using *name*, *title* and *description* search query + QueryParameterDefinition[] params = new QueryParameterDefinition[3]; params[0] = new QueryParameterDefImpl( ContentModel.PROP_NAME, dictionaryService.getDataType( DataTypeDefinition.TEXT), true, LuceneQueryParser.escape(nameFilter.replace('"', ' '))); - + + params[1] = new QueryParameterDefImpl( + ContentModel.PROP_TITLE, + dictionaryService.getDataType( + DataTypeDefinition.TEXT), + true, + QueryParser.escape(nameFilter.replace('"', ' '))); + + params[2] = new QueryParameterDefImpl( + ContentModel.PROP_DESCRIPTION, + dictionaryService.getDataType( + DataTypeDefinition.TEXT), + true, + QueryParser.escape(nameFilter.replace('"', ' '))); + // get the sites that match the specified names StringBuilder query = new StringBuilder(128); query.append("+PARENT:\"").append(siteRoot.toString()) - .append("\" +@cm\\:name:\"*${cm:name}*\""); + .append("\" +(@cm\\:name:\"*${cm:name}*\"") + .append(" @cm\\:title:\"*${cm:title}*\"") + .append(" @cm\\:description:\"*${cm:description}*\")"); ResultSet results = this.searchService.query( siteRoot.getStoreRef(), SearchService.LANGUAGE_LUCENE, diff --git a/source/java/org/alfresco/repo/site/SiteServiceImplTest.java b/source/java/org/alfresco/repo/site/SiteServiceImplTest.java index a0c8e09de8..a413590ee2 100644 --- a/source/java/org/alfresco/repo/site/SiteServiceImplTest.java +++ b/source/java/org/alfresco/repo/site/SiteServiceImplTest.java @@ -237,6 +237,22 @@ public class SiteServiceImplTest extends BaseAlfrescoSpringTest sites = this.siteService.listSites(null, null); assertNotNull(sites); assertEquals(4, sites.size()); + + // Get sites by matching name + sites = this.siteService.listSites("One", null); + assertNotNull(sites); + assertEquals(1, sites.size()); + + // Get sites by matching title + sites = this.siteService.listSites("title", null); + assertNotNull(sites); + assertEquals(4, sites.size()); + + // Get sites by matching description + sites = this.siteService.listSites("description", null); + assertNotNull(sites); + assertEquals(4, sites.size()); + // Do detailed check of the site info objects for (SiteInfo site : sites) { diff --git a/source/java/org/alfresco/repo/template/BaseContentNode.java b/source/java/org/alfresco/repo/template/BaseContentNode.java index 5b70c83159..3996fb298d 100644 --- a/source/java/org/alfresco/repo/template/BaseContentNode.java +++ b/source/java/org/alfresco/repo/template/BaseContentNode.java @@ -483,6 +483,18 @@ public abstract class BaseContentNode implements TemplateContent return (o instanceof TemplateContentData); } + /** + * Helper to return true if the supplied property value is a TemplateNodeRef object + * + * @param o Object to test + * + * @return true if instanceof isTemplateNodeRef, false otherwise + */ + public boolean isTemplateNodeRef(Object o) + { + return (o instanceof TemplateNodeRef); + } + // ------------------------------------------------------------------------------ // Inner classes