1.1 --- a/java/sql-dk/src/info/globalcode/sql/dk/InfoLister.java Sat Jan 11 18:37:57 2014 +0100
1.2 +++ b/java/sql-dk/src/info/globalcode/sql/dk/InfoLister.java Wed Jan 15 18:15:55 2014 +0100
1.3 @@ -29,10 +29,12 @@
1.4 import java.io.BufferedReader;
1.5 import java.io.InputStreamReader;
1.6 import java.io.PrintStream;
1.7 +import java.sql.Driver;
1.8 import java.sql.SQLException;
1.9 import java.util.ArrayList;
1.10 import java.util.EnumSet;
1.11 import java.util.List;
1.12 +import java.util.ServiceLoader;
1.13 import java.util.logging.Level;
1.14 import java.util.logging.Logger;
1.15 import javax.sql.rowset.RowSetMetaDataImpl;
1.16 @@ -64,6 +66,7 @@
1.17 for (InfoType infoType : commands) {
1.18 switch (infoType) {
1.19 case CONNECTION:
1.20 + case JDBC_DRIVERS:
1.21 case DATABASES:
1.22 case FORMATTERS:
1.23 case TYPES:
1.24 @@ -148,6 +151,29 @@
1.25 printTable(formatter, header, data);
1.26 }
1.27
1.28 + public void listJdbcDrivers() throws FormatterException, ConfigurationException {
1.29 + ColumnsHeader header = constructHeader(
1.30 + new HeaderField("class", SQLType.VARCHAR),
1.31 + new HeaderField("version", SQLType.VARCHAR),
1.32 + new HeaderField("major", SQLType.INTEGER),
1.33 + new HeaderField("minor", SQLType.INTEGER),
1.34 + new HeaderField("jdbc_compliant", SQLType.BOOLEAN));
1.35 + List<Object[]> data = new ArrayList<>();
1.36 +
1.37 + final ServiceLoader<Driver> drivers = ServiceLoader.load(Driver.class);
1.38 + for (Driver d : drivers) {
1.39 + data.add(new Object[]{
1.40 + d.getClass().getName(),
1.41 + d.getMajorVersion() + "." + d.getMinorVersion(),
1.42 + d.getMajorVersion(),
1.43 + d.getMinorVersion(),
1.44 + d.jdbcCompliant()});
1.45 + }
1.46 +
1.47 + printTable(formatter, header, data);
1.48 +
1.49 + }
1.50 +
1.51 public void testConnection() throws FormatterException, ConfigurationException {
1.52 ColumnsHeader header = constructHeader(
1.53 new HeaderField("database_name", SQLType.VARCHAR),
1.54 @@ -287,6 +313,12 @@
1.55 infoLister.listTypes();
1.56 }
1.57 },
1.58 + JDBC_DRIVERS {
1.59 + @Override
1.60 + public void showInfo(InfoLister infoLister) throws ConfigurationException, FormatterException {
1.61 + infoLister.listJdbcDrivers();
1.62 + }
1.63 + },
1.64 DATABASES {
1.65 @Override
1.66 public void showInfo(InfoLister infoLister) throws FormatterException, ConfigurationException {