--- a/java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java Mon Dec 23 12:16:22 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java Mon Dec 23 16:14:03 2013 +0100
@@ -21,6 +21,7 @@
import static info.globalcode.sql.dk.ColorfulPrintWriter.*;
import static info.globalcode.sql.dk.Functions.lpad;
import static info.globalcode.sql.dk.Functions.rpad;
+import static info.globalcode.sql.dk.Functions.repeat;
/**
*
@@ -52,18 +53,48 @@
columnWidth = new int[header.getColumnCount()];
+ printTableIndent();
+ printTableBorder("╭");
for (ColumnDescriptor cd : header.getColumnDescriptors()) {
+ setColumnWidth(cd.getColumnNumber(), cd.getLabel().length() + cd.getTypeName().length() + HEADER_TYPE_PREFIX.length() + HEADER_TYPE_SUFFIX.length());
+ if (!cd.isFirstColumn()) {
+ printTableBorder("┬");
+ }
+ printTableBorder(repeat('─', getColumnWidth(cd.getColumnNumber()) + 2));
+ }
+ printTableBorder("╮");
+ out.println();
+
+ for (ColumnDescriptor cd : header.getColumnDescriptors()) {
+ if (cd.isFirstColumn()) {
+ printTableIndent();
+ printTableBorder("│ ");
+ } else {
+ printTableBorder(" │ ");
+ }
out.print(TerminalStyle.Bright, cd.getLabel());
out.print(HEADER_TYPE_PREFIX);
out.print(cd.getTypeName());
out.print(HEADER_TYPE_SUFFIX);
- if (!cd.isLastColumn()) {
- out.print(TerminalColor.Green, " | ");
+ if (cd.isLastColumn()) {
+ printTableBorder(" │");
}
setColumnWidth(cd.getColumnNumber(), cd.getLabel().length() + cd.getTypeName().length() + HEADER_TYPE_PREFIX.length() + HEADER_TYPE_SUFFIX.length());
}
out.println();
+
+ printTableIndent();
+ printTableBorder("├");
+ for (int i = 1; i <= header.getColumnCount(); i++) {
+ if (i > 1) {
+ printTableBorder("┼");
+ }
+ printTableBorder(repeat('─', getColumnWidth(i) + 2));
+ }
+ printTableBorder("┤");
+ out.println();
+
out.flush();
}
@@ -71,11 +102,19 @@
public void writeColumnValue(Object value) {
super.writeColumnValue(value);
- if (!isCurrentColumnFirst()) {
- out.print(TerminalColor.Green, " | ");
+ if (isCurrentColumnFirst()) {
+ printTableIndent();
+ printTableBorder("│ ");
+ } else {
+ printTableBorder(" │ ");
}
out.print(TerminalColor.Cyan, toString(value));
+
+ if (isCurrentColumnLast()) {
+ printTableBorder(" │");
+ }
+
}
private int getColumnWidth(int columnNumber) {
@@ -100,6 +139,7 @@
} else {
return rpad(super.toString(value), width);
}
+ // ? value = (boolean) value ? "✔" : "✗";
}
@Override
@@ -111,9 +151,24 @@
@Override
public void writeEndResultSet() {
+ int columnCount = getCurrentColumnsHeader().getColumnCount();
super.writeEndResultSet();
+
+ printTableIndent();
+ printTableBorder("╰");
+ for (int i = 1; i <= columnCount; i++) {
+ if (i > 1) {
+ printTableBorder("┴");
+ }
+ printTableBorder(repeat('─', getColumnWidth(i) + 2));
+ }
+ printTableBorder("╯");
+ out.println();
+
+
out.print(TerminalColor.Yellow, "Record count: ");
out.println(getCurrentRowCount());
+ out.bell();
out.flush();
}
@@ -128,6 +183,7 @@
super.writeUpdatedRowsCount(updatedRowsCount);
out.print(TerminalColor.Red, "Updated records: ");
out.println(updatedRowsCount);
+ out.bell();
out.flush();
}
@@ -144,4 +200,12 @@
out.println();
}
}
+
+ private void printTableBorder(String border) {
+ out.print(TerminalColor.Green, border);
+ }
+
+ private void printTableIndent() {
+ out.print(" ");
+ }
}