diff options
Diffstat (limited to '')
-rw-r--r-- | src/de/gultsch/chat/xml/Tag.java | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/src/de/gultsch/chat/xml/Tag.java b/src/de/gultsch/chat/xml/Tag.java new file mode 100644 index 00000000..275229cf --- /dev/null +++ b/src/de/gultsch/chat/xml/Tag.java @@ -0,0 +1,99 @@ +package de.gultsch.chat.xml; + +import java.util.Hashtable; +import java.util.Iterator; +import java.util.Map.Entry; +import java.util.Set; + +public class Tag { + public static final int NO = -1; + public static final int START = 0; + public static final int END = 1; + public static final int EMPTY = 2; + + protected int type; + protected String name; + protected Hashtable<String, String> attributes = new Hashtable<String, String>(); + + protected Tag(int type, String name) { + this.type = type; + this.name = name; + } + + + public static Tag no(String text) { + return new Tag(NO,text); + } + + public static Tag start(String name) { + return new Tag(START,name); + } + + public static Tag end(String name) { + return new Tag(END,name); + } + + public static Tag empty(String name) { + return new Tag(EMPTY,name); + } + + public String getName() { + return name; + } + + public String getAttribute(String attrName) { + return this.attributes.get(attrName); + } + + public Tag setAttribute(String attrName, String attrValue) { + this.attributes.put(attrName, attrValue); + return this; + } + + public Tag setAtttributes(Hashtable<String, String> attributes) { + this.attributes = attributes; + return this; + } + + public boolean isStart(String needle) { + return (this.type == START) && (this.name.equals(needle)); + } + + public boolean isEnd(String needle) { + return (this.type == END) && (this.name.equals(needle)); + } + + public boolean isNo() { + return (this.type == NO); + } + + public String toString() { + StringBuilder tagOutput = new StringBuilder(); + tagOutput.append('<'); + if (type==END) { + tagOutput.append('/'); + } + tagOutput.append(name); + if(type!=END) { + Set<Entry<String, String>> attributeSet = attributes.entrySet(); + Iterator<Entry<String, String>> it = attributeSet.iterator(); + while(it.hasNext()) { + Entry<String,String> entry = it.next(); + tagOutput.append(' '); + tagOutput.append(entry.getKey()); + tagOutput.append("=\""); + tagOutput.append(entry.getValue()); + tagOutput.append('"'); + } + } + if (type==EMPTY) { + tagOutput.append('/'); + } + tagOutput.append('>'); + return tagOutput.toString(); + } + + public Hashtable<String, String> getAttributes() { + return this.attributes; + } +} |