|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.teiid.translator.jdbc.FunctionModifier
org.teiid.translator.jdbc.AliasModifier
org.teiid.translator.jdbc.LocateFunctionModifier
public class LocateFunctionModifier
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 usedlocate(search_string, source_string, start_index)
is used
and start_index
is a literal integer greater then 0If 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 1locate(search_string, source_string, start_index)
is used
and start_index
is not a literal integerIf 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)
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 |
---|
public static java.lang.String LOCATE
Constructor Detail |
---|
public LocateFunctionModifier(LanguageFactory langFactory)
langFactory
- the language factory associated with translationpublic LocateFunctionModifier(LanguageFactory langFactory, java.lang.String functionName, boolean sourceStringFirst)
langFactory
- the language factory associated with translationfunctionName
- the function name or alias to be used instead of LOCATEsourceStringFirst
- Method Detail |
---|
public void modify(Function function)
function
suitable for executing at the
data source.
For example:
locate('a', 'abcdefg') ---> LOCATE('a', 'abcdefg')
locate('a', 'abcdefg', 1) ---> LOCATE('a', 'abcdefg', 1)
locate('a', 'abcdefg', 1) ---> INSTR('abcdefg', 'a', 1)
locate('a', 'abcdefg', -5) ---> INSTR('abcdefg', 'a', 1)
locate('a', 'abcdefg', 1) ---> FINDSTR('a', 'abcdefg', 1)
locate('a', 'abcdefg', myCol) ---> LOCATE('a', 'abcdefg', CASE WHEN myCol < 1 THEN 1 ELSE myCol END)
modify
in class AliasModifier
function
- the LOCATE function that may need to be modifiedprotected LanguageFactory getLanguageFactory()
LanguageFactory
set during construction.
ILanguageFactory
instance
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |