From 7f6d154ed81f58d0c0cc5967a7dd99f5a9637b9b Mon Sep 17 00:00:00 2001 From: Kevin Roast Date: Wed, 6 Feb 2013 11:00:59 +0000 Subject: [PATCH] Merged BRANCHES/DEV/V4.1-BUG-FIX to HEAD 45144: Fix for ALF-16790 - upload ignores additional aspects for updateNodes 45174: Merged V4.1-BUG-FIX-2012_11_22 to V4.1-BUG-FIX 43940: ALF-15209: Add Dashlet to User or Site Dashboard not working when IE8 is operating in Compatibility Mode. Fix check p_el.attributes["id"] to avoid errors for "IE8 compatibility mode 45175: Fix for ALF-17260 - Tags list not updated after moving/copying an high number of nodes with taggable aspect but no tags 45188: ALF-16254 ("Leave Site" behaviour for group based site membership) 45204: Fix for ALF-17335 - OnCreateNodePolicy not fired when custom type is used in the Share flash upload 45218: ALF-17248 BaseAssociationEditor.java does not return any results when the query filter consists of "firstname + lastname" 45221: Merged V4.1.3 (4.1.3) to V4.1-BUG-FIX (4.1.4) RECORD ONLY 45220: Merged: V4.1-BUG-FIX (4.1.4) to V4.1.3 (4.1.3) 44054: Fix for ALF-16337. Datalist assignee not searchable by full name. 45218: ALF-17248 BaseAssociationEditor.java does not return any results when the query filter consists of "firstname + lastname" 45245: ALF-17089 (Displaying Url Name instead of site Name in Select form) 45257: ALF-17318 Unnecessary Canned Query in .getPeople(String,...) on startup. - Just one extra query on each run of the FeedNotifier was being made at the end. The sequence of queries are necessary. 45336: Merged DEV to V4.1-BUG-FIX (4.1.4) 45318: ALF-14086: CLONE - Sort order of folders including hyphens ( - ) are different in folder-tree and view on folders (in Share) Sort groups and users on the Java server side using collators. - Deprecated a few methods not deprecated in DEV and removed one which had just been added to 4.1.4 45362: Merged V3.4-BUG-FIX (3.4.13) to V4.1-BUG-FIX <> 45361: Merged V3.4 (3.4.12) to V3.4-BUG-FIX (3.4.13) 45360: ALF-17431: Merged V4.1 (4.1.2) to V3.4 (3.4.12) 43622: ALF-16757: Sharepoint doesn't work correct with SSO - Fix by Pavel 45385: Merged V4.1.3 (4.1.3) to V4.1-BUG-FIX (4.1.4) 45384: ALF-17097 60k Site Performance: Admin Console | Groups | Browse Groups (include sys groups): Results isn't appeared. - Error in authorities comparator causing test failure of ALF 14086 in 4.1.4 only. 4.1.3 was okay as ALF 14086 now uses the change made for ALF-17097 but only in 4.1.4 45452: Corrected config check for ALF-16413 - Share asks for Basic-Auth while not needed trying to access RSS feeds (thus breaking SSO). 45467: Fix for ALF-17509 - patches the FreeMarker built-in ?js_string to correctly encode the "/" character. 45468: ALF-17492 - WebScript errors must contain useful information - SpringSurf libs 1217 provide additional INFO log information on the HTTP method, URL+params that caused the exception. 45475: Fix for ALF-17510 - Upgrade of htmlparser from 1.6 to 2.1 45566: Fixed ALF-17530 - Refactored "successCallback" & "successScope" parameters for multipart uploads to be simply "success" (same for failure) 45574: Fixed ALF-17528 - Asserting that request is made using application/json 45662: Merged HEAD to BRANCHES/DEV/V4.1-BUG-FIX: 45660: Fixes: ALF-17539 - The server was failing to parse the date. It shouldn't have been trying to parse it at all. 45849: Merged HEAD to BRANCHES/DEV/V4.1-BUG-FIX: 45824: Fixes: ALF-13676: Event edit times are now presented using the date-format.shortTime setting & may be entered in either 24h or 12hr formats. 45876: ALF-17642: Fix broken HtmlParserContentTransformerTest after upgrade of htmlparser to 2.1 - Since the upgrade slightly changed the behaviour of the transformer, I added some explanatory comments to the test and to the transformer class. 45927: Fix for ALF-17302 DocLib sort is determined by server locale rather than browser locale - GetChildrenCannedQuery was not using locale based collation 46014: Fix for ALF-17732 - SWF files are considered insecure content and should not be displayed directly in the browser. 46160: Fix for ALF-17759 - HTML files are stripped from metadata and style information after they are uploaded. 46186: Fix for ALF-17786 - Site dashboard page issues too many requests (Site Members dashlet issues avatar requests when it doesn't need too) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@46287 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../web/bean/users/DeleteUserDialog.java | 6 +-- .../org/alfresco/web/ui/common/Utils.java | 50 ++++++++++++++++++- .../property/BaseAssociationEditor.java | 14 ++---- 3 files changed, 55 insertions(+), 15 deletions(-) diff --git a/source/java/org/alfresco/web/bean/users/DeleteUserDialog.java b/source/java/org/alfresco/web/bean/users/DeleteUserDialog.java index ffcaafd8da..d6cf7d0153 100644 --- a/source/java/org/alfresco/web/bean/users/DeleteUserDialog.java +++ b/source/java/org/alfresco/web/bean/users/DeleteUserDialog.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2011 Alfresco Software Limited. + * Copyright (C) 2005-2013 Alfresco Software Limited. * * This file is part of Alfresco * @@ -124,9 +124,7 @@ public class DeleteUserDialog extends BaseDialogBean // define the query to find people by their first or last name String search = ISO9075.encode(this.searchCriteria); - List> filter = new ArrayList>(); - filter.add(new Pair(ContentModel.PROP_FIRSTNAME, search)); - filter.add(new Pair(ContentModel.PROP_LASTNAME, search)); + List> filter = Utils.generatePersonFilter(search); if (logger.isDebugEnabled()) { diff --git a/source/java/org/alfresco/web/ui/common/Utils.java b/source/java/org/alfresco/web/ui/common/Utils.java index 1b8d254d33..4012ea9ce3 100644 --- a/source/java/org/alfresco/web/ui/common/Utils.java +++ b/source/java/org/alfresco/web/ui/common/Utils.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2010 Alfresco Software Limited. + * Copyright (C) 2005-2013 Alfresco Software Limited. * * This file is part of Alfresco * @@ -98,6 +98,9 @@ public final class Utils extends StringUtils private static final Log logger = LogFactory.getLog(Utils.class); + /** RegEx to split a String on the first space. */ + public static final String ON_FIRST_SPACE = " +"; + static { tagWhiteList.add("STRIKE"); @@ -1132,9 +1135,54 @@ public final class Utils extends StringUtils filter.add(new Pair(ContentModel.PROP_FIRSTNAME, term)); filter.add(new Pair(ContentModel.PROP_LASTNAME, term)); filter.add(new Pair(ContentModel.PROP_USERNAME, term)); + + // In order to support queries for "Alan Smithee", we'll parse these tokens + // and add them in to the query. + Pair tokenisedName = tokeniseName(term); + if (tokenisedName != null) + { + filter.add(new Pair(ContentModel.PROP_FIRSTNAME, tokenisedName.getFirst())); + filter.add(new Pair(ContentModel.PROP_LASTNAME, tokenisedName.getSecond())); + } + return filter; } + /** + * This method will tokenise a name string in order to extract first name, last name - if possible. + * The split is simple - it's made on the first whitespace within the trimmed nameFilter String. So + *

