1 | package nu.fw.jeti.jabber.elements; |
---|
2 | |
---|
3 | import nu.fw.jeti.jabber.*; |
---|
4 | import nu.fw.jeti.util.I18N; |
---|
5 | |
---|
6 | |
---|
7 | /** |
---|
8 | * @author E.S. de Boer |
---|
9 | */ |
---|
10 | |
---|
11 | public class Presence extends Packet |
---|
12 | { |
---|
13 | public final static int NONE = 0; |
---|
14 | public final static int FREE_FOR_CHAT = 1; |
---|
15 | public final static int AVAILABLE = 2; |
---|
16 | public final static int AWAY = 3; |
---|
17 | public final static int DND = 4; |
---|
18 | public final static int XA = 5; |
---|
19 | public final static int INVISIBLE = 6; |
---|
20 | public final static int UNAVAILABLE = 7; |
---|
21 | |
---|
22 | |
---|
23 | private int show; |
---|
24 | private String status; |
---|
25 | private int priority; |
---|
26 | private String type; |
---|
27 | |
---|
28 | public Presence(JID to,String type) |
---|
29 | { |
---|
30 | super(to); |
---|
31 | this.type = type; |
---|
32 | } |
---|
33 | |
---|
34 | public Presence(JID to,int show,String status,XExtension extension) |
---|
35 | { |
---|
36 | super(to,(Extension)extension); |
---|
37 | setShow(show); |
---|
38 | this.status = status; |
---|
39 | } |
---|
40 | |
---|
41 | public Presence(JID to,int show, String status) |
---|
42 | { |
---|
43 | super(to); |
---|
44 | this.show = show; |
---|
45 | this.status = status; |
---|
46 | setShow(show); |
---|
47 | } |
---|
48 | |
---|
49 | public Presence(int show, String status,int priority,XExtension extension) |
---|
50 | { |
---|
51 | super((Extension)extension); |
---|
52 | setShow(show); |
---|
53 | this.status = status; |
---|
54 | this.priority = priority; |
---|
55 | } |
---|
56 | |
---|
57 | private void setShow(int show) |
---|
58 | { |
---|
59 | switch (show) { |
---|
60 | case INVISIBLE: type = "invisible"; break; |
---|
61 | case UNAVAILABLE: type = "unavailable"; break; |
---|
62 | default: type = "available"; break; |
---|
63 | } |
---|
64 | this.show = show; |
---|
65 | } |
---|
66 | // public Presence(int show, String status,int priority,XExtension extension) |
---|
67 | // { |
---|
68 | // super(presence.getTo(),(Extension)extension); |
---|
69 | // this,type = presence.getType(); |
---|
70 | // this.show = presence.getShow(); |
---|
71 | // this.status = presence.getStatus(); |
---|
72 | // this.priority = priority; |
---|
73 | // } |
---|
74 | |
---|
75 | protected Presence(PresenceBuilder pb) |
---|
76 | { |
---|
77 | super(pb); |
---|
78 | show = pb.show; |
---|
79 | status = pb.status; |
---|
80 | priority = pb.priority; |
---|
81 | type = pb.type; |
---|
82 | } |
---|
83 | |
---|
84 | public int getShow() |
---|
85 | { |
---|
86 | return show; |
---|
87 | } |
---|
88 | |
---|
89 | /** |
---|
90 | * converts the constant status to a readable version |
---|
91 | * @param show |
---|
92 | * @return the long version of the presence |
---|
93 | */ |
---|
94 | public static String toLongShow(int show) |
---|
95 | { |
---|
96 | return I18N.gettext(getI18NKey(show)); |
---|
97 | // switch(show) |
---|
98 | // { |
---|
99 | // case Presence.FREE_FOR_CHAT:return I18N.gettext("main.presence.Free_for_Chat"); |
---|
100 | // case Presence.AWAY: return I18N.gettext("main.presence.Away"); |
---|
101 | // case Presence.XA: return I18N.gettext("main.presence.Extended_Away"); |
---|
102 | // case Presence.DND: return I18N.gettext("main.presence.Do_not_Disturb"); |
---|
103 | // case Presence.NONE: return I18N.gettext("main.presence.Unknown"); |
---|
104 | // case Presence.UNAVAILABLE: return I18N.gettext("main.presence.Unavailable"); |
---|
105 | // case Presence.INVISIBLE: return I18N.gettext("main.presence.Invisible"); |
---|
106 | // default: return I18N.gettext("main.presence.Available"); |
---|
107 | // } |
---|
108 | } |
---|
109 | |
---|
110 | /** |
---|
111 | * converts the constant status to a readable version |
---|
112 | * @param show |
---|
113 | * @return the long version of the presence |
---|
114 | */ |
---|
115 | public static String getI18NKey(int show) |
---|
116 | { |
---|
117 | switch(show) |
---|
118 | { |
---|
119 | case Presence.FREE_FOR_CHAT:return "main.presence.Free_for_Chat"; |
---|
120 | case Presence.AWAY: return "main.presence.Away"; |
---|
121 | case Presence.XA: return "main.presence.Extended_Away"; |
---|
122 | case Presence.DND: return "main.presence.Do_not_Disturb"; |
---|
123 | case Presence.NONE: return "main.presence.Unknown"; |
---|
124 | case Presence.UNAVAILABLE: return "main.presence.Unavailable"; |
---|
125 | case Presence.INVISIBLE: return "main.presence.Invisible"; |
---|
126 | default: return "main.presence.Available"; |
---|
127 | } |
---|
128 | } |
---|
129 | |
---|
130 | |
---|
131 | public String getStatus() |
---|
132 | { |
---|
133 | return status; |
---|
134 | } |
---|
135 | |
---|
136 | public int getPriorety() |
---|
137 | { |
---|
138 | return priority; |
---|
139 | } |
---|
140 | |
---|
141 | public String getType(){return type;} |
---|
142 | |
---|
143 | public void appendToXML(StringBuffer xml) |
---|
144 | {//make short cut? |
---|
145 | xml.append("<presence"); |
---|
146 | appendBaseAttributes(xml); |
---|
147 | if(!type.equals("available")) appendAttribute(xml,"type",type); |
---|
148 | xml.append(">"); |
---|
149 | if(! (show == AVAILABLE || show == UNAVAILABLE)) |
---|
150 | { |
---|
151 | switch (show) |
---|
152 | { |
---|
153 | case Presence.FREE_FOR_CHAT: appendElement(xml,"show","chat"); break; |
---|
154 | case Presence.AWAY: appendElement(xml,"show","away"); break; |
---|
155 | case Presence.XA: appendElement(xml,"show","xa"); break; |
---|
156 | case Presence.DND: appendElement(xml,"show","dnd"); break; |
---|
157 | } |
---|
158 | } |
---|
159 | appendElement(xml,"status",status); |
---|
160 | if(priority!=0) appendElement(xml,"priority",Integer.toString(priority)); |
---|
161 | if("error".equals(type)) appendError(xml); |
---|
162 | appendExtensions(xml); |
---|
163 | xml.append("</presence>"); |
---|
164 | } |
---|
165 | } |
---|
166 | |
---|
167 | /* |
---|
168 | * Overrides for emacs |
---|
169 | * Local variables: |
---|
170 | * tab-width: 4 |
---|
171 | * End: |
---|
172 | */ |
---|