1.1 --- a/java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java Mon Dec 23 12:16:22 2013 +0100
1.2 +++ b/java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java Mon Dec 23 16:14:03 2013 +0100
1.3 @@ -21,6 +21,7 @@
1.4 import static info.globalcode.sql.dk.ColorfulPrintWriter.*;
1.5 import static info.globalcode.sql.dk.Functions.lpad;
1.6 import static info.globalcode.sql.dk.Functions.rpad;
1.7 +import static info.globalcode.sql.dk.Functions.repeat;
1.8
1.9 /**
1.10 *
1.11 @@ -52,18 +53,48 @@
1.12
1.13 columnWidth = new int[header.getColumnCount()];
1.14
1.15 + printTableIndent();
1.16 + printTableBorder("╭");
1.17 for (ColumnDescriptor cd : header.getColumnDescriptors()) {
1.18 + setColumnWidth(cd.getColumnNumber(), cd.getLabel().length() + cd.getTypeName().length() + HEADER_TYPE_PREFIX.length() + HEADER_TYPE_SUFFIX.length());
1.19 + if (!cd.isFirstColumn()) {
1.20 + printTableBorder("┬");
1.21 + }
1.22 + printTableBorder(repeat('─', getColumnWidth(cd.getColumnNumber()) + 2));
1.23 + }
1.24 + printTableBorder("╮");
1.25 + out.println();
1.26 +
1.27 + for (ColumnDescriptor cd : header.getColumnDescriptors()) {
1.28 + if (cd.isFirstColumn()) {
1.29 + printTableIndent();
1.30 + printTableBorder("│ ");
1.31 + } else {
1.32 + printTableBorder(" │ ");
1.33 + }
1.34 out.print(TerminalStyle.Bright, cd.getLabel());
1.35 out.print(HEADER_TYPE_PREFIX);
1.36 out.print(cd.getTypeName());
1.37 out.print(HEADER_TYPE_SUFFIX);
1.38 - if (!cd.isLastColumn()) {
1.39 - out.print(TerminalColor.Green, " | ");
1.40 + if (cd.isLastColumn()) {
1.41 + printTableBorder(" │");
1.42 }
1.43
1.44 setColumnWidth(cd.getColumnNumber(), cd.getLabel().length() + cd.getTypeName().length() + HEADER_TYPE_PREFIX.length() + HEADER_TYPE_SUFFIX.length());
1.45 }
1.46 out.println();
1.47 +
1.48 + printTableIndent();
1.49 + printTableBorder("├");
1.50 + for (int i = 1; i <= header.getColumnCount(); i++) {
1.51 + if (i > 1) {
1.52 + printTableBorder("┼");
1.53 + }
1.54 + printTableBorder(repeat('─', getColumnWidth(i) + 2));
1.55 + }
1.56 + printTableBorder("┤");
1.57 + out.println();
1.58 +
1.59 out.flush();
1.60 }
1.61
1.62 @@ -71,11 +102,19 @@
1.63 public void writeColumnValue(Object value) {
1.64 super.writeColumnValue(value);
1.65
1.66 - if (!isCurrentColumnFirst()) {
1.67 - out.print(TerminalColor.Green, " | ");
1.68 + if (isCurrentColumnFirst()) {
1.69 + printTableIndent();
1.70 + printTableBorder("│ ");
1.71 + } else {
1.72 + printTableBorder(" │ ");
1.73 }
1.74
1.75 out.print(TerminalColor.Cyan, toString(value));
1.76 +
1.77 + if (isCurrentColumnLast()) {
1.78 + printTableBorder(" │");
1.79 + }
1.80 +
1.81 }
1.82
1.83 private int getColumnWidth(int columnNumber) {
1.84 @@ -100,6 +139,7 @@
1.85 } else {
1.86 return rpad(super.toString(value), width);
1.87 }
1.88 + // ? value = (boolean) value ? "✔" : "✗";
1.89 }
1.90
1.91 @Override
1.92 @@ -111,9 +151,24 @@
1.93
1.94 @Override
1.95 public void writeEndResultSet() {
1.96 + int columnCount = getCurrentColumnsHeader().getColumnCount();
1.97 super.writeEndResultSet();
1.98 +
1.99 + printTableIndent();
1.100 + printTableBorder("╰");
1.101 + for (int i = 1; i <= columnCount; i++) {
1.102 + if (i > 1) {
1.103 + printTableBorder("┴");
1.104 + }
1.105 + printTableBorder(repeat('─', getColumnWidth(i) + 2));
1.106 + }
1.107 + printTableBorder("╯");
1.108 + out.println();
1.109 +
1.110 +
1.111 out.print(TerminalColor.Yellow, "Record count: ");
1.112 out.println(getCurrentRowCount());
1.113 + out.bell();
1.114 out.flush();
1.115 }
1.116
1.117 @@ -128,6 +183,7 @@
1.118 super.writeUpdatedRowsCount(updatedRowsCount);
1.119 out.print(TerminalColor.Red, "Updated records: ");
1.120 out.println(updatedRowsCount);
1.121 + out.bell();
1.122 out.flush();
1.123 }
1.124
1.125 @@ -144,4 +200,12 @@
1.126 out.println();
1.127 }
1.128 }
1.129 +
1.130 + private void printTableBorder(String border) {
1.131 + out.print(TerminalColor.Green, border);
1.132 + }
1.133 +
1.134 + private void printTableIndent() {
1.135 + out.print(" ");
1.136 + }
1.137 }