java/sql-dk/src/info/globalcode/sql/dk/InfoLister.java
branchv_0
changeset 158 770b5009ec42
parent 155 eb3676c6929b
child 159 9632b23df30c
     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 {