1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $RCSfile$ 3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Revision$ 4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Date$ 5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Copyright 2003-2007 Jive Software. 7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); 9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * you may not use this file except in compliance with the License. 10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * You may obtain a copy of the License at 11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * http://www.apache.org/licenses/LICENSE-2.0 13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Unless required by applicable law or agreed to in writing, software 15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * distributed under the License is distributed on an "AS IS" BASIS, 16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * See the License for the specific language governing permissions and 18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * limitations under the License. 19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.jivesoftware.smackx.packet; 22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smack.packet.PacketExtension; 24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Represents extended presence information about roles, affiliations, full JIDs, 27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * or status codes scoped by the 'http://jabber.org/protocol/muc#user' namespace. 28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Gaston Dombiak 30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic class MUCUser implements PacketExtension { 32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private Invite invite; 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private Decline decline; 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private Item item; 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String password; 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private Status status; 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private Destroy destroy; 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getElementName() { 41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return "x"; 42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getNamespace() { 45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return "http://jabber.org/protocol/muc#user"; 46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String toXML() { 49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen StringBuilder buf = new StringBuilder(); 50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<").append(getElementName()).append(" xmlns=\"").append(getNamespace()).append( 51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen "\">"); 52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getInvite() != null) { 53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(getInvite().toXML()); 54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getDecline() != null) { 56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(getDecline().toXML()); 57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getItem() != null) { 59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(getItem().toXML()); 60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getPassword() != null) { 62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<password>").append(getPassword()).append("</password>"); 63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getStatus() != null) { 65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(getStatus().toXML()); 66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getDestroy() != null) { 68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(getDestroy().toXML()); 69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 70d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("</").append(getElementName()).append(">"); 71d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return buf.toString(); 72d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 73d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 74d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 75d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the invitation for another user to a room. The sender of the invitation 76d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * must be an occupant of the room. The invitation will be sent to the room which in turn 77d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * will forward the invitation to the invitee. 78d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 79d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return an invitation for another user to a room. 80d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 81d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public Invite getInvite() { 82d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return invite; 83d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 84d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 85d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 86d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the rejection to an invitation from another user to a room. The rejection will be 87d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * sent to the room which in turn will forward the refusal to the inviter. 88d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 89d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return a rejection to an invitation from another user to a room. 90d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 91d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public Decline getDecline() { 92d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return decline; 93d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 94d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 95d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 96d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the item child that holds information about roles, affiliation, jids and nicks. 97d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 98d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return an item child that holds information about roles, affiliation, jids and nicks. 99d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 100d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public Item getItem() { 101d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return item; 102d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 103d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 104d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 105d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the password to use to enter Password-Protected Room. A Password-Protected Room is 106d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * a room that a user cannot enter without first providing the correct password. 107d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 108d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the password to use to enter Password-Protected Room. 109d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 110d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getPassword() { 111d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return password; 112d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 113d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 114d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 115d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the status which holds a code that assists in presenting notification messages. 116d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 117d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the status which holds a code that assists in presenting notification messages. 118d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 119d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public Status getStatus() { 120d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return status; 121d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 122d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 123d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 124d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the notification that the room has been destroyed. After a room has been destroyed, 125d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * the room occupants will receive a Presence packet of type 'unavailable' with the reason for 126d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * the room destruction if provided by the room owner. 127d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 128d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return a notification that the room has been destroyed. 129d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 130d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public Destroy getDestroy() { 131d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return destroy; 132d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 133d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 134d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 135d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the invitation for another user to a room. The sender of the invitation 136d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * must be an occupant of the room. The invitation will be sent to the room which in turn 137d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * will forward the invitation to the invitee. 138d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 139d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param invite the invitation for another user to a room. 140d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 141d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setInvite(Invite invite) { 142d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.invite = invite; 143d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 144d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 145d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 146d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the rejection to an invitation from another user to a room. The rejection will be 147d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * sent to the room which in turn will forward the refusal to the inviter. 148d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 149d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param decline the rejection to an invitation from another user to a room. 150d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 151d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setDecline(Decline decline) { 152d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.decline = decline; 153d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 154d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 155d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 156d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the item child that holds information about roles, affiliation, jids and nicks. 157d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 158d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param item the item child that holds information about roles, affiliation, jids and nicks. 159d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 160d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setItem(Item item) { 161d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.item = item; 162d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 163d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 164d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 165d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the password to use to enter Password-Protected Room. A Password-Protected Room is 166d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * a room that a user cannot enter without first providing the correct password. 167d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 168d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param string the password to use to enter Password-Protected Room. 169d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 170d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setPassword(String string) { 171d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen password = string; 172d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 173d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 174d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 175d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the status which holds a code that assists in presenting notification messages. 176d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 177d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param status the status which holds a code that assists in presenting notification 178d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * messages. 179d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 180d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setStatus(Status status) { 181d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.status = status; 182d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 183d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 184d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 185d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the notification that the room has been destroyed. After a room has been destroyed, 186d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * the room occupants will receive a Presence packet of type 'unavailable' with the reason for 187d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * the room destruction if provided by the room owner. 188d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 189d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param destroy the notification that the room has been destroyed. 190d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 191d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setDestroy(Destroy destroy) { 192d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.destroy = destroy; 193d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 194d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 195d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 196d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Represents an invitation for another user to a room. The sender of the invitation 197d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * must be an occupant of the room. The invitation will be sent to the room which in turn 198d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * will forward the invitation to the invitee. 199d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 200d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Gaston Dombiak 201d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 202d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public static class Invite { 203d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String reason; 204d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String from; 205d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String to; 206d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 207d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 208d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the bare JID of the inviter or, optionally, the room JID. (e.g. 209d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 'crone1@shakespeare.lit/desktop'). 210d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 211d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the room's occupant that sent the invitation. 212d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 213d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getFrom() { 214d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return from; 215d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 216d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 217d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 218d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the message explaining the invitation. 219d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 220d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the message explaining the invitation. 221d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 222d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getReason() { 223d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return reason; 224d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 225d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 226d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 227d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the bare JID of the invitee. (e.g. 'hecate@shakespeare.lit') 228d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 229d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the bare JID of the invitee. 230d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 231d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getTo() { 232d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return to; 233d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 234d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 235d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 236d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the bare JID of the inviter or, optionally, the room JID. (e.g. 237d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 'crone1@shakespeare.lit/desktop') 238d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 239d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param from the bare JID of the inviter or, optionally, the room JID. 240d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 241d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setFrom(String from) { 242d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.from = from; 243d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 244d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 245d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 246d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the message explaining the invitation. 247d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 248d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param reason the message explaining the invitation. 249d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 250d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setReason(String reason) { 251d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.reason = reason; 252d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 253d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 254d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 255d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the bare JID of the invitee. (e.g. 'hecate@shakespeare.lit') 256d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 257d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param to the bare JID of the invitee. 258d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 259d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setTo(String to) { 260d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.to = to; 261d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 262d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 263d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String toXML() { 264d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen StringBuilder buf = new StringBuilder(); 265d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<invite "); 266d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getTo() != null) { 267d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(" to=\"").append(getTo()).append("\""); 268d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 269d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getFrom() != null) { 270d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(" from=\"").append(getFrom()).append("\""); 271d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 272d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(">"); 273d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getReason() != null) { 274d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<reason>").append(getReason()).append("</reason>"); 275d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 276d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("</invite>"); 277d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return buf.toString(); 278d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 279d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 280d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 281d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 282d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Represents a rejection to an invitation from another user to a room. The rejection will be 283d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * sent to the room which in turn will forward the refusal to the inviter. 284d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 285d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Gaston Dombiak 286d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 287d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public static class Decline { 288d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String reason; 289d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String from; 290d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String to; 291d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 292d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 293d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the bare JID of the invitee that rejected the invitation. (e.g. 294d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 'crone1@shakespeare.lit/desktop'). 295d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 296d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the bare JID of the invitee that rejected the invitation. 297d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 298d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getFrom() { 299d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return from; 300d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 301d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 302d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 303d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the message explaining why the invitation was rejected. 304d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 305d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the message explaining the reason for the rejection. 306d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 307d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getReason() { 308d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return reason; 309d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 310d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 311d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 312d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the bare JID of the inviter. (e.g. 'hecate@shakespeare.lit') 313d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 314d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the bare JID of the inviter. 315d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 316d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getTo() { 317d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return to; 318d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 319d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 320d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 321d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the bare JID of the invitee that rejected the invitation. (e.g. 322d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 'crone1@shakespeare.lit/desktop'). 323d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 324d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param from the bare JID of the invitee that rejected the invitation. 325d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 326d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setFrom(String from) { 327d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.from = from; 328d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 329d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 330d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 331d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the message explaining why the invitation was rejected. 332d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 333d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param reason the message explaining the reason for the rejection. 334d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 335d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setReason(String reason) { 336d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.reason = reason; 337d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 338d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 339d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 340d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the bare JID of the inviter. (e.g. 'hecate@shakespeare.lit') 341d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 342d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param to the bare JID of the inviter. 343d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 344d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setTo(String to) { 345d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.to = to; 346d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 347d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 348d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String toXML() { 349d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen StringBuilder buf = new StringBuilder(); 350d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<decline "); 351d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getTo() != null) { 352d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(" to=\"").append(getTo()).append("\""); 353d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 354d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getFrom() != null) { 355d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(" from=\"").append(getFrom()).append("\""); 356d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 357d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(">"); 358d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getReason() != null) { 359d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<reason>").append(getReason()).append("</reason>"); 360d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 361d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("</decline>"); 362d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return buf.toString(); 363d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 364d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 365d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 366d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 367d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Item child that holds information about roles, affiliation, jids and nicks. 368d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 369d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Gaston Dombiak 370d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 371d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public static class Item { 372d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String actor; 373d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String reason; 374d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String affiliation; 375d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String jid; 376d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String nick; 377d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String role; 378d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 379d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 380d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Creates a new item child. 381d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 382d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param affiliation the actor's affiliation to the room 383d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param role the privilege level of an occupant within a room. 384d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 385d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public Item(String affiliation, String role) { 386d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.affiliation = affiliation; 387d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.role = role; 388d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 389d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 390d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 391d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the actor (JID of an occupant in the room) that was kicked or banned. 392d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 393d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the JID of an occupant in the room that was kicked or banned. 394d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 395d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getActor() { 396d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return actor == null ? "" : actor; 397d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 398d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 399d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 400d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the reason for the item child. The reason is optional and could be used to 401d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * explain the reason why a user (occupant) was kicked or banned. 402d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 403d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the reason for the item child. 404d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 405d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getReason() { 406d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return reason == null ? "" : reason; 407d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 408d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 409d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 410d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the occupant's affiliation to the room. The affiliation is a semi-permanent 411d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * association or connection with a room. The possible affiliations are "owner", "admin", 412d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * "member", and "outcast" (naturally it is also possible to have no affiliation). An 413d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * affiliation lasts across a user's visits to a room. 414d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 415d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the actor's affiliation to the room 416d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 417d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getAffiliation() { 418d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return affiliation; 419d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 420d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 421d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 422d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the <room@service/nick> by which an occupant is identified within the context 423d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * of a room. If the room is non-anonymous, the JID will be included in the item. 424d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 425d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the room JID by which an occupant is identified within the room. 426d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 427d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getJid() { 428d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return jid; 429d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 430d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 431d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 432d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the new nickname of an occupant that is changing his/her nickname. The new 433d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * nickname is sent as part of the unavailable presence. 434d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 435d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the new nickname of an occupant that is changing his/her nickname. 436d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 437d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getNick() { 438d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return nick; 439d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 440d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 441d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 442d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the temporary position or privilege level of an occupant within a room. The 443d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * possible roles are "moderator", "participant", and "visitor" (it is also possible to 444d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * have no defined role). A role lasts only for the duration of an occupant's visit to 445d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * a room. 446d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 447d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the privilege level of an occupant within a room. 448d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 449d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getRole() { 450d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return role; 451d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 452d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 453d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 454d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the actor (JID of an occupant in the room) that was kicked or banned. 455d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 456d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param actor the actor (JID of an occupant in the room) that was kicked or banned. 457d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 458d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setActor(String actor) { 459d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.actor = actor; 460d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 461d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 462d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 463d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the reason for the item child. The reason is optional and could be used to 464d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * explain the reason why a user (occupant) was kicked or banned. 465d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 466d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param reason the reason why a user (occupant) was kicked or banned. 467d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 468d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setReason(String reason) { 469d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.reason = reason; 470d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 471d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 472d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 473d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the <room@service/nick> by which an occupant is identified within the context 474d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * of a room. If the room is non-anonymous, the JID will be included in the item. 475d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 476d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param jid the JID by which an occupant is identified within a room. 477d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 478d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setJid(String jid) { 479d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.jid = jid; 480d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 481d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 482d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 483d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the new nickname of an occupant that is changing his/her nickname. The new 484d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * nickname is sent as part of the unavailable presence. 485d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 486d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param nick the new nickname of an occupant that is changing his/her nickname. 487d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 488d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setNick(String nick) { 489d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.nick = nick; 490d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 491d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 492d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String toXML() { 493d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen StringBuilder buf = new StringBuilder(); 494d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<item"); 495d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getAffiliation() != null) { 496d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(" affiliation=\"").append(getAffiliation()).append("\""); 497d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 498d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getJid() != null) { 499d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(" jid=\"").append(getJid()).append("\""); 500d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 501d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getNick() != null) { 502d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(" nick=\"").append(getNick()).append("\""); 503d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 504d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getRole() != null) { 505d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(" role=\"").append(getRole()).append("\""); 506d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 507d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getReason() == null && getActor() == null) { 508d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("/>"); 509d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 510d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen else { 511d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(">"); 512d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getReason() != null) { 513d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<reason>").append(getReason()).append("</reason>"); 514d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 515d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getActor() != null) { 516d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<actor jid=\"").append(getActor()).append("\"/>"); 517d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 518d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("</item>"); 519d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 520d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return buf.toString(); 521d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 522d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 523d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 524d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 525d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Status code assists in presenting notification messages. The following link provides the 526d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * list of existing error codes (@link http://www.jabber.org/jeps/jep-0045.html#errorstatus). 527d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 528d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Gaston Dombiak 529d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 530d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public static class Status { 531d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String code; 532d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 533d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 534d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Creates a new instance of Status with the specified code. 535d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 536d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param code the code that uniquely identifies the reason of the error. 537d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 538d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public Status(String code) { 539d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.code = code; 540d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 541d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 542d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 543d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the code that uniquely identifies the reason of the error. The code 544d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * assists in presenting notification messages. 545d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 546d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the code that uniquely identifies the reason of the error. 547d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 548d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getCode() { 549d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return code; 550d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 551d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 552d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String toXML() { 553d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen StringBuilder buf = new StringBuilder(); 554d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<status code=\"").append(getCode()).append("\"/>"); 555d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return buf.toString(); 556d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 557d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 558d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 559d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 560d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Represents a notification that the room has been destroyed. After a room has been destroyed, 561d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * the room occupants will receive a Presence packet of type 'unavailable' with the reason for 562d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * the room destruction if provided by the room owner. 563d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 564d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Gaston Dombiak 565d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 566d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public static class Destroy { 567d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String reason; 568d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String jid; 569d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 570d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 571d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 572d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the JID of an alternate location since the current room is being destroyed. 573d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 574d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the JID of an alternate location. 575d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 576d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getJid() { 577d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return jid; 578d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 579d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 580d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 581d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the reason for the room destruction. 582d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 583d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return the reason for the room destruction. 584d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 585d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getReason() { 586d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return reason; 587d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 588d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 589d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 590d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the JID of an alternate location since the current room is being destroyed. 591d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 592d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param jid the JID of an alternate location. 593d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 594d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setJid(String jid) { 595d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.jid = jid; 596d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 597d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 598d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 599d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Sets the reason for the room destruction. 600d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 601d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param reason the reason for the room destruction. 602d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 603d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setReason(String reason) { 604d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.reason = reason; 605d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 606d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 607d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String toXML() { 608d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen StringBuilder buf = new StringBuilder(); 609d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<destroy"); 610d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getJid() != null) { 611d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(" jid=\"").append(getJid()).append("\""); 612d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 613d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getReason() == null) { 614d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("/>"); 615d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 616d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen else { 617d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(">"); 618d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getReason() != null) { 619d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<reason>").append(getReason()).append("</reason>"); 620d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 621d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("</destroy>"); 622d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 623d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return buf.toString(); 624d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 625d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 626d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 627d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}