[3952] | 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 | */ |
---|