1package eu.siacs.conversations.entities;
2
3import java.lang.Comparable;
4
5import eu.siacs.conversations.xml.Element;
6
7public class Presence implements Comparable {
8
9 public enum Status {
10 CHAT, ONLINE, AWAY, XA, DND, OFFLINE;
11
12 public String toShowString() {
13 switch(this) {
14 case CHAT: return "chat";
15 case AWAY: return "away";
16 case XA: return "xa";
17 case DND: return "dnd";
18 }
19
20 return null;
21 }
22 }
23
24 protected final Status status;
25 protected final ServiceDiscoveryResult disco;
26
27 public Presence(Element show, ServiceDiscoveryResult disco) {
28 this.disco = disco;
29
30 if ((show == null) || (show.getContent() == null)) {
31 this.status = Status.ONLINE;
32 } else if (show.getContent().equals("away")) {
33 this.status = Status.AWAY;
34 } else if (show.getContent().equals("xa")) {
35 this.status = Status.XA;
36 } else if (show.getContent().equals("chat")) {
37 this.status = Status.CHAT;
38 } else if (show.getContent().equals("dnd")) {
39 this.status = Status.DND;
40 } else {
41 this.status = Status.OFFLINE;
42 }
43 }
44
45 public int compareTo(Object other) {
46 return this.status.compareTo(((Presence)other).status);
47 }
48
49 public Status getStatus() {
50 return this.status;
51 }
52}