public EventMeshDataType toEventMeshType()

in eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/source/dialect/mysql/MysqlDataTypeConvertor.java [106:190]


    public EventMeshDataType<?> toEventMeshType(MysqlType connectorDataType, Map<String, Object> dataTypeProperties) throws DataTypeConvertException {

        Objects.requireNonNull(connectorDataType, "MysqlType can't be null");

        switch (connectorDataType) {
            case NULL:
                return NullEventMeshDataType.INSTANCE;
            case BOOLEAN:
                return BooleanEventMeshDataType.INSTANCE;
            case BIT: {
                /**
                 *  @see <a href="https://dev.mysql.com/doc/refman/8.0/en/bit-type.html">Mysql doc</a>
                 */
                if (dataTypeProperties == null) {
                    return BytesEventMeshDataType.INSTANCE;
                }
                Integer precision = (Integer) dataTypeProperties.get(MysqlDataTypeConvertor.PRECISION);
                if (precision != null && precision == 1) {
                    return BooleanEventMeshDataType.INSTANCE;
                }
                return BytesEventMeshDataType.INSTANCE;
            }
            case TINYINT:
                return Int8EventMeshDataType.INSTANCE;
            case TINYINT_UNSIGNED:
            case SMALLINT:
                return Int16EventMeshDataType.INSTANCE;
            case SMALLINT_UNSIGNED:
            case INT:
            case MEDIUMINT:
            case MEDIUMINT_UNSIGNED:
                return Int32EventMeshDataType.INSTANCE;
            case INT_UNSIGNED:
            case BIGINT:
                return Int64EventMeshDataType.INSTANCE;
            case FLOAT:
            case FLOAT_UNSIGNED:
                return Float32EventMeshDataType.INSTANCE;
            case DOUBLE:
            case DOUBLE_UNSIGNED:
                return Float64EventMeshDataType.INSTANCE;
            case TIME:
                return TimeEventMeshDataType.INSTANCE;
            case YEAR:
                return YearEventMeshDataType.INSTANCE;
            case DATE:
                return DateEventMeshDataType.INSTANCE;
            case TIMESTAMP:
            case DATETIME:
                return DateTimeEventMeshDataType.INSTANCE;
            case CHAR:
            case VARCHAR:
            case TINYTEXT:
            case TEXT:
            case MEDIUMTEXT:
            case LONGTEXT:
            case JSON:
            case ENUM:
            case SET:
                return StringEventMeshDataType.INSTANCE;
            case BINARY:
            case VARBINARY:
            case TINYBLOB:
            case BLOB:
            case MEDIUMBLOB:
            case LONGBLOB:
            case GEOMETRY:
                return BytesEventMeshDataType.INSTANCE;
            case BIGINT_UNSIGNED:
            case DECIMAL:
            case DECIMAL_UNSIGNED: {
                /**
                 *  @see <a https://dev.mysql.com/doc/refman/8.0/en/fixed-point-types.html">Mysql doc-DECIMAL, NUMERIC</a>
                 */
                if (dataTypeProperties == null) {
                    return new DecimalEventMeshDataType(DEFAULT_PRECISION, DEFAULT_SCALE);
                }
                Integer precision = (Integer) dataTypeProperties.getOrDefault(PRECISION, DEFAULT_PRECISION);
                Integer scale = (Integer) dataTypeProperties.getOrDefault(SCALE, DEFAULT_SCALE);
                return new DecimalEventMeshDataType(precision, scale);
            }
            default:
                throw new DataTypeConvertException(String.format("%s type is not supported", connectorDataType.getName()));
        }
    }