//////////////////////////////////////////////////////////////////////////////// // // 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 mx.olap { import mx.collections.ICollectionView; import mx.collections.IList; import mx.rpc.AsyncToken; /** * The IOLAPCube interface represents an OLAP cube that holds * an N-dimensional representation of a flat data set. * You use an OLAP schema to define how the cube represents the * input flat data set. * *

An OLAP cube is analogous to a table in a relational database. * Where a table in a relational database has two dimensions, * an OLAP cube can have any number of dimensions. * In its simplest form, the dimensions of an OLAP cube correspond * to a field of the flat data set.

* *

After setting the schema of the OLAP cube, you must call * the IOLAPCube.refresh() method to build the cube. * Upon completion of cube initialization, the OLAP cube dispatches * the complete event to signal that the cube is ready to query.

*. * @see mx.olap.OLAPCube * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public interface IOLAPCube { //-------------------------------------------------------------------------- // // Properties // //-------------------------------------------------------------------------- //---------------------------------- // dimensions //---------------------------------- /** * All dimensions in the cube, as a list of IOLAPDimension instances. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ function get dimensions():IList; //of IOLAPDimensions //---------------------------------- // name //---------------------------------- /** * The name of the OLAP cube. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ function get name():String; //-------------------------------------------------------------------------- // // Methods // //-------------------------------------------------------------------------- /** * Aborts a query that has been submitted for execution. * * @param query The query to abort. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ function cancelQuery(query:IOLAPQuery):void; /** * Aborts the current cube refresh, if one is executing. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ function cancelRefresh():void; /** * Queues an OLAP query for execution. * After you call the refresh() method to update the cube, * you must wait for a complete event * before you call the execute() method. * *

OLAP cubes can be complex, so you do not want your application * to pause while Flex calculates the results of your OLAP query. * The execute() method returns an instance of the AsyncToken class, * which lets you set up handlers for asynchronous operations so that * your application can continue to execute during query processing.

* *

When using the AsyncToken class, you set up two functions to handle the query results. * In this example, the showResult() function handles the query results when the query succeeds, * and the showFault() function handles any errors detected during query execution:

* *
     *  <mx:Script>
     *          
     *          // Function to execute a query.
     *          private function runQuery(cube:IOLAPCube):void {
     *              // Create a query instance.
     *              var query:IOLAPQuery = getQuery(cube);
     *              // Execute the query.
     *              var token:AsyncToken = cube.execute(query);
     *              // Set up handlers for the query results.
     *              token.addResponder(new AsyncResponder(showResult, showFault));
     *          }
     *          
     *          // Handle a query fault.
     *          private function showFault(result:FaultEvent, token:Object):void {
     *              Alert.show("Error in query.");
     *          }
     *  
     *          // Handle a query success.
     *          private function showResult(result:Object, token:Object):void {
     *              if (!result) {
     *                  Alert.show("No results from query.");
     *                  return;
     *              }
     *  
     *              myOLAPDG.dataProvider= result as OLAPResult;            
     *          }        
     *  </mx:Script>
     *  
     *  <mx:OLAPDataGrid id="myOLAPDG" width="100%" height="100%" />
     *  
* * @param query The query to execute, represented by an IOLAPQuery instance. * * @return An AsyncToken instance. * * @see mx.rpc.AsyncToken * @see mx.rpc.AsyncResponder * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ function execute(query:IOLAPQuery):AsyncToken; /** * Returns the dimension with the given name within the OLAP cube. * * @param name The name of the dimension. * * @return An IOLAPDimension instance representing the dimension, * or null if a dimension is not found. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ function findDimension(name:String):IOLAPDimension; /** * Refreshes the cube from the data provider. * After setting the cube's schema, you must call this method to build the cube. * *

This method dispatches a progress event to indicate progress, * and dispatches a complete event when the cube is complete * and ready to execute queries. * You must wait for a complete event * before you call the execute() method to run a query.

* * @see mx.events.CubeEvent * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ function refresh():void; } }