private void writeEdgeRecord()

in asterix-graphix/src/main/java/org/apache/asterix/graphix/metadata/entitytupletranslators/GraphTupleTranslator.java [321:370]


    private void writeEdgeRecord(Edge edge, ArrayBackedValueStorage itemValue) throws HyracksDataException {
        elemRecordBuilder.reset(EDGE_RECORD_DETAIL.getRecordType());

        // Write the label name.
        fieldValue.reset();
        aString.setValue(edge.getLabel().toString());
        stringSerde.serialize(aString, fieldValue.getDataOutput());
        elemRecordBuilder.addField(EDGE_RECORD_DETAIL.getIndexForField(FIELD_NAME_LABEL), fieldValue);

        // Write the destination label name.
        fieldValue.reset();
        aString.setValue(edge.getDestinationLabel().toString());
        stringSerde.serialize(aString, fieldValue.getDataOutput());
        elemRecordBuilder.addField(EDGE_RECORD_DETAIL.getIndexForField(FIELD_NAME_DESTINATION_LABEL), fieldValue);

        // Write the source label name.
        fieldValue.reset();
        aString.setValue(edge.getSourceLabel().toString());
        stringSerde.serialize(aString, fieldValue.getDataOutput());
        elemRecordBuilder.addField(EDGE_RECORD_DETAIL.getIndexForField(FIELD_NAME_SOURCE_LABEL), fieldValue);

        // Write the source key fields.
        fieldValue.reset();
        innerListBuilder.reset(stringListList);
        for (List<String> keyField : edge.getSourceKeyFieldNames()) {
            writeNameList(keyField, itemValue);
            innerListBuilder.addItem(itemValue);
        }
        innerListBuilder.write(fieldValue.getDataOutput(), true);
        elemRecordBuilder.addField(EDGE_RECORD_DETAIL.getIndexForField(FIELD_NAME_SOURCE_KEY), fieldValue);

        // Write the destination key fields.
        fieldValue.reset();
        innerListBuilder.reset(stringListList);
        for (List<String> keyField : edge.getDestinationKeyFieldNames()) {
            writeNameList(keyField, itemValue);
            innerListBuilder.addItem(itemValue);
        }
        innerListBuilder.write(fieldValue.getDataOutput(), true);
        elemRecordBuilder.addField(EDGE_RECORD_DETAIL.getIndexForField(FIELD_NAME_DESTINATION_KEY), fieldValue);

        // Write the definition body.
        fieldValue.reset();
        aString.setValue(edge.getDefinitionBody());
        stringSerde.serialize(aString, fieldValue.getDataOutput());
        elemRecordBuilder.addField(EDGE_RECORD_DETAIL.getIndexForField(FIELD_NAME_BODY), fieldValue);

        itemValue.reset();
        elemRecordBuilder.write(itemValue.getDataOutput(), true);
    }