//////////////////////////////////////////////////////////////////////////////// // // 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 flash.utils.Dictionary; import mx.collections.ArrayCollection; import mx.collections.IList; import mx.core.mx_internal; /** * The OLAPMember class represents a member of an OLAP dimension. * * @mxml *
* The <mx:OLAPMember>
tag inherits all of the tag attributes
* of its superclass, and adds the following tag attributes:
*
* <mx:OLAPMember
* Properties
* />
*
* @see mx.olap.IOLAPMember
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public class OLAPMember extends OLAPElement implements IOLAPMember
{
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 OLAP member, as a String, which can be used for display.
*
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function OLAPMember(name:String=null, displayName:String=null)
{
OLAPTrace.traceMsg("Creating member: " + name, OLAPTrace.TRACE_LEVEL_3);
super(name, displayName);
}
//--------------------------------------------------------------------------
//
// Variables
//
//--------------------------------------------------------------------------
/**
* @private
* A child members map based on their name
*/
private var _childrenMap:Dictionary = new Dictionary(true);
//--------------------------------------------------------------------------
//
// Overridden properties
//
//--------------------------------------------------------------------------
//----------------------------------
// dimension
//----------------------------------
/**
* The dimension to which this member belongs.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
override public function get dimension():IOLAPDimension
{
if (level && level.hierarchy)
return level.hierarchy.dimension;
return null;
}
//----------------------------------
// uniqueName
//----------------------------------
/**
* @inheritDoc
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
override public function get uniqueName():String
{
var list:Array = [];
list.push(this);
var parent:IOLAPMember = this.parent;
// if the member is from a OLAPAttribute then
// we only need to push the hierarchy name
if (hierarchy is OLAPAttribute)
{
list.push(hierarchy);
}
else
{
// if the member is from a OLAPHierarchy then we need to traverse
// its parents till we reach the top level.
while (parent && parent.parent)
{
list.push(parent);
parent = parent.parent;
}
list.push(hierarchy.levels.getItemAt(0));
list.push(hierarchy);
}
list.push(dimension);
var uName:String = "";
var n:int = list.length;
for (var i:int = n - 1; i > -1; --i)
uName += "[" + list[i].name + "].";
uName = uName.substring(0, uName.length-1);
return uName;
}
//--------------------------------------------------------------------------
//
// Properties
//
//--------------------------------------------------------------------------
//----------------------------------
// children
//----------------------------------
private var _children:IList = new ArrayCollection;
/**
* @inheritDoc
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function get children():IList
{
return _children;
}
//----------------------------------
// dataField
//----------------------------------
private var _dataField:String;
/**
* The field of the input data set that provides
* the data for this OLAPMember instance.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function get dataField():String
{
return _dataField;
}
/**
* @private
*/
public function set dataField(field:String):void
{
_dataField = field;
}
//----------------------------------
// hierarchy
//----------------------------------
/**
* @inheritDoc
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function get hierarchy():IOLAPHierarchy
{
return level.hierarchy;
}
//----------------------------------
// isAll
//----------------------------------
private var _all:Boolean = false;
/**
* @inheritDoc
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function get isAll():Boolean
{
return _all;
}
//----------------------------------
// isMeasure
//----------------------------------
/**
* @inheritDoc
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function get isMeasure():Boolean
{
return false;
}
//----------------------------------
// level
//----------------------------------
private var _level:IOLAPLevel;
/**
* @inheritDoc
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function get level():IOLAPLevel
{
return _level;
}
/**
* @private
*/
public function set level(level:IOLAPLevel):void
{
_level = level;
}
//----------------------------------
// parent
//----------------------------------
private var _parent:IOLAPMember;
/**
* @inheritDoc
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function get parent():IOLAPMember
{
return _parent;
}
/**
* @private
*/
public function set parent(p:IOLAPMember):void
{
_parent = p;
}
//--------------------------------------------------------------------------
//
// Methods
//
//--------------------------------------------------------------------------
/**
* @inheritDoc
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public function findChildMember(name:String):IOLAPMember
{
return _childrenMap[name];
}
/**
* Sets this member as the all member.
* By default, the member is not the all member.
*
* @param value true
to make this member the all member.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
mx_internal function setIsAll(value:Boolean):void
{
_all = value;
}
/**
* @private
*
* Adds a child member to this member.
*
* @param m The child member to add.
*/
mx_internal function addChild(m:IOLAPMember):void
{
_children.addItem(m);
_childrenMap[m.name] = m;
}
}
}