--- a/java/sql-dk/src/info/globalcode/sql/dk/formatting/XmlFormatter.java Thu Jan 16 12:23:16 2014 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/formatting/XmlFormatter.java Thu Jan 16 12:28:08 2014 +0100
@@ -20,12 +20,16 @@
import info.globalcode.sql.dk.Parameter;
import info.globalcode.sql.dk.Xmlns;
import info.globalcode.sql.dk.configuration.DatabaseDefinition;
-import static info.globalcode.sql.dk.formatting.AbstractXmlFormatter.qname;
import static info.globalcode.sql.dk.Functions.notNull;
import info.globalcode.sql.dk.NamedParameter;
+import static info.globalcode.sql.dk.formatting.AbstractXmlFormatter.qname;
+import java.sql.Array;
+import java.sql.SQLException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.xml.namespace.QName;
/**
@@ -40,6 +44,7 @@
public static final String NAME = "xml"; // bash-completion:formatter
public static final String PROPERTY_LABELED_COLUMNS = "labeledColumns";
+ private static final Logger log = Logger.getLogger(XmlFormatter.class.getName());
private final boolean labeledColumns;
public XmlFormatter(FormatterContext formatterContext) {
@@ -152,10 +157,40 @@
}
attributes.put(qname("null"), "true");
printEmptyElement(qname("column"), attributes);
+ } else if (value instanceof Array) {
+
+
+
+ Array sqlArray = (Array) value;
+ try {
+ Object[] array = (Object[]) sqlArray.getArray();
+ printStartElement(qname("column"), attributes);
+ printArray(array);
+ printEndElement();
+ } catch (SQLException e) {
+ log.log(Level.SEVERE, "Unable to format array", e);
+ writeColumnValue(String.valueOf(value));
+ }
+
+
} else {
printTextElement(qname("column"), attributes, toString(value));
}
}
+
+ private void printArray(Object[] array) {
+ printStartElement(qname("array"));
+ for (Object o : array) {
+ if (o instanceof Object[]) {
+ printStartElement(qname("item"));
+ printArray((Object[]) o);
+ printEndElement();
+ } else {
+ printTextElement(qname("item"), null, String.valueOf(o));
+ }
+ }
+ printEndElement();
+ }
@Override
public void writeEndRow() {