package liquibase.database.typeconversion.core; import liquibase.database.structure.type.*; import liquibase.database.Database; import liquibase.database.core.FirebirdDatabase; public class FirebirdTypeConverter extends AbstractTypeConverter { public int getPriority() { return PRIORITY_DATABASE; } public boolean supports(Database database) { return database instanceof FirebirdDatabase; } @Override public DataType getDataType(String columnTypeString, Boolean autoIncrement) { DataType type = super.getDataType(columnTypeString, autoIncrement); if (type.getDataTypeName().startsWith("BLOB SUB_TYPE <0")) { return getBlobType(); } else { return type; } } @Override public BooleanType getBooleanType() { return new BooleanType.NumericBooleanType("SMALLINT"); } @Override public CurrencyType getCurrencyType() { return new CurrencyType("DECIMAL(18, 4)"); } @Override public ClobType getClobType() { return new ClobType("BLOB SUB_TYPE TEXT"); } @Override public DateTimeType getDateTimeType() { return new DateTimeType("TIMESTAMP"); } @Override public NumberType getNumberType() { return new NumericType(); } }