Package mondrian.olap.type
Class TypeUtil
java.lang.Object
mondrian.olap.type.TypeUtil
Utility methods relating to types.
- Since:
- Feb 17, 2005
- Author:
- jhyde
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic boolean
canConvert
(int ordinal, Type fromType, int to, List<Resolver.Conversion> conversions) Returns whether we can convert an argument of a given category to a given parameter category.static boolean
canEvaluate
(Type type) Returns whether a value of a given type can be evaluated to a scalar value.static Type
computeCommonType
(boolean allowConversions, Type... types) Returns a type sufficiently broad to hold any value of several types, but as narrow as possible.static boolean
couldBeMember
(Type type) getHierarchies
(Type type) Returns the hierarchies in a set, member, or tuple type.static boolean
Returns whether a type is a set type.static boolean
isUnionCompatible
(Type type1, Type type2) Returns whether this type is union-compatible with another.static Type
stripSetType
(Type type) Given a set type, returns the element type.static Type
toMemberOrTupleType
(Type type) Converts a type to a member or tuple type.static MemberType
toMemberType
(Type type) Converts a type to a member type.static int
typeToCategory
(Type type)
-
Constructor Details
-
TypeUtil
public TypeUtil()
-
-
Method Details
-
stripSetType
Given a set type, returns the element type. Or its element type, if it is a set type. And so on.- Parameters:
type
- Type- Returns:
- underlying element type which is not a set type
-
toMemberOrTupleType
Converts a type to a member or tuple type. If it cannot, returns null.- Parameters:
type
- Type- Returns:
- member or tuple type
-
toMemberType
Converts a type to a member type. If it is a set, strips the set. If it is a member type, returns the type unchanged. If it is a dimension, hierarchy or level type, converts it to a member type. If it is a tuple, number, string, or boolean, returns null.- Parameters:
type
- Type- Returns:
- type as a member type
-
isUnionCompatible
Returns whether this type is union-compatible with another. In general, to be union-compatible, types must have the same dimensionality.- Parameters:
type1
- First typetype2
- Second type- Returns:
- whether types are union-compatible
-
canEvaluate
Returns whether a value of a given type can be evaluated to a scalar value.The rules are as follows:
- Clearly boolean, numeric and string expressions can be evaluated.
- Member and tuple expressions can be interpreted as a scalar value. The expression is evaluated to establish the context where a measure can be evaluated.
- Hierarchy and dimension expressions are implicitly converted into the current member, and evaluated as above.
- Level expressions cannot be evaluated
- Cube and Set (even sets with a single member) cannot be evaluated.
- Parameters:
type
- Type- Returns:
- Whether an expression of this type can be evaluated to yield a scalar value.
-
isSet
Returns whether a type is a set type.- Parameters:
type
- Type- Returns:
- Whether a value of this type can be evaluated to yield a set.
-
couldBeMember
-
typeToCategory
- Parameters:
type
- Type- Returns:
- category ordinal
-
computeCommonType
Returns a type sufficiently broad to hold any value of several types, but as narrow as possible. If there is no such type, returns null.The result is equivalent to calling
Type.computeCommonType(Type, int[])
pairwise.- Parameters:
allowConversions
- Whether to allow implicit conversionstypes
- Array of types- Returns:
- Most general type which encompases all types
-
canConvert
public static boolean canConvert(int ordinal, Type fromType, int to, List<Resolver.Conversion> conversions) Returns whether we can convert an argument of a given category to a given parameter category.- Parameters:
ordinal
- argument ordinalfromType
- actual argument typeto
- formal parameter categoryconversions
- list of implicit conversions required (out)- Returns:
- whether can convert from 'from' to 'to'
-
getHierarchies
Returns the hierarchies in a set, member, or tuple type.- Parameters:
type
- Type- Returns:
- List of hierarchies
-