From ba5174613d81f0c86df87d3f9843cbca669ad6ae Mon Sep 17 00:00:00 2001 From: Gavin Cornwell Date: Fri, 29 Feb 2008 08:44:21 +0000 Subject: [PATCH] Merged V2.2 to HEAD 7531: Merged V2.1 to V2.2 7397: Fix and improvments to all web-client People pickers - all now search on Username and build Lucene queries rather than XPath. Fixes AWC-853, AWC-935, AWC-1180, AWC-1660 Merge conflicts resolved around query strings and client session cluster changes 7532: Added action to go back to last deployment report in history panel 7533: Moved deploy actions to resources panel header in review task dialog git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@8400 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/messages/webclient.properties | 1 + .../web/bean/groups/AddUsersDialog.java | 30 +++++++---- .../alfresco/web/bean/users/UsersDialog.java | 13 +++-- .../bean/wcm/ViewDeploymentReportDialog.java | 10 ++++ .../bean/wizard/BaseInviteUsersWizard.java | 22 +++++--- .../web/bean/workflow/ReassignTaskDialog.java | 53 +++++++++++-------- .../bean/workflow/ReassignWorkItemDialog.java | 52 +++++++++++------- source/web/jsp/wcm/deployment-report.jsp | 17 ++++-- .../web/jsp/wcm/manage-review-task-dialog.jsp | 27 ++++++---- 9 files changed, 144 insertions(+), 81 deletions(-) diff --git a/config/alfresco/messages/webclient.properties b/config/alfresco/messages/webclient.properties index 866fb9dbd6..46d09d0442 100644 --- a/config/alfresco/messages/webclient.properties +++ b/config/alfresco/messages/webclient.properties @@ -1221,6 +1221,7 @@ deployed_by=By deployment_report_action=View Deployments deployment_report_title=Last Deployment Report deployment_report_desc=View deployment details for each of the servers selected in the last deployment. +last_deploy_report=Show Last Deployment Report more_deploy_reports=More Deployment Reports deployment_previous_report_title=Deployment Report for {0} deployment_previous_report_desc=View deployment details for each of the servers selected in the deployment. diff --git a/source/java/org/alfresco/web/bean/groups/AddUsersDialog.java b/source/java/org/alfresco/web/bean/groups/AddUsersDialog.java index 3565090d52..75cadaa3b5 100644 --- a/source/java/org/alfresco/web/bean/groups/AddUsersDialog.java +++ b/source/java/org/alfresco/web/bean/groups/AddUsersDialog.java @@ -37,10 +37,12 @@ import javax.faces.model.SelectItem; import javax.transaction.UserTransaction; import org.alfresco.model.ContentModel; +import org.alfresco.repo.search.impl.lucene.QueryParser; import org.alfresco.repo.transaction.RetryingTransactionHelper; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; -import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.search.ResultSet; +import org.alfresco.service.cmr.search.SearchService; import org.alfresco.service.cmr.security.AuthorityService; import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.security.PersonService; @@ -202,15 +204,21 @@ public class AddUsersDialog extends BaseDialogBean { SelectItem[] items; - // build xpath to match available User/Person objects - ServiceRegistry services = Repository.getServiceRegistry(context); - NodeRef peopleRef = getPersonService().getPeopleContainer(); - String xpath = "*[like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "firstName, '%" + contains + - "%', false)" + " or " + "like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + - "lastName, '%" + contains + "%', false)]"; - - List nodes = services.getSearchService().selectNodes(peopleRef, xpath, null, - services.getNamespaceService(), false); + // Use lucene search to retrieve user details + String term = QueryParser.escape(contains.trim()); + StringBuilder query = new StringBuilder(128); + 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("*"); + ResultSet resultSet = Repository.getServiceRegistry(context).getSearchService().query( + Repository.getStoreRef(), + SearchService.LANGUAGE_LUCENE, + query.toString()); + List nodes = resultSet.getNodeRefs(); ArrayList itemList = new ArrayList(nodes.size()); for (NodeRef personRef : nodes) @@ -221,7 +229,7 @@ public class AddUsersDialog extends BaseDialogBean String firstName = (String)getNodeService().getProperty(personRef, ContentModel.PROP_FIRSTNAME); String lastName = (String)getNodeService().getProperty(personRef, ContentModel.PROP_LASTNAME); - SelectItem item = new SortableSelectItem(username, firstName + " " + lastName, lastName); + SelectItem item = new SortableSelectItem(username, firstName + " " + lastName + " [" + username + "]", lastName); itemList.add(item); } } diff --git a/source/java/org/alfresco/web/bean/users/UsersDialog.java b/source/java/org/alfresco/web/bean/users/UsersDialog.java index 40369814fc..303f9e1179 100644 --- a/source/java/org/alfresco/web/bean/users/UsersDialog.java +++ b/source/java/org/alfresco/web/bean/users/UsersDialog.java @@ -43,6 +43,7 @@ import org.alfresco.service.cmr.repository.InvalidNodeRefException; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.search.SearchParameters; import org.alfresco.service.cmr.search.SearchService; +import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; import org.alfresco.web.app.Application; import org.alfresco.web.app.context.IContextListener; @@ -320,20 +321,18 @@ public class UsersDialog extends BaseDialogBean implements IContextListener, Cha // define the query to find people by their first or last name String search = properties.getSearchCriteria().trim(); - StringBuilder query = new StringBuilder(256); - query.append("TYPE:\"{http://www.alfresco.org/model/content/1.0}person\" AND ("); + StringBuilder query = new StringBuilder(128); for (StringTokenizer t = new StringTokenizer(search, " "); t.hasMoreTokens(); /**/) { String term = QueryParser.escape(t.nextToken()); - query.append("((@\\{http\\://www.alfresco.org/model/content/1.0\\}firstName:*"); + query.append("@").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:firstName:*"); query.append(term); - query.append("*) OR (@\\{http\\://www.alfresco.org/model/content/1.0\\}lastName:*"); + query.append("* @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:lastName:*"); query.append(term); - query.append("*) OR (@\\{http\\://www.alfresco.org/model/content/1.0\\}userName:"); + query.append("* @").append(NamespaceService.CONTENT_MODEL_PREFIX).append("\\:userName:"); query.append(term); - query.append("*)) "); // final space here is important as default OR separator + query.append("*"); } - query.append(")"); if (logger.isDebugEnabled()) logger.debug("Query: " + query.toString()); diff --git a/source/java/org/alfresco/web/bean/wcm/ViewDeploymentReportDialog.java b/source/java/org/alfresco/web/bean/wcm/ViewDeploymentReportDialog.java index 629f5a22f6..31e4415f5b 100644 --- a/source/java/org/alfresco/web/bean/wcm/ViewDeploymentReportDialog.java +++ b/source/java/org/alfresco/web/bean/wcm/ViewDeploymentReportDialog.java @@ -166,6 +166,16 @@ public class ViewDeploymentReportDialog extends BaseDialogBean this.panelExpanded = !this.panelExpanded; } + /** + * Action handler called when user wants to go back to the last report + */ + public void showLastReport(ActionEvent event) + { + this.attempt = null; + this.attemptDate = null; + this.panelExpanded = false; + } + // ------------------------------------------------------------------------------ // Bean getters and setters diff --git a/source/java/org/alfresco/web/bean/wizard/BaseInviteUsersWizard.java b/source/java/org/alfresco/web/bean/wizard/BaseInviteUsersWizard.java index 96fc592f13..1c6ca626f3 100644 --- a/source/java/org/alfresco/web/bean/wizard/BaseInviteUsersWizard.java +++ b/source/java/org/alfresco/web/bean/wizard/BaseInviteUsersWizard.java @@ -44,6 +44,7 @@ import javax.faces.model.SelectItem; import javax.transaction.UserTransaction; import org.alfresco.model.ContentModel; +import org.alfresco.repo.search.impl.lucene.QueryParser; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.search.ResultSet; import org.alfresco.service.cmr.search.SearchService; @@ -342,13 +343,20 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean if (filterIndex == 0) { - // build xpath to match available User/Person objects - NodeRef peopleRef = getPersonService().getPeopleContainer(); - // Use lucene search to retrieve user details - String lucene = "@" + NamespaceService.CONTENT_MODEL_PREFIX + "\\:firstName:*" + contains + "* " + - "@" + NamespaceService.CONTENT_MODEL_PREFIX + "\\:lastName:*" + contains + "* "; - ResultSet resultSet = getSearchService().query(peopleRef.getStoreRef(), SearchService.LANGUAGE_LUCENE, lucene); + String term = QueryParser.escape(contains.trim()); + StringBuilder query = new StringBuilder(128); + 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("*"); + ResultSet resultSet = Repository.getServiceRegistry(context).getSearchService().query( + Repository.getStoreRef(), + SearchService.LANGUAGE_LUCENE, + query.toString()); List nodes = resultSet.getNodeRefs(); items = new SelectItem[nodes.size()]; @@ -369,7 +377,7 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean groups.addAll(getAuthorityService().getAllAuthorities(AuthorityType.EVERYONE)); List results = new ArrayList(groups.size()); - String containsLower = contains.toLowerCase(); + String containsLower = contains.trim().toLowerCase(); int offset = PermissionService.GROUP_PREFIX.length(); for (String group : groups) { diff --git a/source/java/org/alfresco/web/bean/workflow/ReassignTaskDialog.java b/source/java/org/alfresco/web/bean/workflow/ReassignTaskDialog.java index 55a902d9be..dab9b12233 100644 --- a/source/java/org/alfresco/web/bean/workflow/ReassignTaskDialog.java +++ b/source/java/org/alfresco/web/bean/workflow/ReassignTaskDialog.java @@ -26,6 +26,7 @@ package org.alfresco.web.bean.workflow; import java.io.Serializable; import java.text.MessageFormat; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -38,7 +39,11 @@ import javax.faces.model.SelectItem; import javax.transaction.UserTransaction; import org.alfresco.model.ContentModel; +import org.alfresco.repo.search.impl.lucene.QueryParser; import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.search.ResultSet; +import org.alfresco.service.cmr.search.SearchService; +import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.security.PersonService; import org.alfresco.service.cmr.workflow.WorkflowService; import org.alfresco.service.namespace.NamespaceService; @@ -164,30 +169,36 @@ public class ReassignTaskDialog extends BaseDialogBean tx = Repository.getUserTransaction(context, true); tx.begin(); - // build xpath to match available User/Person objects - NodeRef peopleRef = getPersonService().getPeopleContainer(); - // NOTE: see SearcherComponentTest - String xpath = "*[not(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "userName='guest') and " + - "(like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "firstName, '%" + contains + "%', false)" + - " or " + "like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "lastName, '%" + contains + "%', false))]"; + // Use lucene search to retrieve user details + String term = QueryParser.escape(contains.trim()); + StringBuilder query = new StringBuilder(128); + 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("*"); + ResultSet resultSet = Repository.getServiceRegistry(context).getSearchService().query( + Repository.getStoreRef(), + SearchService.LANGUAGE_LUCENE, + query.toString()); + List nodes = resultSet.getNodeRefs(); - List nodes = getSearchService().selectNodes( - peopleRef, - xpath, - null, - this.getNamespaceService(), - false); - - items = new SelectItem[nodes.size()]; - for (int index=0; index itemList = new ArrayList(nodes.size()); + for (NodeRef personRef : nodes) { - NodeRef personRef = nodes.get(index); - String firstName = (String)this.getNodeService().getProperty(personRef, ContentModel.PROP_FIRSTNAME); - String lastName = (String)this.getNodeService().getProperty(personRef, ContentModel.PROP_LASTNAME); - String username = (String)this.getNodeService().getProperty(personRef, ContentModel.PROP_USERNAME); - SelectItem item = new SortableSelectItem(username, firstName + " " + lastName, lastName); - items[index] = item; + String username = (String) getNodeService().getProperty(personRef, ContentModel.PROP_USERNAME); + if (PermissionService.GUEST_AUTHORITY.equals(username) == false) + { + String firstName = (String) getNodeService().getProperty(personRef, ContentModel.PROP_FIRSTNAME); + String lastName = (String) getNodeService().getProperty(personRef, ContentModel.PROP_LASTNAME); + SelectItem item = new SortableSelectItem(username, firstName + " " + lastName + " [" + username + "]", lastName); + itemList.add(item); + } } + items = new SelectItem[itemList.size()]; + itemList.toArray(items); Arrays.sort(items); diff --git a/source/java/org/alfresco/web/bean/workflow/ReassignWorkItemDialog.java b/source/java/org/alfresco/web/bean/workflow/ReassignWorkItemDialog.java index ea682ee388..a6bbbcb6b6 100644 --- a/source/java/org/alfresco/web/bean/workflow/ReassignWorkItemDialog.java +++ b/source/java/org/alfresco/web/bean/workflow/ReassignWorkItemDialog.java @@ -26,6 +26,7 @@ package org.alfresco.web.bean.workflow; import java.io.Serializable; import java.text.MessageFormat; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -38,7 +39,11 @@ import javax.faces.model.SelectItem; import javax.transaction.UserTransaction; import org.alfresco.model.ContentModel; +import org.alfresco.repo.search.impl.lucene.QueryParser; import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.search.ResultSet; +import org.alfresco.service.cmr.search.SearchService; +import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.security.PersonService; import org.alfresco.service.cmr.workflow.WorkflowService; import org.alfresco.service.namespace.NamespaceService; @@ -164,29 +169,36 @@ public class ReassignWorkItemDialog extends BaseDialogBean tx = Repository.getUserTransaction(context, true); tx.begin(); - // build xpath to match available User/Person objects - NodeRef peopleRef = getPersonService().getPeopleContainer(); - // NOTE: see SearcherComponentTest - String xpath = "*[like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "firstName, '%" + contains + "%', false)" + - " or " + "like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "lastName, '%" + contains + "%', false)]"; + // Use lucene search to retrieve user details + String term = QueryParser.escape(contains.trim()); + StringBuilder query = new StringBuilder(128); + 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("*"); + ResultSet resultSet = Repository.getServiceRegistry(context).getSearchService().query( + Repository.getStoreRef(), + SearchService.LANGUAGE_LUCENE, + query.toString()); + List nodes = resultSet.getNodeRefs(); - List nodes = getSearchService().selectNodes( - peopleRef, - xpath, - null, - this.getNamespaceService(), - false); - - items = new SelectItem[nodes.size()]; - for (int index=0; index itemList = new ArrayList(nodes.size()); + for (NodeRef personRef : nodes) { - NodeRef personRef = nodes.get(index); - String firstName = (String)this.getNodeService().getProperty(personRef, ContentModel.PROP_FIRSTNAME); - String lastName = (String)this.getNodeService().getProperty(personRef, ContentModel.PROP_LASTNAME); - String username = (String)this.getNodeService().getProperty(personRef, ContentModel.PROP_USERNAME); - SelectItem item = new SortableSelectItem(username, firstName + " " + lastName, lastName); - items[index] = item; + String username = (String) getNodeService().getProperty(personRef, ContentModel.PROP_USERNAME); + if (PermissionService.GUEST_AUTHORITY.equals(username) == false) + { + String firstName = (String) getNodeService().getProperty(personRef, ContentModel.PROP_FIRSTNAME); + String lastName = (String) getNodeService().getProperty(personRef, ContentModel.PROP_LASTNAME); + SelectItem item = new SortableSelectItem(username, firstName + " " + lastName + " [" + username + "]", lastName); + itemList.add(item); + } } + items = new SelectItem[itemList.size()]; + itemList.toArray(items); Arrays.sort(items); diff --git a/source/web/jsp/wcm/deployment-report.jsp b/source/web/jsp/wcm/deployment-report.jsp index 208a169768..01d18a7f0b 100644 --- a/source/web/jsp/wcm/deployment-report.jsp +++ b/source/web/jsp/wcm/deployment-report.jsp @@ -34,9 +34,18 @@ - + + + + + + + @@ -53,7 +62,7 @@ + dateFilter="#{DialogManager.bean.dateFilter}" /> diff --git a/source/web/jsp/wcm/manage-review-task-dialog.jsp b/source/web/jsp/wcm/manage-review-task-dialog.jsp index 021316d98a..db1eb80b0b 100644 --- a/source/web/jsp/wcm/manage-review-task-dialog.jsp +++ b/source/web/jsp/wcm/manage-review-task-dialog.jsp @@ -62,17 +62,22 @@ - - - - - - + + + + + + + + + +