liquibase.datatype.core.BigIntType Maven / Gradle / Ivy
package liquibase.datatype.core;
import liquibase.database.Database;
import liquibase.database.core.*;
import liquibase.datatype.DataTypeInfo;
import liquibase.datatype.DatabaseDataType;
import liquibase.datatype.LiquibaseDataType;
@DataTypeInfo(name="bigint", aliases = {"java.sql.Types.BIGINT", "java.math.BigInteger", "java.lang.Long", "integer8", "bigserial"}, minParameters = 0, maxParameters = 1, priority = LiquibaseDataType.PRIORITY_DEFAULT)
public class BigIntType extends LiquibaseDataType {
private boolean autoIncrement;
public boolean isAutoIncrement() {
return autoIncrement;
}
public void setAutoIncrement(boolean autoIncrement) {
this.autoIncrement = autoIncrement;
}
@Override
public DatabaseDataType toDatabaseDataType(Database database) {
if (database instanceof InformixDatabase) {
if (isAutoIncrement()) {
return new DatabaseDataType("SERIAL8");
} else {
return new DatabaseDataType("INT8");
}
}
if (database instanceof OracleDatabase) {
return new DatabaseDataType("NUMBER", 38,0);
}
if (database instanceof DB2Database || database instanceof DerbyDatabase
|| database instanceof MSSQLDatabase || database instanceof HsqlDatabase || database instanceof FirebirdDatabase) {
return new DatabaseDataType("BIGINT");
}
if (database instanceof PostgresDatabase) {
if (isAutoIncrement()) {
return new DatabaseDataType("BIGSERIAL");
}
}
return super.toDatabaseDataType(database);
}
@Override
public void finishInitialization(String originalDefinition) {
super.finishInitialization(originalDefinition);
if (originalDefinition.toLowerCase().startsWith("bigserial")) {
autoIncrement = true;
}
}
}