package liquibase.sqlgenerator.core; import liquibase.database.Database; import liquibase.database.core.*; import liquibase.exception.ValidationErrors; import liquibase.sql.Sql; import liquibase.sql.UnparsedSql; import liquibase.sqlgenerator.SqlGenerator; import liquibase.sqlgenerator.SqlGeneratorChain; import liquibase.statement.core.DropTableStatement; import java.util.logging.Logger; public class DropTableGenerator extends AbstractSqlGenerator<DropTableStatement> { Logger logger = Logger.getLogger(getClass().getName()); public ValidationErrors validate(DropTableStatement dropTableStatement, Database database, SqlGeneratorChain sqlGeneratorChain) { ValidationErrors validationErrors = new ValidationErrors(); validationErrors.checkRequiredField("tableName", dropTableStatement.getTableName()); return validationErrors; } public Sql[] generateSql(DropTableStatement statement, Database database, SqlGeneratorChain sqlGeneratorChain) { StringBuffer buffer = new StringBuffer(); buffer.append("DROP TABLE ").append(database.escapeTableName(statement.getSchemaName(), statement.getTableName())); if (statement.isCascadeConstraints()) { if (!database.supportsDropTableCascadeConstraints()) { logger.warning("Database does not support drop with cascade"); } else if (database instanceof OracleDatabase) { buffer.append(" CASCADE CONSTRAINTS"); } else { buffer.append(" CASCADE"); } } return new Sql[]{ new UnparsedSql(buffer.toString()) }; } }