Ext.ns('Oracle.BDD.Portlets.Visualization.Model');
/**
* <b>Do NOT instantiate this class directly.</b> A QueryConfig object is
* acquired through one of two means: via
* {@link Oracle.BDD.Portlets.Visualization.Renderers.BaseRenderer#getQueryConfig}
* or from the QueryResults object that is provided as an argument to the
* callback function of
* {@link Oracle.BDD.Portlets.Visualization.Renderers.BaseRenderer#executeQuery}
* <p>
* For example:
*
* <pre>
* init: function() {
*
* var queryConfig = this.getQueryConfig("eql");
* this.executeQuery("eql", true, this.renderVisualization);
* },
*
* renderVisualization: function(queryResults) {
* var queryConfig = queryResults.getQueryConfig();
*
* ...
* }
* </pre>
*
* @class Oracle.BDD.Portlets.Visualization.Model.QueryConfig
*
*/
Oracle.BDD.Portlets.Visualization.Model.QueryConfig = function(config) {
this._queryName = config.queryName;
this._tokens = config.tokens || {};
this._refinements = config.refinements || {};
return this;
};
Oracle.BDD.Portlets.Visualization.Model.QueryConfig.prototype = {
_queryName : undefined,
_refinements : {},
_tokens : {},
/**
* Adds a refinement of the attribute of the given token and value to the
* query. Adding a refinement not only refines the visualization's data, but
* also refreshes all portlets on the page that respond to data change
* events call.
*
* @param {string}
* tokenName The name of the attribute token the attribute of
* which the refinement is to apply
* @param {string|Number}
* value The value to refine by
* @param {string|Number|Object[]}
* value The value to refine by. An array may be passed to add
* all enclosed values to the refinement.
*/
addRefinement : function(tokenName, value) {
if (Ext.isEmpty(tokenName) || Ext.isEmpty(value))
return;
if (this._tokens && this._tokens[tokenName]) {
var token = this._tokens[tokenName];
var attributeKey = token.attributeKey;
var viewKey = token.dataviewKey;
value = !Ext.isArray(value) ? [ value ] : value;
this._refinements = this._refinements || {};
this._refinements[viewKey] = this._refinements[viewKey] || {};
var currentRefinements = this._refinements[viewKey][attributeKey]
|| [];
Ext.each(value, function(val) {
if (currentRefinements.indexOf(val) < 0) {
currentRefinements.push(val);
}
});
this._refinements[viewKey][attributeKey] = currentRefinements;
}
return;
},
/**
* Returns the subclassed
* {@link Oracle.BDD.Portlets.Visualization.Model.Token} of the given name.
*
* @memberof Oracle.BDD.Portlets.Visualization.Model.QueryConfig#
* @param {string}
* tokenName The name of the token to return
*/
getToken : function(tokenName) {
if (this._tokens && this._tokens.hasOwnProperty(tokenName)) {
var token = this._tokens[tokenName];
var tkn;
switch (token.type) {
case Oracle.BDD.Portlets.Visualization.Constants.TOKEN_TYPE_METRIC:
tkn = new Oracle.BDD.Portlets.Visualization.Model.MetricToken(
token);
break;
case Oracle.BDD.Portlets.Visualization.Constants.TOKEN_TYPE_DIMENSION:
tkn = new Oracle.BDD.Portlets.Visualization.Model.DimensionToken(
token);
break;
case Oracle.BDD.Portlets.Visualization.Constants.TOKEN_TYPE_SORT:
tkn = new Oracle.BDD.Portlets.Visualization.Model.SortToken(
token);
break;
case Oracle.BDD.Portlets.Visualization.Constants.TOKEN_TYPE_DATA:
tkn = new Oracle.BDD.Portlets.Visualization.Model.DataToken(
token);
break;
case Oracle.BDD.Portlets.Visualization.Constants.TOKEN_TYPE_DATAVIEW:
tkn = new Oracle.BDD.Portlets.Visualization.Model.DataViewToken(
token);
break;
default:
tkn = new Oracle.BDD.Portlets.Visualization.Model.Token(token);
}
return tkn;
}
return;
// TODO: throw exception if no token is found
},
/**
* Gets the query name
*
* @return {string} queryName The queryName
*/
getQueryName : function() {
return this._queryName;
},
/** Private * */
/**
* @private
*/
getRefinements : function() {
return this._refinements || {};
},
/**
* @private
*/
getTokens : function() {
return this._tokens || {};
},
/**
* @private
*/
setQueryName : function(queryName) {
this._queryName = queryName;
},
/**
* @private
*/
setTokens : function(tokens) {
this._tokens = tokens;
},
/**
* @private
*/
toRequest : function() {
return {
queryName : this.getQueryName(),
tokens : this.getTokens(),
refinements : this.getRefinements()
};
}
};
// @ sourceURL=QueryConfig.js