org.hibernate.dialect.function
Class AnsiTrimEmulationFunction

java.lang.Object
  extended by org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction
      extended by org.hibernate.dialect.function.AnsiTrimEmulationFunction
All Implemented Interfaces:
SQLFunction

public class AnsiTrimEmulationFunction
extends AbstractAnsiTrimEmulationFunction

A SQLFunction implementation that emulates the ANSI SQL trim function on dialects which do not support the full definition. However, this function definition does assume the availability of ltrim, rtrim, and replace functions which it uses in various combinations to emulate the desired ANSI trim() functionality.

Author:
Steve Ebersole

Field Summary
static String BOTH_SPACE_TRIM_FROM_TEMPLATE
           
static String BOTH_SPACE_TRIM_TEMPLATE
           
static String BOTH_TRIM_TEMPLATE
          A template for the series of calls required to trim non-space chars from both the beginning and the end of text.
static String LEADING_SPACE_TRIM_TEMPLATE
           
static String LEADING_TRIM_TEMPLATE
          A template for the series of calls required to trim non-space chars from the beginning of text.
static String LTRIM
           
static String REPLACE
           
static String RTRIM
           
static String SPACE_PLACEHOLDER
           
static String TRAILING_SPACE_TRIM_TEMPLATE
           
static String TRAILING_TRIM_TEMPLATE
          A template for the series of calls required to trim non-space chars from the end of text.
 
Constructor Summary
AnsiTrimEmulationFunction()
          Constructs a new AnsiTrimEmulationFunction using LTRIM, RTRIM, and REPLACE respectively.
AnsiTrimEmulationFunction(String ltrimFunctionName, String rtrimFunctionName, String replaceFunctionName)
          Constructs a trim() emulation function definition using the specified function calls.
 
Method Summary
protected  SQLFunction resolveBothSpaceTrimFromFunction()
          Resolve the function definition which should be used to trim both leading and trailing spaces.
protected  SQLFunction resolveBothSpaceTrimFunction()
          Resolve the function definition which should be used to trim both leading and trailing spaces.
protected  SQLFunction resolveBothTrimFunction()
          Resolve the function definition which should be used to trim the specified character from both the beginning (leading) and end (trailing) of the trim source.
protected  SQLFunction resolveLeadingSpaceTrimFunction()
          Resolve the function definition which should be used to trim leading spaces.
protected  SQLFunction resolveLeadingTrimFunction()
          Resolve the function definition which should be used to trim the specified character from the beginning (leading) of the trim source.
protected  SQLFunction resolveTrailingSpaceTrimFunction()
          Resolve the function definition which should be used to trim trailing spaces.
protected  SQLFunction resolveTrailingTrimFunction()
          Resolve the function definition which should be used to trim the specified character from the end (trailing) of the trim source.
 
Methods inherited from class org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction
getReturnType, hasArguments, hasParenthesesIfNoArguments, render
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LTRIM

public static final String LTRIM
See Also:
Constant Field Values

RTRIM

public static final String RTRIM
See Also:
Constant Field Values

REPLACE

public static final String REPLACE
See Also:
Constant Field Values

SPACE_PLACEHOLDER

public static final String SPACE_PLACEHOLDER
See Also:
Constant Field Values

LEADING_SPACE_TRIM_TEMPLATE

public static final String LEADING_SPACE_TRIM_TEMPLATE
See Also:
Constant Field Values

TRAILING_SPACE_TRIM_TEMPLATE

public static final String TRAILING_SPACE_TRIM_TEMPLATE
See Also:
Constant Field Values

BOTH_SPACE_TRIM_TEMPLATE

public static final String BOTH_SPACE_TRIM_TEMPLATE
See Also:
Constant Field Values

BOTH_SPACE_TRIM_FROM_TEMPLATE

public static final String BOTH_SPACE_TRIM_FROM_TEMPLATE
See Also:
Constant Field Values

LEADING_TRIM_TEMPLATE

public static final String LEADING_TRIM_TEMPLATE
A template for the series of calls required to trim non-space chars from the beginning of text.

