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 } |