in fastmodel-transform/fastmodel-transform-api/src/main/java/com/aliyun/fastmodel/transform/api/extension/client/converter/ExtensionClientConverter.java [577:613]
public BaseDataType getDataType(Column column) {
ReverseContext context = ReverseContext.builder().build();
String dataTypeName = column.getDataType();
if (StringUtils.isBlank(dataTypeName)) {
throw new IllegalArgumentException("dataType name can't be null:" + column.getName());
}
IDataTypeName byValue = null;
try {
byValue = getDataTypeName(dataTypeName);
} catch (Exception e) {
return getLanguageParser().parseDataType(dataTypeName, context);
}
if (byValue == null) {
return getLanguageParser().parseDataType(dataTypeName, context);
}
Dimension dimension = byValue.getDimension();
if (dimension == null || dimension == Dimension.ZERO) {
return getLanguageParser().parseDataType(dataTypeName, context);
}
if (dimension == Dimension.ONE) {
boolean isValidLength = column.getLength() != null && column.getLength() > 0;
if (isValidLength) {
String dt = String.format(ONE_DIMENSION, dataTypeName, column.getLength());
return getLanguageParser().parseDataType(dt, context);
}
}
if (dimension == Dimension.TWO) {
if (column.getPrecision() != null) {
if (column.getScale() == null) {
return getLanguageParser().parseDataType(String.format(ONE_DIMENSION, dataTypeName, column.getPrecision()), context);
}
return getLanguageParser().parseDataType(String.format(TWO_DIMENSION, dataTypeName, column.getPrecision(), column.getScale()),
context);
}
}
return getLanguageParser().parseDataType(dataTypeName, context);
}