Java源码示例:org.flywaydb.core.api.MigrationState

示例1
/**
 * Retrieves the full set of infos about future migrations applied to the DB.
 *
 * @return The future migrations. An empty array if none.
 */
private List<MigrationInfo> future(MigrationInfo[] migrationInfos) {
    if (migrationInfos.length == 0)
        throw new NotFoundException();
    List<MigrationInfo> futureMigrations = Lists.newArrayList();
    for (MigrationInfo migrationInfo : migrationInfos) {
        if ((migrationInfo.getState() == MigrationState.FUTURE_SUCCESS)
                || (migrationInfo.getState() == MigrationState.FUTURE_FAILED)) {
            futureMigrations.add(migrationInfo);
        }
    }

    return futureMigrations;
}
 
示例2
private void assertAllMigrationsAre(MigrationState expectedState) {
    for (MigrationInfo migrationInfo : flyway.info().all()) {
        assertThat(migrationInfo.getState()).isEqualTo(expectedState);
    }
}
 
示例3
@Test
public void skipAutomaticAndTriggerManualFlywayMigration() {

    assertAllMigrationsAre(MigrationState.PENDING);

    flyway.migrate();

    assertAllMigrationsAre(MigrationState.SUCCESS);
}
 
示例4
public void init(HibernateStorageSettings settings) {
    try {
        readWriteLock.writeLock().lock();
        migrationRequired = false;

        sfUpdateRequired = false;

        flyway = new Flyway();

        flyway.getPlaceholders().put("db_name", settings.getDbName());

        String[] initSqls = new String[0];

        if (settings.getDbms().equals(DbmsType.PostgreSQL.getValue())) {
            flyway.setLocations(PSQL_SCRIPT_LOCATION);
        }

        if (settings.getDbms().equals(DbmsType.MySql.getValue())) {
            flyway.setLocations(MYSQL_SCRIPT_LOCATION);
            initSqls = MYSQL_INIT_SQL;
        }

        flyway.setDataSource(settings.buildConnectionUrl(), settings.getUsername(), settings.getPassword(), initSqls);

        flyway.setBaselineOnMigrate(false);

        // Get info about migrations

        MigrationInfoService info = flyway.info();

        currentDbVersionInfo = info.current();

        pendingMigrationsInfo = info.pending();

        MigrationInfo[] all = info.all();

        // Checks

        if (currentDbVersionInfo == null) {
            migrationRequired = true;

            throw new OlderSchemaException("DB initialization is required");

        }

        if (pendingMigrationsInfo.length != 0) {
            migrationRequired = true;

            throw new OlderSchemaException("Migration to version "
                    + pendingMigrationsInfo[pendingMigrationsInfo.length - 1].getVersion().getVersion()
                    + " is required");

        }

        if (all.length != 0) {
            MigrationInfo lastKnown = all[all.length - 1];

            if(lastKnown.getState() == MigrationState.FUTURE_SUCCESS) {

                sfUpdateRequired = true;

                throw new NewerSchemaException("DB schema has newer version " + lastKnown.getVersion().getVersion()
                        + ". Upgrade this Sailfish instance to use it.");
            }
        }
    } finally {
        readWriteLock.writeLock().unlock();
    }
}