Commit c1eea815 authored by Matt Tucker's avatar Matt Tucker Committed by matt

Updated version from ryang.


git-svn-id: http://svn.igniterealtime.org/svn/repos/messenger/trunk@1132 b35dd754-fafc-0310-a699-88a17e54d16e
parent 2bceb9c7
version 1.0.1
version 1.0.3
---------------
* Fixed incompatiblity issue with psi
* Fixed bug where a list of all the users in the system would be returned when using psi
version 1.0.2
---------------
* Removed plugin info jsp from admin console tab/sidebar
......
......@@ -2,9 +2,9 @@
<plugin>
<class>org.jivesoftware.messenger.plugin.SearchPlugin</class>
<name>Search</name>
<description>Provides support for searching for users (JEP-0055).</description>
<name>Search Plugin</name>
<description>Provides support for Jabber Search (JEP-0055)</description>
<author>Ryan Graham</author>
<version>1.0.2</version>
<version>1.0.3</version>
<minServerVersion>2.1.2</minServerVersion>
</plugin>
\ No newline at end of file
......@@ -99,15 +99,14 @@ public class SearchPlugin implements Component, Plugin {
if (probeResult == null) {
probeResult = DocumentHelper.createElement(QName.get("query", "jabber:iq:search"));
XDataFormImpl searchForm = new XDataFormImpl(DataForm.TYPE_RESULT);
XDataFormImpl searchForm = new XDataFormImpl(DataForm.TYPE_FORM);
searchForm.setTitle("User Search");
searchForm.addInstruction("The following fields are available for search. "
+ "Wildcard (*) characters are allowed as part the of query.");
Iterator iter = searchFields.iterator();
while (iter.hasNext()) {
String searchField = (String) iter.next();
probeResult.addElement(searchField);
XFormFieldImpl field = new XFormFieldImpl(searchField);
field.setType(FormField.TYPE_TEXT_SINGLE);
......@@ -192,7 +191,7 @@ public class SearchPlugin implements Component, Plugin {
private IQ processSetPacket(IQ packet) {
XDataFormImpl searchResults = new XDataFormImpl(DataForm.TYPE_RESULT);
for (String fieldName: searchFields) {
XFormFieldImpl field = new XFormFieldImpl(fieldName);
field.setLabel(initCap(fieldName));
......@@ -212,20 +211,26 @@ public class SearchPlugin implements Component, Plugin {
Element queryField = (Element) iter.next();
Iterator foundIter = null;
if (userManager != null) {
foundIter = userManager.findUsers(new HashSet<String>(
Arrays.asList(searchField.attributeValue("var"))),
queryField.getTextTrim()).iterator();
if (userManager != null) {
String query = queryField.getTextTrim();
//psi returns every field even if it is empty
if (query.length() > 0) {
foundIter = userManager.findUsers(new HashSet<String>(
Arrays.asList(searchField.attributeValue("var"))), query).iterator();
}
}
else {
foundIter = findUsers(searchField.attributeValue("var"),
queryField.getTextTrim()).iterator();
}
// filter out all duplicate users
while (foundIter.hasNext()) {
User user = (User) foundIter.next();
if (!users.contains(user)) {
users.add(user);
if (foundIter != null) {
while (foundIter.hasNext()) {
User user = (User) foundIter.next();
if (!users.contains(user)) {
users.add(user);
}
}
}
}
......@@ -237,15 +242,15 @@ public class SearchPlugin implements Component, Plugin {
ArrayList<XFormFieldImpl> items = new ArrayList<XFormFieldImpl>();
XFormFieldImpl fieldUsername = new XFormFieldImpl("username");
XFormFieldImpl fieldUsername = new XFormFieldImpl("Username");
fieldUsername.addValue(user.getUsername());
items.add(fieldUsername);
XFormFieldImpl fieldName = new XFormFieldImpl("name");
XFormFieldImpl fieldName = new XFormFieldImpl("Name");
fieldName.addValue(user.getName());
items.add(fieldName);
XFormFieldImpl fieldEmail = new XFormFieldImpl("email");
XFormFieldImpl fieldEmail = new XFormFieldImpl("Email");
fieldEmail.addValue(user.getEmail());
items.add(fieldEmail);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment