1 | |
package liquibase.sqlgenerator.core; |
2 | |
|
3 | |
import liquibase.database.Database; |
4 | |
import liquibase.database.core.DB2Database; |
5 | |
import liquibase.database.core.FirebirdDatabase; |
6 | |
import liquibase.database.core.H2Database; |
7 | |
import liquibase.database.core.HsqlDatabase; |
8 | |
import liquibase.database.core.MaxDBDatabase; |
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.CreateSequenceStatement; |
14 | |
|
15 | 80 | public class CreateSequenceGenerator extends AbstractSqlGenerator<CreateSequenceStatement> { |
16 | |
|
17 | |
@Override |
18 | |
public boolean supports(CreateSequenceStatement statement, Database database) { |
19 | 59 | return database.supportsSequences(); |
20 | |
} |
21 | |
|
22 | |
@Override |
23 | |
public ValidationErrors validate(CreateSequenceStatement statement, Database database, |
24 | |
SqlGeneratorChain sqlGeneratorChain) { |
25 | 11 | ValidationErrors validationErrors = new ValidationErrors(); |
26 | |
|
27 | 11 | validationErrors.checkRequiredField("sequenceName", statement.getSequenceName()); |
28 | |
|
29 | 11 | validationErrors |
30 | |
.checkDisallowedField("startValue", statement.getStartValue(), database, FirebirdDatabase.class); |
31 | 11 | validationErrors.checkDisallowedField("incrementBy", statement.getIncrementBy(), database, |
32 | |
FirebirdDatabase.class); |
33 | |
|
34 | 11 | validationErrors.checkDisallowedField("minValue", statement.getMinValue(), database, FirebirdDatabase.class, |
35 | |
H2Database.class, HsqlDatabase.class); |
36 | 11 | validationErrors.checkDisallowedField("maxValue", statement.getMaxValue(), database, FirebirdDatabase.class, |
37 | |
H2Database.class, HsqlDatabase.class); |
38 | |
|
39 | 11 | validationErrors.checkDisallowedField("ordered", statement.getOrdered(), database, DB2Database.class, |
40 | |
MaxDBDatabase.class); |
41 | |
|
42 | 11 | return validationErrors; |
43 | |
} |
44 | |
|
45 | |
@Override |
46 | |
public Sql[] generateSql(CreateSequenceStatement statement, Database database, SqlGeneratorChain sqlGeneratorChain) { |
47 | 0 | StringBuffer buffer = new StringBuffer(); |
48 | 0 | buffer.append("CREATE SEQUENCE "); |
49 | 0 | buffer.append(database.escapeSequenceName(statement.getSchemaName(), statement.getSequenceName())); |
50 | 0 | if (statement.getStartValue() != null) { |
51 | 0 | buffer.append(" START WITH ").append(statement.getStartValue()); |
52 | |
} |
53 | 0 | if (statement.getIncrementBy() != null) { |
54 | 0 | buffer.append(" INCREMENT BY ").append(statement.getIncrementBy()); |
55 | |
} |
56 | 0 | if (statement.getMinValue() != null) { |
57 | 0 | buffer.append(" MINVALUE ").append(statement.getMinValue()); |
58 | |
} |
59 | 0 | if (statement.getMaxValue() != null) { |
60 | 0 | buffer.append(" MAXVALUE ").append(statement.getMaxValue()); |
61 | |
} |
62 | |
|
63 | 0 | if (statement.getOrdered() != null) { |
64 | 0 | if (statement.getOrdered()) { |
65 | 0 | buffer.append(" ORDER"); |
66 | |
} |
67 | |
} |
68 | 0 | if (statement.getCycle() != null) { |
69 | 0 | if (statement.getCycle()) { |
70 | 0 | buffer.append(" CYCLE"); |
71 | |
} |
72 | |
} |
73 | |
|
74 | 0 | return new Sql[] { new UnparsedSql(buffer.toString()) }; |
75 | |
} |
76 | |
} |