org.teiid.translator.jdbc
Class LocateFunctionModifier

java.lang.Object
  extended by org.teiid.translator.jdbc.FunctionModifier
      extended by org.teiid.translator.jdbc.AliasModifier
          extended by org.teiid.translator.jdbc.LocateFunctionModifier
Direct Known Subclasses:
LocateFunctionModifier

public class LocateFunctionModifier
extends AliasModifier

A modifier class that can be used to translate the scalar function locate(search_string, source_string) and locate(search_string, source_string, start_index) to a function or expression that can be used at the data source.

If the default implementation is used, a function name of LOCATE will be used for the function name.

If the default implementation is used, the expression will not be modified if:

  • locate(search_string, source_string) is used
  • locate(search_string, source_string, start_index) is used and start_index is a literal integer greater then 0
  • the default function parameter order is used or unspecified
  • If the default implementation is used, the expression will be modified if:

  • locate(search_string, source_string, start_index) is used and start_index is a literal integer less then 1
  • locate(search_string, source_string, start_index) is used and start_index is not a literal integer
  • the function parameter order is something other than the default
  • If the default implementation is used and the expression is modified, it is modified to ensure that any literal integer value less than 1 is made equal to 1 and any non literal value is wrapped by a searched case expression to ensure that a value of less then 1 will be equal to 1 and the parameter order matches that of what the data source expects.

    For example:

  • locate('a', 'abcdef') --> LOCATE('a', 'abcdef')
  • locate('a', 'abcdef', 2) --> LOCATE('a', 'abcdef', 2)
  • locate('a', 'abcdef', 0) --> LOCATE('a', 'abcdef', 1)
  • locate('a', 'abcdef', intCol) --> LOCATE('a', 'abcdef', CASE WHEN intCol < 1 THEN 1 ELSE intCol END)
  • Since:
    6.2

    Field Summary
    static java.lang.String LOCATE
               
     
    Fields inherited from class org.teiid.translator.jdbc.AliasModifier
    alias
     
    Fields inherited from class org.teiid.translator.jdbc.FunctionModifier
    BIGDECIMAL, BIGINTEGER, BLOB, BOOLEAN, BYTE, CHAR, CLOB, DATE, DOUBLE, FLOAT, INTEGER, LONG, OBJECT, SHORT, STRING, TIME, TIMESTAMP, XML
     
    Constructor Summary
    LocateFunctionModifier(LanguageFactory langFactory)
              Translates the scalar function LOCATE() to a source specific scalar function or expression.
    LocateFunctionModifier(LanguageFactory langFactory, java.lang.String functionName, boolean sourceStringFirst)
              Translates the scalar function LOCATE() to a source specific scalar function or expression.
     
    Method Summary
    protected  LanguageFactory getLanguageFactory()
              Get the instance of LanguageFactory set during construction.
     void modify(Function function)
              Returns a version of function suitable for executing at the data source.
     
    Methods inherited from class org.teiid.translator.jdbc.AliasModifier
    translate
     
    Methods inherited from class org.teiid.translator.jdbc.FunctionModifier
    getCode
     
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
     

    Field Detail

    LOCATE

    public static java.lang.String LOCATE
    Constructor Detail

    LocateFunctionModifier

    public LocateFunctionModifier(LanguageFactory langFactory)
    Translates the scalar function LOCATE() to a source specific scalar function or expression.

    Parameters:
    langFactory - the language factory associated with translation

    LocateFunctionModifier

    public LocateFunctionModifier(LanguageFactory langFactory,
                                  java.lang.String functionName,
                                  boolean sourceStringFirst)
    Translates the scalar function LOCATE() to a source specific scalar function or expression.

    Parameters:
    langFactory - the language factory associated with translation
    functionName - the function name or alias to be used instead of LOCATE
    sourceStringFirst -
    Method Detail

    modify

    public void modify(Function function)
    Returns a version of function suitable for executing at the data source.

    For example:

    Overrides:
    modify in class AliasModifier
    Parameters:
    function - the LOCATE function that may need to be modified

    getLanguageFactory

    protected LanguageFactory getLanguageFactory()
    Get the instance of LanguageFactory set during construction.

    Returns:
    the ILanguageFactory instance


    Copyright © 2011. All Rights Reserved.