Item.java

 1package im.conversations.android.xmpp.model.roster;
 2
 3import com.google.common.collect.Collections2;
 4
 5import eu.siacs.conversations.xml.Element;
 6import eu.siacs.conversations.xmpp.Jid;
 7
 8import im.conversations.android.annotation.XmlElement;
 9import im.conversations.android.xmpp.model.Extension;
10
11import java.util.Arrays;
12import java.util.Collection;
13import java.util.List;
14import java.util.Locale;
15import java.util.Objects;
16
17@XmlElement
18public class Item extends Extension {
19
20    public static final List<Subscription> RESULT_SUBSCRIPTIONS =
21            Arrays.asList(Subscription.NONE, Subscription.TO, Subscription.FROM, Subscription.BOTH);
22
23    public Item() {
24        super(Item.class);
25    }
26
27    public Jid getJid() {
28        return getAttributeAsJid("jid");
29    }
30
31    public String getItemName() {
32        return this.getAttribute("name");
33    }
34
35    public boolean isPendingOut() {
36        return "subscribe".equalsIgnoreCase(this.getAttribute("ask"));
37    }
38
39    public Subscription getSubscription() {
40        final String value = this.getAttribute("subscription");
41        try {
42            return value == null ? null : Subscription.valueOf(value.toUpperCase(Locale.ROOT));
43        } catch (final IllegalArgumentException e) {
44            return null;
45        }
46    }
47
48    public Collection<String> getGroups() {
49        return Collections2.filter(
50                Collections2.transform(getExtensions(Group.class), Element::getContent),
51                Objects::nonNull);
52    }
53
54    public enum Subscription {
55        NONE,
56        TO,
57        FROM,
58        BOTH,
59        REMOVE
60    }
61}