private static Object getTablestoreValue()

in client-adapter/tablestore/src/main/java/com/alibaba/otter/canal/client/adapter/tablestore/support/SyncUtil.java [38:111]


    private static Object getTablestoreValue(Object value, TablestoreFieldType type) {
        switch (type) {
            case STRING:
                if (value instanceof byte[]) {
                    return new String(((byte[])value));
                }
                return value.toString();
            case INT:
                if (value instanceof Number) {
                    return ((Number) value).longValue();
                } else if (value instanceof Timestamp) {
                    return ((Timestamp) value).getTime();
                } else if (value instanceof String) {
                    try {
                        return Long.parseLong((String) value);
                    } catch (NumberFormatException e) {
                        logger.error("Error while parse long:" + value.toString(), e);
                        throw e;
                    }
                } else if (value instanceof Date) {
                    return ((Date) value).getTime();
                } else if (value instanceof Time) {
                    return ((Time) value).getTime();
                } else if (value instanceof java.util.Date) {
                    return ((java.util.Date) value).getTime();
                } else if (value instanceof Boolean) {
                    Boolean ob =  ((Boolean)value);
                    return ob ? 1L : 0L;
                }
                return null;
            case BINARY:
                if (value instanceof byte[]) {
                    return value;
                } else if (value instanceof Blob) {
                    Blob item = ((Blob) value);
                    int length;
                    try {
                        length = (int) item.length();
                        return item.getBytes(1, length);
                    } catch (SQLException e) {
                        logger.error("Error while convert blob to binary, blob:" + item.toString(), e);
                        throw new RuntimeException(e);
                    }
                } else if (value instanceof String) {
                    return ((String) value).getBytes(StandardCharsets.ISO_8859_1);
                } else if (value instanceof Clob) {
                    return value.toString().getBytes(StandardCharsets.ISO_8859_1);
                }
                return null;
            case BOOL:
                if (value instanceof Boolean) {
                    return value;
                } else if (value instanceof String) {
                    return !value.equals("0");
                } else if (value instanceof Number) {
                    return ((Number) value).intValue() != 0;
                }
                return null;
            case DOUBLE:
                if (value instanceof Number) {
                    return ((Number)value).doubleValue();
                } else if (value instanceof String) {
                    try {
                        return Double.parseDouble((String) value);
                    } catch (NumberFormatException e) {
                        logger.error("Error while parse double:" + value.toString(), e);
                        throw e;
                    }
                }
                return null;
            default:
                return value;
        }
    }