use of org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportMetadata in project camel by apache.
the class SalesforceReportResultsToListConverter method convertMatrixResults.
private static List<List<String>> convertMatrixResults(final AbstractReportResultsBase reportResults, Exchange exchange) {
final ArrayList<List<String>> result = new ArrayList<List<String>>();
final ReportMetadata reportMetadata = reportResults.getReportMetadata();
final ReportExtendedMetadata reportExtendedMetadata = reportResults.getReportExtendedMetadata();
final String[] aggregates = reportMetadata.getAggregates();
final boolean includeDetails = reportResults.getHasDetailRows() && getOption(exchange, INCLUDE_DETAILS, Boolean.TRUE);
final boolean includeSummary = aggregates.length > 0 && getOption(exchange, INCLUDE_SUMMARY, Boolean.TRUE);
// column list, including grouping columns and details if required
final ArrayList<DetailColumnInfo> columnInfos = new ArrayList<DetailColumnInfo>();
final String[] columnNames = getResultColumns(columnInfos, reportMetadata, reportExtendedMetadata, includeDetails, includeSummary);
// include detail headers?
if (getOption(exchange, INCLUDE_HEADERS, Boolean.TRUE)) {
addColumnHeaders(result, columnInfos);
}
// process down groups
final GroupingValue[] groupingsDown = reportResults.getGroupingsDown().getGroupings();
for (GroupingValue groupingValue : groupingsDown) {
addMatrixGroupValues(result, reportResults, columnNames, groupingValue, EMPTY_STRING_LIST, includeDetails, includeSummary, EMPTY_VALUE, true);
}
// add grand total
if (includeSummary) {
final Map<String, ReportFactWithDetails> factMap = reportResults.getFactMap();
// first add summary for across groups
final List<String> downGroupsPrefix = new ArrayList<String>(Collections.nCopies(groupingsDown.length, EMPTY_VALUE));
for (GroupingValue acrossGrouping : reportResults.getGroupingsAcross().getGroupings()) {
addAcrossGroupSummaryValues(result, reportMetadata, includeDetails, columnNames, factMap, downGroupsPrefix, acrossGrouping);
}
final ReportFactWithDetails grandTotal = factMap.get("T!T");
addSummaryValues(result, includeDetails, columnNames, EMPTY_STRING_LIST, reportResults.getReportMetadata().getAggregates(), grandTotal.getAggregates());
}
return result;
}
Aggregations