java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java
branchv_0
changeset 123 248a98c13ca4
parent 104 245f1b88a3e6
child 124 9277b02a3b02
--- 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, "↲");
+			}
+		}
+	}
 }