public String doUserSearch()
{
Query finalQuery;
List result = null;
try
{
if (!StringUtils.isEmpty(searchTerm) && !advanced && isSupportsSimpleSearch())
{
List<TermQuery> termQueries = new ArrayList<TermQuery>();
termQueries.add(searchEntitiesManager.getTermQuery(searchTerm, UserNameTermQuery.class));
finalQuery = searchEntitiesManager.createUserQuery(termQueries, SearchEntitiesManager.MATCH_ANY);
List possible = searchEntitiesManager.findUsersAsList(finalQuery);
if(possible.size() == 1) {
result = possible;
}
else {
termQueries = convertToTermQueries(searchTerm, UserNameTermQuery.class);
termQueries.addAll(convertToTermQueries(searchTerm, FullNameTermQuery.class));
if (isEmailVisible())
{
termQueries.addAll(convertToTermQueries(searchTerm, EmailTermQuery.class));
}
finalQuery = searchEntitiesManager.createUserQuery(termQueries, SearchEntitiesManager.MATCH_ANY);
}
}
else
{
List<Query> andQueries = new ArrayList<Query>();
if (StringUtils.isNotEmpty(usernameTerm))
{
List<TermQuery> usernameQueries = convertToTermQueries(usernameTerm, UserNameTermQuery.class);
andQueries.add(searchEntitiesManager.createUserQuery(usernameQueries, SearchEntitiesManager.MATCH_ANY));
}
if (StringUtils.isNotEmpty(fullnameTerm))
{
List<TermQuery> fullnameQueries = convertToTermQueries(fullnameTerm, FullNameTermQuery.class);
andQueries.add(searchEntitiesManager.createUserQuery(fullnameQueries, SearchEntitiesManager.MATCH_ANY));
}
if (StringUtils.isNotEmpty(emailTerm) && isEmailVisible())
{
List<TermQuery> emailQueries = convertToTermQueries(emailTerm, EmailTermQuery.class);
andQueries.add(searchEntitiesManager.createUserQuery(emailQueries, SearchEntitiesManager.MATCH_ANY));
}
finalQuery = searchEntitiesManager.createUserQuery(andQueries, SearchEntitiesManager.MATCH_ALL);
}
if(result == null) {
result = searchEntitiesManager.findUsersAsList(finalQuery);
}
}
catch (EntityException e)
{
addActionError(GeneralUtil.htmlEncode(e.getMessage()));
log.error(e.toString(), e);
return Action.ERROR;
}
resultsPerPageOptions = buildResultsPerPageOptions(result.size());
Collections.sort(result, new Comparator() {
public int compare(final Object o1, final Object o2) {
String fullName1 = ((User) o1).getFullName();
String fullName2 = ((User) o2).getFullName();
if(StringUtils.isBlank(fullName1) && StringUtils.isNotBlank(fullName2)) {
return 1;
}
else if(StringUtils.isBlank(fullName2) && StringUtils.isNotBlank(fullName1)) {
return -1;
}
else if(StringUtils.isBlank(fullName1) && StringUtils.isBlank(fullName2)) {
return 0;
}
else {
return fullName1.compareTo(fullName2);
}
}
});
paginationSupport.setItems(result);
return SUCCESS;
Hi jkirby
Thanks for taking the time to raise this issue. As you are probably aware this has been on our backlog now for quite some time we very little progress being made in that time. Rather than leaving this issue on the backlog I'm going to close this out as won't fix, I believe this better reflects the status of this issue.
If the problem is raised again in the future we'll readdress it.
Regards
Steve Haffenden
Confluence Bugmaster
Atlassian