package liquibase.database.typeconversion.core;
import liquibase.database.structure.type.DateTimeType;
import liquibase.database.structure.type.UUIDType;
import liquibase.database.structure.type.ClobType;
import liquibase.database.structure.type.BlobType;
import liquibase.database.Database;
import liquibase.database.core.H2Database;
import liquibase.util.StringUtils;
import java.text.ParseException;
public class H2TypeConverter extends AbstractTypeConverter {
public int getPriority() {
return PRIORITY_DATABASE;
}
public boolean supports(Database database) {
return database instanceof H2Database;
}
@Override
public Object convertDatabaseValueToObject(Object defaultValue, int dataType, int columnSize, int decimalDigits, Database database) throws ParseException {
if (defaultValue != null && defaultValue instanceof String) {
if (StringUtils.trimToEmpty(((String) defaultValue)).startsWith("(NEXT VALUE FOR PUBLIC.SYSTEM_SEQUENCE_")) {
return null;
}
if (StringUtils.trimToNull(((String) defaultValue)) == null) {
return null;
}
}
return super.convertDatabaseValueToObject(defaultValue, dataType, columnSize, decimalDigits, database);
}
@Override
public DateTimeType getDateTimeType() {
return new DateTimeType("TIMESTAMP");
}
@Override
public UUIDType getUUIDType() {
return new UUIDType("UUID");
}
@Override
public ClobType getClobType() {
return new ClobType("LONGVARCHAR");
}
@Override
public BlobType getBlobType() {
return new BlobType("LONGVARBINARY");
}
}