# HG changeset patch # User František Kučera # Date 1388534798 -3600 # Node ID e9c3583580c85da8b1866bf838092717e9eaf866 # Parent 39d8b427e20f928599b6cc2defd8c613efbdb988 use database properties diff -r 39d8b427e20f -r e9c3583580c8 java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.java --- a/java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.java Tue Dec 31 18:11:50 2013 +0100 +++ b/java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.java Wed Jan 01 01:06:38 2014 +0100 @@ -139,7 +139,7 @@ private void processQueryNow() throws ConfigurationException, SQLException, FormatterException { DatabaseDefinition dd = getConfiguration().getDatabase(options.getDatabaseName()); FormatterDefinition fd = configuration.getFormatter(options.getFormatterName()); - try (DatabaseConnection c = dd.connect()) { + try (DatabaseConnection c = dd.connect(options.getDatabaseProperties())) { log.log(Level.FINE, "Database connected"); try (Formatter f = fd.getInstance(new FormatterContext(options.getOutputStream(), options.getFormatterProperties()))) { c.executeQuery(options.getSQLCommand(), f); diff -r 39d8b427e20f -r e9c3583580c8 java/sql-dk/src/info/globalcode/sql/dk/DatabaseConnection.java --- a/java/sql-dk/src/info/globalcode/sql/dk/DatabaseConnection.java Tue Dec 31 18:11:50 2013 +0100 +++ b/java/sql-dk/src/info/globalcode/sql/dk/DatabaseConnection.java Wed Jan 01 01:06:38 2014 +0100 @@ -19,6 +19,7 @@ import info.globalcode.sql.dk.batch.Batch; import info.globalcode.sql.dk.configuration.DatabaseDefinition; +import info.globalcode.sql.dk.configuration.Properties; import info.globalcode.sql.dk.formatting.ColumnsHeader; import info.globalcode.sql.dk.formatting.Formatter; import java.sql.Connection; @@ -39,11 +40,18 @@ private static final Logger log = Logger.getLogger(DatabaseConnection.class.getName()); private DatabaseDefinition databaseDefinition; private Connection connection; + private Properties properties; - public DatabaseConnection(DatabaseDefinition databaseDefinition) throws SQLException { + public DatabaseConnection(DatabaseDefinition databaseDefinition, Properties properties) throws SQLException { this.databaseDefinition = databaseDefinition; + this.properties = properties; - connection = DriverManager.getConnection(databaseDefinition.getUrl(), databaseDefinition.getUserName(), databaseDefinition.getPassword()); + properties.setDefaults(databaseDefinition.getProperties()); + java.util.Properties javaProperties = properties.getJavaProperties(); + javaProperties.setProperty("user", databaseDefinition.getUserName()); + javaProperties.setProperty("password", databaseDefinition.getPassword()); + + connection = DriverManager.getConnection(databaseDefinition.getUrl(), javaProperties); } public void executeQuery(SQLCommand sqlCommand, Formatter formatter) throws SQLException { diff -r 39d8b427e20f -r e9c3583580c8 java/sql-dk/src/info/globalcode/sql/dk/InfoLister.java --- a/java/sql-dk/src/info/globalcode/sql/dk/InfoLister.java Tue Dec 31 18:11:50 2013 +0100 +++ b/java/sql-dk/src/info/globalcode/sql/dk/InfoLister.java Wed Jan 01 01:06:38 2014 +0100 @@ -165,7 +165,7 @@ DatabaseDefinition dd = configurationProvider.getConfiguration().getDatabase(dbName); log.log(Level.FINE, "Database definition was loaded from configuration"); succesfullyConfigured = true; - try (DatabaseConnection dc = dd.connect()) { + try (DatabaseConnection dc = dd.connect(options.getDatabaseProperties())) { succesfullyConnected = dc.test(); } log.log(Level.FINE, "Database connection test was successful"); diff -r 39d8b427e20f -r e9c3583580c8 java/sql-dk/src/info/globalcode/sql/dk/configuration/DatabaseDefinition.java --- a/java/sql-dk/src/info/globalcode/sql/dk/configuration/DatabaseDefinition.java Tue Dec 31 18:11:50 2013 +0100 +++ b/java/sql-dk/src/info/globalcode/sql/dk/configuration/DatabaseDefinition.java Wed Jan 01 01:06:38 2014 +0100 @@ -80,7 +80,10 @@ this.properties = properties; } - public DatabaseConnection connect() throws SQLException { - return new DatabaseConnection(this); + /** + * @param properties ad-hoc properties from CLI options + */ + public DatabaseConnection connect(Properties properties) throws SQLException { + return new DatabaseConnection(this, properties); } } diff -r 39d8b427e20f -r e9c3583580c8 java/sql-dk/src/info/globalcode/sql/dk/configuration/Properties.java --- a/java/sql-dk/src/info/globalcode/sql/dk/configuration/Properties.java Tue Dec 31 18:11:50 2013 +0100 +++ b/java/sql-dk/src/info/globalcode/sql/dk/configuration/Properties.java Wed Jan 01 01:06:38 2014 +0100 @@ -88,4 +88,22 @@ Collections.copy(clone, this); return clone; } + + /** + * @return merged this and backing defaults as Java Properties + */ + public java.util.Properties getJavaProperties() { + java.util.Properties javaProperties = new java.util.Properties(); + if (defaults != null) { + duplicateTo(javaProperties); + } + duplicateTo(javaProperties); + return javaProperties; + } + + private void duplicateTo(java.util.Properties javaProperties) { + for (Property p : this) { + javaProperties.setProperty(p.getName(), p.getValue()); + } + } }