public BaseDataType getDataType()

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);
    }