Skip to content

Commit 87ea8a0

Browse files
author
Lloyd Watkin
committed
Load configuration from the database
1 parent 5f3b602 commit 87ea8a0

1 file changed

Lines changed: 40 additions & 9 deletions

File tree

src/main/java/org/buddycloud/channelserver/Configuration.java

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,26 @@
44
import java.io.FileInputStream;
55
import java.io.IOException;
66
import java.io.InputStream;
7+
import java.sql.Connection;
8+
import java.sql.DriverManager;
9+
import java.sql.PreparedStatement;
10+
import java.sql.ResultSet;
11+
import java.sql.SQLException;
12+
import java.sql.Statement;
713
import java.util.ArrayList;
814
import java.util.Arrays;
915
import java.util.Collection;
1016
import java.util.Collections;
17+
import java.util.HashMap;
1118
import java.util.Properties;
1219

1320
import org.apache.log4j.Logger;
1421
import org.buddycloud.channelserver.channel.LocalDomainChecker;
1522
import org.xmpp.packet.JID;
1623

1724
public class Configuration extends Properties {
25+
26+
1827
private static final Logger LOGGER = Logger.getLogger(Configuration.class);
1928

2029
private static final long serialVersionUID = 1L;
@@ -58,6 +67,10 @@ public class Configuration extends Properties {
5867

5968
public static final String DATABASE_ENV = "database";
6069

70+
private static final String JDBC_CONNECTION_STRING = "jdbc.proxool.driver-url";
71+
private static final String JDBC_PASSWORD = "jdbc.password";
72+
private static final String JDBC_USER = "jdbc.user";
73+
6174
private static Configuration instance = null;
6275

6376
private Collection<JID> adminUsers = new ArrayList<JID>();
@@ -73,7 +86,7 @@ private Configuration() {
7386
if (null == databaseConnectionString) {
7487
loadConfigurationFromFile();
7588
} else {
76-
loadConfigurationFromDatabase();
89+
loadConfigurationFromDatabase(databaseConnectionString);
7790
}
7891

7992
} catch (Exception e) {
@@ -82,8 +95,26 @@ private Configuration() {
8295
}
8396
}
8497

85-
private void loadConfigurationFromDatabase() {
86-
// TODO(lloydwatkin) Auto-generated method stub
98+
private void loadConfigurationFromDatabase(String connectionString) throws SQLException {
99+
Connection connection = null;
100+
try {
101+
connection = DriverManager.getConnection(connectionString);
102+
PreparedStatement statement = connection.prepareStatement("SELECT \"key\", \"value\" FROM 'configuration';");
103+
ResultSet rs = statement.executeQuery();
104+
while (rs.next()) {
105+
conf.setProperty(rs.getString(1), rs.getString(2));
106+
}
107+
conf.setProperty(JDBC_CONNECTION_STRING, connectionString);
108+
conf.remove(JDBC_USER);
109+
conf.remove(JDBC_PASSWORD);
110+
} catch (SQLException e) {
111+
LOGGER.error("Could not get configuration from database");
112+
System.exit(1);
113+
} finally {
114+
if (null != connection) {
115+
connection.close();
116+
}
117+
}
87118

88119
}
89120

@@ -248,16 +279,16 @@ public boolean isLocalJID(JID jid) {
248279
}
249280

250281
public String getDatabaseConnectionUrl() {
251-
String url = this.getProperty("jdbc.proxool.driver-url");
252-
if (this.containsKey("jdbc.user")) {
282+
String url = this.getProperty(JDBC_CONNECTION_STRING);
283+
if (this.containsKey(JDBC_USER)) {
253284
url +=
254-
"?user=" + this.getProperty("jdbc.user") + "&password="
255-
+ this.getProperty("jdbc.password");
285+
"?user=" + this.getProperty(JDBC_USER) + "&password="
286+
+ this.getProperty(JDBC_PASSWORD);
256287
}
257288
return url;
258289
}
259-
290+
260291
public boolean containsKey(Object value) {
261292
return conf.containsKey(value);
262-
}
293+
}
263294
}

0 commit comments

Comments
 (0)