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}