1 /** 2 * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); 3 * you may not use this file except in compliance with the License. 4 * You may obtain a copy of the License at 5 * 6 * http://www.apache.org/licenses/LICENSE-2.0 7 * 8 * Unless required by applicable law or agreed to in writing, software 9 * distributed under the License is distributed on an "AS IS" BASIS, 10 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 * See the License for the specific language governing permissions and 12 * limitations under the License. 13 */ 14 package org.jivesoftware.smackx.pubsub; 15 16 import org.jivesoftware.smack.Connection; 17 import org.jivesoftware.smack.packet.PacketExtension; 18 19 /** 20 * Represents a affiliation between a user and a node, where the {@link #type} defines 21 * the type of affiliation. 22 * 23 * Affiliations are retrieved from the {@link PubSubManager#getAffiliations()} method, which 24 * gets affiliations for the calling user, based on the identity that is associated with 25 * the {@link Connection}. 26 * 27 * @author Robin Collier 28 */ 29 public class Affiliation implements PacketExtension 30 { 31 protected String jid; 32 protected String node; 33 protected Type type; 34 35 public enum Type 36 { 37 member, none, outcast, owner, publisher 38 } 39 40 /** 41 * Constructs an affiliation. 42 * 43 * @param jid The JID with affiliation. 44 * @param affiliation The type of affiliation. 45 */ 46 public Affiliation(String jid, Type affiliation) 47 { 48 this(jid, null, affiliation); 49 } 50 51 /** 52 * Constructs an affiliation. 53 * 54 * @param jid The JID with affiliation. 55 * @param node The node with affiliation. 56 * @param affiliation The type of affiliation. 57 */ 58 public Affiliation(String jid, String node, Type affiliation) 59 { 60 this.jid = jid; 61 this.node = node; 62 type = affiliation; 63 } 64 65 public String getJid() 66 { 67 return jid; 68 } 69 70 public String getNode() 71 { 72 return node; 73 } 74 75 public Type getType() 76 { 77 return type; 78 } 79 80 public String getElementName() 81 { 82 return "affiliation"; 83 } 84 85 public String getNamespace() 86 { 87 return null; 88 } 89 90 public String toXML() 91 { 92 StringBuilder builder = new StringBuilder("<"); 93 builder.append(getElementName()); 94 if (node != null) 95 appendAttribute(builder, "node", node); 96 appendAttribute(builder, "jid", jid); 97 appendAttribute(builder, "affiliation", type.toString()); 98 99 builder.append("/>"); 100 return builder.toString(); 101 } 102 103 private void appendAttribute(StringBuilder builder, String att, String value) 104 { 105 builder.append(" "); 106 builder.append(att); 107 builder.append("='"); 108 builder.append(value); 109 builder.append("'"); 110 } 111 } 112