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