+ * "Luke Skywalker" becomes ["Luke", "Skywalker"]. + *

+ * "Jar Jar Binks" becomes ["Jar", "Jar Binks"]. + *

+ * "C-3PO" becomes null. + * + * @param nameFilter + * @return A Pair if the String is valid, else null. + */ + private static Pair tokeniseName(String nameFilter) + { + Pair result = null; + + if (nameFilter != null) + { + final String trimmedNameFilter = nameFilter.trim(); + + // We can only have a first name and a last name if we have at least 3 characters e.g. "A B". + if (trimmedNameFilter.length() > 3) + { + final String[] tokens = trimmedNameFilter.split(ON_FIRST_SPACE, 2); + if (tokens.length == 2) + { + result = new Pair(tokens[0], tokens[1]); + } + } + } + + return result; + } + /** * How many results should a person search return up to? This is needed * because the JSF components do paging differently. diff --git a/source/java/org/alfresco/web/ui/repo/component/property/BaseAssociationEditor.java b/source/java/org/alfresco/web/ui/repo/component/property/BaseAssociationEditor.java index b84cc314f8..081e9b6bee 100644 --- a/source/java/org/alfresco/web/ui/repo/component/property/BaseAssociationEditor.java +++ b/source/java/org/alfresco/web/ui/repo/component/property/BaseAssociationEditor.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2011 Alfresco Software Limited. + * Copyright (C) 2005-2013 Alfresco Software Limited. * * This file is part of Alfresco * @@ -1032,15 +1032,9 @@ public abstract class BaseAssociationEditor extends UIInput } else if(type.equals(ContentModel.TYPE_PERSON.toString())) { - // If the association's target is the person type search on the - // firstName and lastName properties instead of the name property - List> filter = new ArrayList>(); - if (contains != null && contains.length() > 0) - { - String search = contains.trim(); - filter.add(new Pair(ContentModel.PROP_FIRSTNAME, search)); - filter.add(new Pair(ContentModel.PROP_LASTNAME, search)); - } + List> filter = (contains != null && contains.trim().length() > 0) + ? Utils.generatePersonFilter(contains.trim()) + : null; // Always sort by last name, then first name List> sort = new ArrayList>();