Coverage Report - liquibase.change.core.AddAutoIncrementChange
 
Classes in this File Line Coverage Branch Coverage Complexity
AddAutoIncrementChange
100%
19/19
100%
2/2
1.182
 
 1  
 package liquibase.change.core;
 2  
 
 3  
 import liquibase.change.AbstractChange;
 4  
 import liquibase.change.ChangeMetaData;
 5  
 import liquibase.database.Database;
 6  
 import liquibase.database.core.PostgresDatabase;
 7  
 import liquibase.statement.DatabaseFunction;
 8  
 import liquibase.statement.SqlStatement;
 9  
 import liquibase.statement.core.AddAutoIncrementStatement;
 10  
 import liquibase.statement.core.AddDefaultValueStatement;
 11  
 import liquibase.statement.core.CreateSequenceStatement;
 12  
 import liquibase.statement.core.SetNullableStatement;
 13  
 import liquibase.util.StringUtils;
 14  
 
 15  
 /**
 16  
  * Makes an existing column into an auto-increment column. This change is only valid for databases with
 17  
  * auto-increment/identity columns. The current version does not support MS-SQL.
 18  
  */
 19  
 public class AddAutoIncrementChange extends AbstractChange {
 20  
 
 21  
     private String schemaName;
 22  
     private String tableName;
 23  
     private String columnName;
 24  
     private String columnDataType;
 25  
 
 26  
     public AddAutoIncrementChange() {
 27  21
         super("addAutoIncrement", "Set Column as Auto-Increment", ChangeMetaData.PRIORITY_DEFAULT);
 28  21
     }
 29  
 
 30  
     public String getSchemaName() {
 31  50
         return schemaName;
 32  
     }
 33  
 
 34  
     public void setSchemaName(String schemaName) {
 35  3
         this.schemaName = StringUtils.trimToNull(schemaName);
 36  3
     }
 37  
 
 38  
     public String getTableName() {
 39  63
         return tableName;
 40  
     }
 41  
 
 42  
     public void setTableName(String tableName) {
 43  3
         this.tableName = tableName;
 44  3
     }
 45  
 
 46  
     public String getColumnName() {
 47  63
         return columnName;
 48  
     }
 49  
 
 50  
     public void setColumnName(String columnName) {
 51  3
         this.columnName = columnName;
 52  3
     }
 53  
 
 54  
     public String getColumnDataType() {
 55  54
         return columnDataType;
 56  
     }
 57  
 
 58  
     public void setColumnDataType(String columnDataType) {
 59  3
         this.columnDataType = columnDataType;
 60  3
     }
 61  
 
 62  
     public SqlStatement[] generateStatements(Database database) {
 63  54
         if (database instanceof PostgresDatabase) {
 64  4
             String sequenceName = (getTableName() + "_" + getColumnName() + "_seq").toLowerCase();
 65  4
             return new SqlStatement[] {
 66  
                     new CreateSequenceStatement(schemaName, sequenceName),
 67  
                     new SetNullableStatement(schemaName, getTableName(), getColumnName(), null, false),
 68  
                     new AddDefaultValueStatement(schemaName, getTableName(), getColumnName(), getColumnDataType(),
 69  
                             new DatabaseFunction("NEXTVAL('" + sequenceName + "')")), };
 70  
         }
 71  
 
 72  50
         return new SqlStatement[] { new AddAutoIncrementStatement(getSchemaName(), getTableName(), getColumnName(),
 73  
                 getColumnDataType()) };
 74  
     }
 75  
 
 76  
     public String getConfirmationMessage() {
 77  1
         return "Auto-increment added to " + getTableName() + "." + getColumnName();
 78  
     }
 79  
 }