package liquibase.sqlgenerator.core;
import liquibase.database.Database;
import liquibase.database.core.SQLiteDatabase;
import liquibase.sql.Sql;
import liquibase.sqlgenerator.SqlGenerator;
import liquibase.sqlgenerator.SqlGeneratorChain;
import liquibase.statement.core.AddDefaultValueStatement;
public class AddDefaultValueSQLite extends AddDefaultValueGenerator {
@Override
public int getPriority() {
return SqlGenerator.PRIORITY_DATABASE;
}
@Override
public boolean supports(AddDefaultValueStatement statement, Database database) {
return database instanceof SQLiteDatabase;
}
@Override
public Sql[] generateSql(AddDefaultValueStatement statement, Database database, SqlGeneratorChain sqlGeneratorChain) {
// // SQLite does not support this ALTER TABLE operation until now.
// // For more information see: http://www.sqlite.org/omitted.html.
// // This is a small work around...
//
// List<SqlStatement> statements = new ArrayList<SqlStatement>();
//
// // define alter table logic
// SQLiteDatabase.AlterTableVisitor rename_alter_visitor = new SQLiteDatabase.AlterTableVisitor() {
// public ColumnConfig[] getColumnsToAdd() {
// return new ColumnConfig[0];
// }
// public boolean copyThisColumn(ColumnConfig column) {
// return true;
// }
// public boolean createThisColumn(ColumnConfig column) {
// if (column.getName().equals(getColumnName())) {
// try {
// if (getDefaultValue()!=null) {
// column.setDefaultValue(getDefaultValue());
// }
// if (getDefaultValueBoolean()!=null) {
// column.setDefaultValueBoolean(getDefaultValueBoolean());
// }
// if (getDefaultValueDate()!=null) {
// column.setDefaultValueDate(getDefaultValueDate());
// }
// if (getDefaultValueNumeric()!=null) {
// column.setDefaultValueNumeric(getDefaultValueNumeric());
// }
// } catch (ParseException e) {
// e.printStackTrace();
// }
// }
// return true;
// }
// public boolean createThisIndex(Index index) {
// return true;
// }
// };
//
// try {
// // alter table
// statements.addAll(SQLiteDatabase.getAlterTableStatements(
// rename_alter_visitor,
// database,getSchemaName(),getTableName()));
// } catch (DatabaseException e) {
// e.printStackTrace();
// }
//
// return statements.toArray(new SqlStatement[statements.size()]);
return new Sql[0]; //todo
}
}