package liquibase.sqlgenerator.core; import liquibase.database.Database; import liquibase.exception.ValidationErrors; import liquibase.sql.Sql; import liquibase.sqlgenerator.SqlGenerator; import liquibase.sqlgenerator.SqlGeneratorChain; import liquibase.sqlgenerator.SqlGeneratorFactory; import liquibase.statement.core.UnlockDatabaseChangeLogStatement; import liquibase.statement.core.UpdateStatement; public class UnlockDatabaseChangeLogGenerator extends AbstractSqlGenerator<UnlockDatabaseChangeLogStatement> { public ValidationErrors validate(UnlockDatabaseChangeLogStatement statement, Database database, SqlGeneratorChain sqlGeneratorChain) { return new ValidationErrors(); } public Sql[] generateSql(UnlockDatabaseChangeLogStatement statement, Database database, SqlGeneratorChain sqlGeneratorChain) { String liquibaseSchema = database.getLiquibaseSchemaName(); UpdateStatement releaseStatement = new UpdateStatement(liquibaseSchema, database.getDatabaseChangeLogLockTableName()); releaseStatement.addNewColumnValue("LOCKED", false); releaseStatement.addNewColumnValue("LOCKGRANTED", null); releaseStatement.addNewColumnValue("LOCKEDBY", null); releaseStatement.setWhereClause(database.escapeColumnName(liquibaseSchema, database.getDatabaseChangeLogTableName(), "ID")+" = 1"); return SqlGeneratorFactory.getInstance().generateSql(releaseStatement, database); } }