Package org.sqlproc.engine.impl
Class SqlInputValue
- java.lang.Object
-
- org.sqlproc.engine.impl.SqlInputValue
-
class SqlInputValue extends Object
The entity for a dynamic input value.- Author:
- Vladimir Hudec
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classSqlInputValue.CodeEnumeration for no/upper/lower case conversion.(package private) static classSqlInputValue.ModeEnumeration for IN/OUT/INOUT mode of callable statement parameter.(package private) static classSqlInputValue.TypeEnumeration for the type of input value.
-
Field Summary
Fields Modifier and Type Field Description private SqlInputValue.CodecaseConversionWhich conversion should be done on inputValue.private SqlProcessContextctxthe crate for all input parameters and the context of processing.private StringdbIdentityNameA database identity column nameprivate StringfullInputNameA input attribute full name.private ObjectidentityA calculated identity.private StringidentitySelectAn SQL select for an identity column.private SqlInputValue.ModeinOutModeWhich mode of callable statement parameter it is.private StringinputNameA input attribute name.private ObjectinputValueA dynamic input value.(package private) Class<?>[]inputValueTypesThe input value Java types (including parameterized types).private BooleaninSetOrInsertThe indicator the input value is bounded to the SET or VALUES fragment of META SQLprivate StringlikeCharA wildcard character for the SQL commandLIKE.(package private) org.slf4j.LoggerloggerThe internal slf4j logger.private intminLikeLengthThe minimum length of inputValue to enable likeChar special treatment.private ObjectoutValueA dynamic input value can be also an output value.private ObjectparentInputValueA parent of a dynamic input value.private booleanpartialLikea wildcard character is going to be only a postfixprivate Map<String,String>replaceCharsA map of characters to be replaced in input value;private StringsequenceA database sequence for an identity column.private SqlTypetypeThe input value META type.private SqlInputValue.TypevalueTypeThe type of the input value, please seeSqlInputValue.Type.
-
Constructor Summary
Constructors Constructor Description SqlInputValue(SqlProcessContext ctx, String name, SqlInputValue sqlInputValue, Object dynamicInputValues)Creates a new instance of this entity.SqlInputValue(SqlProcessContext ctx, SqlInputValue.Type valueType, Object inputValue, Object parentInputValue, String sequenceOrIdentitySelect, SqlType type, String dbIdentityName, Class<?>... inputValueTypes)Creates a new instance of this entity.SqlInputValue(SqlProcessContext ctx, SqlInputValue.Type valueType, Object inputValue, Object parentInputValue, SqlInputValue.Code caseConversion, SqlInputValue.Mode inOutMode, SqlType type, String inputName, String fullInputName, Boolean inSetOrInsert, Class<?>... inputValueTypes)Creates a new instance of this entity.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description StringgetDbIdentityName()Returns a database identity column name.(package private) StringgetInputName()Returns a input attribute name.(package private) ObjectgetInputValue()Returns a dynamic input value.BooleangetInSetOrInsert()Returns the indicator the input value is bounded to the SET or VALUES fragment of META SQL(package private) ObjectgetParentInputValue()Returns a parent of a dynamic input value.SqlInputValue.TypegetValueType()Returns the type of the input value, please seeSqlInputValue.Type.private StringprocessLike(Object val)A special treatment of dynamic input value for SQL commandLIKE.private StringprocessReplaceChars(Object val)A special treatment of dynamic input value for SQL commandLIKE.(package private) voidsetIdentityResult(String paramName)Sets the generated identity value to an input value attribute.(package private) voidsetLike(String likeChar, Integer minLikeLength, boolean partialLike)Sets a special treatment of a dynamic input value.(package private) voidsetOutValueResult(String paramName)Sets the OUT/INOUT value to an input value attribute.(package private) voidsetQueryParam(SqlTypeFactory typeFactory, SqlSession session, SqlQuery query, String paramName)Bind a dynamic input value to a named query parameter.(package private) voidsetReplaceChars(Map<String,String> replaceChars)Sets a special treatment of a dynamic input value.StringtoString()For debug purposes.
-
-
-
Field Detail
-
logger
final org.slf4j.Logger logger
The internal slf4j logger.
-
ctx
private SqlProcessContext ctx
the crate for all input parameters and the context of processing.
-
valueType
private SqlInputValue.Type valueType
The type of the input value, please seeSqlInputValue.Type.
-
caseConversion
private SqlInputValue.Code caseConversion
Which conversion should be done on inputValue.
-
inOutMode
private SqlInputValue.Mode inOutMode
Which mode of callable statement parameter it is.
-
inputValue
private Object inputValue
A dynamic input value.
-
inputName
private String inputName
A input attribute name.
-
fullInputName
private String fullInputName
A input attribute full name.
-
parentInputValue
private Object parentInputValue
A parent of a dynamic input value.
-
inputValueTypes
Class<?>[] inputValueTypes
The input value Java types (including parameterized types).
-
likeChar
private String likeChar
A wildcard character for the SQL commandLIKE. It can be added to inputValue as a prefix and/or as a suffix.
-
minLikeLength
private int minLikeLength
The minimum length of inputValue to enable likeChar special treatment.
-
partialLike
private boolean partialLike
a wildcard character is going to be only a postfix
-
type
private SqlType type
The input value META type.
-
sequence
private String sequence
A database sequence for an identity column.
-
identitySelect
private String identitySelect
An SQL select for an identity column.
-
identity
private Object identity
A calculated identity.
-
outValue
private Object outValue
A dynamic input value can be also an output value.
-
replaceChars
private Map<String,String> replaceChars
A map of characters to be replaced in input value;
-
dbIdentityName
private String dbIdentityName
A database identity column name
-
inSetOrInsert
private Boolean inSetOrInsert
The indicator the input value is bounded to the SET or VALUES fragment of META SQL
-
-
Constructor Detail
-
SqlInputValue
SqlInputValue(SqlProcessContext ctx, SqlInputValue.Type valueType, Object inputValue, Object parentInputValue, SqlInputValue.Code caseConversion, SqlInputValue.Mode inOutMode, SqlType type, String inputName, String fullInputName, Boolean inSetOrInsert, Class<?>... inputValueTypes)
Creates a new instance of this entity. Used from inside ANTLR parser.- Parameters:
ctx- the crate for all input parameters and the context of processingvalueType- a value typeinputValue- a dynamic input valuecaseConversion- which conversion should be done on inputValueinOutMode- Which mode of callable statement parameter it istype- a dynamic input value META typeinSetOrInsert- an indicator the input value is bounded to the SET or VALUES fragment of META SQLinputValueTypes- a dynamic input value Java types (including parameterized types)
-
SqlInputValue
SqlInputValue(SqlProcessContext ctx, SqlInputValue.Type valueType, Object inputValue, Object parentInputValue, String sequenceOrIdentitySelect, SqlType type, String dbIdentityName, Class<?>... inputValueTypes)
Creates a new instance of this entity. Used from inside ANTLR parser.- Parameters:
ctx- the crate for all input parameters and the context of processingvalueType- a value typeinputValue- a dynamic input valuesequenceOrIdentitySelect- a sequence or select command used to generate an identity valuetype- a dynamic input value META typeinputValueTypes- a dynamic input value Java types (including parameterized types)
-
SqlInputValue
SqlInputValue(SqlProcessContext ctx, String name, SqlInputValue sqlInputValue, Object dynamicInputValues)
Creates a new instance of this entity.- Parameters:
ctx- the crate for all input parameters and the context of processingname- the name og the attributesqlInputValue- SqlInputValue instance to clonedynamicInputValues- the SQL statement dynamic parameters (input values)
-
-
Method Detail
-
setQueryParam
void setQueryParam(SqlTypeFactory typeFactory, SqlSession session, SqlQuery query, String paramName) throws SqlRuntimeException
Bind a dynamic input value to a named query parameter.- Parameters:
typeFactory- the SQL Type factorysession- the SQL Engine session, an adapter or proxy to the internal JDBC or ORM staffquery- the SQL Engine query, an adapter or proxy to the internal JDBC or ORM staffparamName- the name of the parameter (= the attribute name)- Throws:
SqlRuntimeException- in the case of any problem with input values handling
-
setIdentityResult
void setIdentityResult(String paramName) throws SqlRuntimeException
Sets the generated identity value to an input value attribute.- Parameters:
paramName- the name of the parameter (= the attribute name)- Throws:
SqlRuntimeException- in the case of any problem with output values handling
-
setOutValueResult
void setOutValueResult(String paramName) throws SqlRuntimeException
Sets the OUT/INOUT value to an input value attribute.- Parameters:
paramName- the name of the parameter (= the attribute name)- Throws:
SqlRuntimeException- in the case of any problem with output values handling
-
setLike
void setLike(String likeChar, Integer minLikeLength, boolean partialLike)
Sets a special treatment of a dynamic input value.- Parameters:
likeChar- a wildcard characterminLikeLength- the minimum length of inputValue to enable likeChar special treatmentpartialLike- a wildcard character is going to be only a postfix
-
setReplaceChars
void setReplaceChars(Map<String,String> replaceChars)
Sets a special treatment of a dynamic input value.- Parameters:
replaceChars- a map of characters to be replaced in input value
-
processLike
private String processLike(Object val)
A special treatment of dynamic input value for SQL commandLIKE.- Parameters:
val- a dynamic input value- Returns:
- a dynamic input value with a likeChar as a prefix and/or suffix
-
processReplaceChars
private String processReplaceChars(Object val)
A special treatment of dynamic input value for SQL commandLIKE.- Parameters:
val- a dynamic input value- Returns:
- a dynamic input value with replaced characters
-
getInputValue
Object getInputValue()
Returns a dynamic input value.- Returns:
- a dynamic input value
-
getInputName
String getInputName()
Returns a input attribute name.- Returns:
- a input attribute name
-
getParentInputValue
Object getParentInputValue()
Returns a parent of a dynamic input value.- Returns:
- a parent of a dynamic input value
-
getValueType
public SqlInputValue.Type getValueType()
Returns the type of the input value, please seeSqlInputValue.Type.- Returns:
- the type of the input value, please see
SqlInputValue.Type
-
getDbIdentityName
public String getDbIdentityName()
Returns a database identity column name.- Returns:
- a database identity column name
-
getInSetOrInsert
public Boolean getInSetOrInsert()
Returns the indicator the input value is bounded to the SET or VALUES fragment of META SQL- Returns:
- the indicator the input value is bounded to the SET or VALUES fragment of META SQL
-
-