package liquibase.change.custom;
import liquibase.database.Database;
import liquibase.exception.RollbackImpossibleException;
import liquibase.exception.SetupException;
import liquibase.exception.ValidationErrors;
import liquibase.resource.ResourceAccessor;
import liquibase.statement.SqlStatement;
import liquibase.statement.core.RawSqlStatement;
import liquibase.structure.core.Column;
import liquibase.structure.core.Table;
public class ExampleCustomSqlChange implements CustomSqlChange, CustomSqlRollback {
private String tableName;
private String columnName;
private String newValue;
@SuppressWarnings({"UnusedDeclaration", "FieldCanBeLocal"})
private ResourceAccessor resourceAccessor;
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getColumnName() {
return columnName;
}
public void setColumnName(String columnName) {
this.columnName = columnName;
}
public String getNewValue() {
return newValue;
}
public void setNewValue(String newValue) {
this.newValue = newValue;
}
@Override
public SqlStatement[] generateStatements(Database database) {
return new SqlStatement[]{
new RawSqlStatement("update "+database.escapeObjectName(tableName, Table.class)
+" set "+database.escapeObjectName(columnName, Column.class)+" = "+newValue)
};
}
@Override
public SqlStatement[] generateRollbackStatements(Database database) throws RollbackImpossibleException {
return new SqlStatement[]{
new RawSqlStatement("update "+database.correctObjectName(tableName, Table.class)
+" set "+database.escapeObjectName(columnName, Column.class)+" = null")
};
}
@Override
public String getConfirmationMessage() {
return "Custom class updated "+tableName+"."+columnName;
}
@Override
public void setUp() throws SetupException {
}
@Override
public void setFileOpener(ResourceAccessor resourceAccessor) {
this.resourceAccessor = resourceAccessor;
}
@Override
public ValidationErrors validate(Database database) {
return new ValidationErrors();
}
}