package liquibase.database.typeconversion.core;
import liquibase.database.Database;
import liquibase.database.core.SybaseDatabase;
import liquibase.database.structure.type.*;
import java.text.ParseException;
public class SybaseTypeConverter extends AbstractTypeConverter {
public int getPriority() {
return PRIORITY_DATABASE;
}
public boolean supports(Database database) {
return database instanceof SybaseDatabase;
}
@Override
public Object convertDatabaseValueToObject(Object defaultValue, int dataType, int columnSize, int decimalDigits, Database database) throws ParseException {
if (defaultValue == null) {
return null;
}
if (defaultValue instanceof String) {
if (((String) defaultValue).startsWith("('")) {
defaultValue = ((String) defaultValue).replaceFirst("^\\('", "").replaceFirst("'\\)$", "");
} else if (((String) defaultValue).startsWith("((")) {
defaultValue = ((String) defaultValue).replaceFirst("^\\(\\(", "").replaceFirst("\\)\\)$", "");
}
}
defaultValue = super.convertDatabaseValueToObject(defaultValue, dataType, columnSize, decimalDigits, database);
return defaultValue;
}
@Override
public DataType getDataType(String columnTypeString, Boolean autoIncrement) {
DataType type = super.getDataType(columnTypeString, autoIncrement);
if (autoIncrement != null && autoIncrement) {
type.setDataTypeName(type.getDataTypeName().replaceFirst(" identity$", ""));
}
return type;
}
@Override
public DateType getDateType() {
return new DateType("SMALLDATETIME");
}
@Override
public BooleanType getBooleanType() {
return new BooleanType.NumericBooleanType("BIT");
}
@Override
public CurrencyType getCurrencyType() {
return new CurrencyType("MONEY");
}
@Override
public UUIDType getUUIDType() {
return new UUIDType("UNIQUEIDENTIFIER");
}
@Override
public ClobType getClobType() {
return new ClobType("TEXT");
}
@Override
public BlobType getBlobType() {
return new BlobType("IMAGE");
}
@Override
public NumberType getNumberType() {
return new NumberType("NUMERIC");
}
}