Class TeamCityDatabaseManager

  • All Implemented Interfaces:
    DBFunctionsProvider

    public class TeamCityDatabaseManager
    extends Object
    implements DBFunctionsProvider
    Database accessor.

    The responsibility of this class is to read/analyze TeamCity database settings, connect to the database and provides a DataSource instance.

    It also manages some maintenance works - like creating/updating schema or HSQL compacting.

    Author:
    Leonid Bushuev
    • Constructor Detail

      • TeamCityDatabaseManager

        public TeamCityDatabaseManager​(@NotNull
                                       JdbcDrivers jdbcDrivers,
                                       @NotNull
                                       DatabasePropertiesFile databasePropertiesFile,
                                       @NotNull
                                       String... perSessionScript)
        Reads/analyzes database settings and prepares internal variables for connecting. But doesn't connect.

        This method doesn't require an accessible database server.

        Parameters:
        jdbcDrivers - JDBC driver loader.
        databasePropertiesFile - database properties file.
        perSessionScript - the script that should be executed on connect for each connection.
        Since:
        2017.2.1
      • TeamCityDatabaseManager

        public TeamCityDatabaseManager​(@NotNull
                                       JdbcDrivers jdbcDrivers,
                                       @NotNull
                                       DatabasePropertiesFile databasePropertiesFile,
                                       @NotNull
                                       DBAction<String[]> perSessionScript)
        Reads/analyzes database settings and prepares internal variables for connecting. But doesn't connect.

        This method doesn't require an accessible database server.

        Parameters:
        jdbcDrivers - JDBC driver loader.
        databasePropertiesFile - database properties file.
        perSessionScript - the script that should be executed on connect for each connection.
        Since:
        2017.2.1
      • TeamCityDatabaseManager

        public TeamCityDatabaseManager​(@NotNull
                                       JdbcDrivers jdbcDrivers,
                                       @NotNull
                                       JdbcConnectionString connectionString,
                                       @NotNull
                                       File systemDir,
                                       @NotNull
                                       String... perSessionScript)
        Set up using a connection string.
        Parameters:
        jdbcDrivers - JDBC driver loader.
        connectionString - parsed connection string.
        systemDir - system dir (used for HSQL only).
        perSessionScript - the script that should be executed on connect for each connection.
        Since:
        2017.2.1
      • TeamCityDatabaseManager

        public TeamCityDatabaseManager​(@NotNull
                                       JdbcDrivers jdbcDrivers,
                                       @Nullable
                                       String ipAddress,
                                       @Nullable
                                       String applicationInfo,
                                       @Nullable
                                       ServerVersionInfo serverVersion,
                                       @NotNull
                                       JdbcConnectionString connectionString,
                                       @NotNull
                                       File systemDir,
                                       @NotNull
                                       DBAction<String[]> perSessionScript)
        Set up using a connection string.
        Parameters:
        jdbcDrivers - JDBC driver loader.
        ipAddress - the optional IP address.
        applicationInfo - the optional free-form server information.
        serverVersion - the optional server version information.
        connectionString - parsed connection string.
        systemDir - system dir (used for HSQL only).
        perSessionScript - the script that should be executed on connect for each connection.
        Since:
        2017.2.1
      • TeamCityDatabaseManager

        public TeamCityDatabaseManager​(@NotNull
                                       JdbcDrivers jdbcDrivers,
                                       @NotNull
                                       DatabaseSettings databaseSettings,
                                       @NotNull
                                       DBAction<String[]> perSessionScript)
        Set up using DatabaseSettings string.
        Parameters:
        jdbcDrivers - JDBC driver loader.
        databaseSettings - database connection settings.
        perSessionScript - the script that should be executed on connect for each connection.
        Since:
        2017.2.1
      • TeamCityDatabaseManager

        public TeamCityDatabaseManager​(@NotNull
                                       JdbcDrivers jdbcDrivers,
                                       @Nullable
                                       String ipAddress,
                                       @Nullable
                                       String applicationInfo,
                                       @Nullable
                                       ServerVersionInfo serverVersion,
                                       @Nullable
                                       DatabasePropertiesFile databasePropertiesFile,
                                       @NotNull
                                       DatabaseSettings databaseSettings,
                                       @NotNull
                                       DBAction<String[]> perSessionScript)

        Private constructor shared by public constructors.

        Parameters:
        jdbcDrivers - JDBC driver loader.
        ipAddress - the optional IP address.
        applicationInfo - the optional free-form server information.
        serverVersion - the optional server version information.
        databasePropertiesFile - the optional database.properties wrapper.
        databaseSettings - database connection settings.
        perSessionScript - the database action which evaluates to the per-session script once the manager is connected.
        Since:
        2017.2.1