in src/main/java/com/google/cloud/solutions/autotokenize/common/GenericRecordFlattener.java [105:168]
private void processType(
Object value, Schema fieldSchema, String parentKey, String fieldName, String schemaKey) {
String fieldKey = Joiner.on(".").skipNulls().join(parentKey, fieldName);
switch (fieldSchema.getType()) {
case RECORD:
String recordFieldKey =
isBlank(fieldName) ? parentKey : String.format("%s.[\"%s\"]", parentKey, fieldName);
convertRecord((GenericRecord) value, fieldSchema, recordFieldKey, schemaKey);
break;
case ARRAY:
processArray(value, fieldSchema, fieldKey, schemaKey);
break;
case UNION:
processUnion(value, fieldSchema, parentKey, fieldName, schemaKey);
break;
case ENUM:
case STRING:
putValue(
fieldKey, schemaKey, Value.newBuilder().setStringValue(value.toString()).build());
break;
case BOOLEAN:
putValue(
fieldKey, schemaKey, Value.newBuilder().setBooleanValue((boolean) value).build());
break;
case FLOAT:
putValue(fieldKey, schemaKey, Value.newBuilder().setFloatValue((float) value).build());
break;
case DOUBLE:
putValue(fieldKey, schemaKey, Value.newBuilder().setFloatValue((double) value).build());
break;
case INT:
putValue(fieldKey, schemaKey, Value.newBuilder().setIntegerValue((int) value).build());
break;
case LONG:
putValue(fieldKey, schemaKey, Value.newBuilder().setIntegerValue((long) value).build());
break;
case FIXED:
putValue(
makeByteFieldKey(fieldKey),
schemaKey,
ByteValueConverter.convertBytesToValue(((GenericFixed) value).bytes()));
break;
case BYTES:
putValue(
makeByteFieldKey(fieldKey),
schemaKey,
ByteValueConverter.convertBytesToValue(((ByteBuffer) value).array()));
break;
case NULL:
break;
case MAP:
throw new IllegalArgumentException(String.format("Unsupported Type MAP at %s", fieldKey));
}
}