--- a/java/sql-dk/src/info/globalcode/sql/dk/configuration/Loader.java Sat May 16 23:58:06 2015 +0200
+++ b/java/sql-dk/src/info/globalcode/sql/dk/configuration/Loader.java Sun May 17 00:27:56 2015 +0200
@@ -18,6 +18,13 @@
package info.globalcode.sql.dk.configuration;
import info.globalcode.sql.dk.*;
+import static info.globalcode.sql.dk.DatabaseConnection.JDBC_PROPERTY_USER;
+import static info.globalcode.sql.dk.DatabaseConnection.JDBC_PROPERTY_PASSWORD;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
@@ -28,6 +35,8 @@
*/
public class Loader {
+ private static final Logger log = Logger.getLogger(Loader.class.getName());
+
public Configuration loadConfiguration() throws ConfigurationException {
try {
JAXBContext jaxb = JAXBContext.newInstance(Configuration.class);
@@ -38,4 +47,26 @@
}
}
+ /**
+ * JDBC connection should not be used directly in SQL-DK.
+ *
+ * @see DatabaseDefinition#connect(info.globalcode.sql.dk.configuration.Properties)
+ * @param properties
+ * @param databaseDefinition
+ * @return
+ * @throws java.sql.SQLException
+ */
+ public static Connection jdbcConnect(DatabaseDefinition databaseDefinition, Properties properties) throws SQLException {
+ if (properties.hasProperty(JDBC_PROPERTY_PASSWORD)) {
+ log.log(Level.WARNING, "Passing DB password as CLI parameter is insecure!");
+ }
+ Properties credentials = new Properties();
+ credentials.add(new Property(JDBC_PROPERTY_USER, databaseDefinition.getUserName()));
+ credentials.add(new Property(JDBC_PROPERTY_PASSWORD, databaseDefinition.getPassword()));
+ credentials.setDefaults(databaseDefinition.getProperties());
+ properties.setDefaults(credentials);
+ java.util.Properties javaProperties = properties.getJavaProperties();
+ return DriverManager.getConnection(databaseDefinition.getUrl(), javaProperties);
+ }
+
}