Package mondrian.olap.fun
Class MultiResolver
- java.lang.Object
-
- org.eigenbase.xom.XMLUtil
-
- org.eigenbase.xom.XOMUtil
-
- mondrian.olap.Util
-
- mondrian.olap.fun.FunUtil
-
- mondrian.olap.fun.MultiResolver
-
- All Implemented Interfaces:
Resolver
- Direct Known Subclasses:
ParameterFunDef.ParameterResolver,ParameterFunDef.ParamRefResolver,ReflectiveMultiResolver
public abstract class MultiResolver extends FunUtil implements Resolver
AMultiResolverconsiders several overloadings of the same function. If one of these overloadings matches the actual arguments, it calls the factory methodcreateFunDef(mondrian.olap.Exp[], mondrian.olap.FunDef).- Since:
- Feb 12, 2003
- Author:
- jhyde
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class mondrian.olap.fun.FunUtil
FunUtil.DescendingValueComparator
-
Nested classes/interfaces inherited from class mondrian.olap.Util
Util.AbstractFlatList<T>, Util.ByteMatcher, Util.ErrorCellValue, Util.Flat2List<T>, Util.Flat3List<T>, Util.Functor1<RT,PT>, Util.GcIterator<T>, Util.MemoryInfo, Util.PropertyList, Util.SqlNullSafeComparator
-
Nested classes/interfaces inherited from interface mondrian.olap.fun.Resolver
Resolver.Conversion
-
-
Field Summary
-
Fields inherited from class mondrian.olap.fun.FunUtil
BooleanNull, DoubleEmpty, DoubleNull, IntegerNull, NullMember
-
Fields inherited from class mondrian.olap.Util
DEBUG, EmptyValue, IBM_JVM, JdbcVersion, JVM_INSTANCE_UUID, nl, nullValue, Retrowoven
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedMultiResolver(String name, String signature, String description, String[] signatures)Creates aMultiResolver.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract FunDefcreateFunDef(Exp[] args, FunDef dummyFunDef)StringgetDescription()Returns the description of the function or operator.FunDefgetFunDef()Returns a representative example of the function which this Resolver can produce, for purposes of describing the function set.StringgetName()Returns the name of the function or operator.String[]getReservedWords()Returns an array of symbolic constants which can appear as arguments to this function.StringgetSignature()Returns a string describing the syntax of this function, for exampleString[]getSignatures()SyntaxgetSyntax()Returns the syntax with which the function or operator was invoked.booleanrequiresExpression(int k)Returns whether a particular argument must be a scalar expression.FunDefresolve(Exp[] args, Validator validator, List<Resolver.Conversion> conversions)Given a particular set of arguments the function is applied to, returns the correct overloaded form of the function.-
Methods inherited from class mondrian.olap.fun.FunUtil
avg, box, box, checkIterListResultStyles, checkListResultStyles, compareHierarchically, compareSiblingMembers, compareValues, compareValues, count, decodeCategory, decodeParameterCategories, decodeReturnCategory, decodeSyntacticType, getDimensionDefaultHierarchy, getNonEmptyMemberChildren, getNonEmptyMemberChildrenWithDetails, isAncestorOf, makeNullTuple, max, min, newEvalException, newEvalException, newEvalException, quartile, resolveFunArgs, sum, sumDouble, sumDouble, tupleContainsNullMember, tupleContainsNullMember, worthCaching
-
Methods inherited from class mondrian.olap.Util
addAppender, addDatabaseTime, addLevelCalculatedMembers, append, appendArrays, areOccurencesEqual, assertPostcondition, assertPostcondition, assertPrecondition, assertPrecondition, assertTrue, assertTrue, badValue, binarySearch, bitSetBetween, camelToUpper, canCast, cancelStatement, caseSensitiveCompareName, cast, cast, castToIterable, checkCJResultLimit, close, commaList, compare, compareIntegers, compareKey, compareName, compileScript, convert, convert, convertOlap4jConnectStringToNativeMondrian, convertStackToString, copyOf, copyOf, copyOf, copyOf, copyOf, createExpr, createRandom, createRootRole, createSimpleValidator, createUdf, dbTimeMillis, deprecated, deprecated, digestMd5, digestSha256, equal, equalName, equals, equals, explain, falseFunctor, filter, flatList, flatList, flatListCopy, generateUuidString, genericArray, getAnnotation, getClosestResource, getDimensionCube, getErrorMessage, getErrorMessage, getExecutorService, getFirstDescendantOnLevel, getMatchingCause, getMemberOrdinalInParent, getMemoryInfo, getScheduledExecutorService, hash, hash, hashArray, identityFunctor, implode, intersect, isBlank, isEmpty, isNull, isSorted, isValidProperty, last, lookup, lookup, lookup, lookup, lookup, lookupCompound, lookupCompound, lookupHierarchyLevel, lookupHierarchyRootMember, lookupHierarchyRootMember, lookupProperty, makeAppender, makeBigDecimalFromDouble, makeFqName, makeFqName, makeFqName, matches, matches, mdxEncodeString, needToImplement, newElementNotFoundException, newError, newError, newIdentityHashSet, newIdentityHashSetFake, newInternal, newInternal, newTimer, nonDbTimeMillis, normalizeName, only, parseCommaList, parseConnectString, parseIdentifier, parseInterval, parseLocale, printMemory, printMemory, quoteForMdx, quoteForMdx, quoteJavaString, quoteMdxIdentifier, quoteMdxIdentifier, quoteMdxIdentifier, quoteMdxIdentifier, quotePattern, readFully, readFully, readURL, readURL, readURL, readVirtualFile, readVirtualFileAsString, removeAppender, replace, replace, replaceProperties, safeGet, setLevel, singleQuoteString, singleQuoteString, sort, sort, threadLocalRemove, toMap, toNullValuesMap, toOlap4j, toOlap4j, toOlap4j, toURL, trueFunctor, unexpected, uniquify, unparse, unparse, wildcardToRegexp
-
Methods inherited from class org.eigenbase.xom.XOMUtil
addChild, addChild, addChildren, addElement, concatenate, createDefaultParser, discard, discard, discard, discard, discard, discard, discard, discard, discard, getFirstInstance, wrapperToXml
-
-
-
-
Constructor Detail
-
MultiResolver
protected MultiResolver(String name, String signature, String description, String[] signatures)
Creates aMultiResolver.- Parameters:
name- Name of function or operatorsignature- Signature of function or operatordescription- Description of function or operatorsignatures- Array of possible signatures, each of which is an encoding of the syntactic type, return type, and parameter types of this operator. The "Members" operator has a syntactic type "pxd" which means "an operator withpropertysyntax (p) which returns a set (x) and takes a dimension (d) as its argument". SeeFunUtil.decodeSyntacticType(String),FunUtil.decodeReturnCategory(String),FunUtil.decodeParameterCategories(String).
-
-
Method Detail
-
getName
public String getName()
Description copied from interface:ResolverReturns the name of the function or operator.
-
getDescription
public String getDescription()
Description copied from interface:ResolverReturns the description of the function or operator.- Specified by:
getDescriptionin interfaceResolver
-
getSignature
public String getSignature()
Description copied from interface:ResolverReturns a string describing the syntax of this function, for exampleStrToSet() - Specified by:
getSignaturein interfaceResolver
-
getSyntax
public Syntax getSyntax()
Description copied from interface:ResolverReturns the syntax with which the function or operator was invoked.
-
getReservedWords
public String[] getReservedWords()
Description copied from interface:ResolverReturns an array of symbolic constants which can appear as arguments to this function.For example, the
DrilldownMembermay take the symbolRECURSIVEas an argument. Most functions do not define any symbolic constants.- Specified by:
getReservedWordsin interfaceResolver- Returns:
- An array of the names of the symbolic constants
-
getSignatures
public String[] getSignatures()
-
getFunDef
public FunDef getFunDef()
Description copied from interface:ResolverReturns a representative example of the function which this Resolver can produce, for purposes of describing the function set. May return null if there is no representative function, or if the Resolver has a way to describe itself in more detail.
-
resolve
public FunDef resolve(Exp[] args, Validator validator, List<Resolver.Conversion> conversions)
Description copied from interface:ResolverGiven a particular set of arguments the function is applied to, returns the correct overloaded form of the function.The method adds an item to
conversionsevery time it performs an implicit type-conversion. If there are several candidate functions with the same signature, the validator will choose the one which used the fewest implicit conversions.- Specified by:
resolvein interfaceResolver- Parameters:
args- Expressions which this function call is applied to.validator- Validatorconversions- List of implicit conversions performed (out)- Returns:
- The function definition which matches these arguments, or null if no function definition that this resolver knows about matches.
-
requiresExpression
public boolean requiresExpression(int k)
Description copied from interface:ResolverReturns whether a particular argument must be a scalar expression. Returnsfalseif any of the variants of this resolver allows a set as itskth argument; true otherwise.- Specified by:
requiresExpressionin interfaceResolver
-
-