package liquibase.parser.core.sql; import liquibase.change.core.RawSQLChange; import liquibase.changelog.ChangeSet; import liquibase.changelog.DatabaseChangeLog; import liquibase.changelog.ChangeLogParameters; import liquibase.exception.ChangeLogParseException; import liquibase.parser.ChangeLogParser; import liquibase.resource.ResourceAccessor; import liquibase.util.StreamUtil; import java.io.IOException; import java.io.InputStream; public class SqlChangeLogParser implements ChangeLogParser { public boolean supports(String changeLogFile, ResourceAccessor resourceAccessor) { return changeLogFile.endsWith(".sql"); } public int getPriority() { return PRIORITY_DEFAULT; } public DatabaseChangeLog parse(String physicalChangeLogLocation, ChangeLogParameters changeLogParameters, ResourceAccessor resourceAccessor) throws ChangeLogParseException { RawSQLChange change = new RawSQLChange(); try { InputStream sqlStream = resourceAccessor.getResourceAsStream(physicalChangeLogLocation); String sql = StreamUtil.getStreamContents(sqlStream, null); change.setSql(sql); } catch (IOException e) { throw new ChangeLogParseException(e); } change.setResourceAccessor(resourceAccessor); change.setSplitStatements(false); change.setStripComments(false); ChangeSet changeSet = new ChangeSet("raw", "includeAll", false, false, physicalChangeLogLocation, null, null, true); changeSet.addChange(change); DatabaseChangeLog changeLog = new DatabaseChangeLog(); changeLog.setPhysicalFilePath(physicalChangeLogLocation); changeLog.addChangeSet(changeSet); return changeLog; } }