| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // 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.olap.aggregators.SumAggregator; |
| import mx.olap.aggregators.AverageAggregator; |
| import mx.olap.aggregators.MaxAggregator; |
| import mx.olap.aggregators.MinAggregator; |
| import mx.olap.aggregators.CountAggregator; |
| import mx.resources.ResourceManager; |
| |
| [ResourceBundle("olap")] |
| |
| /** |
| * The OLAPMeasure class represents a member of the measure dimension of an OLAP cube. |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public class OLAPMeasure extends OLAPMember |
| { |
| include "../core/Version.as"; |
| |
| //-------------------------------------------------------------------------- |
| // |
| // Constructor |
| // |
| //-------------------------------------------------------------------------- |
| |
| /** |
| * Constructor. |
| * |
| * @param name The name of the OLAP element that includes the OLAP schema hierarchy of the element. |
| * For example, "Time_Year", where "Year" is a level of the "Time" dimension in an OLAP schema. |
| * |
| * @param displayName The name of the measure, as a String, which can be used for display. |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function OLAPMeasure(name:String=null, displayName:String=null) |
| { |
| super(name, displayName); |
| } |
| |
| |
| //-------------------------------------------------------------------------- |
| // |
| // Overridden properties |
| // |
| //-------------------------------------------------------------------------- |
| |
| //---------------------------------- |
| // isMeasure |
| //---------------------------------- |
| |
| /** |
| * @private |
| */ |
| override public function get isMeasure():Boolean |
| { |
| return true; |
| } |
| |
| //-------------------------------------------------------------------------- |
| // |
| // Properties |
| // |
| //-------------------------------------------------------------------------- |
| |
| //---------------------------------- |
| // aggregator |
| //---------------------------------- |
| |
| /** |
| * @private |
| * |
| * By default we use the sum as aggregator. |
| */ |
| private var _aggregator:Object = new SumAggregator; |
| |
| /** |
| * The aggregation to be performed for this measure. |
| * You can use one of the following values for the property: |
| * <code>"SUM"</code>, <code>"AVG"</code>, <code>"MIN"</code>, |
| * <code>"MAX"</code>, or <code>"COUNT"</code>. |
| * |
| * <p>You can also use a custom aggregator by implementing |
| * the IOLAPCustomAggregator interface, then setting the <code>aggregator</code> property to |
| * that custom aggregator, as the following example shows:</p> |
| * |
| * <pre>aggregator={new CustomAgg()}</pre> |
| * |
| * @see mx.olap.IOLAPCustomAggregator |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function get aggregator():Object |
| { |
| return _aggregator; |
| } |
| |
| /** |
| * @private |
| */ |
| public function set aggregator(value:Object):void |
| { |
| _aggregator = value; |
| if (value is String) |
| { |
| switch(String(value).toLowerCase()) |
| { |
| case "sum": |
| _aggregator = new SumAggregator; |
| break; |
| case "count": |
| _aggregator = new CountAggregator; |
| break; |
| case "avg": |
| _aggregator = new AverageAggregator; |
| break; |
| case "max": |
| _aggregator = new MaxAggregator; |
| break; |
| case "min": |
| _aggregator = new MinAggregator; |
| break; |
| default: |
| { |
| _aggregator = null; |
| var message:String = ResourceManager.getInstance().getString( |
| "olap", "invalidAggregator", [value]); |
| throw Error(message); |
| } |
| break; |
| } |
| } |
| } |
| } |
| |
| } |