package liquibase.changelog.visitor; import java.util.*; import liquibase.changelog.ChangeSet; import liquibase.changelog.DatabaseChangeLog; import liquibase.changelog.RanChangeSet; import liquibase.changelog.filter.ChangeSetFilterResult; import liquibase.database.Database; import liquibase.exception.LiquibaseException; public class ExpectedChangesVisitor implements ChangeSetVisitor { private final LinkedHashSet<RanChangeSet> unexpectedChangeSets; public ExpectedChangesVisitor(List<RanChangeSet> ranChangeSetList) { this.unexpectedChangeSets = new LinkedHashSet<RanChangeSet>(ranChangeSetList); } @Override public Direction getDirection() { return ChangeSetVisitor.Direction.FORWARD; } @Override public void visit(ChangeSet changeSet, DatabaseChangeLog databaseChangeLog, Database database, Set<ChangeSetFilterResult> filterResults) throws LiquibaseException { for (Iterator<RanChangeSet> i = unexpectedChangeSets.iterator(); i.hasNext(); ) { RanChangeSet ranChangeSet = i.next(); if (ranChangeSet.isSameAs(changeSet)) { i.remove(); } } } public Collection<RanChangeSet> getUnexpectedChangeSets() { return unexpectedChangeSets; } }