1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
/*
* Copyright (c) 2010-2015, Isode Limited, London, England.
* All rights reserved.
*/
package com.isode.stroke.roster;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Collection;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import com.isode.stroke.elements.RosterItemPayload;
import com.isode.stroke.elements.RosterItemPayload.Subscription;
import com.isode.stroke.jid.JID;
public class XMPPRosterImpl extends XMPPRoster {
private Map<JID, XMPPRosterItem> entries_ = new HashMap<JID, XMPPRosterItem>();
public void addContact(final JID jid, final String name, final Collection<String> groups, RosterItemPayload.Subscription subscription) {
JID bareJID = jid.toBare();
XMPPRosterItem item = entries_.get(bareJID);
if (item != null) {
String oldName = item.getName();
Collection<String> oldGroups = item.getGroups();
entries_.put(bareJID, new XMPPRosterItem(jid, name, groups, subscription));
onJIDUpdated.emit(bareJID, oldName, oldGroups);
}
else {
entries_.put(bareJID, new XMPPRosterItem(jid, name, groups, subscription));
onJIDAdded.emit(bareJID);
}
}
public void removeContact(final JID jid) {
entries_.remove(jid.toBare());
onJIDRemoved.emit(jid);
}
public void clear() {
entries_.clear();
onRosterCleared.emit();
}
@Override
public boolean containsJID(JID jid) {
return entries_.containsKey(jid.toBare());
}
@Override
public Subscription getSubscriptionStateForJID(JID jid) {
XMPPRosterItem item = entries_.get(jid.toBare());
if (item != null) return item.getSubscription();
return RosterItemPayload.Subscription.None;
}
@Override
public String getNameForJID(JID jid) {
XMPPRosterItem item = entries_.get(jid.toBare());
if (item != null) return item.getName();
return "";
}
@Override
public Collection<String> getGroupsForJID(JID jid) {
XMPPRosterItem item = entries_.get(jid.toBare());
if (item != null) return item.getGroups();
return new ArrayList<String>();
}
@Override
public Collection<XMPPRosterItem> getItems() {
return entries_.values();
}
@Override
public XMPPRosterItem getItem(JID jid) {
XMPPRosterItem item = entries_.get(jid.toBare());
if (item != null) return item;
return null;
}
@Override
public Set<String> getGroups() {
Set<String> groups = new HashSet<String>();
for (XMPPRosterItem item : entries_.values())
groups.addAll(item.getGroups());
return groups;
}
}
|