mondrian.olap.fun
Class MultiResolver

java.lang.Object
  extended by org.eigenbase.xom.XMLUtil
      extended by org.eigenbase.xom.XOMUtil
          extended by mondrian.olap.Util
              extended by mondrian.olap.fun.FunUtil
                  extended by mondrian.olap.fun.MultiResolver
All Implemented Interfaces:
Resolver
Direct Known Subclasses:
ParameterFunDef.ParameterResolver, ParameterFunDef.ParamRefResolver, ReflectiveMultiResolver

public abstract class MultiResolver
extends FunUtil
implements Resolver

A MultiResolver considers several overloadings of the same function. If one of these overloadings matches the actual arguments, it calls the factory method createFunDef(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.SetWrapper
 
Nested classes/interfaces inherited from class mondrian.olap.Util
Util.ErrorCellValue, Util.PropertyList
 
Field Summary
 
Fields inherited from class mondrian.olap.fun.FunUtil
BooleanNull, DoubleEmpty, DoubleNull, emptyStringArray, IntegerNull, NullMember
 
Fields inherited from class mondrian.olap.Util
EmptyValue, JdbcVersion, nl, nullValue, PreJdk15, Retrowoven
 
Constructor Summary
protected MultiResolver(String name, String signature, String description, String[] signatures)
          Creates a MultiResolver.
 
Method Summary
protected abstract  FunDef createFunDef(Exp[] args, FunDef dummyFunDef)
           
 String getDescription()
          Returns the description of the function or operator.
 FunDef getFunDef()
          Returns a representative example of the function which this Resolver can produce, for purposes of describing the function set.
 String getName()
          Returns the name of the function or operator.
 String[] getReservedWords()
          Returns an array of symbolic constants which can appear as arguments to this function.
 String getSignature()
          Returns a string describing the syntax of this function, for example
 String[] getSignatures()
           
 Syntax getSyntax()
          Returns the syntax with which the function or operator was invoked.
 boolean requiresExpression(int k)
          Returns whether a particular argument must be a scalar expression.
 FunDef resolve(Exp[] args, Validator validator, int[] conversionCount)
          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
addMembers, addMembers, addUnique, ancestor, appendTuple, avg, checkCompatible, checkFlag, checkIterListResultStyles, checkListResultStyles, compareHierarchically, compareSiblingMembers, compareValues, compareValues, compareValues, correlation, count, cousin, covariance, createDummyFunDef, decodeCategory, decodeParameterCategories, decodeReturnCategory, decodeSyntacticType, dimensionMembers, equalTuple, evaluateMembers, evaluateMembers, evaluateSet, evaluateSet, evaluateTuples, getLiteralArg, getLiteralArg, getNonEmptyLevelMembers, getNonEmptyMemberChildren, hierarchize, hierarchyMembers, isAncestorOf, isMemberType, levelMembers, makeNullMember, makeNullTuple, max, memberRange, min, newEvalException, newEvalException, percentile, periodsToDate, quartile, removeCalculatedMembers, resolveFunArgs, searchValuesDesc, sign, sortMembers, sortTuples, sortValuesDesc, stdev, sum, sumDouble, sumDouble, toPercent, tupleContainsNullMember, var
 
Methods inherited from class mondrian.olap.Util
addDatabaseTime, addLevelCalculatedMembers, areOccurencesEqual, assertPostcondition, assertPostcondition, assertPrecondition, assertPrecondition, assertTrue, assertTrue, badValue, camelToUpper, caseSensitiveCompareName, cast, cast, checkCJResultLimit, commaList, compareKey, compareName, convertStackToString, createExpr, createRandom, createSimpleValidator, createUdf, dbTimeMillis, deprecated, enumSetAllOf, enumSetNoneOf, enumSetOf, equal, equalName, equals, equals, getAnnotation, getErrorMessage, getErrorMessage, getFirstDescendantOnLevel, getMemberOrdinalInParent, hash, hash, hashArray, implode, isEmpty, isNull, isSorted, isValidProperty, lookup, lookup, lookup, lookup, lookupCompound, lookupCompound, lookupHierarchyLevel, lookupHierarchyRootMember, lookupHierarchyRootMember, lookupProperty, makeBigDecimalFromDouble, makeFqName, makeFqName, makeFqName, maskVersion, mdxEncodeString, needToImplement, newError, newError, newInternal, newInternal, nonDbTimeMillis, normalizeName, parseCommaList, parseConnectString, parseIdentifier, printMemory, printMemory, quoteForMdx, quoteMdxIdentifier, quoteMdxIdentifier, quoteMdxIdentifier, quoteMdxIdentifier, quotePattern, readFully, readURL, readURL, readURL, readURL, replace, replace, replaceProperties, singleQuoteString, singleQuoteString, toMap, toURL, unexpected, union, union, uniquify, unparse, unparse, wildcardToRegexp
 
Methods inherited from class org.eigenbase.xom.XOMUtil
addAll, addAll, addChild, addChild, addChildren, addElement, concatenate, createDefaultParser, discard, discard, discard, discard, discard, discard, discard, discard, discard, getFirstInstance, toList, toVector, wrapperToXml
 
Methods inherited from class org.eigenbase.xom.XMLUtil
getFirstTagName, printAtt, printAtt, printAtt, printAtt, printPCDATA, printPCDATA, printPCDATA, quoteAtt, quoteAtt, quoteAtt, quoteAtt, quotePCDATA, stringEncodeXML, stringHasXMLSpecials
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MultiResolver

protected MultiResolver(String name,
                        String signature,
                        String description,
                        String[] signatures)
Creates a MultiResolver.

Parameters:
name - Name of function or operator
signature - Signature of function or operator
description - Description of function or operator
signatures - 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 with property syntax (p) which returns a set (x) and takes a dimension (d) as its argument". See FunUtil.decodeSyntacticType(String), FunUtil.decodeReturnCategory(String), FunUtil.decodeParameterCategories(String).
Method Detail

getName

public String getName()
Description copied from interface: Resolver
Returns the name of the function or operator.

Specified by:
getName in interface Resolver

getDescription

public String getDescription()
Description copied from interface: Resolver
Returns the description of the function or operator.

Specified by:
getDescription in interface Resolver

getSignature

public String getSignature()
Description copied from interface: Resolver
Returns a string describing the syntax of this function, for example
StrToSet()

Specified by:
getSignature in interface Resolver

getSyntax

public Syntax getSyntax()
Description copied from interface: Resolver
Returns the syntax with which the function or operator was invoked.

Specified by:
getSyntax in interface Resolver

getReservedWords

public String[] getReservedWords()
Description copied from interface: Resolver
Returns an array of symbolic constants which can appear as arguments to this function.

For example, the DrilldownMember may take the symbol RECURSIVE as an argument. Most functions do not define any symbolic constants.

Specified by:
getReservedWords in interface Resolver
Returns:
An array of the names of the symbolic constants

getSignatures

public String[] getSignatures()

getFunDef

public FunDef getFunDef()
Description copied from interface: Resolver
Returns 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.

Specified by:
getFunDef in interface Resolver

resolve

public FunDef resolve(Exp[] args,
                      Validator validator,
                      int[] conversionCount)
Description copied from interface: Resolver
Given a particular set of arguments the function is applied to, returns the correct overloaded form of the function.

The method must increment conversionCount argument every 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:
resolve in interface Resolver
Parameters:
args - Expressions which this function call is applied to.
validator - Validator
conversionCount - This argument must be an int array with a single element; in effect, it is an in/out parameter. It The method increments the count every time it performs a conversion.
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: Resolver
Returns whether a particular argument must be a scalar expression. Returns false if any of the variants of this resolver allows a set as its kth argument; true otherwise.

Specified by:
requiresExpression in interface Resolver

createFunDef

protected abstract FunDef createFunDef(Exp[] args,
                                       FunDef dummyFunDef)

SourceForge.net_Logo