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