package liquibase.structure.core; import liquibase.serializer.AbstractLiquibaseSerializable; public class DataType extends AbstractLiquibaseSerializable { private String typeName; private Integer dataTypeId; private Integer columnSize; private ColumnSizeUnit columnSizeUnit; private Integer decimalDigits; private Integer radix; private Integer characterOctetLength; public DataType() { } public DataType(String typeName) { this.typeName = typeName; } public String getTypeName() { return typeName; } public void setTypeName(String typeName) { this.typeName = typeName; } public Integer getDataTypeId() { return dataTypeId; } public void setDataTypeId(Integer dataTypeId) { this.dataTypeId = dataTypeId; } public Integer getColumnSize() { return columnSize; } public void setColumnSize(Integer columnSize) { this.columnSize = columnSize; } public ColumnSizeUnit getColumnSizeUnit() { return columnSizeUnit; } public void setColumnSizeUnit(ColumnSizeUnit columnSizeUnit) { this.columnSizeUnit = columnSizeUnit; } public Integer getDecimalDigits() { return decimalDigits; } public void setDecimalDigits(Integer decimalDigits) { this.decimalDigits = decimalDigits; } @Override public String toString() { String value = typeName; boolean unsigned = false; if (value.toLowerCase().endsWith(" unsigned")) { value = value.substring(0, value.length()-" unsigned".length()); unsigned = true; } if (columnSize == null) { if (decimalDigits != null) { value += "(*, "+decimalDigits+")"; } } else { value += "("; value += columnSize; if (decimalDigits != null) { value+= ", "+decimalDigits ; } //Failing on data types such as nvarchar if included if (columnSizeUnit != null && (typeName.equalsIgnoreCase("VARCHAR") || typeName.equalsIgnoreCase("VARCHAR2")|| typeName.equalsIgnoreCase("CHAR"))) { value += " " + columnSizeUnit; } value +=")"; } if (unsigned) { value += " UNSIGNED"; } return value; } public Integer getRadix() { return radix; } public void setRadix(Integer radix) { this.radix = radix; } public Integer getCharacterOctetLength() { return characterOctetLength; } public void setCharacterOctetLength(Integer characterOctetLength) { this.characterOctetLength = characterOctetLength; } public static enum ColumnSizeUnit { BYTE, CHAR, } @Override public String getSerializedObjectName() { return "dataType"; } @Override public String getSerializedObjectNamespace() { return STANDARD_SNAPSHOT_NAMESPACE; } }