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