java/sql-dk/src/info/globalcode/sql/dk/configuration/Loader.java
branchv_0
changeset 192 a32bfcbdee51
parent 189 f4d879cbcee1
child 193 5a18a6adf7f9
--- 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);
+	}
+
 }