1 20 21 package org.jivesoftware.smackx.packet; 22 23 import java.util.*; 24 25 import org.jivesoftware.smack.packet.PacketExtension; 26 27 58 public class MessageEvent implements PacketExtension { 59 60 public static final String OFFLINE = "offline"; 61 public static final String COMPOSING = "composing"; 62 public static final String DISPLAYED = "displayed"; 63 public static final String DELIVERED = "delivered"; 64 public static final String CANCELLED = "cancelled"; 65 66 private boolean offline = false; 67 private boolean delivered = false; 68 private boolean displayed = false; 69 private boolean composing = false; 70 private boolean cancelled = true; 71 72 private String packetID = null; 73 74 80 public String getElementName() { 81 return "x"; 82 } 83 84 90 public String getNamespace() { 91 return "jabber:x:event"; 92 } 93 94 103 public boolean isComposing() { 104 return composing; 105 } 106 107 115 public boolean isDelivered() { 116 return delivered; 117 } 118 119 127 public boolean isDisplayed() { 128 return displayed; 129 } 130 131 139 public boolean isOffline() { 140 return offline; 141 } 142 143 149 public boolean isCancelled() { 150 return cancelled; 151 } 152 153 159 public String getPacketID() { 160 return packetID; 161 } 162 163 169 public Iterator getEventTypes() { 170 ArrayList allEvents = new ArrayList(); 171 if (isDelivered()) { 172 allEvents.add(MessageEvent.DELIVERED); 173 } 174 if (isCancelled()) { 175 allEvents.add(MessageEvent.CANCELLED); 176 } 177 if (isComposing()) { 178 allEvents.add(MessageEvent.COMPOSING); 179 } 180 if (isDisplayed()) { 181 allEvents.add(MessageEvent.DISPLAYED); 182 } 183 if (isOffline()) { 184 allEvents.add(MessageEvent.OFFLINE); 185 } 186 return allEvents.iterator(); 187 } 188 189 198 public void setComposing(boolean composing) { 199 this.composing = composing; 200 setCancelled(false); 201 } 202 203 211 public void setDelivered(boolean delivered) { 212 this.delivered = delivered; 213 setCancelled(false); 214 } 215 216 224 public void setDisplayed(boolean displayed) { 225 this.displayed = displayed; 226 setCancelled(false); 227 } 228 229 237 public void setOffline(boolean offline) { 238 this.offline = offline; 239 setCancelled(false); 240 } 241 242 250 public void setCancelled(boolean cancelled) { 251 this.cancelled = cancelled; 252 } 253 254 260 public void setPacketID(String packetID) { 261 this.packetID = packetID; 262 } 263 264 270 public boolean isMessageEventRequest() { 271 return this.packetID == null; 272 } 273 274 305 public String toXML() { 306 StringBuffer buf = new StringBuffer (); 307 buf.append("<").append(getElementName()).append(" xmlns=\"").append(getNamespace()).append( 308 "\">"); 309 311 if (isOffline()) 314 buf.append("<").append(MessageEvent.OFFLINE).append("/>"); 315 if (isDelivered()) 318 buf.append("<").append(MessageEvent.DELIVERED).append("/>"); 319 if (isDisplayed()) 322 buf.append("<").append(MessageEvent.DISPLAYED).append("/>"); 323 if (isComposing()) 326 buf.append("<").append(MessageEvent.COMPOSING).append("/>"); 327 if (getPacketID() != null) 329 buf.append("<id>").append(getPacketID()).append("</id>"); 330 buf.append("</").append(getElementName()).append(">"); 331 return buf.toString(); 332 } 333 334 } 335 | Popular Tags |