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