in service/src/main/java/org/apache/fineract/cn/provisioner/internal/repository/ProvisionerInitializer.java [225:253]
private void createTableTenants() throws SQLException {
final String databaseName = PostgreSQLConstants.POSTGRESQL_DATABASE_NAME_DEFAULT;
this.logger.info("Create tenants table in database {} if it does not exists", databaseName);
try (
final Connection provisionerConnection = DataSourceUtils.createProvisionerConnection(this.environment, databaseName);
final Statement testStatement = provisionerConnection.createStatement();
final Statement findSeshatStatement = provisionerConnection.createStatement()
) {
final ResultSet validityQuery = testStatement.executeQuery("SELECT 1");
if (validityQuery.next()) {
this.logger.info("Connection to database {} established", databaseName);
final ResultSet resultSet = findSeshatStatement.executeQuery("SELECT datname FROM pg_database where datname = '"+ databaseName +"'");
if (resultSet.next()) {
this.logger.info("Database {} exists !", databaseName);
this.logger.info("Creating table tenants now");
findSeshatStatement.execute("CREATE TABLE IF NOT EXISTS tenants (identifier VARCHAR(32) NOT NULL, driver_class VARCHAR(255) NOT NULL, database_name VARCHAR(32) NOT NULL, host VARCHAR(512) NOT NULL, port VARCHAR(5) NOT NULL, a_user VARCHAR(32) NOT NULL, pwd VARCHAR(32) NOT NULL, PRIMARY KEY (identifier))");
} else {
this.logger.warn("Database {} does not exists !", databaseName);
}
} else {
this.logger.warn("Could not connect to database seshat");
throw new IllegalMonitorStateException("Could not connect to database seshat");
}
} catch (SQLException sqlex) {
this.logger.error(sqlex.getMessage(), sqlex);
throw new IllegalStateException("Could not create table tenants");
}
}