package liquibase.changelog.filter; import liquibase.changelog.ChangeSet; import liquibase.changelog.RanChangeSet; import java.util.List; public abstract class RanChangeSetFilter implements ChangeSetFilter { public List<RanChangeSet> ranChangeSets; private final boolean ignoreClasspathPrefix; public RanChangeSetFilter(List<RanChangeSet> ranChangeSets, boolean ignoreClasspathPrefix) { this.ignoreClasspathPrefix = ignoreClasspathPrefix; this.ranChangeSets = ranChangeSets; } public RanChangeSet getRanChangeSet(ChangeSet changeSet) { for (RanChangeSet ranChangeSet : ranChangeSets) { if (ranChangeSet.getId().equalsIgnoreCase(changeSet.getId()) && ranChangeSet.getAuthor().equalsIgnoreCase(changeSet.getAuthor()) && normalizePath(ranChangeSet.getChangeLog()).equalsIgnoreCase(normalizePath(changeSet.getFilePath()))) { return ranChangeSet; } } return null; } protected String normalizePath(String filePath) { if (ignoreClasspathPrefix) { return filePath.replaceFirst("^classpath:", ""); } return filePath; } }