use of org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportFactWithDetails in project camel by apache.
the class SalesforceReportResultsToListConverter method convertTabularResults.
private static List<List<String>> convertTabularResults(final AbstractReportResultsBase reportResults, final Exchange exchange) {
final ArrayList<List<String>> result = new ArrayList<List<String>>();
final ReportMetadata reportMetadata = reportResults.getReportMetadata();
final String[] detailColumns = reportMetadata.getDetailColumns();
final ReportExtendedMetadata reportExtendedMetadata = reportResults.getReportExtendedMetadata();
final ReportFactWithDetails factWithDetails = reportResults.getFactMap().get("T!T");
// include detail rows?
final String[] aggregates = reportMetadata.getAggregates();
if (reportResults.getHasDetailRows() && getOption(exchange, INCLUDE_DETAILS, Boolean.TRUE)) {
final int rowLength = detailColumns.length;
// include detail headers?
if (getOption(exchange, INCLUDE_HEADERS, Boolean.TRUE)) {
final List<String> headers = new ArrayList<String>(rowLength);
result.add(headers);
addColumnHeaders(headers, reportExtendedMetadata.getDetailColumnInfo(), detailColumns);
}
final ReportRow[] reportRows = factWithDetails.getRows();
result.ensureCapacity(result.size() + reportRows.length);
for (ReportRow reportRow : reportRows) {
final List<String> row = new ArrayList<String>(rowLength);
result.add(row);
addRowValues(row, reportRow.getDataCells());
}
// include summary values?
if (aggregates.length > 0 && getOption(exchange, INCLUDE_SUMMARY, Boolean.TRUE)) {
addSummaryRows(result, detailColumns, null, aggregates, factWithDetails.getAggregates());
}
} else if (aggregates.length > 0) {
final int rowLength = aggregates.length;
// include summary headers?
if (getOption(exchange, INCLUDE_HEADERS, Boolean.TRUE)) {
final List<String> headers = new ArrayList<String>(rowLength);
result.add(headers);
addColumnHeaders(headers, reportExtendedMetadata.getAggregateColumnInfo(), aggregates);
}
// add summary values
final List<String> row = new ArrayList<String>(rowLength);
result.add(row);
addRowValues(row, factWithDetails.getAggregates());
}
return result;
}
use of org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportFactWithDetails in project camel by apache.
the class SalesforceReportResultsToListConverter method convertSummaryResults.
private static List<List<String>> convertSummaryResults(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
for (GroupingValue groupingValue : reportResults.getGroupingsDown().getGroupings()) {
addSummaryGroupValues(result, reportResults, columnNames, groupingValue, EMPTY_STRING_LIST, includeDetails, includeSummary);
}
// add grand total
if (includeSummary) {
final ReportFactWithDetails grandTotal = reportResults.getFactMap().get("T!T");
addSummaryValues(result, includeDetails, columnNames, EMPTY_STRING_LIST, aggregates, grandTotal.getAggregates());
}
return result;
}
use of org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportFactWithDetails in project camel by apache.
the class SalesforceReportResultsToListConverter method addSummaryGroupValues.
private static void addSummaryGroupValues(ArrayList<List<String>> result, AbstractReportResultsBase reportResults, String[] columnNames, GroupingValue groupingValue, List<String> rowPrefix, boolean includeDetails, boolean includeSummary) {
// get fact map at this level
final ReportFactWithDetails factWithDetails = reportResults.getFactMap().get(groupingValue.getKey() + "!T");
final List<String> newPrefix = new ArrayList<String>(rowPrefix);
newPrefix.add(groupingValue.getLabel());
// more groups?
final GroupingValue[] groupings = groupingValue.getGroupings();
if (groupings.length > 0) {
for (GroupingValue subGroup : groupings) {
addSummaryGroupValues(result, reportResults, columnNames, subGroup, newPrefix, includeDetails, includeSummary);
}
// add lowest level group detail rows?
} else if (includeDetails) {
addDetailRows(result, newPrefix, factWithDetails);
// add group columns only at lowest level?
} else if (!includeSummary) {
result.add(newPrefix);
}
if (includeSummary) {
final SummaryValue[] summaryValues = factWithDetails.getAggregates();
final String[] aggregates = reportResults.getReportMetadata().getAggregates();
addSummaryValues(result, includeDetails, columnNames, newPrefix, aggregates, summaryValues);
}
}
use of org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportFactWithDetails 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