diff -r 025fbe816bbf -r 9e6f8e5d5f98 java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java --- a/java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java Mon Dec 23 00:14:29 2013 +0100 +++ b/java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java Mon Dec 23 11:50:24 2013 +0100 @@ -18,6 +18,7 @@ package info.globalcode.sql.dk.formatting; import info.globalcode.sql.dk.ColorfulPrintWriter; +import static info.globalcode.sql.dk.ColorfulPrintWriter.*; /** * @@ -27,6 +28,7 @@ public static final String NAME = "tabular"; private ColorfulPrintWriter out; + private boolean firstResult = true; public TabularFormatter(FormatterContext formatterContext) { super(formatterContext); @@ -34,14 +36,37 @@ } @Override + public void writeStartResultSet() { + super.writeStartResultSet(); + printResultSeparator(); + } + + @Override + public void writeColumnsHeader(ColumnsHeader header) { + super.writeColumnsHeader(header); + + for (ColumnDescriptor cd : header.getColumnDescriptors()) { + out.print(TerminalStyle.Bright, cd.getLabel()); + out.print(" ("); + out.print(cd.getTypeName()); + out.print(")"); + if (!cd.isLastColumn()) { + out.print(TerminalColor.Green, " | "); + } + } + out.println(); + out.flush(); + } + + @Override public void writeColumnValue(Object value) { super.writeColumnValue(value); if (!isCurrentColumnFirst()) { - out.print(ColorfulPrintWriter.TerminalColor.Green, " | "); + out.print(TerminalColor.Green, " | "); } - - out.print(ColorfulPrintWriter.TerminalColor.Cyan, String.valueOf(value)); + + out.print(TerminalColor.Cyan, String.valueOf(value)); } @Override @@ -50,4 +75,40 @@ out.println(); out.flush(); } + + @Override + public void writeEndResultSet() { + super.writeEndResultSet(); + out.print(TerminalColor.Yellow, "Record count: "); + out.println(getCurrentRowCount()); + out.flush(); + } + + @Override + public void writeStartUpdatesResult() { + super.writeStartUpdatesResult(); + printResultSeparator(); + } + + @Override + public void writeUpdatedRowsCount(int updatedRowsCount) { + super.writeUpdatedRowsCount(updatedRowsCount); + out.print(TerminalColor.Red, "Updated records: "); + out.println(updatedRowsCount); + out.flush(); + } + + @Override + public void writeEndDatabase() { + super.writeEndDatabase(); + out.flush(); + } + + private void printResultSeparator() { + if (firstResult) { + firstResult = false; + } else { + out.println(); + } + } }