Package org.sqlproc.engine.impl
Class SqlMappingResult
java.lang.Object
org.sqlproc.engine.impl.SqlMappingResult
Holds the results of an explicit and an implicit mapping rules merging.
In the case of explicit mapping rule the grammar itself is defined in SqlMapping.g. In the case of implicit mapping
rule the grammar itself is defined in SqlStatement.g. The internal mapping rule is a dynamic one, and it's finalized
in the process of the final ANSI SQL query generation.
For the purpose of correct left join handling, the identities are identified. They are used to prevent the repeated
rows in the output result set. This is used for the associations (one-to-one, one-to-many and many-to-many).
The main runtime contracts are
setQueryResultMapping(Class, Map, SqlQuery)
and
setQueryResultData(Object, Object[], Map, Map)
.- Author:
- Vladimir Hudec
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate SqlProcessContext
The crate for all input parameters and the context of processing.(package private) Map
<String, SqlMappingIdentity> The collection of identities related to all output columns.The list of identities indexes in the list of output values.(package private) final org.slf4j.Logger
The internal slf4j logger.(package private) Integer
The main identity index in the list of output values.private Map
<String, SqlMappingItem> All sub-elements based on ANTLR grammar defined in SqlMapping.g or SqlStatement.g. -
Constructor Summary
ConstructorsConstructorDescriptionSqlMappingResult
(SqlProcessContext ctx, SqlMappingRule mapping, Map<String, SqlMappingItem> outputMappings) Creates a new instance. -
Method Summary
Modifier and TypeMethodDescription(package private) void
addMapping
(SqlMappingItem item) Adds a new mapping rule item in the merging process.(package private) void
Calculates all identities related information.getFunctionResultData
(Map<String, Object> result) Devoted to function output value conversion.Return the list of identities indexes in the list of output valuesgetIds()
Construct the empty structure used for the instances of all already used identities together with the related result instances based on identities indices.Returns the main identity index in the list of output values.Returns the public runtime contextprivate void
merge
(SqlMappingRule mapping, Map<String, SqlMappingItem> outputMappings) Merge mapping rule for one META SQL query based on SqlMapping.g and SqlStatement.g.void
setQueryResultData
(Object resultInstance, Object[] resultValues, Map<String, Object> ids, Map<String, Class<?>> moreResultClasses) Fills the instance of the result class with output values from the SQL query execution.void
Declares a scalar query results for all mapping rule items.
-
Field Details
-
logger
final org.slf4j.Logger loggerThe internal slf4j logger. -
ctx
The crate for all input parameters and the context of processing. -
mappings
All sub-elements based on ANTLR grammar defined in SqlMapping.g or SqlStatement.g. Every sub-element is one Mapping item. -
identities
Map<String,SqlMappingIdentity> identitiesThe collection of identities related to all output columns. -
identitiesIndexes
The list of identities indexes in the list of output values. -
mainIdentityIndex
Integer mainIdentityIndexThe main identity index in the list of output values. The main identity is related to the top level result class.
-
-
Constructor Details
-
SqlMappingResult
SqlMappingResult(SqlProcessContext ctx, SqlMappingRule mapping, Map<String, SqlMappingItem> outputMappings) Creates a new instance. This instances is based on the merging of an explicit and an implicit mapping rules.- Parameters:
ctx
- the crate for all input parameters and the context of processingmapping
- mapping rule based on SqlMapping.g or the empty oneoutputMappings
- mapping rule items based on SqlStatement.g
-
-
Method Details
-
getMainIdentityIndex
Returns the main identity index in the list of output values. The main identity is related to the top level result class.- Returns:
- the main identity index in the list of output values
-
getIdentitiesIndexes
Return the list of identities indexes in the list of output values- Returns:
- the list of identities indexes in the list of output values
-
getRuntimeContext
Returns the public runtime context- Returns:
- the public runtime context
-
addMapping
Adds a new mapping rule item in the merging process.- Parameters:
item
- a new mapping rule item
-
calculateIdentities
void calculateIdentities()Calculates all identities related information. They are used to prevent the repeated rows in the output result set. This is used for the associations (one-to-one, one-to-many and many-to-many). -
setQueryResultMapping
public void setQueryResultMapping(Class<?> resultClass, Map<String, Class<?>> moreResultClasses, SqlQuery query) throws SqlRuntimeExceptionDeclares a scalar query results for all mapping rule items.- Parameters:
resultClass
- the class used for the return valuesmoreResultClasses
- more result classes used for the return values, like the collections classes or the collections itemsquery
- the SQL Engine query, an adapter or proxy to the internal JDBC or ORM staff- Throws:
SqlRuntimeException
- in the case of any problem with output values preparation
-
setQueryResultData
public void setQueryResultData(Object resultInstance, Object[] resultValues, Map<String, Object> ids, Map<String, throws SqlRuntimeExceptionClass<?>> moreResultClasses) Fills the instance of the result class with output values from the SQL query execution.- Parameters:
resultInstance
- the instance of the result classresultValues
- the query execution output valuesids
- the instances of all already used identities together with the related result instances based on identities indicesmoreResultClasses
- more result classes used for the return values, like the collections classes or the collections items- Throws:
SqlRuntimeException
- in the case of any problem with output values handling
-
merge
Merge mapping rule for one META SQL query based on SqlMapping.g and SqlStatement.g. The external mapping rule has the higher priority. The internal mapping rule holds the list of real output values.- Parameters:
mapping
- mapping rule based on SqlMapping.g or the empty oneoutputMappings
- mapping rule items based on SqlStatement.g
-
getIds
Construct the empty structure used for the instances of all already used identities together with the related result instances based on identities indices.- Returns:
- the empty structure used for the instances of all already used identities together with the related result instances based on identities indices
-
getFunctionResultData
Devoted to function output value conversion.- Parameters:
result
- the JDBC output value- Returns:
- the output value after possible conversion
-