ALF-8968 More de-lucene work on person finding code

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28389 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Nick Burch
2011-06-14 13:40:07 +00:00
parent 292af56c15
commit 10f78b83a0
3 changed files with 40 additions and 68 deletions

View File

@@ -38,14 +38,13 @@ import javax.faces.model.SelectItem;
import javax.transaction.UserTransaction; import javax.transaction.UserTransaction;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.query.PagingRequest;
import org.alfresco.repo.avm.AVMNodeConverter; import org.alfresco.repo.avm.AVMNodeConverter;
import org.alfresco.repo.search.impl.lucene.AbstractLuceneQueryParser;
import org.alfresco.service.cmr.avm.AVMNodeDescriptor; import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
import org.alfresco.service.cmr.repository.NodeRef; 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.AuthorityService;
import org.alfresco.service.cmr.security.AuthorityType; import org.alfresco.service.cmr.security.AuthorityType;
import org.alfresco.service.cmr.security.PagingPersonResults;
import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.cmr.security.PersonService; import org.alfresco.service.cmr.security.PersonService;
import org.alfresco.web.app.Application; import org.alfresco.web.app.Application;
@@ -256,19 +255,13 @@ public class SetPermissionsDialog extends UpdatePermissionsDialog
if (filterIndex == 0) if (filterIndex == 0)
{ {
// Use lucene search to retrieve user details // Use lucene search to retrieve user details
String term = AbstractLuceneQueryParser.escape(contains.trim()); PagingPersonResults people = getPersonService().getPeople(
StringBuilder query = new StringBuilder(128); Utils.generatePersonFilter(contains.trim()),
Utils.generatePersonSearch(query, term); true,
ResultSet resultSet = Repository.getServiceRegistry(context).getSearchService().query(Repository.getStoreRef(), SearchService.LANGUAGE_LUCENE, query.toString()); Utils.generatePersonSort(),
List<NodeRef> nodes; new PagingRequest(Utils.getPersonMaxResults(), null)
try );
{ List<NodeRef> nodes = people.getPage();
nodes = resultSet.getNodeRefs();
}
finally
{
resultSet.close();
}
for (int index = 0; index < nodes.size(); index++) for (int index = 0; index < nodes.size(); index++)
{ {

View File

@@ -38,19 +38,18 @@ import javax.faces.model.SelectItem;
import javax.transaction.UserTransaction; import javax.transaction.UserTransaction;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.repo.search.impl.lucene.AbstractLuceneQueryParser; import org.alfresco.query.PagingRequest;
import org.alfresco.repo.security.permissions.AccessDeniedException; import org.alfresco.repo.security.permissions.AccessDeniedException;
import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.search.LimitBy;
import org.alfresco.service.cmr.search.ResultSet;
import org.alfresco.service.cmr.search.SearchParameters;
import org.alfresco.service.cmr.search.SearchService;
import org.alfresco.service.cmr.security.AuthorityService; import org.alfresco.service.cmr.security.AuthorityService;
import org.alfresco.service.cmr.security.AuthorityType; import org.alfresco.service.cmr.security.AuthorityType;
import org.alfresco.service.cmr.security.PagingPersonResults;
import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.cmr.security.PersonService; import org.alfresco.service.cmr.security.PersonService;
import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.Pair;
import org.alfresco.web.app.Application; import org.alfresco.web.app.Application;
import org.alfresco.web.bean.TemplateMailHelperBean; import org.alfresco.web.bean.TemplateMailHelperBean;
import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.Node;
@@ -435,52 +434,39 @@ public abstract class BaseInviteUsersWizard extends BaseWizardBean
tx.begin(); tx.begin();
int maxResults = Application.getClientConfig(context).getInviteUsersMaxResults(); int maxResults = Application.getClientConfig(context).getInviteUsersMaxResults();
if(maxResults <=0)
{
maxResults = Utils.getPersonMaxResults();
}
List<SelectItem> results; List<SelectItem> results;
if (filterIndex == 0) if (filterIndex == 0)
{ {
// Use lucene search to retrieve user details // Use lucene search to retrieve user details
String term = AbstractLuceneQueryParser.escape(search); List<Pair<QName,String>> filter = null;
StringBuilder query = new StringBuilder(128); if (search == null || search.length() == 0)
if (contains == null || contains.length() == 0)
{ {
// if there is no search term, search for all people // if there is no search term, search for all people
query.append("+TYPE:\"");
query.append(ContentModel.TYPE_PERSON.toString());
query.append("\"");
} }
else else
{ {
Utils.generatePersonSearch(query, term); filter = Utils.generatePersonFilter(search);
} }
if (logger.isDebugEnabled()) if (logger.isDebugEnabled())
{ {
logger.debug("Maximum invite users results size: " + maxResults); logger.debug("Maximum invite users results size: " + maxResults);
logger.debug("Using query to find users: " + query.toString()); logger.debug("Using query filter to find users: " + filter);
} }
SearchParameters searchParams = new SearchParameters(); PagingPersonResults people = getPersonService().getPeople(
searchParams.addStore(Repository.getStoreRef()); filter,
searchParams.setLanguage(SearchService.LANGUAGE_LUCENE); true,
searchParams.setQuery(query.toString()); Utils.generatePersonSort(),
if (maxResults > 0) new PagingRequest(maxResults, null)
{ );
searchParams.setLimit(maxResults); List<NodeRef> nodes = people.getPage();
searchParams.setLimitBy(LimitBy.FINAL_SIZE);
}
ResultSet resultSet = Repository.getServiceRegistry(context).getSearchService().query(searchParams);
List<NodeRef> nodes;
try
{
nodes = resultSet.getNodeRefs();
}
finally
{
resultSet.close();
}
results = new ArrayList<SelectItem>(nodes.size()); results = new ArrayList<SelectItem>(nodes.size());
for (int index=0; index<nodes.size(); index++) for (int index=0; index<nodes.size(); index++)

View File

@@ -29,13 +29,11 @@ import javax.faces.model.SelectItem;
import javax.transaction.UserTransaction; import javax.transaction.UserTransaction;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.repo.search.impl.lucene.AbstractLuceneQueryParser; import org.alfresco.query.PagingRequest;
import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.search.LimitBy;
import org.alfresco.service.cmr.search.ResultSet; import org.alfresco.service.cmr.search.ResultSet;
import org.alfresco.service.cmr.search.SearchParameters; import org.alfresco.service.cmr.security.PagingPersonResults;
import org.alfresco.service.cmr.search.SearchService;
import org.alfresco.service.cmr.security.PersonService; import org.alfresco.service.cmr.security.PersonService;
import org.alfresco.service.cmr.workflow.WorkflowService; import org.alfresco.service.cmr.workflow.WorkflowService;
import org.alfresco.web.app.Application; import org.alfresco.web.app.Application;
@@ -141,24 +139,19 @@ public abstract class BaseReassignDialog extends BaseDialogBean
tx.begin(); tx.begin();
int maxResults = Application.getClientConfig(context).getInviteUsersMaxResults(); int maxResults = Application.getClientConfig(context).getInviteUsersMaxResults();
if(maxResults <= 0)
// Use lucene search to retrieve user details
String term = AbstractLuceneQueryParser.escape(contains.trim());
StringBuilder query = new StringBuilder(128);
Utils.generatePersonSearch(query, term);
SearchParameters searchParams = new SearchParameters();
searchParams.addStore(Repository.getStoreRef());
searchParams.setLanguage(SearchService.LANGUAGE_LUCENE);
searchParams.setQuery(query.toString());
if (maxResults > 0)
{ {
searchParams.setLimit(maxResults); maxResults = Utils.getPersonMaxResults();
searchParams.setLimitBy(LimitBy.FINAL_SIZE);
} }
resultSet = Repository.getServiceRegistry(context).getSearchService().query(searchParams); // Use lucene search to retrieve user details
List<NodeRef> nodes = resultSet.getNodeRefs(); PagingPersonResults people = getPersonService().getPeople(
Utils.generatePersonFilter(contains.trim()),
true,
Utils.generatePersonSort(),
new PagingRequest(maxResults, null)
);
List<NodeRef> nodes = people.getPage();
ArrayList<SelectItem> itemList = new ArrayList<SelectItem>(nodes.size()); ArrayList<SelectItem> itemList = new ArrayList<SelectItem>(nodes.size());
for (NodeRef personRef : nodes) for (NodeRef personRef : nodes)