in asterix-graphix/src/main/java/org/apache/asterix/graphix/metadata/entitytupletranslators/GraphTupleTranslator.java [238:290]
public ITupleReference getTupleFromMetadataEntity(Graph graph) throws HyracksDataException {
// Write our primary key (dataverse name, graph name).
String dataverseCanonicalName = graph.getDataverseName().getCanonicalForm();
tupleBuilder.reset();
aString.setValue(dataverseCanonicalName);
stringSerde.serialize(aString, tupleBuilder.getDataOutput());
tupleBuilder.addFieldEndOffset();
aString.setValue(graph.getGraphName());
stringSerde.serialize(aString, tupleBuilder.getDataOutput());
tupleBuilder.addFieldEndOffset();
// Write the payload in the third field of the tuple.
recordBuilder.reset(GRAPH_RECORD_DETAIL.getRecordType());
// Write the dataverse name.
fieldValue.reset();
aString.setValue(dataverseCanonicalName);
stringSerde.serialize(aString, fieldValue.getDataOutput());
recordBuilder.addField(GRAPH_RECORD_DETAIL.getIndexForField(FIELD_NAME_DATAVERSE_NAME), fieldValue);
// Write the graph name.
fieldValue.reset();
aString.setValue(graph.getGraphName());
stringSerde.serialize(aString, fieldValue.getDataOutput());
recordBuilder.addField(GRAPH_RECORD_DETAIL.getIndexForField(FIELD_NAME_GRAPH_NAME), fieldValue);
// Write our vertex set.
ArrayBackedValueStorage itemValue = new ArrayBackedValueStorage();
listBuilder.reset((AOrderedListType) GRAPH_RECORD_DETAIL.getTypeForField(FIELD_NAME_VERTICES));
for (Vertex vertex : graph.getGraphSchema().getVertices()) {
writeVertexRecord(vertex, itemValue);
listBuilder.addItem(itemValue);
}
fieldValue.reset();
listBuilder.write(fieldValue.getDataOutput(), true);
recordBuilder.addField(GRAPH_RECORD_DETAIL.getIndexForField(FIELD_NAME_VERTICES), fieldValue);
// Write our edge set.
listBuilder.reset((AOrderedListType) GRAPH_RECORD_DETAIL.getTypeForField(FIELD_NAME_EDGES));
for (Edge edge : graph.getGraphSchema().getEdges()) {
writeEdgeRecord(edge, itemValue);
listBuilder.addItem(itemValue);
}
fieldValue.reset();
listBuilder.write(fieldValue.getDataOutput(), true);
recordBuilder.addField(GRAPH_RECORD_DETAIL.getIndexForField(FIELD_NAME_EDGES), fieldValue);
// Finally, write our record.
recordBuilder.write(tupleBuilder.getDataOutput(), true);
tupleBuilder.addFieldEndOffset();
tuple.reset(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray());
return tuple;
}