public static BigDecimal toBigDecimal()

in eventmesh-connectors/eventmesh-connector-canal/src/main/java/org/apache/eventmesh/connector/canal/SqlUtils.java [342:393]


    public static BigDecimal toBigDecimal(Object value) {
        if (value == null) {
            return null;
        }
        if (value instanceof String) {
            String strValue = (String) value;
            if (!org.apache.commons.lang3.StringUtils.isNotBlank(strValue)) {
                return null;
            }
            try {
                return new BigDecimal(strValue);
            } catch (Exception e) {
                if ("true".equals(strValue)) {
                    return BigDecimal.ONE;
                }
                if ("false".equals(strValue)) {
                    return BigDecimal.ZERO;
                }
                return new BigDecimal(strValue);
            }
        } else if (value instanceof Number) {
            if (value instanceof BigDecimal) {
                return (BigDecimal) value;
            }
            if (value instanceof Integer) {
                return BigDecimal.valueOf(((Integer) value).longValue());
            }
            if (value instanceof Long) {
                return BigDecimal.valueOf(((Long) value));
            }
            if (value instanceof Double) {
                return BigDecimal.valueOf(((Double) value));
            }
            if (value instanceof Float) {
                return BigDecimal.valueOf(((Float) value).doubleValue());
            }
            if (value instanceof BigInteger) {
                return new BigDecimal((BigInteger) value);
            }
            if (value instanceof Byte) {
                return BigDecimal.valueOf(((Byte) value).longValue());
            }
            if (value instanceof Short) {
                return BigDecimal.valueOf(((Short) value).longValue());
            }
            return null;
        } else if (value instanceof Boolean) {
            return Boolean.TRUE.equals(value) ? BigDecimal.ONE : BigDecimal.ZERO;
        } else {
            throw new UnsupportedOperationException("class " + value.getClass() + ", value '" + value + "' , parse to big decimal failed.");
        }
    }