java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java
branchv_0
changeset 123 248a98c13ca4
parent 104 245f1b88a3e6
child 124 9277b02a3b02
     1.1 --- a/java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java	Fri Jan 03 00:27:16 2014 +0100
     1.2 +++ b/java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java	Fri Jan 03 21:36:00 2014 +0100
     1.3 @@ -36,7 +36,7 @@
     1.4  	public static final String PROPERTY_ASCII = "ascii";
     1.5  	public static final String PROPERTY_COLORFUL = "color";
     1.6  	public static final String PROPERTY_TRIM = "trim";
     1.7 -	private ColorfulPrintWriter out;
     1.8 +	protected ColorfulPrintWriter out;
     1.9  	private boolean firstResult = true;
    1.10  	private int[] columnWidth;
    1.11  	/**
    1.12 @@ -139,6 +139,10 @@
    1.13  	@Override
    1.14  	public void writeColumnValue(Object value) {
    1.15  		super.writeColumnValue(value);
    1.16 +		writeColumnValueInternal(value);
    1.17 +	}
    1.18 +
    1.19 +	protected void writeColumnValueInternal(Object value) {
    1.20  
    1.21  		if (isCurrentColumnFirst()) {
    1.22  			printTableIndent();
    1.23 @@ -147,14 +151,8 @@
    1.24  			printTableBorder(" │ ");
    1.25  		}
    1.26  
    1.27 -		String[] valueParts = toString(value).split("\n");
    1.28 -		for (int i = 0; i < valueParts.length; i++) {
    1.29 -			String valuePart = valueParts[i];
    1.30 -			out.print(TerminalColor.Cyan, valuePart);
    1.31 -			if (i < valueParts.length - 1) {
    1.32 -				out.print(TerminalColor.Red, "↲");
    1.33 -			}
    1.34 -		}
    1.35 +		String valueString = toString(value);
    1.36 +		printValueWithNewLinesReplaced(valueString);
    1.37  
    1.38  		if (isCurrentColumnLast()) {
    1.39  			printTableBorder(" │");
    1.40 @@ -162,7 +160,7 @@
    1.41  
    1.42  	}
    1.43  
    1.44 -	private int getColumnWidth(int columnNumber) {
    1.45 +	protected int getColumnWidth(int columnNumber) {
    1.46  		return columnWidth[columnNumber - 1];
    1.47  	}
    1.48  
    1.49 @@ -196,6 +194,10 @@
    1.50  	@Override
    1.51  	public void writeEndRow() {
    1.52  		super.writeEndRow();
    1.53 +		writeEndRowInternal();
    1.54 +	}
    1.55 +
    1.56 +	public void writeEndRowInternal() {
    1.57  		out.println();
    1.58  		out.flush();
    1.59  	}
    1.60 @@ -253,7 +255,7 @@
    1.61  		}
    1.62  	}
    1.63  
    1.64 -	private void printTableBorder(String border) {
    1.65 +	protected void printTableBorder(String border) {
    1.66  		if (asciiNostalgia) {
    1.67  			border = border.replaceAll("─", "-");
    1.68  			border = border.replaceAll("│", "|");
    1.69 @@ -263,7 +265,18 @@
    1.70  		out.print(TerminalColor.Green, border);
    1.71  	}
    1.72  
    1.73 -	private void printTableIndent() {
    1.74 +	protected void printTableIndent() {
    1.75  		out.print(" ");
    1.76  	}
    1.77 +
    1.78 +	protected void printValueWithNewLinesReplaced(String valueString) {
    1.79 +		String[] valueParts = valueString.split("\n");
    1.80 +		for (int i = 0; i < valueParts.length; i++) {
    1.81 +			String valuePart = valueParts[i];
    1.82 +			out.print(TerminalColor.Cyan, valuePart);
    1.83 +			if (i < valueParts.length - 1) {
    1.84 +				out.print(TerminalColor.Red, "↲");
    1.85 +			}
    1.86 +		}
    1.87 +	}
    1.88  }