protected Channel createMetadataEntityFromARecord()

in asterix-bad/src/main/java/org/apache/asterix/bad/metadata/ChannelTupleTranslator.java [63:107]


    protected Channel createMetadataEntityFromARecord(ARecord channelRecord) {
        String dataverseCanonicalName = ((AString) channelRecord
                .getValueByPos(BADMetadataRecordTypes.CHANNEL_ARECORD_DATAVERSE_NAME_FIELD_INDEX)).getStringValue();
        DataverseName dataverseName = DataverseName.createFromCanonicalForm(dataverseCanonicalName);
        String channelName =
                ((AString) channelRecord.getValueByPos(BADMetadataRecordTypes.CHANNEL_ARECORD_CHANNEL_NAME_FIELD_INDEX))
                        .getStringValue();
        String subscriptionsName = ((AString) channelRecord
                .getValueByPos(BADMetadataRecordTypes.CHANNEL_ARECORD_SUBSCRIPTIONS_NAME_FIELD_INDEX)).getStringValue();
        String resultsName =
                ((AString) channelRecord.getValueByPos(BADMetadataRecordTypes.CHANNEL_ARECORD_RESULTS_NAME_FIELD_INDEX))
                        .getStringValue();

        AOrderedList function = ((AOrderedList) channelRecord
                .getValueByPos(BADMetadataRecordTypes.CHANNEL_ARECORD_FUNCTION_FIELD_INDEX));
        Triple<DataverseName, String, String> functionSignature = ProcedureTupleTranslator.getDependency(function);

        String duration =
                ((AString) channelRecord.getValueByPos(BADMetadataRecordTypes.CHANNEL_ARECORD_DURATION_FIELD_INDEX))
                        .getStringValue();

        IACursor dependenciesCursor = ((AOrderedList) channelRecord
                .getValueByPos(BADMetadataRecordTypes.CHANNEL_ARECORD_DEPENDENCIES_FIELD_INDEX)).getCursor();
        List<List<Triple<DataverseName, String, String>>> dependencies = new ArrayList<>();
        while (dependenciesCursor.next()) {
            List<Triple<DataverseName, String, String>> dependencyList = new ArrayList<>();
            IACursor qualifiedDependencyCursor = ((AOrderedList) dependenciesCursor.get()).getCursor();
            while (qualifiedDependencyCursor.next()) {
                Triple<DataverseName, String, String> dependency =
                        ProcedureTupleTranslator.getDependency((AOrderedList) qualifiedDependencyCursor.get());
                dependencyList.add(dependency);
            }
            dependencies.add(dependencyList);
        }

        String channelBody =
                ((AString) channelRecord.getValueByPos(BADMetadataRecordTypes.CHANNEL_ARECORD_BODY_FIELD_INDEX))
                        .getStringValue();

        FunctionSignature signature = new FunctionSignature(functionSignature.first, functionSignature.second,
                Integer.parseInt(functionSignature.third));

        return new Channel(dataverseName, channelName, subscriptionsName, resultsName, signature, duration,
                dependencies, channelBody);
    }