java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java
branchv_0
changeset 37 9e6f8e5d5f98
parent 34 9335cf31c0f2
child 39 be8db46a38c3
--- a/java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java	Mon Dec 23 00:14:29 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java	Mon Dec 23 11:50:24 2013 +0100
@@ -18,6 +18,7 @@
 package info.globalcode.sql.dk.formatting;
 
 import info.globalcode.sql.dk.ColorfulPrintWriter;
+import static info.globalcode.sql.dk.ColorfulPrintWriter.*;
 
 /**
  *
@@ -27,6 +28,7 @@
 
 	public static final String NAME = "tabular";
 	private ColorfulPrintWriter out;
+	private boolean firstResult = true;
 
 	public TabularFormatter(FormatterContext formatterContext) {
 		super(formatterContext);
@@ -34,14 +36,37 @@
 	}
 
 	@Override
+	public void writeStartResultSet() {
+		super.writeStartResultSet();
+		printResultSeparator();
+	}
+
+	@Override
+	public void writeColumnsHeader(ColumnsHeader header) {
+		super.writeColumnsHeader(header);
+
+		for (ColumnDescriptor cd : header.getColumnDescriptors()) {
+			out.print(TerminalStyle.Bright, cd.getLabel());
+			out.print(" (");
+			out.print(cd.getTypeName());
+			out.print(")");
+			if (!cd.isLastColumn()) {
+				out.print(TerminalColor.Green, " | ");
+			}
+		}
+		out.println();
+		out.flush();
+	}
+
+	@Override
 	public void writeColumnValue(Object value) {
 		super.writeColumnValue(value);
 
 		if (!isCurrentColumnFirst()) {
-			out.print(ColorfulPrintWriter.TerminalColor.Green, " | ");
+			out.print(TerminalColor.Green, " | ");
 		}
-		
-		out.print(ColorfulPrintWriter.TerminalColor.Cyan, String.valueOf(value));
+
+		out.print(TerminalColor.Cyan, String.valueOf(value));
 	}
 
 	@Override
@@ -50,4 +75,40 @@
 		out.println();
 		out.flush();
 	}
+
+	@Override
+	public void writeEndResultSet() {
+		super.writeEndResultSet();
+		out.print(TerminalColor.Yellow, "Record count: ");
+		out.println(getCurrentRowCount());
+		out.flush();
+	}
+
+	@Override
+	public void writeStartUpdatesResult() {
+		super.writeStartUpdatesResult();
+		printResultSeparator();
+	}
+
+	@Override
+	public void writeUpdatedRowsCount(int updatedRowsCount) {
+		super.writeUpdatedRowsCount(updatedRowsCount);
+		out.print(TerminalColor.Red, "Updated records: ");
+		out.println(updatedRowsCount);
+		out.flush();
+	}
+
+	@Override
+	public void writeEndDatabase() {
+		super.writeEndDatabase();
+		out.flush();
+	}
+
+	private void printResultSeparator() {
+		if (firstResult) {
+			firstResult = false;
+		} else {
+			out.println();
+		}
+	}
 }