in asterix-graphix/src/main/java/org/apache/asterix/graphix/metadata/entitytupletranslators/DependencyTupleTranslator.java [182:270]
public ITupleReference getTupleFromMetadataEntity(IEntityRequirements requirements) throws HyracksDataException {
// Write our primary key.
tupleBuilder.reset();
aString.setValue(requirements.getPrimaryKeyValue());
stringSerde.serialize(aString, tupleBuilder.getDataOutput());
tupleBuilder.addFieldEndOffset();
// Write the payload in the third field of the tuple.
recordBuilder.reset(GRA_RECORD_DETAIL.getRecordType());
// Write our primary key.
fieldValue.reset();
aString.setValue(requirements.getPrimaryKeyValue());
stringSerde.serialize(aString, fieldValue.getDataOutput());
recordBuilder.addField(GRA_RECORD_DETAIL.getIndexForField(FIELD_NAME_DEPENDENCY_ID), fieldValue);
// Write the dataverse name.
fieldValue.reset();
aString.setValue(requirements.getDataverseName().getCanonicalForm());
stringSerde.serialize(aString, fieldValue.getDataOutput());
recordBuilder.addField(GRA_RECORD_DETAIL.getIndexForField(FIELD_NAME_DATAVERSE_NAME), fieldValue);
// Write the entity name.
fieldValue.reset();
aString.setValue(requirements.getEntityName());
stringSerde.serialize(aString, fieldValue.getDataOutput());
recordBuilder.addField(GRA_RECORD_DETAIL.getIndexForField(FIELD_NAME_ENTITY_NAME), fieldValue);
// Write the entity kind.
fieldValue.reset();
aString.setValue(requirements.getDependentKind().toString());
stringSerde.serialize(aString, fieldValue.getDataOutput());
recordBuilder.addField(GRA_RECORD_DETAIL.getIndexForField(FIELD_NAME_KIND), fieldValue);
// Write our dependencies list.
listBuilder.reset((AOrderedListType) GRA_RECORD_DETAIL.getTypeForField(FIELD_NAME_DEPENDENCIES));
for (DependencyIdentifier dependency : requirements) {
depRecordBuilder.reset(DEP_RECORD_DETAIL.getRecordType());
// Write the dependency dataverse.
fieldValue.reset();
aString.setValue(dependency.getDataverseName().getCanonicalForm());
stringSerde.serialize(aString, fieldValue.getDataOutput());
depRecordBuilder.addField(DEP_RECORD_DETAIL.getIndexForField(FIELD_NAME_DATAVERSE_NAME), fieldValue);
// Write the dependency entity name.
fieldValue.reset();
aString.setValue(dependency.getEntityName());
stringSerde.serialize(aString, fieldValue.getDataOutput());
depRecordBuilder.addField(DEP_RECORD_DETAIL.getIndexForField(FIELD_NAME_ENTITY_NAME), fieldValue);
// Write the dependency kind.
fieldValue.reset();
aString.setValue(dependency.getDependencyKind().toString());
stringSerde.serialize(aString, fieldValue.getDataOutput());
depRecordBuilder.addField(DEP_RECORD_DETAIL.getIndexForField(FIELD_NAME_KIND), fieldValue);
// Write the dependency entity detail, if it exists.
if (dependency.getDependencyKind() == DependencyIdentifier.Kind.FUNCTION) {
fieldValue.reset();
aString.setValue(dependency.getEntityDetail());
stringSerde.serialize(aString, fieldValue.getDataOutput());
depRecordBuilder.addField(DEP_RECORD_DETAIL.getIndexForField(FIELD_NAME_ENTITY_DETAIL), fieldValue);
}
// Write the dependencies record.
fieldValue.reset();
depRecordBuilder.write(fieldValue.getDataOutput(), true);
listBuilder.addItem(fieldValue);
}
fieldValue.reset();
listBuilder.write(fieldValue.getDataOutput(), true);
recordBuilder.addField(GRA_RECORD_DETAIL.getIndexForField(FIELD_NAME_DEPENDENCIES), fieldValue);
// Write the entity detail, if it exists.
if (requirements.getDependentKind() == IEntityRequirements.DependentKind.FUNCTION) {
FunctionRequirements functionRequirements = (FunctionRequirements) requirements;
fieldValue.reset();
aString.setValue(functionRequirements.getArityAsString());
stringSerde.serialize(aString, fieldValue.getDataOutput());
recordBuilder.addField(GRA_RECORD_DETAIL.getIndexForField(FIELD_NAME_ENTITY_DETAIL), fieldValue);
}
// Finally, write our record.
recordBuilder.write(tupleBuilder.getDataOutput(), true);
tupleBuilder.addFieldEndOffset();
tuple.reset(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray());
return tuple;
}