--- a/java/sql-dk/src/info/globalcode/sql/dk/formatting/XhtmlFormatter.java Sat Jan 04 22:38:59 2014 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/formatting/XhtmlFormatter.java Sat Jan 04 23:27:17 2014 +0100
@@ -25,9 +25,11 @@
import info.globalcode.sql.dk.configuration.Properties;
import info.globalcode.sql.dk.configuration.Property;
import static info.globalcode.sql.dk.formatting.AbstractXmlFormatter.qname;
+import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Scanner;
import javax.xml.namespace.QName;
/**
@@ -37,6 +39,7 @@
public class XhtmlFormatter extends AbstractXmlFormatter {
public static final String NAME = "xhtml"; // bash-completion:formatter
+ private static final String CSS_FILE = "info/globalcode/sql/dk/formatter/XhtmlFormatter.css";
private int resultSetCounter = 0;
private int updatesResultCounter = 0;
@@ -64,11 +67,25 @@
printStartElement(qname("head"));
printTextElement(qname("title"), null, Constants.PROGRAM_NAME + ": batch results");
+ printCss();
printEndElement();
printStartElement(qname("body"));
}
+ private void printCss() {
+
+ try (Scanner css = new Scanner(getClass().getClassLoader().getResourceAsStream(CSS_FILE))) {
+ Map<QName, String> attributes = new HashMap<>(1);
+ attributes.put(qname("type"), "text/css");
+ printStartElement(qname("style"), attributes);
+ while (css.hasNext()) {
+ printText(css.nextLine(), true);
+ }
+ printEndElement();
+ }
+ }
+
@Override
public void writeEndBatch() {
super.writeEndBatch();
@@ -81,6 +98,11 @@
public void writeStartDatabase(DatabaseDefinition databaseDefinition) {
super.writeStartDatabase(databaseDefinition);
printTextElement(qname("h1"), null, "Database: " + databaseDefinition.getName());
+
+ printStartElement(qname("p"));
+ printText("This is XHTML output of batch executed at: ", true);
+ printText(new Date().toString(), true);
+ printEndElement();
}
@Override
@@ -101,9 +123,9 @@
printStartElement(qname("table"));
- printStartElement(qname("theader"));
+ printStartElement(qname("thead"));
printStartElement(qname("tr"));
- printTextElement(qname("td"), null, "number/name");
+ printTextElement(qname("td"), null, "id");
printTextElement(qname("td"), null, "type");
printTextElement(qname("td"), null, "value");
printEndElement();
@@ -121,7 +143,7 @@
}
printTextElement(qname("td"), null, numberOrName);
printTextElement(qname("td"), null, p.getType().name());
- printTextElement(qname("td"), null, toString(p.getValue()));
+ printTableData(p.getValue());
printEndElement();
}
printEndElement();
@@ -130,12 +152,20 @@
}
}
+ private void printTableData(Object value) {
+ Map<QName, String> attributes = new HashMap<>(1);
+ if (value instanceof Number || value instanceof Boolean) {
+ attributes.put(qname("class"), "number");
+ }
+ printTextElement(qname("td"), attributes, String.valueOf(value));
+ }
+
@Override
public void writeColumnsHeader(ColumnsHeader header) {
super.writeColumnsHeader(header);
printTextElement(qname("h3"), null, "Data:");
printStartElement(qname("table"));
- printStartElement(qname("theader"));
+ printStartElement(qname("thead"));
printStartElement(qname("tr"));
for (ColumnDescriptor cd : header.getColumnDescriptors()) {
// TODO: type
@@ -156,7 +186,7 @@
@Override
public void writeColumnValue(Object value) {
super.writeColumnValue(value);
- printTextElement(qname("td"), null, toString(value));
+ printTableData(value);
}
@Override
@@ -169,7 +199,8 @@
public void writeStartResultSet() {
super.writeStartResultSet();
resultSetCounter++;
- printTextElement(qname("h2"), null, "Result set " + resultSetCounter);
+ printEmptyElement(qname("hr"), null);
+ printTextElement(qname("h2"), null, "Result set #" + resultSetCounter);
}
@Override
@@ -177,13 +208,16 @@
super.writeEndResultSet();
printEndElement();
printEndElement();
+
+ printTextElement(qname("p"), null, "Record count: " + getCurrentRowCount());
}
@Override
public void writeStartUpdatesResult() {
super.writeStartUpdatesResult();
updatesResultCounter++;
- printTextElement(qname("h2"), null, "Updates result " + updatesResultCounter);
+ printEmptyElement(qname("hr"), null);
+ printTextElement(qname("h2"), null, "Updates result #" + updatesResultCounter);
}
@Override
@@ -191,8 +225,4 @@
super.writeUpdatedRowsCount(updatedRowsCount);
printTextElement(qname("p"), null, "Updated rows: " + updatedRowsCount);
}
-
- protected String toString(Object value) {
- return String.valueOf(value);
- }
}