package liquibase.changelog.filter; import liquibase.changelog.ChangeSet; import liquibase.changelog.RanChangeSet; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; public class ExecutedAfterChangeSetFilter implements ChangeSetFilter { private Set<String> changeLogsAfterDate = new HashSet<String>(); public ExecutedAfterChangeSetFilter(Date date, List<RanChangeSet> ranChangeSets) { for (RanChangeSet ranChangeSet : ranChangeSets) { if (ranChangeSet.getDateExecuted() != null && ranChangeSet.getDateExecuted().getTime() > date.getTime()) { changeLogsAfterDate.add(changeLogToString(ranChangeSet.getId(), ranChangeSet.getAuthor(), ranChangeSet.getChangeLog())); } } } private String changeLogToString(String id, String author, String changeLog) { return id+":"+author+":"+changeLog; } public boolean accepts(ChangeSet changeSet) { return changeLogsAfterDate.contains(changeLogToString(changeSet.getId(), changeSet.getAuthor(), changeSet.getFilePath())); } }