You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by dh...@apache.org on 2015/06/25 05:35:52 UTC
[4/8] camel git commit: CAMEL-8397: Added support for Salesforce1
Anayltics reporting API, minor refactor,
added missing Salesforce fields for latest API
CAMEL-8397: Added support for Salesforce1 Anayltics reporting API, minor refactor, added missing Salesforce fields for latest API
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7e3b3510
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7e3b3510
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7e3b3510
Branch: refs/heads/camel-2.15.x
Commit: 7e3b3510130d0f26838e79f90a1d77610619de76
Parents: 59ae68d
Author: Dhiraj Bokde <dh...@yahoo.com>
Authored: Wed Jun 24 18:14:02 2015 -0700
Committer: Dhiraj Bokde <dh...@yahoo.com>
Committed: Wed Jun 24 20:35:12 2015 -0700
----------------------------------------------------------------------
.../camel-salesforce-component/pom.xml | 5 +
.../salesforce/SalesforceEndpointConfig.java | 59 ++-
.../salesforce/SalesforceProducer.java | 20 +-
.../SalesforceReportResultsToListConverter.java | 515 +++++++++++++++++++
.../salesforce/api/dto/PickListValue.java | 2 +-
.../salesforce/api/dto/RestResources.java | 9 +
.../salesforce/api/dto/SObjectField.java | 9 +
.../reports/AbstractAttributesBase.java | 53 ++
.../reports/AbstractReportResultsBase.java | 91 ++++
.../analytics/reports/AggregateColumnInfo.java | 42 ++
.../dto/analytics/reports/AsyncAttributes.java | 71 +++
.../analytics/reports/AsyncReportResults.java | 33 ++
.../analytics/reports/ColumnSortOrderEnum.java | 24 +
.../analytics/reports/DateGranularityEnum.java | 73 +++
.../dto/analytics/reports/DetailColumnInfo.java | 44 ++
.../dto/analytics/reports/FilterOperator.java | 44 ++
.../api/dto/analytics/reports/FilterValue.java | 44 ++
.../api/dto/analytics/reports/FormatEnum.java | 57 ++
.../analytics/reports/GroupingColumnInfo.java | 33 ++
.../api/dto/analytics/reports/GroupingInfo.java | 62 +++
.../dto/analytics/reports/GroupingValue.java | 72 +++
.../api/dto/analytics/reports/Groupings.java | 35 ++
.../analytics/reports/QueryRecordsReport.java | 40 ++
.../api/dto/analytics/reports/RecentReport.java | 71 +++
.../api/dto/analytics/reports/Report.java | 100 ++++
.../analytics/reports/ReportDescription.java | 53 ++
.../reports/ReportExtendedMetadata.java | 55 ++
.../reports/ReportFactWithDetails.java | 44 ++
.../api/dto/analytics/reports/ReportFilter.java | 53 ++
.../dto/analytics/reports/ReportFormatEnum.java | 24 +
.../dto/analytics/reports/ReportInstance.java | 90 ++++
.../dto/analytics/reports/ReportMetadata.java | 143 +++++
.../api/dto/analytics/reports/ReportRow.java | 35 ++
.../dto/analytics/reports/ReportStatusEnum.java | 24 +
.../api/dto/analytics/reports/ReportType.java | 44 ++
.../dto/analytics/reports/ReportTypeColumn.java | 62 +++
.../reports/ReportTypeColumnCategory.java | 46 ++
.../analytics/reports/ReportTypeMetadata.java | 47 ++
.../api/dto/analytics/reports/SummaryValue.java | 58 +++
.../dto/analytics/reports/SyncAttributes.java | 43 ++
.../analytics/reports/SyncReportResults.java | 34 ++
.../salesforce/internal/OperationName.java | 10 +-
.../internal/client/AnalyticsApiClient.java | 71 +++
.../client/DefaultAnalyticsApiClient.java | 339 ++++++++++++
.../processor/AbstractRestProcessor.java | 10 +-
.../processor/AbstractSalesforceProcessor.java | 65 ++-
.../processor/AnalyticsApiProcessor.java | 227 ++++++++
.../internal/processor/BulkApiProcessor.java | 10 +-
.../services/org/apache/camel/TypeConverter | 18 +
.../salesforce/AnalyticsApiIntegrationTest.java | 285 ++++++++++
.../component/salesforce/LoginConfigHelper.java | 2 +-
51 files changed, 3473 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/pom.xml
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/pom.xml b/components/camel-salesforce/camel-salesforce-component/pom.xml
index a1291f1..bd01a68 100644
--- a/components/camel-salesforce/camel-salesforce-component/pom.xml
+++ b/components/camel-salesforce/camel-salesforce-component/pom.xml
@@ -115,6 +115,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-csv</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>${jetty-version}</version>
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java
index 39b860a..f8f7e9b 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java
@@ -21,6 +21,7 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportMetadata;
import org.apache.camel.component.salesforce.api.dto.bulk.ContentType;
import org.apache.camel.component.salesforce.internal.PayloadFormat;
import org.apache.camel.component.salesforce.internal.dto.NotifyForFieldsEnum;
@@ -63,6 +64,12 @@ public class SalesforceEndpointConfig implements Cloneable {
public static final String JOB_ID = "jobId";
public static final String BATCH_ID = "batchId";
public static final String RESULT_ID = "resultId";
+
+ // parameters for Analytics API
+ public static final String REPORT_ID = "reportId";
+ public static final String INCLUDE_DETAILS = "includeDetails";
+ public static final String REPORT_METADATA = "reportMetadata";
+ public static final String INSTANCE_ID = "instanceId";
// general properties
@UriParam
@@ -121,6 +128,16 @@ public class SalesforceEndpointConfig implements Cloneable {
private Boolean notifyForOperationDelete;
@UriParam
private Boolean notifyForOperationUndelete;
+
+ // Analytics API properties
+ @UriParam
+ private String reportId;
+ @UriParam
+ private Boolean includeDetails;
+ @UriParam
+ private ReportMetadata reportMetadata;
+ @UriParam
+ private String instanceId;
// Jetty HttpClient, set using reference
@UriParam
@@ -336,6 +353,38 @@ public class SalesforceEndpointConfig implements Cloneable {
this.notifyForOperationUndelete = notifyForOperationUndelete;
}
+ public String getReportId() {
+ return reportId;
+ }
+
+ public void setReportId(String reportId) {
+ this.reportId = reportId;
+ }
+
+ public Boolean getIncludeDetails() {
+ return includeDetails;
+ }
+
+ public void setIncludeDetails(Boolean includeDetails) {
+ this.includeDetails = includeDetails;
+ }
+
+ public ReportMetadata getReportMetadata() {
+ return reportMetadata;
+ }
+
+ public void setReportMetadata(ReportMetadata reportMetadata) {
+ this.reportMetadata = reportMetadata;
+ }
+
+ public String getInstanceId() {
+ return instanceId;
+ }
+
+ public void setInstanceId(String instanceId) {
+ this.instanceId = instanceId;
+ }
+
public void setHttpClient(HttpClient httpClient) {
this.httpClient = httpClient;
}
@@ -344,9 +393,9 @@ public class SalesforceEndpointConfig implements Cloneable {
return httpClient;
}
- public Map<String, String> toValueMap() {
+ public Map<String, Object> toValueMap() {
- final Map<String, String> valueMap = new HashMap<String, String>();
+ final Map<String, Object> valueMap = new HashMap<String, Object>();
valueMap.put(FORMAT, format.toString().toLowerCase());
valueMap.put(API_VERSION, apiVersion);
@@ -370,6 +419,12 @@ public class SalesforceEndpointConfig implements Cloneable {
valueMap.put(JOB_ID, jobId);
valueMap.put(BATCH_ID, batchId);
valueMap.put(RESULT_ID, resultId);
+
+ // add analytics API properties
+ valueMap.put(REPORT_ID, reportId);
+ valueMap.put(INCLUDE_DETAILS, includeDetails);
+ valueMap.put(REPORT_METADATA, reportMetadata);
+ valueMap.put(INSTANCE_ID, instanceId);
return Collections.unmodifiableMap(valueMap);
}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceProducer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceProducer.java
index 42c1bfe..55b1bf0 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceProducer.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceProducer.java
@@ -21,6 +21,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.component.salesforce.api.SalesforceException;
import org.apache.camel.component.salesforce.internal.OperationName;
import org.apache.camel.component.salesforce.internal.PayloadFormat;
+import org.apache.camel.component.salesforce.internal.processor.AnalyticsApiProcessor;
import org.apache.camel.component.salesforce.internal.processor.BulkApiProcessor;
import org.apache.camel.component.salesforce.internal.processor.JsonRestProcessor;
import org.apache.camel.component.salesforce.internal.processor.SalesforceProcessor;
@@ -42,8 +43,11 @@ public class SalesforceProducer extends DefaultAsyncProducer {
final PayloadFormat payloadFormat = endpointConfig.getFormat();
// check if its a Bulk Operation
- if (isBulkOperation(endpoint.getOperationName())) {
+ final OperationName operationName = endpoint.getOperationName();
+ if (isBulkOperation(operationName)) {
processor = new BulkApiProcessor(endpoint);
+ } else if (isAnalyticsOperation(operationName)) {
+ processor = new AnalyticsApiProcessor(endpoint);
} else {
// create an appropriate processor
if (payloadFormat == PayloadFormat.JSON) {
@@ -75,6 +79,20 @@ public class SalesforceProducer extends DefaultAsyncProducer {
}
}
+ private boolean isAnalyticsOperation(OperationName operationName) {
+ switch (operationName) {
+ case GET_RECENT_REPORTS:
+ case GET_REPORT_DESCRIPTION:
+ case EXECUTE_SYNCREPORT:
+ case EXECUTE_ASYNCREPORT:
+ case GET_REPORT_INSTANCES:
+ case GET_REPORT_RESULTS:
+ return true;
+ default:
+ return false;
+ }
+ }
+
@Override
public boolean process(Exchange exchange, AsyncCallback callback) {
log.debug("Processing {}",
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/SalesforceReportResultsToListConverter.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/SalesforceReportResultsToListConverter.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/SalesforceReportResultsToListConverter.java
new file mode 100644
index 0000000..3cacf39
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/SalesforceReportResultsToListConverter.java
@@ -0,0 +1,515 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.camel.Converter;
+import org.apache.camel.Exchange;
+import org.apache.camel.component.salesforce.api.dto.analytics.reports.AbstractReportResultsBase;
+import org.apache.camel.component.salesforce.api.dto.analytics.reports.AggregateColumnInfo;
+import org.apache.camel.component.salesforce.api.dto.analytics.reports.AsyncReportResults;
+import org.apache.camel.component.salesforce.api.dto.analytics.reports.DetailColumnInfo;
+import org.apache.camel.component.salesforce.api.dto.analytics.reports.GroupingColumnInfo;
+import org.apache.camel.component.salesforce.api.dto.analytics.reports.GroupingInfo;
+import org.apache.camel.component.salesforce.api.dto.analytics.reports.GroupingValue;
+import org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportExtendedMetadata;
+import org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportFactWithDetails;
+import org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportMetadata;
+import org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportRow;
+import org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportStatusEnum;
+import org.apache.camel.component.salesforce.api.dto.analytics.reports.SummaryValue;
+
+/**
+ * Salesforce report results to <code>List<List<String>></code>converter.
+ */
+@Converter
+public final class SalesforceReportResultsToListConverter {
+
+ public static final String INCLUDE_DETAILS = "CamelSalesforceIncludeDetails";
+ public static final String INCLUDE_HEADERS = "CamelSalesforceIncludeHeaders";
+ public static final String INCLUDE_SUMMARY = "CamelSalesforceIncludeSummary";
+
+ private static final String ROW_COUNT = "RowCount";
+ private static final String EMPTY_VALUE = "";
+ private static final List<String> EMPTY_STRING_LIST = Collections.emptyList();
+
+ private SalesforceReportResultsToListConverter() {
+ }
+
+ @Converter
+ public static List<List<String>> convertToList(final AbstractReportResultsBase reportResults,
+ final Exchange exchange) {
+
+ List<List<String>> results = null;
+ if (reportResults instanceof AsyncReportResults) {
+ AsyncReportResults asyncReportResults = (AsyncReportResults) reportResults;
+ final ReportStatusEnum status = asyncReportResults.getAttributes().getStatus();
+ // only successfully completed async report results have data rows
+ if (status != ReportStatusEnum.Success) {
+ throw new IllegalArgumentException("Invalid asynchronous report results status " + status);
+ }
+ }
+
+ switch (reportResults.getReportMetadata().getReportFormat()) {
+ case TABULAR:
+ results = convertTabularResults(reportResults, exchange);
+ break;
+ case SUMMARY:
+ results = convertSummaryResults(reportResults, exchange);
+ break;
+ case MATRIX:
+ results = convertMatrixResults(reportResults, exchange);
+ break;
+ default:
+ // ignore
+ }
+
+ return results;
+ }
+
+ 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;
+ }
+
+ 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;
+ }
+
+ 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;
+ }
+
+ private static void addAcrossGroupSummaryValues(ArrayList<List<String>> result, ReportMetadata reportMetadata,
+ boolean includeDetails, String[] columnNames,
+ Map<String, ReportFactWithDetails> factMap,
+ List<String> downGroupsPrefix, GroupingValue acrossGrouping) {
+
+ final List<String> newDownGroupsPrefix = new ArrayList<String>(downGroupsPrefix);
+ newDownGroupsPrefix.add(acrossGrouping.getLabel());
+
+ addSummaryValues(result, includeDetails, columnNames, newDownGroupsPrefix,
+ reportMetadata.getAggregates(),
+ factMap.get("T!" + acrossGrouping.getKey()).getAggregates());
+
+ // process across subgroups
+ for (GroupingValue subGroup : acrossGrouping.getGroupings()) {
+ addAcrossGroupSummaryValues(result, reportMetadata, includeDetails, columnNames, factMap,
+ newDownGroupsPrefix, subGroup);
+ }
+ }
+
+ private static void addMatrixGroupValues(ArrayList<List<String>> result, AbstractReportResultsBase reportResults,
+ String[] columnNames, GroupingValue groupingValue,
+ List<String> rowPrefix, boolean includeDetails, boolean includeSummary,
+ String keyPrefix, boolean downGroup) {
+
+ final String groupKey = groupingValue.getKey();
+ final String newKeyPrefix = keyPrefix + groupKey;
+
+ // group values prefix
+ final List<String> newPrefix = new ArrayList<String>(rowPrefix);
+ newPrefix.add(groupingValue.getLabel());
+
+ final GroupingValue[] groupings = groupingValue.getGroupings();
+ // has subgroups?
+ if (groupings.length > 0) {
+
+ for (GroupingValue subGroup : groupings) {
+ addMatrixGroupValues(result, reportResults, columnNames, subGroup, newPrefix,
+ includeDetails, includeSummary, newKeyPrefix + "_", downGroup);
+ }
+
+ // process across groupings?
+ } else if (downGroup) {
+
+ for (GroupingValue acrossGroup : reportResults.getGroupingsAcross().getGroupings()) {
+ addMatrixGroupValues(result, reportResults, columnNames, acrossGroup, newPrefix,
+ includeDetails, includeSummary, newKeyPrefix + "!", false);
+ }
+
+ // add lowest level across group detail rows?
+ } else if (includeDetails) {
+
+ addDetailRows(result, newPrefix, reportResults.getFactMap().get(newKeyPrefix));
+
+ // add group columns only at lowest across level?
+ } else if (!includeSummary) {
+
+ result.add(newPrefix);
+
+ }
+
+ // add summary values for down group or lowest level across group
+ if (includeSummary) {
+
+ final String summaryKey = getGroupTotalKey(keyPrefix, downGroup, groupKey);
+
+ addSummaryValues(result, includeDetails, columnNames, newPrefix,
+ reportResults.getReportMetadata().getAggregates(),
+ reportResults.getFactMap().get(summaryKey).getAggregates());
+ }
+ }
+
+ private static String getGroupTotalKey(String keyPrefix, boolean downGroup, String key) {
+ if (downGroup) {
+ // keyPrefix has rows only
+ return keyPrefix + key + "!T";
+ } else {
+ // keyPrefix is of the form r(_r)*!(c_)*
+ return keyPrefix + key;
+ }
+ }
+
+ 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);
+ }
+ }
+
+ private static void addDetailRows(ArrayList<List<String>> result, List<String> newPrefix, ReportFactWithDetails factWithDetails) {
+ final ReportRow[] rows = factWithDetails.getRows();
+ result.ensureCapacity(result.size() + rows.length);
+ for (ReportRow row : rows) {
+ final ArrayList<String> rowValues = new ArrayList<String>(newPrefix);
+ addRowValues(rowValues, row.getDataCells());
+ result.add(rowValues);
+ }
+ }
+
+ private static void addSummaryValues(ArrayList<List<String>> result, boolean includeDetails,
+ String[] columnNames, List<String> newPrefix,
+ String[] aggregates, SummaryValue[] summaryValues) {
+ // no summary values to add
+ if (summaryValues.length == 0) {
+ return;
+ }
+
+ if (includeDetails) {
+ // add summary rows for this group
+ addSummaryRows(result, columnNames, newPrefix,
+ aggregates, summaryValues);
+ } else {
+ // add summary values as columns for this group
+ final ArrayList<String> summaryRow = new ArrayList<String>(newPrefix);
+ // add remaining group values
+ final int nGroups = columnNames.length - summaryValues.length;
+ for (int i = summaryRow.size(); i < nGroups; i++) {
+ summaryRow.add(EMPTY_VALUE);
+ }
+ addRowValues(summaryRow, summaryValues);
+ result.add(summaryRow);
+ }
+ }
+
+ private static void addSummaryRows(List<List<String>> result,
+ String[] detailColumns, List<String> rowPrefix,
+ String[] aggregateColumns, SummaryValue[] summaryValues) {
+
+ final ArrayList<List<String>> rows = new ArrayList<List<String>>(summaryValues.length + 1);
+ String rowCount = null;
+ for (int i = 0; i < aggregateColumns.length; i++) {
+
+ final String aggregate = aggregateColumns[i];
+
+ final String valueLabel = summaryValues[i].getLabel();
+ if (ROW_COUNT.equals(aggregate)) {
+ rowCount = valueLabel;
+ } else {
+
+ final List<String> summaryRow = rowPrefix == null
+ ? new ArrayList<String>() : new ArrayList<String>(rowPrefix);
+ rows.add(summaryRow);
+
+ // skip rowPrefix columns if not null
+ for (int j = rowPrefix == null ? 0 : rowPrefix.size(); j < detailColumns.length; j++) {
+
+ final String columnName = detailColumns[j];
+ if (aggregate.endsWith("!" + columnName)) {
+ final StringBuilder valueBuilder = new StringBuilder();
+ if (aggregate.startsWith("a!")) {
+ valueBuilder.append("avg ");
+ } else if (aggregate.startsWith("mx!")) {
+ valueBuilder.append("max ");
+ } else if (aggregate.startsWith("m!")) {
+ valueBuilder.append("min ");
+ }
+ valueBuilder.append(valueLabel);
+ summaryRow.add(valueBuilder.toString());
+ } else {
+ summaryRow.add(EMPTY_VALUE);
+ }
+ }
+ }
+ }
+
+ // add a Grand Totals separator row
+ final List<String> grandTotal = new ArrayList<String>();
+ result.add(grandTotal);
+
+ if (rowCount != null) {
+ grandTotal.add("Grand Totals (" + rowCount + " records)");
+ } else {
+ grandTotal.add("Grand Totals");
+ }
+
+ // add summary values rows
+ result.addAll(rows);
+ }
+
+ private static String[] getResultColumns(List<DetailColumnInfo> result, ReportMetadata reportMetadata,
+ ReportExtendedMetadata reportExtendedMetadata,
+ boolean includeDetails, boolean includeSummary) {
+
+ final List<String> columnNames = new ArrayList<String>();
+
+ // add grouping columns before detail columns
+ final Map<String, GroupingColumnInfo> groupingColumnInfos = reportExtendedMetadata.getGroupingColumnInfo();
+ for (GroupingInfo downGroup : reportMetadata.getGroupingsDown()) {
+ final String name = downGroup.getName();
+ columnNames.add(name);
+ result.add(groupingColumnInfos.get(name));
+ }
+ for (GroupingInfo acrossGroup : reportMetadata.getGroupingsAcross()) {
+ final String name = acrossGroup.getName();
+ columnNames.add(name);
+ result.add(groupingColumnInfos.get(name));
+ }
+
+ // include details?
+ if (!includeDetails) {
+ // include summary columns?
+ if (includeSummary) {
+ final Map<String, AggregateColumnInfo> aggregateColumnInfos =
+ reportExtendedMetadata.getAggregateColumnInfo();
+ for (String aggregateColumnName : reportMetadata.getAggregates()) {
+ columnNames.add(aggregateColumnName);
+ result.add(aggregateColumnInfos.get(aggregateColumnName));
+ }
+ }
+ } else {
+ // add detail columns
+ final Map<String, DetailColumnInfo> detailColumnInfo = reportExtendedMetadata.getDetailColumnInfo();
+ for (String columnName : reportMetadata.getDetailColumns()) {
+ columnNames.add(columnName);
+ result.add(detailColumnInfo.get(columnName));
+ }
+ }
+
+ return columnNames.toArray(new String[columnNames.size()]);
+ }
+
+ private static void addColumnHeaders(List<String> headers,
+ Map<String, ? extends DetailColumnInfo> columnInfos, String[] columns) {
+ for (String columnName : columns) {
+ headers.add(columnInfos.get(columnName).getLabel());
+ }
+ }
+
+ private static void addColumnHeaders(List<List<String>> result, ArrayList<DetailColumnInfo> columnInfos) {
+ final ArrayList<String> headers = new ArrayList<String>(columnInfos.size());
+ for (DetailColumnInfo info : columnInfos) {
+ headers.add(info.getLabel());
+ }
+ result.add(headers);
+ }
+
+ private static void addRowValues(List<String> row, SummaryValue[] values) {
+ for (SummaryValue summaryValue : values) {
+ row.add(summaryValue.getLabel());
+ }
+ }
+
+ private static boolean getOption(Exchange exchange, String name, Boolean defaultValue) {
+ return exchange.getIn().getHeader(name, defaultValue, Boolean.class);
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/PickListValue.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/PickListValue.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/PickListValue.java
index 2ae2cfd..4e69738 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/PickListValue.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/PickListValue.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.salesforce.api.dto;
/**
* Salesforce DTO for picklist value.
*/
-public class PickListValue {
+public class PickListValue extends AbstractDTOBase {
private String value;
private String label;
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/RestResources.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/RestResources.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/RestResources.java
index b37aa13..a07cb6a 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/RestResources.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/RestResources.java
@@ -45,6 +45,7 @@ public class RestResources extends AbstractDTOBase {
private String compactLayouts;
private String actions;
private String tabs;
+ private String wave;
public String getSobjects() {
return sobjects;
@@ -213,4 +214,12 @@ public class RestResources extends AbstractDTOBase {
public void setTabs(String tabs) {
this.tabs = tabs;
}
+
+ public String getWave() {
+ return wave;
+ }
+
+ public void setWave(String wave) {
+ this.wave = wave;
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SObjectField.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SObjectField.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SObjectField.java
index 312e6c3..967064f 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SObjectField.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SObjectField.java
@@ -74,6 +74,7 @@ public class SObjectField extends AbstractDTOBase {
private String maskType;
private Boolean queryByDistance;
private String referenceTargetField;
+ private Boolean encrypted;
public Integer getLength() {
return length;
@@ -474,4 +475,12 @@ public class SObjectField extends AbstractDTOBase {
public void setReferenceTargetField(String referenceTargetField) {
this.referenceTargetField = referenceTargetField;
}
+
+ public Boolean getEncrypted() {
+ return encrypted;
+ }
+
+ public void setEncrypted(Boolean encrypted) {
+ this.encrypted = encrypted;
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AbstractAttributesBase.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AbstractAttributesBase.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AbstractAttributesBase.java
new file mode 100644
index 0000000..90de38b
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AbstractAttributesBase.java
@@ -0,0 +1,53 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+import org.apache.camel.component.salesforce.api.dto.AbstractDTOBase;
+
+/**
+ * Base DTO for report attributes.
+ */
+public abstract class AbstractAttributesBase extends AbstractDTOBase {
+
+ private String type;
+ private String reportName;
+ private String reportId;
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getReportName() {
+ return reportName;
+ }
+
+ public void setReportName(String reportName) {
+ this.reportName = reportName;
+ }
+
+ public String getReportId() {
+ return reportId;
+ }
+
+ public void setReportId(String reportId) {
+ this.reportId = reportId;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AbstractReportResultsBase.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AbstractReportResultsBase.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AbstractReportResultsBase.java
new file mode 100644
index 0000000..8d0f475
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AbstractReportResultsBase.java
@@ -0,0 +1,91 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+import java.util.Map;
+
+import org.apache.camel.component.salesforce.api.dto.AbstractDTOBase;
+
+/**
+ * Base DTO for report results.
+ */
+public abstract class AbstractReportResultsBase extends AbstractDTOBase {
+
+ private Boolean hasDetailRows;
+ private ReportMetadata reportMetadata;
+ private ReportExtendedMetadata reportExtendedMetadata;
+ private Groupings groupingsDown;
+ private Groupings groupingsAcross;
+ private Boolean allData;
+ private Map<String, ReportFactWithDetails> factMap;
+
+ public Boolean getHasDetailRows() {
+ return hasDetailRows;
+ }
+
+ public void setHasDetailRows(Boolean hasDetailRows) {
+ this.hasDetailRows = hasDetailRows;
+ }
+
+ public ReportMetadata getReportMetadata() {
+ return reportMetadata;
+ }
+
+ public void setReportMetadata(ReportMetadata reportMetadata) {
+ this.reportMetadata = reportMetadata;
+ }
+
+ public ReportExtendedMetadata getReportExtendedMetadata() {
+ return reportExtendedMetadata;
+ }
+
+ public void setReportExtendedMetadata(ReportExtendedMetadata reportExtendedMetadata) {
+ this.reportExtendedMetadata = reportExtendedMetadata;
+ }
+
+ public Groupings getGroupingsDown() {
+ return groupingsDown;
+ }
+
+ public void setGroupingsDown(Groupings groupingsDown) {
+ this.groupingsDown = groupingsDown;
+ }
+
+ public Groupings getGroupingsAcross() {
+ return groupingsAcross;
+ }
+
+ public void setGroupingsAcross(Groupings groupingsAcross) {
+ this.groupingsAcross = groupingsAcross;
+ }
+
+ public Boolean getAllData() {
+ return allData;
+ }
+
+ public void setAllData(Boolean allData) {
+ this.allData = allData;
+ }
+
+ public Map<String, ReportFactWithDetails> getFactMap() {
+ return factMap;
+ }
+
+ public void setFactMap(Map<String, ReportFactWithDetails> factMap) {
+ this.factMap = factMap;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AggregateColumnInfo.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AggregateColumnInfo.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AggregateColumnInfo.java
new file mode 100644
index 0000000..766ec9e
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AggregateColumnInfo.java
@@ -0,0 +1,42 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+/**
+ * Report results aggregate column info.
+ */
+public class AggregateColumnInfo extends DetailColumnInfo {
+
+ private String acrossGroupingContext;
+ private String downGroupingContext;
+
+ public String getAcrossGroupingContext() {
+ return acrossGroupingContext;
+ }
+
+ public void setAcrossGroupingContext(String acrossGroupingContext) {
+ this.acrossGroupingContext = acrossGroupingContext;
+ }
+
+ public String getDownGroupingContext() {
+ return downGroupingContext;
+ }
+
+ public void setDownGroupingContext(String downGroupingContext) {
+ this.downGroupingContext = downGroupingContext;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AsyncAttributes.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AsyncAttributes.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AsyncAttributes.java
new file mode 100644
index 0000000..d66583a
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AsyncAttributes.java
@@ -0,0 +1,71 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+import org.joda.time.DateTime;
+
+/**
+ * Async report attributes DTO.
+ */
+public class AsyncAttributes extends AbstractAttributesBase {
+
+ private String id;
+ private ReportStatusEnum status;
+ private String ownerId;
+ private DateTime completionDate;
+ private DateTime requestDate;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public ReportStatusEnum getStatus() {
+ return status;
+ }
+
+ public void setStatus(ReportStatusEnum status) {
+ this.status = status;
+ }
+
+ public String getOwnerId() {
+ return ownerId;
+ }
+
+ public void setOwnerId(String ownerId) {
+ this.ownerId = ownerId;
+ }
+
+ public DateTime getCompletionDate() {
+ return completionDate;
+ }
+
+ public void setCompletionDate(DateTime completionDate) {
+ this.completionDate = completionDate;
+ }
+
+ public DateTime getRequestDate() {
+ return requestDate;
+ }
+
+ public void setRequestDate(DateTime requestDate) {
+ this.requestDate = requestDate;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AsyncReportResults.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AsyncReportResults.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AsyncReportResults.java
new file mode 100644
index 0000000..e341fe4
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/AsyncReportResults.java
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+/**
+ * Sync Report results DTO.
+ */
+public class AsyncReportResults extends AbstractReportResultsBase {
+
+ private AsyncAttributes attributes;
+
+ public AsyncAttributes getAttributes() {
+ return attributes;
+ }
+
+ public void setAttributes(AsyncAttributes attributes) {
+ this.attributes = attributes;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/ColumnSortOrderEnum.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/ColumnSortOrderEnum.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/ColumnSortOrderEnum.java
new file mode 100644
index 0000000..08d9062
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/ColumnSortOrderEnum.java
@@ -0,0 +1,24 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+/**
+ * Grouping column sort order.
+ */
+public enum ColumnSortOrderEnum {
+ Asc, Desc
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/DateGranularityEnum.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/DateGranularityEnum.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/DateGranularityEnum.java
new file mode 100644
index 0000000..56e8702
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/DateGranularityEnum.java
@@ -0,0 +1,73 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+import org.codehaus.jackson.annotate.JsonCreator;
+import org.codehaus.jackson.annotate.JsonValue;
+
+/**
+ * Report results groupings date granularity.
+ */
+public enum DateGranularityEnum {
+
+ // None
+ NONE("None"),
+ // Day
+ DAY("Day"),
+ // Calendar Week
+ CALENDAR_WEEK("Calendar Week"),
+ // Calendar Month
+ CALENDAR_MONTH("Calendar Month"),
+ // Calendar Quarter
+ CALENDAR_QUARTER("Calendar Quarter"),
+ // Calendar Year
+ CALENDAR_YEAR("Calendar Year"),
+ // Calendar Month in Year
+ CALENDAR_MONTH_IN_YEAR("Calendar Month in Year"),
+ // Calendar Day in Month
+ CALENDAR_DAY_IN_MONTH("Calendar Day in Month"),
+ // Fiscal Period
+ FISCAL_PERIOD("Fiscal Period"),
+ // Fiscal Week
+ FISCAL_WEEK("Fiscal Week"),
+ // Fiscal Quarter
+ FISCAL_QUARTER("Fiscal Quarter"),
+ // Fiscal Year
+ FISCAL_YEAR("Fiscal Year");
+
+ private final String value;
+
+ DateGranularityEnum(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String value() {
+ return value;
+ }
+
+ @JsonCreator
+ public static DateGranularityEnum fromValue(String value) {
+ for (DateGranularityEnum e : DateGranularityEnum.values()) {
+ if (e.value.equals(value)) {
+ return e;
+ }
+ }
+ throw new IllegalArgumentException(value);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/DetailColumnInfo.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/DetailColumnInfo.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/DetailColumnInfo.java
new file mode 100644
index 0000000..8c3b316
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/DetailColumnInfo.java
@@ -0,0 +1,44 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+import org.apache.camel.component.salesforce.api.dto.AbstractDTOBase;
+
+/**
+ * Report results details column info.
+ */
+public class DetailColumnInfo extends AbstractDTOBase {
+
+ private String label;
+ private String dataType;
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public String getDataType() {
+ return dataType;
+ }
+
+ public void setDataType(String dataType) {
+ this.dataType = dataType;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FilterOperator.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FilterOperator.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FilterOperator.java
new file mode 100644
index 0000000..7358662
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FilterOperator.java
@@ -0,0 +1,44 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+import org.apache.camel.component.salesforce.api.dto.AbstractDTOBase;
+
+/**
+ * Report type metadata filter operator reference.
+ */
+public class FilterOperator extends AbstractDTOBase {
+
+ private String name;
+ private String label;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FilterValue.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FilterValue.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FilterValue.java
new file mode 100644
index 0000000..d5298c4
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FilterValue.java
@@ -0,0 +1,44 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+import org.apache.camel.component.salesforce.api.dto.AbstractDTOBase;
+
+/**
+ * Report type column filter value.
+ */
+public class FilterValue extends AbstractDTOBase {
+
+ private String label;
+ private String name;
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FormatEnum.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FormatEnum.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FormatEnum.java
new file mode 100644
index 0000000..b9b825b
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FormatEnum.java
@@ -0,0 +1,57 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+import org.codehaus.jackson.annotate.JsonCreator;
+import org.codehaus.jackson.annotate.JsonValue;
+
+/**
+ * Salesforce Enumeration DTO for picklist Format
+ */
+public enum FormatEnum {
+
+ // Matrix
+ MATRIX("Matrix"),
+ // MultiBlock
+ MULTIBLOCK("MultiBlock"),
+ // Summary
+ SUMMARY("Summary"),
+ // Tabular
+ TABULAR("Tabular");
+
+ final String value;
+
+ private FormatEnum(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String value() {
+ return this.value;
+ }
+
+ @JsonCreator
+ public static FormatEnum fromValue(String value) {
+ for (FormatEnum e : FormatEnum.values()) {
+ if (e.value.equals(value)) {
+ return e;
+ }
+ }
+ throw new IllegalArgumentException(value);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/GroupingColumnInfo.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/GroupingColumnInfo.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/GroupingColumnInfo.java
new file mode 100644
index 0000000..21c3142
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/GroupingColumnInfo.java
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+/**
+ * Report results grouping column info.
+ */
+public class GroupingColumnInfo extends DetailColumnInfo {
+
+ private Integer groupingLevel;
+
+ public Integer getGroupingLevel() {
+ return groupingLevel;
+ }
+
+ public void setGroupingLevel(Integer groupingLevel) {
+ this.groupingLevel = groupingLevel;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/GroupingInfo.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/GroupingInfo.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/GroupingInfo.java
new file mode 100644
index 0000000..08588bf
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/GroupingInfo.java
@@ -0,0 +1,62 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+import org.apache.camel.component.salesforce.api.dto.AbstractDTOBase;
+
+/**
+ * Report metadata grouping info.
+ */
+public class GroupingInfo extends AbstractDTOBase {
+
+ private String name;
+ private String sortAggregate;
+ private ColumnSortOrderEnum sortOrder;
+ private DateGranularityEnum dateGranularity;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getSortAggregate() {
+ return sortAggregate;
+ }
+
+ public void setSortAggregate(String sortAggregate) {
+ this.sortAggregate = sortAggregate;
+ }
+
+ public ColumnSortOrderEnum getSortOrder() {
+ return sortOrder;
+ }
+
+ public void setSortOrder(ColumnSortOrderEnum sortOrder) {
+ this.sortOrder = sortOrder;
+ }
+
+ public DateGranularityEnum getDateGranularity() {
+ return dateGranularity;
+ }
+
+ public void setDateGranularity(DateGranularityEnum dateGranularity) {
+ this.dateGranularity = dateGranularity;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/GroupingValue.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/GroupingValue.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/GroupingValue.java
new file mode 100644
index 0000000..b27e3d4
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/GroupingValue.java
@@ -0,0 +1,72 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+import org.apache.camel.component.salesforce.api.dto.AbstractDTOBase;
+
+/**
+ * Report results grouping value.
+ */
+public class GroupingValue extends AbstractDTOBase {
+
+ private String value;
+ private String key;
+ private String label;
+ private GroupingValue[] groupings;
+ // TODO the description is vague about this!!!
+ private GroupingValue[] dategroupings;
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public GroupingValue[] getGroupings() {
+ return groupings;
+ }
+
+ public void setGroupings(GroupingValue[] groupings) {
+ this.groupings = groupings;
+ }
+
+ public GroupingValue[] getDategroupings() {
+ return dategroupings;
+ }
+
+ public void setDategroupings(GroupingValue[] dategroupings) {
+ this.dategroupings = dategroupings;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/Groupings.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/Groupings.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/Groupings.java
new file mode 100644
index 0000000..0bb8af1
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/Groupings.java
@@ -0,0 +1,35 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+import org.apache.camel.component.salesforce.api.dto.AbstractDTOBase;
+
+/**
+ * Report results groupings.
+ */
+public class Groupings extends AbstractDTOBase {
+
+ private GroupingValue[] groupings;
+
+ public GroupingValue[] getGroupings() {
+ return groupings;
+ }
+
+ public void setGroupings(GroupingValue[] groupings) {
+ this.groupings = groupings;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/QueryRecordsReport.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/QueryRecordsReport.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/QueryRecordsReport.java
new file mode 100644
index 0000000..3e276f1
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/QueryRecordsReport.java
@@ -0,0 +1,40 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+import java.util.List;
+
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import org.apache.camel.component.salesforce.api.dto.AbstractQueryRecordsBase;
+
+/**
+ * Salesforce QueryRecords DTO for type Report
+ */
+public class QueryRecordsReport extends AbstractQueryRecordsBase {
+
+ @XStreamImplicit
+ private List<Report> records;
+
+ public List<Report> getRecords() {
+ return records;
+ }
+
+ public void setRecords(List<Report> records) {
+ this.records = records;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/RecentReport.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/RecentReport.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/RecentReport.java
new file mode 100644
index 0000000..547b0a7
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/RecentReport.java
@@ -0,0 +1,71 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+import org.apache.camel.component.salesforce.api.dto.AbstractDTOBase;
+
+/**
+ * Report list info DTO.
+ */
+public class RecentReport extends AbstractDTOBase {
+
+ private String name;
+ private String id;
+ private String url;
+ private String describeUrl;
+ private String instancesUrl;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getDescribeUrl() {
+ return describeUrl;
+ }
+
+ public void setDescribeUrl(String describeUrl) {
+ this.describeUrl = describeUrl;
+ }
+
+ public String getInstancesUrl() {
+ return instancesUrl;
+ }
+
+ public void setInstancesUrl(String instancesUrl) {
+ this.instancesUrl = instancesUrl;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/Report.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/Report.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/Report.java
new file mode 100644
index 0000000..452480a
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/Report.java
@@ -0,0 +1,100 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamConverter;
+
+import org.apache.camel.component.salesforce.api.PicklistEnumConverter;
+import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase;
+import org.codehaus.jackson.annotate.JsonProperty;
+
+/**
+ * Salesforce DTO for SObject Report
+ */
+//CHECKSTYLE:OFF
+@XStreamAlias("Report")
+public class Report extends AbstractSObjectBase {
+
+ // Description
+ private String Description;
+
+ // DeveloperName
+ private String DeveloperName;
+
+ // NamespacePrefix
+ private String NamespacePrefix;
+
+ // LastRunDate
+ private org.joda.time.DateTime LastRunDate;
+
+ // Format
+ @XStreamConverter(PicklistEnumConverter.class)
+ private FormatEnum Format;
+
+ @JsonProperty("Description")
+ public String getDescription() {
+ return this.Description;
+ }
+
+ @JsonProperty("Description")
+ public void setDescription(String Description) {
+ this.Description = Description;
+ }
+
+ @JsonProperty("DeveloperName")
+ public String getDeveloperName() {
+ return this.DeveloperName;
+ }
+
+ @JsonProperty("DeveloperName")
+ public void setDeveloperName(String DeveloperName) {
+ this.DeveloperName = DeveloperName;
+ }
+
+ @JsonProperty("NamespacePrefix")
+ public String getNamespacePrefix() {
+ return this.NamespacePrefix;
+ }
+
+ @JsonProperty("NamespacePrefix")
+ public void setNamespacePrefix(String NamespacePrefix) {
+ this.NamespacePrefix = NamespacePrefix;
+ }
+
+ @JsonProperty("LastRunDate")
+ public org.joda.time.DateTime getLastRunDate() {
+ return this.LastRunDate;
+ }
+
+ @JsonProperty("LastRunDate")
+ public void setLastRunDate(org.joda.time.DateTime LastRunDate) {
+ this.LastRunDate = LastRunDate;
+ }
+
+ @JsonProperty("Format")
+ public FormatEnum getFormat() {
+ return this.Format;
+ }
+
+ @JsonProperty("Format")
+ public void setFormat(FormatEnum Format) {
+ this.Format = Format;
+ }
+
+}
+//CHECKSTYLE:ON
http://git-wip-us.apache.org/repos/asf/camel/blob/7e3b3510/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/ReportDescription.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/ReportDescription.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/ReportDescription.java
new file mode 100644
index 0000000..a7c7e60
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/ReportDescription.java
@@ -0,0 +1,53 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.salesforce.api.dto.analytics.reports;
+
+import org.apache.camel.component.salesforce.api.dto.AbstractDTOBase;
+
+/**
+ * Report description DTO.
+ */
+public class ReportDescription extends AbstractDTOBase {
+
+ private ReportTypeMetadata reportTypeMetadata;
+ private ReportExtendedMetadata reportExtendedMetadata;
+ private ReportMetadata reportMetadata;
+
+ public ReportTypeMetadata getReportTypeMetadata() {
+ return reportTypeMetadata;
+ }
+
+ public void setReportTypeMetadata(ReportTypeMetadata reportTypeMetadata) {
+ this.reportTypeMetadata = reportTypeMetadata;
+ }
+
+ public ReportExtendedMetadata getReportExtendedMetadata() {
+ return reportExtendedMetadata;
+ }
+
+ public void setReportExtendedMetadata(ReportExtendedMetadata reportExtendedMetadata) {
+ this.reportExtendedMetadata = reportExtendedMetadata;
+ }
+
+ public ReportMetadata getReportMetadata() {
+ return reportMetadata;
+ }
+
+ public void setReportMetadata(ReportMetadata reportMetadata) {
+ this.reportMetadata = reportMetadata;
+ }
+}