package liquibase.database.typeconversion.core;
import liquibase.database.structure.type.*;
import liquibase.database.Database;
import liquibase.database.core.SQLiteDatabase;
import java.util.Locale;
public class SQLiteTypeConverter extends AbstractTypeConverter {
public int getPriority() {
return PRIORITY_DATABASE;
}
public boolean supports(Database database) {
return database instanceof SQLiteDatabase;
}
@Override
public DataType getDataType(String columnTypeString, Boolean autoIncrement) {
DataType type;
if (columnTypeString.equals("INTEGER") ||
columnTypeString.toLowerCase(Locale.ENGLISH).contains("int") ||
columnTypeString.toLowerCase(Locale.ENGLISH).contains("bit")) {
type = new IntType("INTEGER");
} else if (columnTypeString.equals("TEXT") ||
columnTypeString.toLowerCase(Locale.ENGLISH).contains("uuid") ||
columnTypeString.toLowerCase(Locale.ENGLISH).contains("uniqueidentifier") ||
columnTypeString.toLowerCase(Locale.ENGLISH).equals("uniqueidentifier") ||
columnTypeString.toLowerCase(Locale.ENGLISH).equals("datetime") ||
columnTypeString.toLowerCase(Locale.ENGLISH).contains("timestamp") ||
columnTypeString.toLowerCase(Locale.ENGLISH).contains("char") ||
columnTypeString.toLowerCase(Locale.ENGLISH).contains("clob") ||
columnTypeString.toLowerCase(Locale.ENGLISH).contains("text")) {
type = new CustomType("TEXT",0,0);
} else if (columnTypeString.equals("REAL") ||
columnTypeString.toLowerCase(Locale.ENGLISH).contains("float")) {
type = new FloatType("REAL");
} else if (columnTypeString.toLowerCase(Locale.ENGLISH).contains("blob") ||
columnTypeString.toLowerCase(Locale.ENGLISH).contains("binary")) {
type = new BlobType("BLOB");
} else if (columnTypeString.toLowerCase(Locale.ENGLISH).contains("boolean") ||
columnTypeString.toLowerCase(Locale.ENGLISH).contains("binary")) {
type = new BooleanType("BOOLEAN");
} else {
type = super.getDataType(columnTypeString, autoIncrement);
}
return type;
}
@Override
public BooleanType getBooleanType() {
return new BooleanType() {
@Override
public String getFalseBooleanValue() {
return "0";
}
@Override
public String getTrueBooleanValue() {
return "1";
}
};
}
@Override
public ClobType getClobType() {
return new ClobType("TEXT");
}
@Override
public CurrencyType getCurrencyType() {
return new CurrencyType("REAL");
}
@Override
public DateTimeType getDateTimeType() {
return new DateTimeType("TEXT");
}
}