Search in sources :

Example 11 with Liquibase

use of liquibase.Liquibase in project opennms by OpenNMS.

the class Migrator method migrate.

/**
 * <p>migrate</p>
 *
 * @param migration a {@link org.opennms.core.schema.Migration} object.
 * @throws org.opennms.core.schema.MigrationException if any.
 */
public void migrate(final Migration migration) throws MigrationException {
    Connection connection = null;
    DatabaseConnection dbConnection = null;
    try {
        connection = m_dataSource.getConnection();
        dbConnection = new JdbcConnection(connection);
        ResourceAccessor accessor = migration.getAccessor();
        if (accessor == null)
            accessor = new SpringResourceAccessor();
        final Liquibase liquibase = new Liquibase(migration.getChangeLog(), accessor, dbConnection);
        liquibase.setChangeLogParameter("install.database.admin.user", migration.getAdminUser());
        liquibase.setChangeLogParameter("install.database.admin.password", migration.getAdminPassword());
        liquibase.setChangeLogParameter("install.database.user", migration.getDatabaseUser());
        liquibase.getDatabase().setDefaultSchemaName(migration.getSchemaName());
        final String contexts = System.getProperty("opennms.contexts", "production");
        liquibase.update(contexts);
    } catch (final Throwable e) {
        throw new MigrationException("unable to migrate the database", e);
    } finally {
        cleanUpDatabase(connection, dbConnection, null, null);
    }
}
Also used : Liquibase(liquibase.Liquibase) ResourceAccessor(liquibase.resource.ResourceAccessor) Connection(java.sql.Connection) DatabaseConnection(liquibase.database.DatabaseConnection) JdbcConnection(liquibase.database.jvm.JdbcConnection) DatabaseConnection(liquibase.database.DatabaseConnection) JdbcConnection(liquibase.database.jvm.JdbcConnection)

Example 12 with Liquibase

use of liquibase.Liquibase in project traccar by tananaev.

the class DataManager method initDatabaseSchema.

private void initDatabaseSchema() throws SQLException, LiquibaseException {
    if (config.hasKey("database.changelog")) {
        ResourceAccessor resourceAccessor = new FileSystemResourceAccessor();
        Database database = DatabaseFactory.getInstance().openDatabase(config.getString("database.url"), config.getString("database.user"), config.getString("database.password"), null, resourceAccessor);
        Liquibase liquibase = new Liquibase(config.getString("database.changelog"), resourceAccessor, database);
        liquibase.clearCheckSums();
        liquibase.update(new Contexts());
    }
}
Also used : Liquibase(liquibase.Liquibase) FileSystemResourceAccessor(liquibase.resource.FileSystemResourceAccessor) ResourceAccessor(liquibase.resource.ResourceAccessor) Database(liquibase.database.Database) FileSystemResourceAccessor(liquibase.resource.FileSystemResourceAccessor) Contexts(liquibase.Contexts)

Example 13 with Liquibase

use of liquibase.Liquibase in project Singularity by HubSpot.

the class SingularityHistoryTest method createTestData.

@Before
public void createTestData() throws Exception {
    Handle handle = dbiProvider.get().open();
    Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(handle.getConnection()));
    Liquibase liquibase = new Liquibase("singularity_test.sql", new FileSystemResourceAccessor(), database);
    liquibase.update((String) null);
    try {
        database.close();
    } catch (Throwable t) {
    }
    handle.close();
}
Also used : Liquibase(liquibase.Liquibase) Database(liquibase.database.Database) JdbcConnection(liquibase.database.jvm.JdbcConnection) FileSystemResourceAccessor(liquibase.resource.FileSystemResourceAccessor) Handle(org.skife.jdbi.v2.Handle) Before(org.junit.Before)

Example 14 with Liquibase

use of liquibase.Liquibase in project openmrs-core by openmrs.

the class DatabaseUpgradeTestUtil method upgrade.

public void upgrade(String filename) throws IOException, SQLException {
    try {
        Liquibase liquibase = new Liquibase(filename, new ClassLoaderResourceAccessor(getClass().getClassLoader()), liqubaseConnection);
        liquibase.update(null);
        connection.commit();
    } catch (LiquibaseException e) {
        throw new IOException(e);
    }
}
Also used : Liquibase(liquibase.Liquibase) LiquibaseException(liquibase.exception.LiquibaseException) IOException(java.io.IOException) ClassLoaderResourceAccessor(liquibase.resource.ClassLoaderResourceAccessor)

