37 import java.sql.Driver; |
37 import java.sql.Driver; |
38 import java.sql.DriverManager; |
38 import java.sql.DriverManager; |
39 import java.sql.DriverPropertyInfo; |
39 import java.sql.DriverPropertyInfo; |
40 import java.sql.SQLException; |
40 import java.sql.SQLException; |
41 import java.util.ArrayList; |
41 import java.util.ArrayList; |
|
42 import java.util.Collections; |
|
43 import java.util.Comparator; |
42 import java.util.EnumSet; |
44 import java.util.EnumSet; |
43 import java.util.HashSet; |
45 import java.util.HashSet; |
44 import java.util.List; |
46 import java.util.List; |
45 import java.util.Map.Entry; |
47 import java.util.Map.Entry; |
46 import java.util.ServiceLoader; |
48 import java.util.ServiceLoader; |
123 ColumnsHeader header = constructHeader(new HeaderField("name", SQLType.VARCHAR), new HeaderField("value", SQLType.VARCHAR)); |
125 ColumnsHeader header = constructHeader(new HeaderField("name", SQLType.VARCHAR), new HeaderField("value", SQLType.VARCHAR)); |
124 List<Object[]> data = new ArrayList<>(); |
126 List<Object[]> data = new ArrayList<>(); |
125 for (Entry<Object, Object> e : System.getProperties().entrySet()) { |
127 for (Entry<Object, Object> e : System.getProperties().entrySet()) { |
126 data.add(new Object[]{e.getKey(), e.getValue()}); |
128 data.add(new Object[]{e.getKey(), e.getValue()}); |
127 } |
129 } |
128 printTable(formatter, header, "-- Java system properties", null, data); |
130 printTable(formatter, header, "-- Java system properties", null, data, 0); |
129 } |
131 } |
130 |
132 |
131 private void listEnvironmentVariables() throws FormatterException, ConfigurationException { |
133 private void listEnvironmentVariables() throws FormatterException, ConfigurationException { |
132 ColumnsHeader header = constructHeader(new HeaderField("name", SQLType.VARCHAR), new HeaderField("value", SQLType.VARCHAR)); |
134 ColumnsHeader header = constructHeader(new HeaderField("name", SQLType.VARCHAR), new HeaderField("value", SQLType.VARCHAR)); |
133 List<Object[]> data = new ArrayList<>(); |
135 List<Object[]> data = new ArrayList<>(); |
134 for (Entry<String, String> e : System.getenv().entrySet()) { |
136 for (Entry<String, String> e : System.getenv().entrySet()) { |
135 data.add(new Object[]{e.getKey(), e.getValue()}); |
137 data.add(new Object[]{e.getKey(), e.getValue()}); |
136 } |
138 } |
137 printTable(formatter, header, "-- environment variables", null, data); |
139 printTable(formatter, header, "-- environment variables", null, data, 0); |
138 } |
140 } |
139 |
141 |
140 private void listFormatters() throws ConfigurationException, FormatterException { |
142 private void listFormatters() throws ConfigurationException, FormatterException { |
141 ColumnsHeader header = constructHeader( |
143 ColumnsHeader header = constructHeader( |
142 new HeaderField("name", SQLType.VARCHAR), |
144 new HeaderField("name", SQLType.VARCHAR), |
424 private void println(String line) { |
426 private void println(String line) { |
425 out.println(line); |
427 out.println(line); |
426 } |
428 } |
427 |
429 |
428 private void printTable(Formatter formatter, ColumnsHeader header, String sql, List<Parameter> parameters, List<Object[]> data) throws ConfigurationException, FormatterException { |
430 private void printTable(Formatter formatter, ColumnsHeader header, String sql, List<Parameter> parameters, List<Object[]> data) throws ConfigurationException, FormatterException { |
|
431 printTable(formatter, header, sql, parameters, data, null); |
|
432 } |
|
433 |
|
434 private void printTable(Formatter formatter, ColumnsHeader header, String sql, List<Parameter> parameters, List<Object[]> data, final Integer sortByColumn) throws ConfigurationException, FormatterException { |
429 printHeader(formatter, header, sql, parameters); |
435 printHeader(formatter, header, sql, parameters); |
|
436 |
|
437 if (sortByColumn != null) { |
|
438 Collections.sort(data, new Comparator<Object[]>() { |
|
439 |
|
440 @Override |
|
441 public int compare(Object[] o1, Object[] o2) { |
|
442 String s1 = String.valueOf(o1[sortByColumn]); |
|
443 String s2 = String.valueOf(o2[sortByColumn]); |
|
444 return s1.compareTo(s2); |
|
445 } |
|
446 }); |
|
447 } |
430 |
448 |
431 for (Object[] row : data) { |
449 for (Object[] row : data) { |
432 printRow(formatter, row); |
450 printRow(formatter, row); |
433 } |
451 } |
434 |
452 |