Source: model/Token.js

Ext.ns('Oracle.BDD.Portlets.Visualization.Model');

/**
 * <b>Do NOT instantiate this class directly.</b> The token object should be
 * accessed and modified through the
 * {@link Oracle.BDD.Portlets.Visualization.Model.QueryConfig#getToken} function
 * ONLY.
 * 
 * For example, to set the direction of a sort token named "sort_token", do the
 * following: queryConfig.getToken("sort_token").setSortDirection("ASC");
 * 
 * @class Oracle.BDD.Portlets.Visualization.Model.Token
 * 
 */
Oracle.BDD.Portlets.Visualization.Model.Token = function(tokenConfig) {

	this._token = tokenConfig;

	return this;
};

Oracle.BDD.Portlets.Visualization.Model.Token.prototype = {

	/**
	 * Gets the token type (e.g. 'metric', 'dimension', 'sort', data',
	 * 'dataview'
	 * 
	 * @return {string} The token's type ('metric', 'dimension', etc.)
	 */
	getType : function() {
		return this._token.type;
	},

	/**
	 * Gets the value for token of the given name. This is the literal value
	 * that replaced the value in the EQL query.
	 * 
	 * @return {string|Number} The token's value
	 */
	getValue : function() {
		return this._token.value;
	}

};

/**
 * <b>Do NOT instantiate this class directly.</b> Token objects should be
 * accessed and modified through the
 * {@link Oracle.BDD.Portlets.Visualization.Model.QueryConfig#getToken} function
 * ONLY.
 * 
 * @class Oracle.BDD.Portlets.Visualization.Model.AttributeToken
 * @extends Oracle.BDD.Portlets.Visualization.Model.Token
 */
Oracle.BDD.Portlets.Visualization.Model.AttributeToken = Ext.extend(
		Oracle.BDD.Portlets.Visualization.Model.Token, {

			/**
			 * Gets the attribute key for the attribute token of the given name
			 * 
			 * @memberof Oracle.BDD.Portlets.Visualization.Model.AttributeToken#
			 * @return {string} The token's attribute key
			 */
			getAttributeKey : function() {
				return this._token.attributeKey;
			},

			/**
			 * Gets the MDEX datatype of the token's attribute
			 * 
			 * @memberof Oracle.BDD.Portlets.Visualization.Model.AttributeToken#
			 * @return {string} The token's data type
			 */
			getDataType : function() {
				return this._token.attributeDataType;
			},

			/**
			 * Gets the token's dataview key
			 * 
			 * @memberof Oracle.BDD.Portlets.Visualization.Model.AttributeToken#
			 * @return {string} The token's dataview key
			 */
			getDataViewKey : function() {
				return this._token.dataviewKey;

			},

			/**
			 * Gets the attribute display name for the attribute token of the
			 * given name
			 * 
			 * @memberof Oracle.BDD.Portlets.Visualization.Model.AttributeToken#
			 * @return {string} The token's attribute display name
			 */
			getDisplayName : function() {
				return this._token.attributeDisplayName;
			},

			/**
			 * Indicates if the attribute is single assign
			 * 
			 * @memberof Oracle.BDD.Portlets.Visualization.Model.AttributeToken#
			 * @return {boolean}
			 */
			isSingleAssign : function() {
				return this._token.attributeSingleAssign;
			},

			/**
			 * Sets the attribute key for the attribute token of the given name
			 * 
			 * @memberof Oracle.BDD.Portlets.Visualization.Model.AttributeToken#
			 * @param {string}
			 *            attributeKey The attribute key value
			 */
			setAttributeKey : function(attributeKey) {
				this._token.attributeKey = attributeKey;
			}
		});

/**
 * <b>Do NOT instantiate this class directly.</b> Token objects should be
 * accessed and modified through the
 * {@link Oracle.BDD.Portlets.Visualization.Model.QueryConfig#getToken} function
 * ONLY.
 * 
 * @class Oracle.BDD.Portlets.Visualization.Model.DimensionToken
 * @extends Oracle.BDD.Portlets.Visualization.Model.AttributeToken
 * 
 */
Oracle.BDD.Portlets.Visualization.Model.DimensionToken = Ext.extend(
		Oracle.BDD.Portlets.Visualization.Model.AttributeToken, {

			/**
			 * Returns boolean indicating if this token is configured to group
			 * its multi-assign attributes my set members in eql grouping
			 * functions. Default true for multi-assign attributes.
			 * 
			 * @memberof Oracle.BDD.Portlets.Visualization.Model.DimensionToken#
			 * @return {boolean} The token's aggregation function
			 */
			isGroupByMembers : function() {
				return !this._token.attributeSingleAssign
						&& this._token.groupByMembers;
			},

		});

/**
 * <b>Do NOT instantiate this class directly.</b> Token objects should be
 * accessed and modified through the
 * {@link Oracle.BDD.Portlets.Visualization.Model.QueryConfig#getToken} function
 * ONLY.
 * 
 * @class Oracle.BDD.Portlets.Visualization.Model.MetricToken
 * @extends Oracle.BDD.Portlets.Visualization.Model.AttributeToken
 * 
 */
