Package liquibase.change.core.supplier

Source Code of liquibase.change.core.supplier.TagDatabaseChangeSupplier

package liquibase.change.core.supplier;

import liquibase.change.AbstractChange;
import liquibase.change.Change;
import liquibase.change.core.TagDatabaseChange;
import liquibase.changelog.ChangeSet;
import liquibase.changelog.DatabaseChangeLog;
import liquibase.database.Database;
import liquibase.diff.DiffResult;
import liquibase.executor.ExecutorService;
import liquibase.sdk.supplier.change.AbstractChangeSupplier;
import liquibase.statement.SqlStatement;
import liquibase.statement.core.CreateDatabaseChangeLogTableStatement;
import liquibase.statement.core.MarkChangeSetRanStatement;
import liquibase.statement.core.RawSqlStatement;

import static org.junit.Assert.assertTrue;

public class TagDatabaseChangeSupplier extends AbstractChangeSupplier<TagDatabaseChange> {

    public TagDatabaseChangeSupplier() {
        super(TagDatabaseChange.class);
    }

    @Override
    public Change[] prepareDatabase(TagDatabaseChange change) throws Exception {
        return new Change[]{new AbstractChange() {
            @Override
            public String getConfirmationMessage() {
                return "Custom change";
            }

            @Override
            public SqlStatement[] generateStatements(Database database) {
                return new SqlStatement[]{
                        new CreateDatabaseChangeLogTableStatement(),
                        new MarkChangeSetRanStatement(new ChangeSet("1", "test", false, false, "com/example/test.xml", null, null, new DatabaseChangeLog("com/example/test.xml")), ChangeSet.ExecType.EXECUTED),
                        new MarkChangeSetRanStatement(new ChangeSet("2", "test", false, false, "com/example/test.xml", null, null, new DatabaseChangeLog("com/example/test.xml")), ChangeSet.ExecType.EXECUTED),
                        new MarkChangeSetRanStatement(new ChangeSet("3", "test", false, false, "com/example/test.xml", null, null, new DatabaseChangeLog("com/example/test.xml")), ChangeSet.ExecType.EXECUTED),
                        new MarkChangeSetRanStatement(new ChangeSet("4", "test", false, false, "com/example/test.xml", null, null, new DatabaseChangeLog("com/example/test.xml")), ChangeSet.ExecType.EXECUTED)
                };

            }
        }
        };
    }

    @Override
    public void checkDiffResult(DiffResult diffResult, TagDatabaseChange change) throws Exception {
        Database database = diffResult.getComparisonSnapshot().getDatabase();
        int rows = ExecutorService.getInstance().getExecutor(database).queryForInt(new RawSqlStatement("select count(*) from " + database.getDatabaseChangeLogTableName() + " where tag='" + change.getTag() + "'"));
        assertTrue(rows > 0);

    }
}
TOP

Related Classes of liquibase.change.core.supplier.TagDatabaseChangeSupplier

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.