package com.buddycloud.mediaserver.commons.configuration; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.buddycloud.mediaserver.commons.MediaServerConfiguration; public class DatabaseLoader implements Loader { private static final Logger LOGGER = LoggerFactory.getLogger(DatabaseLoader.class); private Properties configuration; private String connectionString; public DatabaseLoader(Properties configuration, String connectionString) { this.connectionString = connectionString; this.configuration = configuration; } public void load() throws ConfigurationException { Connection connection = null; LOGGER.info("Loading configuration from database"); try { connection = DriverManager.getConnection(this.connectionString); PreparedStatement statement = connection.prepareStatement("SELECT \"key\", \"value\" FROM \"configuration\";"); ResultSet rs = statement.executeQuery(); while (rs.next()) { this.configuration.setProperty(rs.getString(1), rs.getString(2)); } this.configuration.setProperty(MediaServerConfiguration.JDBC_DB_URL_PROPERTY, connectionString); } catch (SQLException e) { LOGGER.error(e.getMessage()); throw new ConfigurationException("Could not get configuration from database"); } finally { if (null == connection) { return; } try { connection.close(); } catch (SQLException e) { LOGGER.error(e.getMessage()); throw new ConfigurationException("Could not get configuration from database"); } } } }