/** * Licensed under the Artistic License; you may not use this file * except in compliance with the License. * You may obtain a copy of the License at * * http://displaytag.sourceforge.net/license.html * * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ package org.displaytag.util; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * Extends Map providing only a different toString() method which can be used in printing attributes inside an html tag. * @author Fabrizio Giustina * @version $Revision$ ($Author$) */ public class HtmlAttributeMap extends HashMap { /** * D1597A17A6. */ private static final long serialVersionUID = 899149338534L; /** * Attribute value delimiter. */ private static final char DELIMITER = '"'; /** * character between name and value. */ private static final char EQUALS = '='; /** * space before any attribute. */ private static final char SPACE = ' '; /** * toString method: returns attributes in the format: attributename="attributevalue" attr2="attrValue2" ... * @return String representation of the HtmlAttributeMap */ public String toString() { // fast exit when no attribute are present if (size() == 0) { return TagConstants.EMPTY_STRING; } // buffer extimated in number of attributes * 30 StringBuffer buffer = new StringBuffer(size() * 30); // get the entrySet Set entrySet = entrySet(); Iterator<Map.Entry<Object, Object>> iterator = entrySet.iterator(); // iterates on attributes while (iterator.hasNext()) { Map.Entry<Object, Object> entry = iterator.next(); // append a new atribute buffer .append(SPACE) .append(entry.getKey()) .append(EQUALS) .append(DELIMITER) .append(entry.getValue()) .append(DELIMITER); } // return return buffer.toString(); } }