Oracle.BDD.Portlets.Visualization.Model.MetricToken = Ext.extend(
		Oracle.BDD.Portlets.Visualization.Model.AttributeToken, {

			/**
			 * Gets the attribute aggregation function for the token of the
			 * given name
			 * 
			 * @memberof Oracle.BDD.Portlets.Visualization.Model.MetricToken#
			 * @return {string} The token's aggregation function
			 */
			getAggregationFunction : function() {
				return this._token.aggregation;
			},

			/**
			 * Gets an array of aggregation functions that are valid for the
			 * token of the given name <i>and</i> the token's attribute.
			 * 
			 * @memberof Oracle.BDD.Portlets.Visualization.Model.MetricToken#
			 * @param {string}
			 *            tokenName Name of the token
			 * @return {Object[]} The token's valid aggregation functions
			 */
			getValidAggregations : function() {

				var attributeAvailable = this._token.availableAggregations
						|| [];
				var tokenAvailable = this._token.aggregations || [];

				var aggrs = [];
				Ext.each(tokenAvailable, function(aggr) {
					if (tokenAvailable.length == 0
							|| attributeAvailable.indexOf(aggr) > -1)
						aggrs.push(aggr);
				});

				return aggrs;
			},

			/**
			 * Sets the aggregation function for the token of the given name
			 * 
			 * @memberof Oracle.BDD.Portlets.Visualization.Model.MetricToken#
			 * @param {string}
			 *            aggregation The aggregation function to set
			 */
			setAggregationFunction : function(aggregation) {

				if (this.getValidAggregations().indexOf(
						aggregation.toLowerCase()) > -1) {
					this._token.aggregation = aggregation;
				}

				// TODO: throw exception is invalid function is attempted
			}
		});

/**
 * <b>Do NOT instantiate this class directly.</b> Token objects should be
 * accessed and modified through the
 * {@link Oracle.BDD.Portlets.Visualization.Model.QueryConfig#getToken} function
 * ONLY.
 * 
 * @class Oracle.BDD.Portlets.Visualization.Model.SortToken
 * @extends Oracle.BDD.Portlets.Visualization.Model.Token
 */
Oracle.BDD.Portlets.Visualization.Model.SortToken = Ext
		.extend(
				Oracle.BDD.Portlets.Visualization.Model.Token,
				{

					/**
					 * Gets the sort direction for the token of the given name
					 * as either 'ASC' or 'DESC'
					 * 
					 * @memberof Oracle.BDD.Portlets.Visualization.Model.SortToken#
					 * @return {string} The token's sort direction
					 */
					getSortDirection : function() {

						return this._token.sortConfig.sortDirection;
					},

					/**
					 * Sets the sort direction for sort token. Value must be
					 * 'ASC' nor 'DESC'.
					 * 
					 * @memberof Oracle.BDD.Portlets.Visualization.Model.SortToken#
					 * @param {string}
					 *            direction 'ASC' or 'DESC'
					 */
					setSortDirection : function(direction) {

						direction = direction.toUpperCase();
						if (direction === "ASC" || direction === "DESC")
							this._token.sortConfig.sortDirection = direction;

						// TODO: throw exception is invalid direction is
						// attempted
					},

					/**
					 * Toggles the sort direction for the sort token
					 * 
					 * @memberof Oracle.BDD.Portlets.Visualization.Model.SortToken#
					 */
					toggleSortDirection : function() {

						if (this._token.sortConfig.sortDirection.toUpperCase() === 'ASC')
							this._token.sortConfig.sortDirection = 'DESC';
						else
							this._token.sortConfig.sortDirection = 'ASC';
					}

				});

/**
 * <b>Do NOT instantiate this class directly.</b> Token objects should be
 * accessed and modified through the
 * {@link Oracle.BDD.Portlets.Visualization.Model.QueryConfig#getToken} function
 * ONLY.
 * 
 * @class Oracle.BDD.Portlets.Visualization.Model.DataToken
 * @extends Oracle.BDD.Portlets.Visualization.Model.Token
 */
Oracle.BDD.Portlets.Visualization.Model.DataToken = Ext.extend(
		Oracle.BDD.Portlets.Visualization.Model.Token, {

			/**
			 * Sets the replacement value for the data token of the given name.
			 * 
			 * @memberof Oracle.BDD.Portlets.Visualization.Model.SortToken#
			 * @param {string}
			 *            value The value to set
			 */
			setValue : function(value) {

				this._token.dataTokenValue = value + '';

			}

		});

/**
 * <b>Do NOT instantiate this class directly.</b> Token objects should be
 * accessed and modified through the
 * {@link Oracle.BDD.Portlets.Visualization.Model.QueryConfig#getToken} function
 * ONLY.
 * 
 * @class Oracle.BDD.Portlets.Visualization.Model.DataViewToken
 * @extends Oracle.BDD.Portlets.Visualization.Model.Token
 */
Oracle.BDD.Portlets.Visualization.Model.DataViewToken = Ext.extend(
		Oracle.BDD.Portlets.Visualization.Model.Token, {

			/**
			 * Gets the token's dataview key
			 * 
			 * @memberof Oracle.BDD.Portlets.Visualization.Model.SortToken#
			 * @return {string} The token's dataview key
			 */
			getDataViewKey : function() {
				return this._token.dataviewKey;

			}

		});
// @ sourceURL=Token.js