package liquibase.sqlgenerator.core; import liquibase.database.Database; import liquibase.datatype.DataTypeFactory; import liquibase.exception.ValidationErrors; import liquibase.sql.Sql; import liquibase.sqlgenerator.SqlGeneratorChain; import liquibase.sqlgenerator.SqlGeneratorFactory; import liquibase.statement.NotNullConstraint; import liquibase.statement.core.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class InitializeDatabaseChangeLogLockTableGenerator extends AbstractSqlGenerator<InitializeDatabaseChangeLogLockTableStatement> { @Override public ValidationErrors validate(InitializeDatabaseChangeLogLockTableStatement initializeDatabaseChangeLogLockTableStatement, Database database, SqlGeneratorChain sqlGeneratorChain) { return new ValidationErrors(); } @Override public Sql[] generateSql(InitializeDatabaseChangeLogLockTableStatement statement, Database database, SqlGeneratorChain sqlGeneratorChain) { DeleteStatement deleteStatement = new DeleteStatement(database.getLiquibaseCatalogName(), database.getLiquibaseSchemaName(), database.getDatabaseChangeLogLockTableName()); InsertStatement insertStatement = new InsertStatement(database.getLiquibaseCatalogName(), database.getLiquibaseSchemaName(), database.getDatabaseChangeLogLockTableName()) .addColumnValue("ID", 1) .addColumnValue("LOCKED", Boolean.FALSE); List<Sql> sql = new ArrayList<Sql>(); sql.addAll(Arrays.asList(SqlGeneratorFactory.getInstance().generateSql(deleteStatement, database))); sql.addAll(Arrays.asList(SqlGeneratorFactory.getInstance().generateSql(insertStatement, database))); return sql.toArray(new Sql[sql.size()]); } }