Search in sources :

Example 1 with ReportExtendedMetadata

use of org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportExtendedMetadata 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;
}
Also used : ReportRow(org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportRow) ReportFactWithDetails(org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportFactWithDetails) ArrayList(java.util.ArrayList) ReportExtendedMetadata(org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportExtendedMetadata) ArrayList(java.util.ArrayList) List(java.util.List) ReportMetadata(org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportMetadata)

Example 2 with ReportExtendedMetadata

use of org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportExtendedMetadata 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;
}
Also used : ReportExtendedMetadata(org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportExtendedMetadata) ReportFactWithDetails(org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportFactWithDetails) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) GroupingValue(org.apache.camel.component.salesforce.api.dto.analytics.reports.GroupingValue) ReportMetadata(org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportMetadata) DetailColumnInfo(org.apache.camel.component.salesforce.api.dto.analytics.reports.DetailColumnInfo)

Example 3 with ReportExtendedMetadata

use of org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportExtendedMetadata 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;
}
Also used : ReportFactWithDetails(org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportFactWithDetails) ArrayList(java.util.ArrayList) DetailColumnInfo(org.apache.camel.component.salesforce.api.dto.analytics.reports.DetailColumnInfo) ReportExtendedMetadata(org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportExtendedMetadata) ArrayList(java.util.ArrayList) List(java.util.List) GroupingValue(org.apache.camel.component.salesforce.api.dto.analytics.reports.GroupingValue) ReportMetadata(org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportMetadata)

Aggregations

ArrayList (java.util.ArrayList)3 List (java.util.List)3 ReportExtendedMetadata (org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportExtendedMetadata)3 ReportFactWithDetails (org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportFactWithDetails)3 ReportMetadata (org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportMetadata)3 DetailColumnInfo (org.apache.camel.component.salesforce.api.dto.analytics.reports.DetailColumnInfo)2 GroupingValue (org.apache.camel.component.salesforce.api.dto.analytics.reports.GroupingValue)2 ReportRow (org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportRow)1