Example 15 with Liquibase

use of liquibase.Liquibase in project openmrs-core by openmrs.

the class DatabaseUpdater method getLiquibase.

/**
 * Get a connection to the database through Liquibase. The calling method /must/ close the
 * database connection when finished with this Liquibase object.
 * liquibase.getDatabase().getConnection().close()
 *
 * @param changeLogFile the name of the file to look for the on classpath or filesystem
 * @param cl the {@link ClassLoader} to use to find the file (or null to use
 *            {@link OpenmrsClassLoader})
 * @return Liquibase object based on the current connection settings
 * @throws Exception
 */
private static Liquibase getLiquibase(String changeLogFile, ClassLoader cl) throws Exception {
    Connection connection;
    try {
        connection = getConnection();
    } catch (SQLException e) {
        throw new Exception("Unable to get a connection to the database.  Please check your openmrs runtime properties file and make sure you have the correct connection.username and connection.password set", e);
    }
    if (cl == null) {
        cl = OpenmrsClassLoader.getInstance();
    }
    try {
        Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(connection));
        database.setDatabaseChangeLogTableName("liquibasechangelog");
        database.setDatabaseChangeLogLockTableName("liquibasechangeloglock");
        if (connection.getMetaData().getDatabaseProductName().contains("HSQL Database Engine") || connection.getMetaData().getDatabaseProductName().contains("H2")) {
            // a hack because hsqldb and h2 seem to be checking table names in the metadata section case sensitively
            database.setDatabaseChangeLogTableName(database.getDatabaseChangeLogTableName().toUpperCase());
            database.setDatabaseChangeLogLockTableName(database.getDatabaseChangeLogLockTableName().toUpperCase());
        }
        ResourceAccessor openmrsFO = new ClassLoaderFileOpener(cl);
        ResourceAccessor fsFO = new FileSystemResourceAccessor();
        if (changeLogFile == null) {
            changeLogFile = CHANGE_LOG_FILE;
        }
        database.checkDatabaseChangeLogTable(false, null, null);
        return new Liquibase(changeLogFile, new CompositeResourceAccessor(openmrsFO, fsFO), database);
    } catch (Exception e) {
        // if an error occurs, close the connection
        if (connection != null) {
            connection.close();
        }
        throw e;
    }
}
Also used : Liquibase(liquibase.Liquibase) CompositeResourceAccessor(liquibase.resource.CompositeResourceAccessor) CompositeResourceAccessor(liquibase.resource.CompositeResourceAccessor) FileSystemResourceAccessor(liquibase.resource.FileSystemResourceAccessor) ResourceAccessor(liquibase.resource.ResourceAccessor) SQLException(java.sql.SQLException) Connection(java.sql.Connection) JdbcConnection(liquibase.database.jvm.JdbcConnection) Database(liquibase.database.Database) JdbcConnection(liquibase.database.jvm.JdbcConnection) FileSystemResourceAccessor(liquibase.resource.FileSystemResourceAccessor) LockException(liquibase.exception.LockException) SQLException(java.sql.SQLException) IOException(java.io.IOException) FileNotFoundException(java.io.FileNotFoundException) LiquibaseException(liquibase.exception.LiquibaseException)

Aggregations

Liquibase (liquibase.Liquibase)97 Test (org.junit.Test)29 LiquibaseException (liquibase.exception.LiquibaseException)25 ClassLoaderResourceAccessor (liquibase.resource.ClassLoaderResourceAccessor)25 JdbcConnection (liquibase.database.jvm.JdbcConnection)24 IOException (java.io.IOException)22 Database (liquibase.database.Database)22 SQLException (java.sql.SQLException)17 Contexts (liquibase.Contexts)17 ValidationFailedException (liquibase.exception.ValidationFailedException)11 AbstractIntegrationTest (liquibase.dbtest.AbstractIntegrationTest)10 DatabaseException (liquibase.exception.DatabaseException)10 MojoExecutionException (org.apache.maven.plugin.MojoExecutionException)10 BuildException (org.apache.tools.ant.BuildException)10 ChangeSet (liquibase.changelog.ChangeSet)9 FileSystemResourceAccessor (liquibase.resource.FileSystemResourceAccessor)9 Connection (java.sql.Connection)8 ResourceAccessor (liquibase.resource.ResourceAccessor)8 FileNotFoundException (java.io.FileNotFoundException)6 Date (java.util.Date)6