/** * Helper method for sub-classes to convert dimension configs into dimension columns and create metric columns. * * @param dimensionDictionary Dictionary for dimension name to dimension columns * * @return all columns including dimension columns and metric columns */ protected Set<Column> buildColumns(DimensionDictionary dimensionDictionary) { return Stream.concat( // Load the dimension columns getDimensionConfigs().stream() .map(DimensionConfig::getApiName) .map(dimensionDictionary::findByApiName) .map(DimensionColumn::new), // And the metric columns getMetricNames().stream() .map(FieldName::asName) .map(MetricColumn::new) ).collect(Collectors.toCollection(LinkedHashSet::new)); } }