diff --git a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/query-people-common-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/query-people-common-SqlMap.xml index 71b74f05a6..2ba608f54a 100644 --- a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/query-people-common-SqlMap.xml +++ b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/query-people-common-SqlMap.xml @@ -27,20 +27,23 @@ where assoc.parent_node_id = #{parentNodeId} + + + and lower(concat( + - and - ( - lower(prop1.string_value) like lower(#{pattern}) + prop1.string_value, ' ', - or lower(prop2.string_value) like lower(#{pattern}) + prop2.string_value, ' ', - or lower(prop3.string_value) like lower(#{pattern}) + prop3.string_value, ' ', - - ) + + ' ')) like lower(#{item}) + and exists ( select * diff --git a/source/java/org/alfresco/repo/security/person/FilterSortPersonEntity.java b/source/java/org/alfresco/repo/security/person/FilterSortPersonEntity.java index 095bb87046..f7d4ceee6a 100644 --- a/source/java/org/alfresco/repo/security/person/FilterSortPersonEntity.java +++ b/source/java/org/alfresco/repo/security/person/FilterSortPersonEntity.java @@ -18,6 +18,7 @@ */ package org.alfresco.repo.security.person; +import java.util.ArrayList; import java.util.List; @@ -42,7 +43,7 @@ public class FilterSortPersonEntity private Long prop3qnameId = null; private Boolean sort3asc = null; - private String pattern; + private List pattern; private List includeAspectIds; private List excludeAspectIds; @@ -65,7 +66,7 @@ public class FilterSortPersonEntity this.parentNodeId = parentNodeId; } - public String getPattern() + public List getPattern() { return pattern; } @@ -93,13 +94,20 @@ public class FilterSortPersonEntity public void setPattern(String pattern) { + this.pattern = new ArrayList(); if (pattern != null) { // escape the '%' character with '\' (standard SQL escape character) //pattern = escape(pattern, '%'); // replace the wildcard character '*' with the one used in database queries i.e. '%' - this.pattern = pattern.replace('*', '%'); + pattern = pattern.replace('*', '%'); + + String[] parts = pattern.split(" "); + for(String part:parts) + { + this.pattern.add("%" + part + "%"); + } } }