package jeql.command.io.kml;
import java.io.PrintWriter;
import jeql.api.row.Row;
import jeql.command.io.xml.XmlDataWriter;
import jeql.util.StringUtil;
public class XMLWriter
{
public static void writeElement(PrintWriter writer,
int indent, String tagName, String val)
{
if (val == null) return;
writer.print(StringUtil.stringOf(' ', indent));
writer.print("<");
writer.print(tagName);
writer.print(">");
writer.print(val.toString());
writer.print("</");
writer.print(tagName);
writer.println(">");
}
public static void writeElementNonEmpty(PrintWriter writer,
int indent, String tagName, String val)
{
if (val == null) return;
if (val.length() <= 0) return;
writeElement(writer, indent, tagName, val);
}
public static String xmlEncode(String val)
{
if (! XmlDataWriter.hasReservedTextChars(val))
return val;
// if text contains CDATA terminator, it must be encoded
String encText = val.replaceAll("]]>", "]]>");
return "<![CDATA[" + encText + "]]>";
}
static String indentStr(int indent)
{
return StringUtil.stringOf(' ', indent);
}
public static void writeElement(PrintWriter writer,
int indent, String tagName, String valStr, boolean encode)
{
// don't output if null
if (valStr == null) return;
writer.print(StringUtil.stringOf(' ', indent));
writer.print("<");
writer.print(tagName);
writer.print(">");
if (encode)
writer.print(xmlEncode(valStr.toString()));
else
writer.print(valStr.toString());
writer.print("</");
writer.print(tagName);
writer.println(">");
}
public static void writeElement(PrintWriter writer,
int indent, String tagName, int colIndex,
Row row, String defaultVal, boolean encode)
{
String valStr;
// use default if column is missing
if (colIndex < 0) {
valStr = defaultVal;
}
else {
valStr = row.getValue(colIndex).toString();
}
writeElement(writer, indent, tagName, valStr, encode);
}
}