java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java
branchv_0
changeset 37 9e6f8e5d5f98
parent 34 9335cf31c0f2
child 39 be8db46a38c3
equal deleted inserted replaced
36:025fbe816bbf 37:9e6f8e5d5f98
    16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
    16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
    17  */
    17  */
    18 package info.globalcode.sql.dk.formatting;
    18 package info.globalcode.sql.dk.formatting;
    19 
    19 
    20 import info.globalcode.sql.dk.ColorfulPrintWriter;
    20 import info.globalcode.sql.dk.ColorfulPrintWriter;
       
    21 import static info.globalcode.sql.dk.ColorfulPrintWriter.*;
    21 
    22 
    22 /**
    23 /**
    23  *
    24  *
    24  * @author Ing. František Kučera (frantovo.cz)
    25  * @author Ing. František Kučera (frantovo.cz)
    25  */
    26  */
    26 public class TabularFormatter extends AbstractFormatter {
    27 public class TabularFormatter extends AbstractFormatter {
    27 
    28 
    28 	public static final String NAME = "tabular";
    29 	public static final String NAME = "tabular";
    29 	private ColorfulPrintWriter out;
    30 	private ColorfulPrintWriter out;
       
    31 	private boolean firstResult = true;
    30 
    32 
    31 	public TabularFormatter(FormatterContext formatterContext) {
    33 	public TabularFormatter(FormatterContext formatterContext) {
    32 		super(formatterContext);
    34 		super(formatterContext);
    33 		out = new ColorfulPrintWriter(formatterContext.getOutputStream());
    35 		out = new ColorfulPrintWriter(formatterContext.getOutputStream());
    34 	}
    36 	}
    35 
    37 
    36 	@Override
    38 	@Override
       
    39 	public void writeStartResultSet() {
       
    40 		super.writeStartResultSet();
       
    41 		printResultSeparator();
       
    42 	}
       
    43 
       
    44 	@Override
       
    45 	public void writeColumnsHeader(ColumnsHeader header) {
       
    46 		super.writeColumnsHeader(header);
       
    47 
       
    48 		for (ColumnDescriptor cd : header.getColumnDescriptors()) {
       
    49 			out.print(TerminalStyle.Bright, cd.getLabel());
       
    50 			out.print(" (");
       
    51 			out.print(cd.getTypeName());
       
    52 			out.print(")");
       
    53 			if (!cd.isLastColumn()) {
       
    54 				out.print(TerminalColor.Green, " | ");
       
    55 			}
       
    56 		}
       
    57 		out.println();
       
    58 		out.flush();
       
    59 	}
       
    60 
       
    61 	@Override
    37 	public void writeColumnValue(Object value) {
    62 	public void writeColumnValue(Object value) {
    38 		super.writeColumnValue(value);
    63 		super.writeColumnValue(value);
    39 
    64 
    40 		if (!isCurrentColumnFirst()) {
    65 		if (!isCurrentColumnFirst()) {
    41 			out.print(ColorfulPrintWriter.TerminalColor.Green, " | ");
    66 			out.print(TerminalColor.Green, " | ");
    42 		}
    67 		}
    43 		
    68 
    44 		out.print(ColorfulPrintWriter.TerminalColor.Cyan, String.valueOf(value));
    69 		out.print(TerminalColor.Cyan, String.valueOf(value));
    45 	}
    70 	}
    46 
    71 
    47 	@Override
    72 	@Override
    48 	public void writeEndRow() {
    73 	public void writeEndRow() {
    49 		super.writeEndRow();
    74 		super.writeEndRow();
    50 		out.println();
    75 		out.println();
    51 		out.flush();
    76 		out.flush();
    52 	}
    77 	}
       
    78 
       
    79 	@Override
       
    80 	public void writeEndResultSet() {
       
    81 		super.writeEndResultSet();
       
    82 		out.print(TerminalColor.Yellow, "Record count: ");
       
    83 		out.println(getCurrentRowCount());
       
    84 		out.flush();
       
    85 	}
       
    86 
       
    87 	@Override
       
    88 	public void writeStartUpdatesResult() {
       
    89 		super.writeStartUpdatesResult();
       
    90 		printResultSeparator();
       
    91 	}
       
    92 
       
    93 	@Override
       
    94 	public void writeUpdatedRowsCount(int updatedRowsCount) {
       
    95 		super.writeUpdatedRowsCount(updatedRowsCount);
       
    96 		out.print(TerminalColor.Red, "Updated records: ");
       
    97 		out.println(updatedRowsCount);
       
    98 		out.flush();
       
    99 	}
       
   100 
       
   101 	@Override
       
   102 	public void writeEndDatabase() {
       
   103 		super.writeEndDatabase();
       
   104 		out.flush();
       
   105 	}
       
   106 
       
   107 	private void printResultSeparator() {
       
   108 		if (firstResult) {
       
   109 			firstResult = false;
       
   110 		} else {
       
   111 			out.println();
       
   112 		}
       
   113 	}
    53 }
   114 }