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
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
  • Constructor Details

    • 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 Details

    • 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, List<Resolver.Conversion> conversions)
      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 adds an item to conversions 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
      conversions - 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: 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)