Skip to content

Commit

Permalink
Simplified database connection.
Browse files Browse the repository at this point in the history
Added Run.sh for MQTT package.
  • Loading branch information
hylkevds committed May 28, 2018
1 parent c9f61dd commit 8c038a3
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 1 deletion.
14 changes: 14 additions & 0 deletions FROST-Server.MQTT/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/sh
#

export serviceRootUrl=http://localhost:8080/FROST-Server
export bus_busImplementationClass=de.fraunhofer.iosb.ilt.sta.messagebus.MqttMessageBus
export bus_mqttBroker=tcp://mosquitto:1883
export persistence_persistenceManagerImplementationClass=de.fraunhofer.iosb.ilt.sta.persistence.postgres.longid.PostgresPersistenceManagerLong
export persistence_alwaysOrderbyId=false
export persistence_db_driver=org.postgresql.Driver
export persistence_db_url=jdbc:postgresql://database:5432/sensorthings
export persistence_db_username=sensorthings
export persistence_db_password=ChangeMe

java -jar target/FROST-Server.MQTT-*-SNAPSHOT-jar-with-dependencies.jar
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.ConnectionFactory;
import org.apache.commons.dbcp2.DriverManagerConnectionFactory;
import org.apache.commons.dbcp2.PoolableConnection;
Expand All @@ -49,6 +50,8 @@ public interface PostgresPersistenceManager {
public static final String TAG_DB_URL = "db.url";
public static final String TAG_DB_USERNAME = "db.username";
public static final String TAG_DB_PASSWORD = "db.password";
public static final String TAG_DB_MAXCONN = "db.conn.max";
public static final String TAG_DB_MAXIDLE = "db.conn.idle";

public static final DateTime DATETIME_MAX = DateTime.parse("9999-12-31T23:59:59.999Z");
public static final DateTime DATETIME_MIN = DateTime.parse("-4000-01-01T00:00:00.000Z");
Expand Down Expand Up @@ -84,14 +87,35 @@ static ConnectionSource createPoolingConnection(String name, Settings settings)
if (settings.containsName(TAG_DATA_SOURCE) && !settings.get(TAG_DATA_SOURCE).isEmpty()) {
source = setupDataSource(settings);
} else {
source = setupDriverSource(name, settings);
source = setupBasicDataSource(settings);
}
existingPools.put(name, source);
}
return source;
}
}

static ConnectionSource setupBasicDataSource(Settings settings) {
LOGGER.info("Setting up BasicDataSource for database connections.");
String driver = settings.getWithDefault(TAG_DB_DRIVER, "", String.class);
if (driver.isEmpty()) {
throw new IllegalArgumentException("Property '" + TAG_DB_DRIVER + "' must be non-empty");
}
try {
Class.forName(settings.get(TAG_DB_DRIVER));
BasicDataSource ds = new BasicDataSource();
ds.setUrl(settings.get(TAG_DB_URL));
ds.setUsername(settings.get(TAG_DB_USERNAME));
ds.setPassword(settings.get(TAG_DB_PASSWORD));
ds.setMaxIdle(settings.getInt(TAG_DB_MAXIDLE, ds.getMaxIdle()));
ds.setMaxTotal(settings.getInt(TAG_DB_MAXCONN, ds.getMaxTotal()));
return new ConnectionSourceBasicDataSource(ds);
} catch (ClassNotFoundException exc) {
LOGGER.error("Failed to set up a Connection pool for the database.", exc);
throw new IllegalArgumentException(exc);
}
}

static ConnectionSource setupDataSource(Settings settings) {
LOGGER.info("Setting up DataSource for database connections.");
try {
Expand Down Expand Up @@ -191,4 +215,20 @@ public Connection getConnection() throws SQLException {
}

}

static class ConnectionSourceBasicDataSource implements ConnectionSource {

private final BasicDataSource dataSource;

public ConnectionSourceBasicDataSource(BasicDataSource dataSource) {
this.dataSource = dataSource;
}

@Override
public Connection getConnection() throws SQLException {
return dataSource.getConnection();
}

}

}

0 comments on commit 8c038a3

Please sign in to comment.