//////////////////////////////////////////////////////////////////////////////// // // 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.
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.