/* * Jicofo, the Jitsi Conference Focus. * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jitsi.jicofo.log; import net.java.sip.communicator.impl.protocol.jabber.extensions.*; import java.util.*; /** * Implements a <tt>PacketExtension</tt> that represents a XEP-0337 log message. * * @author Boris Grozev */ public class LogPacketExtension extends AbstractPacketExtension { /** * The name of the "log" element. */ public static final String LOG_ELEM_NAME = "log"; /** * The namespace. */ public static final String NAMESPACE = "urn:xmpp:eventlog"; /** * The name of the "id" atttibute. */ public static final String ID_ATTR_NAME = "id"; /** * The name of the "message" element. */ public static final String MESSAGE_ELEM_NAME = "message"; /** * The name of the "tag" element. */ public static final String TAG_ELEM_NAME = "tag"; /** * Holds the text content of the "message" element. */ private String message = null; /** * Holds the "tags". */ private Map<String, String> tags = new HashMap<String,String>(); /** * Initializes a new <tt>LogPacketExtension</tt>. */ protected LogPacketExtension() { super(NAMESPACE, LOG_ELEM_NAME); } /** * Returns the ID of this <tt>LogPacketExtension</tt> * * @return the ID of this <tt>LogPacketExtension</tt> */ public String getID() { return getAttributeAsString(ID_ATTR_NAME); } /** * Gets this <tt>LogPacketExtension</tt>'s "tags" as a map. * * @return this <tt>LogPacketExtension</tt>'s "tags" as a map. */ public Map<String, String> getTags() { return tags; } /** * Gets the text content of the "message" child element of this * <tt>LogPacketExtension</tt>. * @return the text content of the "message" child element of this * <tt>LogPacketExtension</tt>. */ public String getMessage() { return message; } /** * Sets the text content of the "message" child element of this * <tt>LogPacketExtension</tt>. */ public void setMessage(String message) { this.message = message; } /** * Adds a "tag" to this <tt>LogPacketExtension</tt>. * @param name the name of the tag. * @param value the value of the tag. */ public void addTag(String name, String value) { tags.put(name, value); } /** * Gets the value of a tag with a given name. * @param name the name of the tag for which to get the value. * @return the value of the tag with value <tt>value</tt>. */ public String getTagValue(String name) { return tags.get(name); } /** * {@inheritDoc} * * Note: not tested */ @Override public String toXML() { StringBuilder builder = new StringBuilder(); builder.append("<").append(LOG_ELEM_NAME).append(" ") .append("xmlns='").append(NAMESPACE).append("'"); for(Map.Entry<String, Object> entry : attributes.entrySet()) { builder.append(" ").append(entry.getKey()).append("='") .append(entry.getValue()).append("'"); } builder.append("><").append(MESSAGE_ELEM_NAME).append(">") .append(message).append("</").append(MESSAGE_ELEM_NAME).append(">"); for (Map.Entry<String, String> entry : tags.entrySet()) { builder.append("<").append(TAG_ELEM_NAME) .append(" name='").append(entry.getKey()) .append("' value='").append(entry.getValue()) .append("'/>"); } return builder.toString(); } }