private void createTableTenants()

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");
    }
  }