| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // 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.core.mx_internal; |
| |
| use namespace mx_internal; |
| |
| /** |
| * The OLAPResult class represents the result of a query on an OLAP cube. |
| * |
| * @see mx.olap.IOLAPResult |
| * @see mx.olap.OLAPQuery |
| * @see mx.olap.OLAPQueryAxis |
| * @see mx.olap.IOLAPResultAxis |
| * @see mx.olap.OLAPResultAxis |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public class OLAPResult implements IOLAPResult |
| { |
| include "../core/Version.as"; |
| |
| //-------------------------------------------------------------------------- |
| // |
| // Class constants |
| // |
| //-------------------------------------------------------------------------- |
| |
| /** |
| * Specifies a column axis. |
| * Use this property as a value of the <code>axisOrdinal</code> argument |
| * to the <code>getAxis()</code> method. |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public static var COLUMN_AXIS:int = 0; |
| |
| /** |
| * Specifies a row axis. |
| * Use this property as a value of the <code>axisOrdinal</code> argument |
| * to the <code>getAxis()</code> method. |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public static var ROW_AXIS:int = 1; |
| |
| /** |
| * Specifies a slicer axis. |
| * Use this property as a value of the <code>axisOrdinal</code> argument |
| * to the <code>getAxis()</code> method. |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public static var SLICER_AXIS:int = 2; |
| |
| //-------------------------------------------------------------------------- |
| // |
| // Variables |
| // |
| //-------------------------------------------------------------------------- |
| |
| /** |
| * An Array of Arrays that contains the value of each cell of the result. |
| * A cell is an intersection of a row and a column axis position. |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| protected var cellData:Array = []; |
| |
| //-------------------------------------------------------------------------- |
| // |
| // Properties |
| // |
| //-------------------------------------------------------------------------- |
| |
| //---------------------------------- |
| // axes |
| //---------------------------------- |
| |
| private var _axes:Array = []; |
| |
| /** |
| * @inheritDoc |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function get axes():Array |
| { |
| return _axes; |
| } |
| |
| //---------------------------------- |
| // query |
| //---------------------------------- |
| |
| private var _query:IOLAPQuery; |
| |
| /** |
| * @inheritDoc |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function get query():IOLAPQuery |
| { |
| return _query; |
| } |
| |
| /** |
| * @private |
| */ |
| public function set query(q:IOLAPQuery):void |
| { |
| _query = q; |
| } |
| |
| //-------------------------------------------------------------------------- |
| // |
| // Methods |
| // |
| //-------------------------------------------------------------------------- |
| |
| /** |
| * @inheritDoc |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function getAxis(axisOrdinal:int):IOLAPResultAxis |
| { |
| return axes[axisOrdinal]; |
| } |
| |
| /** |
| * @private |
| * Sets an axis of the query result. |
| * |
| * @param axisOrdinal Specify <code>OLAPResult.COLUMN AXIS</code> for a column axis, |
| * <code>OLAPResult.ROW_AXIS</code> for a row axis, |
| * and <code>OLAPResult.SLICER_AXIS</code> for a slicer axis. |
| * |
| * @param axis The IOLAPResultAxis instance. |
| */ |
| mx_internal function setAxis(axisOrdinal:int, axis:IOLAPResultAxis):void |
| { |
| axes[axisOrdinal] = axis; |
| } |
| |
| /** |
| * @inheritDoc |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function getCell(x:int, y:int):IOLAPCell |
| { |
| if (cellData[x]) |
| return new OLAPCell(cellData[x][y]); |
| return new OLAPCell(NaN); |
| } |
| |
| /** |
| * private |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| mx_internal function setCell(x:int, y:int, value:Number):void |
| { |
| if (!cellData[x]) |
| cellData[x] = []; |
| cellData[x][y] = value; |
| } |
| |
| /** |
| * Returns <code>true</code> if the row contains data. |
| * |
| * @param rowIndex The index of the row in the result. |
| * |
| * @return <code>true</code> if the row contains data, |
| * and <code>false</code> if not. |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function hasRowData(rowIndex:int):Boolean |
| { |
| return cellData[rowIndex] != undefined; |
| } |
| |
| /** |
| * @private |
| * Removes a row of data from the result. |
| * |
| * @param y The index of the row in the result. |
| */ |
| mx_internal function removeRowData(y:int):void |
| { |
| cellData.splice(y, 1); |
| } |
| |
| /** |
| * @private |
| * Removes a column of data from the result. |
| * |
| * @param x The index of the column in the result. |
| */ |
| mx_internal function removeColumnData(x:int):void |
| { |
| for each (var a:Array in cellData) |
| { |
| a.splice(x, 1); |
| } |
| } |
| |
| } |
| } |