From 3252a7a94e404bc3efc11c12580a0316697d15b2 Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Wed, 12 Feb 2014 00:55:21 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud) 59064: Merged V4.2-BUG-FIX (4.2.1) to HEAD-BUG-FIX (Cloud/4.3) 59042: Merged V4.1-BUG-FIX (4.1.8) to V4.2-BUG-FIX (4.2.1) 58919 : MNT-9205 : Search by IM property with spaces doesn't work - Using correct regexp to split search term. Added a test git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@62089 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../org/alfresco/repo/jscript/People.java | 49 +++++++++---------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/source/java/org/alfresco/repo/jscript/People.java b/source/java/org/alfresco/repo/jscript/People.java index d7cae23d2e..07fb469bc4 100644 --- a/source/java/org/alfresco/repo/jscript/People.java +++ b/source/java/org/alfresco/repo/jscript/People.java @@ -609,18 +609,18 @@ public class People extends BaseScopableProcessorExtension implements Initializi { filter = filter.trim(); - String term = filter.replace("\\", "").replace("\"", ""); - StringTokenizer t = new StringTokenizer(term, " "); + String term = filter.replace("\"", ""); + String[] tokens = term.split("(? personRefs = getPeopleImplSearch(filter, pagingRequest, sortBy, sortAsc); + List personRefs = getPeopleImplSearch(term, tokens, pagingRequest, sortBy, sortAsc); if (personRefs != null) { @@ -692,14 +692,12 @@ public class People extends BaseScopableProcessorExtension implements Initializi } // search query - protected List getPeopleImplSearch(String filter, ScriptPagingDetails pagingRequest, String sortBy, Boolean sortAsc) throws Throwable + protected List getPeopleImplSearch(String term, String[] tokens, ScriptPagingDetails pagingRequest, String sortBy, Boolean sortAsc) throws Throwable { List personRefs = null; Long start = (logger.isDebugEnabled() ? System.currentTimeMillis() : null); - String term = filter.replace("\\", "").replace("\"", ""); - StringTokenizer t = new StringTokenizer(term, " "); int propIndex = term.indexOf(':'); int maxResults = pagingRequest.getMaxItems(); @@ -715,7 +713,7 @@ public class People extends BaseScopableProcessorExtension implements Initializi query.append("TYPE:\"").append(ContentModel.TYPE_PERSON).append("\" AND ("); - if (t.countTokens() == 1) + if (tokens.length == 1) { // single word with no field will go against _PERSON and expand @@ -735,31 +733,28 @@ public class People extends BaseScopableProcessorExtension implements Initializi { // scan for non-fts-alfresco property search tokens int nonFtsTokens = 0; - while (t.hasMoreTokens()) + for (String token : tokens) { - if (t.nextToken().indexOf(':') == -1) - nonFtsTokens++; + if (token.indexOf(':') == -1) nonFtsTokens++; } - t = new StringTokenizer(term, " "); + tokens = term.split("(? counter) + if (firstToken) { multiPartNames.append(' '); } - counter++; + firstToken = false; } } else { // fts-alfresco property search i.e. "location:maidenhead" - propIndex = term.lastIndexOf(':'); - query.append(term.substring(0, propIndex + 1)).append('"') - .append(term.substring(propIndex + 1)).append('"').append(' '); + propIndex = token.lastIndexOf(':'); + query.append(token.substring(0, propIndex + 1)).append('"') + .append(token.substring(propIndex + 1)).append('"').append(' '); propertySearch = true; }