Package mondrian.olap.type
Class MemberType
- java.lang.Object
-
- mondrian.olap.type.MemberType
-
-
Field Summary
Fields Modifier and Type Field Description static MemberType
Unknown
-
Constructor Summary
Constructors Constructor Description MemberType(Dimension dimension, Hierarchy hierarchy, Level level, Member member)
Creates a type representing a member.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Type
computeCommonType(Type type, int[] conversionCount)
Returns a Type which is more general than this and the given Type.static MemberType
forDimension(Dimension dimension)
static MemberType
forHierarchy(Hierarchy hierarchy)
static MemberType
forLevel(Level level)
static MemberType
forMember(Member member)
static MemberType
forType(Type type)
int
getArity()
Returns the number of fields in a tuple type, or a set of tuples.Dimension
getDimension()
Returns the Dimension of this Type, or null if not known.Hierarchy
getHierarchy()
Returns the Hierarchy of this Type, or null if not known.Level
getLevel()
Returns the Level of this Type, or null if not known.Member
getMember()
Type
getValueType()
boolean
isInstance(Object value)
Returns whether a value is valid for a type.String
toString()
boolean
usesDimension(Dimension dimension, boolean definitely)
Returns whether this type contains a given dimension.boolean
usesHierarchy(Hierarchy hierarchy, boolean definitely)
Returns whether this type contains a given hierarchy.
-
-
-
Field Detail
-
Unknown
public static final MemberType Unknown
-
-
Constructor Detail
-
MemberType
public MemberType(Dimension dimension, Hierarchy hierarchy, Level level, Member member)
Creates a type representing a member.- Parameters:
dimension
- Dimension the member belongs to, or null if not knownhierarchy
- Hierarchy the member belongs to, or null if not knownlevel
- Level the member belongs to, or null if not knownmember
- The precise member, or null if not known
-
-
Method Detail
-
forDimension
public static MemberType forDimension(Dimension dimension)
-
forHierarchy
public static MemberType forHierarchy(Hierarchy hierarchy)
-
forLevel
public static MemberType forLevel(Level level)
-
forMember
public static MemberType forMember(Member member)
-
getHierarchy
public Hierarchy getHierarchy()
Description copied from interface:Type
Returns the Hierarchy of this Type, or null if not known. If not applicable, throws.- Specified by:
getHierarchy
in interfaceType
- Returns:
- the Hierarchy of this type, or null if not known
-
getLevel
public Level getLevel()
Description copied from interface:Type
Returns the Level of this Type, or null if not known. If not applicable, throws.
-
getMember
public Member getMember()
-
usesDimension
public boolean usesDimension(Dimension dimension, boolean definitely)
Description copied from interface:Type
Returns whether this type contains a given dimension. For example:DimensionType([Gender])
uses only the[Gender]
dimension.TupleType(MemberType([Gender]), MemberType([Store]))
uses[Gender]
and[Store]
dimensions.
definitely
parameter comes into play when the dimensional information is incomplete. For example, when applied toTupleType(MemberType(null), MemberType([Store]))
,usesDimension([Gender], false)
returns true because it is possible that the expression returns a member of the[Gender]
dimension; butusesDimension([Gender], true)
returns true because it is possible that the expression returns a member of the[Gender]
dimension.- Specified by:
usesDimension
in interfaceType
- Parameters:
dimension
- Dimensiondefinitely
- If true, returns true only if this type definitely uses the dimension- Returns:
- whether this Type uses the given Dimension
-
usesHierarchy
public boolean usesHierarchy(Hierarchy hierarchy, boolean definitely)
Description copied from interface:Type
Returns whether this type contains a given hierarchy. For example:HierarchyType([Customer].[Gender])
uses only the[Customer].[Gender]
hierarchy.TupleType(MemberType([Customer].[Gender]), MemberType([Store].[Store]))
uses[Gender]
and[Store]
dimensions.
definitely
parameter comes into play when the dimensional information is incomplete. For example, when applied toTupleType(MemberType([Customer]), MemberType([Store]))
,usesDimension([Customer].[Gender], false)
returns true because the expression returns a member of one hierarchy of the[Customer]
dimension and that might be a member of the[Customer].[Gender]
hierarchy; butusesDimension([Customer].[Gender], true)
returns false because might return a member of a different hierarchy, such as[Customer].[State]
.- Specified by:
usesHierarchy
in interfaceType
- Parameters:
hierarchy
- Hierarchydefinitely
- If true, returns true only if this type definitely uses the hierarchy- Returns:
- whether this Type uses the given Hierarchy
-
getValueType
public Type getValueType()
-
getDimension
public Dimension getDimension()
Description copied from interface:Type
Returns the Dimension of this Type, or null if not known. If not applicable, throws.- Specified by:
getDimension
in interfaceType
- Returns:
- the Dimension of this Type, or null if not known.
-
forType
public static MemberType forType(Type type)
-
computeCommonType
public Type computeCommonType(Type type, int[] conversionCount)
Description copied from interface:Type
Returns a Type which is more general than this and the given Type. The type returned is broad enough to hold any value of either type, but no broader. If there is no such type, returns null.Some examples:
- The common type for StringType and NumericType is ScalarType.
- The common type for NumericType and DecimalType(4, 2) is NumericType.
- DimensionType and NumericType have no common type.
If
conversionCount
is not null, implicit conversions such as HierarchyType to DimensionType are considered; the parameter is incremented by the number of conversions performed.Some examples:
- The common type for HierarchyType(hierarchy=Time.Weekly) and LevelType(dimension=Time), if conversions are allowed, is HierarchyType(dimension=Time).
One use of common types is to determine the types of the arguments to the
Iif
function. For example, the call
has type ScalarType, because DecimalType(-1, 0) is a subtype of ScalarType, and MeasureType can be converted implicitly to ScalarType.Iif(1 > 2, [Measures].[Unit Sales], 5)
- Specified by:
computeCommonType
in interfaceType
- Parameters:
type
- TypeconversionCount
- Number of conversions; output parameter that is incremented each time a conversion is performed; if null, conversions are not considered- Returns:
- More general type
-
isInstance
public boolean isInstance(Object value)
Description copied from interface:Type
Returns whether a value is valid for a type.- Specified by:
isInstance
in interfaceType
- Parameters:
value
- Value- Returns:
- Whether value is valid for this type
-
-