org.sqlproc.engine.impl
Class SqlMappingResult

java.lang.Object
  extended by org.sqlproc.engine.impl.SqlMappingResult

public class SqlMappingResult
extends Object

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, boolean[], Map).

Author:
Vladimir Hudec

Field Summary
(package private)  Map<String,SqlMappingIdentity> identities
          The collection of identities related to all output columns.
(package private)  List<Integer> identitiesIndexes
          The list of identities indexes in the list of output values.
(package private)  org.slf4j.Logger logger
          The internal slf4j logger.
(package private)  Integer mainIdentityIndex
          The main identity index in the list of output values.
private  Map<String,SqlMappingItem> mappings
          All sub-elements based on ANTLR grammar defined in SqlMapping.g or SqlStatement.g.
 
Constructor Summary
SqlMappingResult(SqlMappingRule mapping, Map<String,SqlMappingItem> outputMappings)
          Creates a new instance.
 
Method Summary
(package private)  void addMapping(SqlMappingItem item)
          Adds a new mapping rule item in the merging process.
(package private)  void calculateIdentities()
          Calculates all identities related information.
 Integer getMainIdentityIndex()
          Returns the main identity index in the list of output values.
private  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> instances, boolean[] changedIdentities, Map<String,Class<?>> moreResultClasses)
          Fills the instance of the result class with output values from the SQL query execution.
 void setQueryResultMapping(Class<?> resultClass, Map<String,Class<?>> moreResultClasses, SqlQuery query)
          Declares a scalar query results for all mapping rule items.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

final org.slf4j.Logger logger
The internal slf4j logger.


mappings

private Map<String,SqlMappingItem> 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> identities
The collection of identities related to all output columns.


identitiesIndexes

List<Integer> identitiesIndexes
The list of identities indexes in the list of output values.


mainIdentityIndex

Integer mainIdentityIndex
The main identity index in the list of output values. The main identity is related to the top level result class.

Constructor Detail

SqlMappingResult

SqlMappingResult(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:
mapping - mapping rule based on SqlMapping.g or the empty one
outputMappings - mapping rule items based on SqlStatement.g
Method Detail

getMainIdentityIndex

public Integer 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

addMapping

void addMapping(SqlMappingItem item)
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 SqlRuntimeException
Declares a scalar query results for all mapping rule items.

Parameters:
resultClass - the class used for the return values
moreResultClasses - more result classes used for the return values, like the collections classes or the collections items
query - 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> instances,
                               boolean[] changedIdentities,
                               Map<String,Class<?>> moreResultClasses)
                        throws SqlRuntimeException
Fills the instance of the result class with output values from the SQL query execution.

Parameters:
resultInstance - the instance of the result class
resultValues - the query execution output values
instances - the already allocated instances for the case of one-to-many or many-to-many repeated rows
changedIdentities - the indicators of changed identities for the case of one-to-many or many-to-many repeated rows
moreResultClasses - 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

private void merge(SqlMappingRule mapping,
                   Map<String,SqlMappingItem> outputMappings)
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 one
outputMappings - mapping rule items based on SqlStatement.g


Copyright © 2011. All Rights Reserved.