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