diff -r 0c284726a77d -r 248a98c13ca4 java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java --- a/java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java Fri Jan 03 00:27:16 2014 +0100 +++ b/java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java Fri Jan 03 21:36:00 2014 +0100 @@ -36,7 +36,7 @@ public static final String PROPERTY_ASCII = "ascii"; public static final String PROPERTY_COLORFUL = "color"; public static final String PROPERTY_TRIM = "trim"; - private ColorfulPrintWriter out; + protected ColorfulPrintWriter out; private boolean firstResult = true; private int[] columnWidth; /** @@ -139,6 +139,10 @@ @Override public void writeColumnValue(Object value) { super.writeColumnValue(value); + writeColumnValueInternal(value); + } + + protected void writeColumnValueInternal(Object value) { if (isCurrentColumnFirst()) { printTableIndent(); @@ -147,14 +151,8 @@ printTableBorder(" │ "); } - String[] valueParts = toString(value).split("\n"); - for (int i = 0; i < valueParts.length; i++) { - String valuePart = valueParts[i]; - out.print(TerminalColor.Cyan, valuePart); - if (i < valueParts.length - 1) { - out.print(TerminalColor.Red, "↲"); - } - } + String valueString = toString(value); + printValueWithNewLinesReplaced(valueString); if (isCurrentColumnLast()) { printTableBorder(" │"); @@ -162,7 +160,7 @@ } - private int getColumnWidth(int columnNumber) { + protected int getColumnWidth(int columnNumber) { return columnWidth[columnNumber - 1]; } @@ -196,6 +194,10 @@ @Override public void writeEndRow() { super.writeEndRow(); + writeEndRowInternal(); + } + + public void writeEndRowInternal() { out.println(); out.flush(); } @@ -253,7 +255,7 @@ } } - private void printTableBorder(String border) { + protected void printTableBorder(String border) { if (asciiNostalgia) { border = border.replaceAll("─", "-"); border = border.replaceAll("│", "|"); @@ -263,7 +265,18 @@ out.print(TerminalColor.Green, border); } - private void printTableIndent() { + protected void printTableIndent() { out.print(" "); } + + protected void printValueWithNewLinesReplaced(String valueString) { + String[] valueParts = valueString.split("\n"); + for (int i = 0; i < valueParts.length; i++) { + String valuePart = valueParts[i]; + out.print(TerminalColor.Cyan, valuePart); + if (i < valueParts.length - 1) { + out.print(TerminalColor.Red, "↲"); + } + } + } }