NOTE : essentially we:

  • replace all space chars with the text '${space}$'
  • replace all the actual replacement chars with space chars
  • perform left-trimming (that removes any of the space chars we just added which occur at the beginning of the text)
  • replace all space chars with the replacement char
  • replace all the '${space}$' text with space chars
  • See Also:
    Constant Field Values

    TRAILING_TRIM_TEMPLATE

    public static final String TRAILING_TRIM_TEMPLATE
    A template for the series of calls required to trim non-space chars from the end of text.

    NOTE: essentially the same series of calls as outlined in LEADING_TRIM_TEMPLATE except that here, instead of left-trimming the added spaces, we right-trim them to remove them from the end of the text.

    See Also:
    Constant Field Values

    BOTH_TRIM_TEMPLATE

    public static final String BOTH_TRIM_TEMPLATE
    A template for the series of calls required to trim non-space chars from both the beginning and the end of text.

    NOTE: again, we have a series of calls that is essentially the same as outlined in LEADING_TRIM_TEMPLATE except that here we perform both left (leading) and right (trailing) trimming.

    See Also:
    Constant Field Values
    Constructor Detail

    AnsiTrimEmulationFunction

    public AnsiTrimEmulationFunction()
    Constructs a new AnsiTrimEmulationFunction using LTRIM, RTRIM, and REPLACE respectively.

    See Also:
    AnsiTrimEmulationFunction(String,String,String)

    AnsiTrimEmulationFunction

    public AnsiTrimEmulationFunction(String ltrimFunctionName,
                                     String rtrimFunctionName,
                                     String replaceFunctionName)
    Constructs a trim() emulation function definition using the specified function calls.

    Parameters:
    ltrimFunctionName - The left trim function to use.
    rtrimFunctionName - The right trim function to use.
    replaceFunctionName - The replace function to use.
    Method Detail

    resolveBothSpaceTrimFunction

    protected SQLFunction resolveBothSpaceTrimFunction()
    Resolve the function definition which should be used to trim both leading and trailing spaces.

    In this form, the imput arguments is missing the FROM keyword.

    Specified by:
    resolveBothSpaceTrimFunction in class AbstractAnsiTrimEmulationFunction
    Returns:
    The sql function

    resolveBothSpaceTrimFromFunction

    protected SQLFunction resolveBothSpaceTrimFromFunction()
    Resolve the function definition which should be used to trim both leading and trailing spaces.

    The same as {#link resolveBothSpaceTrimFunction} except that here theFROM is included and will need to be accounted for during SQLFunction.render(java.util.List, org.hibernate.engine.SessionFactoryImplementor) processing.

    Specified by:
    resolveBothSpaceTrimFromFunction in class AbstractAnsiTrimEmulationFunction
    Returns:
    The sql function

    resolveLeadingSpaceTrimFunction

    protected SQLFunction resolveLeadingSpaceTrimFunction()
    Resolve the function definition which should be used to trim leading spaces.

    Specified by:
    resolveLeadingSpaceTrimFunction in class AbstractAnsiTrimEmulationFunction
    Returns:
    The sql function

    resolveTrailingSpaceTrimFunction

    protected SQLFunction resolveTrailingSpaceTrimFunction()
    Resolve the function definition which should be used to trim trailing spaces.

    Specified by:
    resolveTrailingSpaceTrimFunction in class AbstractAnsiTrimEmulationFunction
    Returns:
    The sql function

    resolveBothTrimFunction

    protected SQLFunction resolveBothTrimFunction()
    Resolve the function definition which should be used to trim the specified character from both the beginning (leading) and end (trailing) of the trim source.

    Specified by:
    resolveBothTrimFunction in class AbstractAnsiTrimEmulationFunction
    Returns:
    The sql function

    resolveLeadingTrimFunction

    protected SQLFunction resolveLeadingTrimFunction()
    Resolve the function definition which should be used to trim the specified character from the beginning (leading) of the trim source.

    Specified by:
    resolveLeadingTrimFunction in class AbstractAnsiTrimEmulationFunction
    Returns:
    The sql function

    resolveTrailingTrimFunction

    protected SQLFunction resolveTrailingTrimFunction()
    Resolve the function definition which should be used to trim the specified character from the end (trailing) of the trim source.

    Specified by:
    resolveTrailingTrimFunction in class AbstractAnsiTrimEmulationFunction
    Returns:
    The sql function


    Copyright © 2001-2010 Red Hat, Inc. All Rights Reserved.