summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Young <consult.awy@gmail.com>2014-11-13 06:42:37 (GMT)
committerAlan Young <consult.awy@gmail.com>2015-04-10 06:50:58 (GMT)
commit7d2101b93b6253c3ea15b663f7f3dc385cb21364 (patch)
treed81338baf0d117e83cdc07f882cbedd9471e834d /src/com/isode/stroke/roster/XMPPRosterImpl.java
parenta20ca7ba40d837abe228462be0aba5d32d6831e3 (diff)
downloadstroke-7d2101b93b6253c3ea15b663f7f3dc385cb21364.zip
stroke-7d2101b93b6253c3ea15b663f7f3dc385cb21364.tar.bz2
Checkpoint - A bunch of initial stuff for Android
MemoryStorages, Storages NickManager, NickResolver CryptoProvider, Hash, SafeByteArray, JavaCryptoProvider CapsInfoGenerator, CapsManager, CapsMemoryStorage, CapsProvider, CapsStorage, CapsInfo CapsInfoSerializer, CapsInfoParser ClientDiscoManager, DiscoInfoResponder, EntityCapsManager, EntityCapsProvider GetDiscoInfoRequest ChatState, Idle Presence, PayloadAddingPresenceSender, PresenceOracle, SubscriptionManager StatusSerializer, StatusShowSerializer, StatusParser, StatusShowParser, Replace, ReplaceParser, ReplaceSerializer SecurityLabel, SecurityLabelsCatalog, GetSecurityLabelsCatalogRequest VCard, GetVCardRequest, SetVCardRequest, VCardManager, VCardMemoryStorage, VCardStorage RosterMemoryStorage, RosterPushResponder, RosterStorage, SetRosterRequest XMPPRoster, XMPPRosterController, XMPPRosterImpl, XMPPRosterItem GetRosterRequest, SetResponder Add parsers and serializers for Idle, VCard, PrivateStorage & Stroage. Add parser for Subject. Add impromptu flag to MUCInvitation. Update copyrights. Change-Id: I9949f506b70e60b3a64f1dadde8f9b235b322e1d
Diffstat (limited to 'src/com/isode/stroke/roster/XMPPRosterImpl.java')
-rw-r--r--src/com/isode/stroke/roster/XMPPRosterImpl.java95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/com/isode/stroke/roster/XMPPRosterImpl.java b/src/com/isode/stroke/roster/XMPPRosterImpl.java
new file mode 100644
index 0000000..61d0bc3
--- /dev/null
+++ b/src/com/isode/stroke/roster/XMPPRosterImpl.java
@@ -0,0 +1,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>();
+
+ 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);
+ }
+ }
+
+ void removeContact(final JID jid) {
+ entries_.remove(jid.toBare());
+ onJIDRemoved.emit(jid);
+ }
+
+ void clear() {
+ entries_.clear();
+ onRosterCleared.emit();
+ }
+
+ @Override
+ public boolean containsJID(JID jid) {
+ return entries_.containsKey(jid);
+ }
+
+ @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;
+ }
+
+}