package liquibase.ext.spatial.sqlgenerator;
import liquibase.database.Database;
import liquibase.exception.ValidationErrors;
import liquibase.ext.spatial.statement.CreateSpatialIndexStatement;
import liquibase.sqlgenerator.SqlGenerator;
import liquibase.sqlgenerator.SqlGeneratorChain;
import liquibase.sqlgenerator.core.AbstractSqlGenerator;
import liquibase.structure.core.Index;
import liquibase.structure.core.Table;
/**
* <code>AbstractCreateSpatialIndexGenerator</code> provides a minimal implementation of a
* <code>CreateSpatialIndexGenerator</code>.
*/
public abstract class AbstractCreateSpatialIndexGenerator extends
AbstractSqlGenerator<CreateSpatialIndexStatement> {
/**
* Ensures that the table name and columns are populated.
*
* @see SqlGenerator#validate(liquibase.statement.SqlStatement, Database, SqlGeneratorChain)
*/
@Override
public ValidationErrors validate(final CreateSpatialIndexStatement statement,
final Database database, final SqlGeneratorChain sqlGeneratorChain) {
final ValidationErrors validationErrors = new ValidationErrors();
validationErrors.checkRequiredField("tableName", statement.getTableName());
validationErrors.checkRequiredField("columns", statement.getColumns());
return validationErrors;
}
protected Index getAffectedIndex(final CreateSpatialIndexStatement statement) {
return new Index().setName(statement.getIndexName()).setTable(
(Table) new Table().setName(statement.getTableName()).setSchema(
statement.getTableCatalogName(), statement.getTableSchemaName()));
}
}