Al igual que en el anterior artículo, en una instalación de alfresco 3.2 que estamos usando desde hace unos meses con unos cuantos centenares de usuarios nos ha surgido un problema en el formulario de administrar usuarios, concretamente a la hora de hacer búsquedas.
El formulario de búsqueda de usuarios sólo nos permite buscar una palabra, en cuanto ponemos más de una da un error. Cómo queremos que el comportamiento sea idéntico al anterior artículo hemos decidido modificar la consulta que se realiza.
La clase que construye la búsqueda es (org.alfresco.web.bean.users) UserDialog concretamente la función search() . En lugar de usar el código que tiene para construir la búesqueda lucene, haremos uso de la que ya teníamos hecha (org.alfresco.web.ui.common.Utils) Utils.generatePersonSearch(StringBuilder query, String term):
Código de la modificación en la función search():
.....
StringBuilder query = new StringBuilder(128);
Utils.generatePersonSearch(query, properties.getSearchCriteria());
// COMENTAMOS LA GENERACIÓN DE LA CONSULTA
/* String search = properties.getSearchCriteria().trim();
StringBuilder query = new StringBuilder(128);
for (StringTokenizer t = new StringTokenizer(search, " "); t.hasMoreTokens(); )
{
String term = LuceneQueryParser.escape(t.nextToken());
query.append("@").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:firstName:\"*");
query.append(term);
query.append("*\" @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:lastName:\"*");
query.append(term);
query.append("*\" @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:userName:");
query.append(term);
query.append("*");
}
*/
....