public ITupleReference getTupleFromMetadataEntity()

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