public static void writeRowTemplate()

in athena-neptune/src/main/java/com/amazonaws/athena/connectors/neptune/propertygraph/rowwriters/VertexRowWriter.java [55:159]


    public static void writeRowTemplate(RowWriterBuilder rowWriterBuilder, Field field)
    {
        ArrowType arrowType = field.getType();
        Types.MinorType minorType = Types.getMinorTypeForArrowType(arrowType);

        switch (minorType) {
            case BIT:
                rowWriterBuilder.withExtractor(field.getName(),
                        (BitExtractor) (Object context, NullableBitHolder value) -> {
                            Map<Object, Object> obj = (Map<Object, Object>) context;
                            ArrayList<Object> objValues = (ArrayList) obj.get(field.getName());

                            value.isSet = 0;
                            if (objValues != null && objValues.get(0) != null) {
                                Boolean booleanValue = Boolean.parseBoolean(objValues.get(0).toString());
                                value.value = booleanValue ? 1 : 0;
                                value.isSet = 1;
                            }
                        });
                break;

            case VARCHAR:
                rowWriterBuilder.withExtractor(field.getName(),
                        (VarCharExtractor) (Object context, NullableVarCharHolder value) -> {
                            Map<Object, Object> obj = (Map<Object, Object>) context;
                            String fieldName = field.getName().toLowerCase().trim();

                            value.isSet = 0;
                            // check for special keys and parse them separately
                            if (fieldName.equals(SpecialKeys.ID.toString().toLowerCase())) {
                                Object fieldValue = obj.get(T.id);
                                if (fieldValue != null) {
                                    value.value = fieldValue.toString();
                                    value.isSet = 1;
                                }
                            } 
                            else {
                                ArrayList<Object> objValues = (ArrayList) obj.get(field.getName());
                                if (objValues != null && objValues.get(0) != null) {
                                    value.value = objValues.get(0).toString();
                                    value.isSet = 1;
                                }
                            }
                        });
                break;

            case INT:
                rowWriterBuilder.withExtractor(field.getName(),
                        (IntExtractor) (Object context, NullableIntHolder value) -> {
                            Map<Object, Object> obj = (Map<Object, Object>) context;

                            value.isSet = 0;
                            ArrayList<Object> objValues = (ArrayList) obj.get(field.getName());

                            if (objValues != null && objValues.get(0) != null) {
                                value.value = Integer.parseInt(objValues.get(0).toString());
                                value.isSet = 1;
                            }
                        });
                break;

            case BIGINT:
                rowWriterBuilder.withExtractor(field.getName(),
                        (BigIntExtractor) (Object context, NullableBigIntHolder value) -> {
                            Map<Object, Object> obj = (Map<Object, Object>) context;
                            ArrayList<Object> objValues = (ArrayList) obj.get(field.getName());

                            value.isSet = 0;
                            if (objValues != null && objValues.get(0) != null) {
                                value.value = Long.parseLong(objValues.get(0).toString());
                                value.isSet = 1;
                            }
                        });
                break;

            case FLOAT4:
                rowWriterBuilder.withExtractor(field.getName(),
                        (Float4Extractor) (Object context, NullableFloat4Holder value) -> {
                            Map<Object, Object> obj = (Map<Object, Object>) context;
                            ArrayList<Object> objValues = (ArrayList) obj.get(field.getName());

                            value.isSet = 0;
                            if (objValues != null && objValues.get(0) != null) {
                                value.value = Float.parseFloat(objValues.get(0).toString());
                                value.isSet = 1;
                            }
                        });
                break;

            case FLOAT8:
                rowWriterBuilder.withExtractor(field.getName(),
                        (Float8Extractor) (Object context, NullableFloat8Holder value) -> {
                            Map<Object, Object> obj = (Map<Object, Object>) context;
                            ArrayList<Object> objValues = (ArrayList) obj.get(field.getName());

                            value.isSet = 0;
                            if (objValues != null && objValues.get(0) != null) {
                                value.value = Double.parseDouble(objValues.get(0).toString());
                                value.isSet = 1;
                            }
                        });

                break;
        }
    }