1 | |
package liquibase.sqlgenerator.core; |
2 | |
|
3 | |
import liquibase.database.Database; |
4 | |
import liquibase.database.core.InformixDatabase; |
5 | |
import liquibase.database.typeconversion.TypeConverterFactory; |
6 | |
import liquibase.database.core.SybaseDatabase; |
7 | |
import liquibase.database.structure.Column; |
8 | |
import liquibase.database.structure.Table; |
9 | |
import liquibase.exception.ValidationErrors; |
10 | |
import liquibase.sql.Sql; |
11 | |
import liquibase.sql.UnparsedSql; |
12 | |
import liquibase.sqlgenerator.SqlGeneratorChain; |
13 | |
import liquibase.statement.core.AddDefaultValueStatement; |
14 | |
|
15 | 76 | public class AddDefaultValueGeneratorInformix extends AddDefaultValueGenerator { |
16 | |
@Override |
17 | |
public int getPriority() { |
18 | 5 | return PRIORITY_DATABASE; |
19 | |
} |
20 | |
|
21 | |
@Override |
22 | |
public boolean supports(AddDefaultValueStatement statement, Database database) { |
23 | 65 | return database instanceof InformixDatabase; |
24 | |
} |
25 | |
|
26 | |
@Override |
27 | |
public ValidationErrors validate(AddDefaultValueStatement addDefaultValueStatement, Database database, |
28 | |
SqlGeneratorChain sqlGeneratorChain) { |
29 | 1 | ValidationErrors validationErrors = super.validate(addDefaultValueStatement, database, sqlGeneratorChain); |
30 | 1 | if (addDefaultValueStatement.getColumnDataType() == null) { |
31 | 1 | validationErrors.checkRequiredField("columnDataType", addDefaultValueStatement.getColumnDataType()); |
32 | |
} |
33 | 1 | return validationErrors; |
34 | |
} |
35 | |
|
36 | |
@Override |
37 | |
public Sql[] generateSql(AddDefaultValueStatement statement, Database database, SqlGeneratorChain sqlGeneratorChain) { |
38 | |
|
39 | 0 | Column column = new Column().setTable(new Table(statement.getTableName()).setSchema(statement.getSchemaName())) |
40 | |
.setName(statement.getColumnName()); |
41 | 0 | Object defaultValue = statement.getDefaultValue(); |
42 | 0 | StringBuffer sql = new StringBuffer("ALTER TABLE "); |
43 | 0 | sql.append(database.escapeTableName(statement.getSchemaName(), statement.getTableName())); |
44 | 0 | sql.append(" MODIFY ("); |
45 | 0 | sql.append(database.escapeColumnName(statement.getSchemaName(), statement.getTableName(), |
46 | |
statement.getColumnName())); |
47 | 0 | sql.append(" "); |
48 | 0 | sql.append(TypeConverterFactory.getInstance().findTypeConverter(database) |
49 | |
.getDataType(statement.getColumnDataType(), false)); |
50 | 0 | sql.append(" DEFAULT "); |
51 | 0 | sql.append(TypeConverterFactory.getInstance().findTypeConverter(database).getDataType(defaultValue) |
52 | |
.convertObjectToString(defaultValue, database)); |
53 | 0 | sql.append(")"); |
54 | 0 | UnparsedSql unparsedSql = new UnparsedSql(sql.toString(), column); |
55 | 0 | return new Sql[] { unparsedSql }; |
56 | |
} |
57 | |
} |