1 | |
package liquibase.sqlgenerator.core; |
2 | |
|
3 | |
import liquibase.database.Database; |
4 | |
import liquibase.database.typeconversion.TypeConverterFactory; |
5 | |
import liquibase.exception.ValidationErrors; |
6 | |
import liquibase.sql.Sql; |
7 | |
import liquibase.sqlgenerator.SqlGenerator; |
8 | |
import liquibase.sqlgenerator.SqlGeneratorChain; |
9 | |
import liquibase.sqlgenerator.SqlGeneratorFactory; |
10 | |
import liquibase.statement.NotNullConstraint; |
11 | |
import liquibase.statement.core.CreateDatabaseChangeLogLockTableStatement; |
12 | |
import liquibase.statement.core.CreateTableStatement; |
13 | |
import liquibase.statement.core.InsertStatement; |
14 | |
|
15 | |
import java.util.ArrayList; |
16 | |
import java.util.Arrays; |
17 | |
import java.util.List; |
18 | |
|
19 | 28 | public class CreateDatabaseChangeLogLockTableGenerator extends |
20 | |
AbstractSqlGenerator<CreateDatabaseChangeLogLockTableStatement> { |
21 | |
|
22 | |
public ValidationErrors validate( |
23 | |
CreateDatabaseChangeLogLockTableStatement createDatabaseChangeLogLockTableStatement, Database database, |
24 | |
SqlGeneratorChain sqlGeneratorChain) { |
25 | 15 | return new ValidationErrors(); |
26 | |
} |
27 | |
|
28 | |
public Sql[] generateSql(CreateDatabaseChangeLogLockTableStatement statement, Database database, |
29 | |
SqlGeneratorChain sqlGeneratorChain) { |
30 | 0 | CreateTableStatement createTableStatement = new CreateTableStatement(database.getLiquibaseSchemaName(), |
31 | |
database.getDatabaseChangeLogLockTableName()) |
32 | |
.addPrimaryKeyColumn("ID", |
33 | |
TypeConverterFactory.getInstance().findTypeConverter(database).getDataType("INT", false), null, |
34 | |
null, null, new NotNullConstraint()) |
35 | |
.addColumn("LOCKED", |
36 | |
TypeConverterFactory.getInstance().findTypeConverter(database).getDataType("BOOLEAN", false), |
37 | |
null, new NotNullConstraint()) |
38 | |
.addColumn("LOCKGRANTED", |
39 | |
TypeConverterFactory.getInstance().findTypeConverter(database).getDataType("DATETIME", false)) |
40 | |
.addColumn( |
41 | |
"LOCKEDBY", |
42 | |
TypeConverterFactory.getInstance().findTypeConverter(database) |
43 | |
.getDataType("VARCHAR(255)", false)); |
44 | |
|
45 | 0 | InsertStatement insertStatement = new InsertStatement(database.getLiquibaseSchemaName(), |
46 | |
database.getDatabaseChangeLogLockTableName()).addColumnValue("ID", 1).addColumnValue("LOCKED", |
47 | |
Boolean.FALSE); |
48 | |
|
49 | 0 | List<Sql> sql = new ArrayList<Sql>(); |
50 | |
|
51 | 0 | sql.addAll(Arrays.asList(SqlGeneratorFactory.getInstance().generateSql(createTableStatement, database))); |
52 | 0 | sql.addAll(Arrays.asList(SqlGeneratorFactory.getInstance().generateSql(insertStatement, database))); |
53 | |
|
54 | 0 | return sql.toArray(new Sql[sql.size()]); |
55 | |
} |
56 | |
} |