Commit 8f37c6b8 authored by Tom Evans's avatar Tom Evans

OF-163: Properly filter roster groups by user

Merged patch contributed by Ashley Ward.
parent 28759472
......@@ -75,7 +75,9 @@ public class DefaultRosterItemProvider implements RosterItemProvider {
private static final String LOAD_ROSTER =
"SELECT jid, rosterID, sub, ask, recv, nick FROM ofRoster WHERE username=?";
private static final String LOAD_ROSTER_ITEM_GROUPS =
"SELECT rosterID,groupName FROM ofRosterGroups";
"SELECT rosterID,groupName FROM ofRosterGroups " +
"INNER JOIN ofRoster ON ofRosterGroups.rosterID = ofRoster.rosterID " +
"WHERE username=? ORDER BY rosterID, rank";
/* (non-Javadoc)
* @see org.jivesoftware.openfire.roster.RosterItemProvider#createItem(java.lang.String, org.jivesoftware.openfire.roster.RosterItem)
......@@ -267,14 +269,8 @@ public class DefaultRosterItemProvider implements RosterItemProvider {
// Load the groups for the loaded contact
if (!itemList.isEmpty()) {
StringBuilder sb = new StringBuilder(100);
sb.append(LOAD_ROSTER_ITEM_GROUPS).append(" WHERE rosterID IN (");
for (RosterItem item : itemList) {
sb.append(item.getID()).append(",");
}
sb.setLength(sb.length()-1);
sb.append(") ORDER BY rosterID, rank");
pstmt = con.prepareStatement(sb.toString());
pstmt = con.prepareStatement(LOAD_ROSTER_ITEM_GROUPS);
pstmt.setString(1, username);
rs = pstmt.executeQuery();
while (rs.next()) {
itemsByID.get(rs.getLong(1)).getGroups().add(rs.getString(2));
......
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