(function(window)
{
var Gitana = window.Gitana;
Gitana.AbstractReportableWarehouseObject = Gitana.AbstractWarehouseObject.extend(
/** @lends Gitana.AbstractReportableWarehouseObject.prototype */
{
/**
* @constructs
* @augments Gitana.AbstractWarehouseObject
*
* @class Abstract base class for Reportable Warehouse objects
*
* @param {Gitana.Warehouse} warehouse
* @param [Object] object
*/
constructor: function(warehouse, object)
{
this.base(warehouse, object);
// TO BE OVERRIDDEN BY SUBCLASSES
this.interactionObjectTypeId = null;
},
/**
* Lists the interaction reports.
*
* @param pagination (optional)
*
* @chained interaction report map
*/
listReports: function(pagination)
{
return this.queryReports({}, pagination);
},
/**
* Reads an interaction report.
*
* @param interactionReportKeyOrId
*
* @chained interaction report
*/
readReport: function(interactionReportKey)
{
return this.queryReports({"key": interactionReportKey}).keepOne();
},
/**
* Queries for interaction reports.
*
* @parma query
* @param pagination (optional)
*
* @chained interaction report map
*/
queryReports: function(query, pagination)
{
if (!query)
{
query = {};
}
query["objectTypeId"] = this.interactionObjectTypeId;
query["objectId"] = this.getId();
return this.subchain(this.getWarehouse()).queryInteractionReports(query, pagination);
}
});
})(window);