/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2004-2008, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotools.validation.xml;
import java.io.IOException;
import java.io.Writer;
import java.util.Iterator;
import java.util.Map;
import java.util.logging.Logger;
/**
* WriterUtils purpose.
*
* <p>
* Used to provide assitance writing xml to a Writer.
* </p>
*
* <p></p>
*
* @author dzwiers, Refractions Research, Inc.
* @source $URL$
* @version $Id$
*/
class WriterUtils {
/** Used internally to create log information to detect errors. */
private static final Logger LOGGER = org.geotools.util.logging.Logging.getLogger(
"org.vfny.geoserver.global");
/** The output writer. */
protected Writer writer;
/**
* WriterUtils constructor.
*
* <p>
* Should never be called.
* </p>
*/
protected WriterUtils() {
}
/**
* WriterUtils constructor.
*
* <p>
* Stores the specified writer to use for output.
* </p>
*
* @param writer the writer which will be used for outputing the xml.
*/
public WriterUtils(Writer writer) {
//LOGGER.finest("In constructor WriterHelper");
this.writer = writer;
}
/**
* write purpose.
*
* <p>
* Writes the String specified to the stored output writer.
* </p>
*
* @param s The String to write.
*
* @throws IOException When an IO exception occurs.
*/
public void write(String s) throws IOException {
writer.write(s);
writer.flush();
}
/**
* writeln purpose.
*
* <p>
* Writes the String specified to the stored output writer.
* </p>
*
* @param s The String to write.
*
* @throws IOException When an IO exception occurs.
*/
public void writeln(String s) throws IOException {
writer.write(s + "\n");
writer.flush();
}
/**
* openTag purpose.
*
* <p>
* Writes an open xml tag with the name specified to the stored output
* writer.
* </p>
*
* @param tagName The tag name to write.
*
* @throws IOException When an IO exception occurs.
*/
public void openTag(String tagName) throws IOException {
writeln("<" + tagName + ">");
}
/**
* openTag purpose.
*
* <p>
* Writes an open xml tag with the name and attributes specified to the
* stored output writer.
* </p>
*
* @param tagName The tag name to write.
* @param attributes The tag attributes to write.
*
* @throws IOException When an IO exception occurs.
*/
public void openTag(String tagName, Map attributes)
throws IOException {
write("<" + tagName + " ");
Iterator i = attributes.keySet().iterator();
while (i.hasNext()) {
String s = (String) i.next();
write(s + " = " + "\"" + (attributes.get(s)).toString() + "\" ");
}
writeln(">");
}
/**
* closeTag purpose.
*
* <p>
* Writes an close xml tag with the name specified to the stored output
* writer.
* </p>
*
* @param tagName The tag name to write.
*
* @throws IOException When an IO exception occurs.
*/
public void closeTag(String tagName) throws IOException {
writeln("</" + tagName + ">");
}
/**
* textTag purpose.
*
* <p>
* Writes a text xml tag with the name and text specified to the stored
* output writer.
* </p>
*
* @param tagName The tag name to write.
* @param data The text data to write.
*
* @throws IOException When an IO exception occurs.
*/
public void textTag(String tagName, String data) throws IOException {
writeln("<" + tagName + ">" + data + "</" + tagName + ">");
}
/**
* valueTag purpose.
*
* <p>
* Writes an xml tag with the name and value specified to the stored output
* writer.
* </p>
*
* @param tagName The tag name to write.
* @param value The text data to write.
*
* @throws IOException When an IO exception occurs.
*/
public void valueTag(String tagName, String value)
throws IOException {
writeln("<" + tagName + " value = \"" + value + "\" />");
}
/**
* attrTag purpose.
*
* <p>
* Writes an xml tag with the name and attributes specified to the stored
* output writer.
* </p>
*
* @param tagName The tag name to write.
* @param attributes The tag attributes to write.
*
* @throws IOException When an IO exception occurs.
*/
public void attrTag(String tagName, Map attributes)
throws IOException {
write("<" + tagName + " ");
Iterator i = attributes.keySet().iterator();
while (i.hasNext()) {
String s = (String) i.next();
write(s + " = " + "\"" + (attributes.get(s)).toString() + "\" ");
}
write(" />");
}
/**
* textTag purpose.
*
* <p>
* Writes an xml tag with the name, text and attributes specified to the
* stored output writer.
* </p>
*
* @param tagName The tag name to write.
* @param attributes The tag attributes to write.
* @param data The tag text to write.
*
* @throws IOException When an IO exception occurs.
*/
public void textTag(String tagName, Map attributes, String data)
throws IOException {
write("<" + tagName + " ");
Iterator i = attributes.keySet().iterator();
while (i.hasNext()) {
String s = (String) i.next();
write(s + " = " + "\"" + (attributes.get(s)).toString() + "\" ");
}
write(">" + data + "</" + tagName + ">");
}
/**
* comment purpose.
*
* <p>
* Writes an xml comment with the text specified to the stored output
* writer.
* </p>
*
* @param comment The comment text to write.
*
* @throws IOException When an IO exception occurs.
*/
public void comment(String comment) throws IOException {
writeln("<!--");
writeln(comment);
writeln("-->");
}
}