org.qi4j.index.sql.support.skeletons
Class AbstractSQLQuerying

java.lang.Object
  extended by org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying
All Implemented Interfaces:
SQLQuerying
Direct Known Subclasses:
PostgreSQLQuerying

public abstract class AbstractSQLQuerying
extends java.lang.Object
implements SQLQuerying


Nested Class Summary
static interface AbstractSQLQuerying.SQLBooleanCreator
           
 
Constructor Summary
AbstractSQLQuerying()
           
 
Method Summary
protected  void addTypeJoin(org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.builders.query.TableReferenceBuilder from, int startingIndex)
           
 java.lang.String constructQuery(java.lang.Class<?> resultType, Specification<Composite> whereClause, OrderBy[] orderBySegments, java.lang.Integer firstResult, java.lang.Integer maxResults, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> valueSQLTypes, java.lang.Boolean countOnly)
          This method will be called when parsing needs to be done from Qi4j query to SQL query.
protected  org.sql.generation.api.grammar.query.QuerySpecification constructQueryForPredicate(Specification<Composite> predicate, PropertyFunction<?> propRef, org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.TraversedAssoOrManyAssoRef assoRef, java.lang.Boolean includeLastAssoPathTable, java.lang.Boolean negationActive, org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition, org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.WhereClauseProcessor whereClauseGenerator)
           
protected  org.sql.generation.api.grammar.booleans.BooleanExpression createTypeCondition(java.lang.Class<?> resultType, org.sql.generation.api.vendor.SQLVendor vendor)
           
protected  org.sql.generation.api.grammar.builders.query.QueryBuilder finalizeContainsQuery(org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.query.QuerySpecification contains, org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition, java.lang.Boolean negationActive)
           
protected abstract  org.sql.generation.api.grammar.query.QueryExpression finalizeQuery(org.sql.generation.api.vendor.SQLVendor sqlVendor, org.sql.generation.api.grammar.builders.query.QuerySpecificationBuilder specBuilder, java.lang.Class<?> resultType, Specification<Composite> whereClause, OrderBy[] orderBySegments, java.lang.Integer firstResult, java.lang.Integer maxResults, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> valueSQLTypes, java.lang.Boolean countOnly)
           
protected
<ReturnType>
ReturnType
findFromLookupTables(java.util.Map<java.lang.Class<? extends Specification>,ReturnType> normal, java.util.Map<java.lang.Class<? extends Specification>,ReturnType> negated, Specification<Composite> predicate, java.lang.Boolean negationActive)
           
protected  org.sql.generation.api.grammar.builders.query.QuerySpecificationBuilder getBuilderForPredicate(org.sql.generation.api.vendor.SQLVendor vendor, java.lang.String tableAlias)
           
protected  java.util.List<java.lang.Integer> getEntityTypeIDs(java.lang.Class<?> entityType)
           
protected  AbstractSQLQuerying.SQLBooleanCreator getOperator(Specification<Composite> predicate)
           
 java.lang.Integer getResultSetType(java.lang.Integer firstResult, java.lang.Integer maxResults)
           
protected  org.sql.generation.api.grammar.query.joins.JoinType getTableJoinStyle(Specification<Composite> predicate, java.lang.Boolean negationActive)
           
 java.lang.Boolean isFirstResultSettingSupported()
           
protected  java.lang.Integer modifyFromClauseAndWhereClauseToGetValue(QualifiedName qName, java.lang.Object value, Specification<Composite> predicate, java.lang.Boolean negationActive, java.lang.Integer currentTableIndex, org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.ModifiableInt maxTableIndex, java.lang.String columnName, java.lang.String collectionPath, org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.builders.booleans.BooleanBuilder whereClause, org.sql.generation.api.grammar.builders.booleans.BooleanBuilder afterWhere, org.sql.generation.api.grammar.builders.query.TableReferenceBuilder fromClause, org.sql.generation.api.grammar.builders.query.GroupByBuilder groupBy, org.sql.generation.api.grammar.builders.booleans.BooleanBuilder having, java.util.List<org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.QNameJoin> qNameJoins, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> valueSQLTypes)
           
protected  org.sql.generation.api.grammar.builders.query.QueryBuilder processAssociationNotNullPredicate(AssociationNotNullSpecification<?> predicate, java.lang.Boolean negationActive, org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition)
           
protected  org.sql.generation.api.grammar.builders.query.QueryBuilder processAssociationNullPredicate(AssociationNullSpecification<?> predicate, java.lang.Boolean negationActive, org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition)
           
protected  org.sql.generation.api.grammar.builders.query.QueryBuilder processBooleanExpression(Specification<Composite> expression, java.lang.Boolean negationActive, org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> valueSQLTypes)
           
protected  org.sql.generation.api.grammar.builders.query.QueryBuilder processComparisonPredicate(ComparisonSpecification<?> predicate, java.lang.Boolean negationActive, org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> valueSQLTypes)
           
protected  org.sql.generation.api.grammar.builders.query.QueryBuilder processContainsAllPredicate(ContainsAllSpecification<?> predicate, java.lang.Boolean negationActive, org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> valueSQLTypes)
           
protected  org.sql.generation.api.grammar.builders.query.QueryBuilder processContainsPredicate(ContainsSpecification<?> predicate, java.lang.Boolean negationActive, org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> valueSQLTypes)
           
protected  org.sql.generation.api.grammar.builders.query.QueryBuilder processManyAssociationContainsPredicate(ManyAssociationContainsSpecification<?> predicate, java.lang.Boolean negationActive, org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> valueSQLTypes)
           
protected  org.sql.generation.api.grammar.builders.query.QueryBuilder processMatchesPredicate(MatchesSpecification predicate, java.lang.Boolean negationActive, org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.List<java.lang.Object> values, java.util.List<java.lang.Integer> valueSQLTypes)
           
protected  void processOrderBySegments(OrderBy[] orderBy, org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.builders.query.QuerySpecificationBuilder builder)
           
protected  org.sql.generation.api.grammar.builders.query.QueryBuilder processPropertyNotNullPredicate(PropertyNotNullSpecification<?> predicate, boolean negationActive, org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition)
           
protected  org.sql.generation.api.grammar.builders.query.QueryBuilder processPropertyNullPredicate(PropertyNullSpecification<?> predicate, java.lang.Boolean negationActive, org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition)
           
protected  org.sql.generation.api.grammar.builders.query.QuerySpecificationBuilder selectAllEntitiesOfCorrectType(org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition)
           
protected  org.sql.generation.api.grammar.builders.query.QueryBuilder singleQuery(Specification<Composite> predicate, PropertyFunction<?> propRef, org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.TraversedAssoOrManyAssoRef assoRef, java.lang.Boolean includeLastAssoPathTable, java.lang.Boolean negationActive, org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition, org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.WhereClauseProcessor whereClauseGenerator)
           
protected  java.lang.String translateJavaRegexpToPGSQLRegexp(java.lang.String javaRegexp)
           
protected  java.lang.Integer traverseAssociationPath(org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.TraversedAssoOrManyAssoRef reference, java.lang.Integer lastTableIndex, java.lang.Integer nextAvailableIndex, org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.builders.query.TableReferenceBuilder builder, org.sql.generation.api.grammar.query.joins.JoinType joinStyle, java.lang.Boolean includeLastTable)
           
protected  java.lang.Integer traversePropertyPath(PropertyFunction<?> reference, java.lang.Integer lastTableIndex, java.lang.Integer nextAvailableIndex, org.sql.generation.api.vendor.SQLVendor vendor, org.sql.generation.api.grammar.builders.query.TableReferenceBuilder builder, org.sql.generation.api.grammar.query.joins.JoinType joinStyle)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractSQLQuerying

public AbstractSQLQuerying()
Method Detail

getResultSetType

public java.lang.Integer getResultSetType(java.lang.Integer firstResult,
                                          java.lang.Integer maxResults)
Specified by:
getResultSetType in interface SQLQuerying

isFirstResultSettingSupported

public java.lang.Boolean isFirstResultSettingSupported()
Specified by:
isFirstResultSettingSupported in interface SQLQuerying

constructQuery

public java.lang.String constructQuery(java.lang.Class<?> resultType,
                                       Specification<Composite> whereClause,
                                       OrderBy[] orderBySegments,
                                       java.lang.Integer firstResult,
                                       java.lang.Integer maxResults,
                                       java.util.Map<java.lang.String,java.lang.Object> variables,
                                       java.util.List<java.lang.Object> values,
                                       java.util.List<java.lang.Integer> valueSQLTypes,
                                       java.lang.Boolean countOnly)
                                throws EntityFinderException
Description copied from interface: SQLQuerying
This method will be called when parsing needs to be done from Qi4j query to SQL query. This method is supposed to return one single SQL query, which can be used with PreparedStatement.

Specified by:
constructQuery in interface SQLQuerying
Parameters:
resultType - The result type of Qi4j query.
whereClause - The where clause of Qi4j query.
orderBySegments - The order by segments of Qi4j query.
firstResult - The first result index of Qi4j query.
maxResults - The max amount of returned results.
values - Values to put into PreparedStatement, in the order of the list. This List is created from the outside and this method is supposed to fill it with necessary values, if any.
valueSQLTypes - The SQL types of the objects in values. Each SQL type at index x is interpreted as type of value at index x of the values -list.
countOnly - True if this query should return only the number of matching entities, false otherwise.
Returns:
The SQL query, which may be used with PreparedStatement.
Throws:
EntityFinderException - If SQLException or something else bad happens.

createTypeCondition

protected org.sql.generation.api.grammar.booleans.BooleanExpression createTypeCondition(java.lang.Class<?> resultType,
                                                                                        org.sql.generation.api.vendor.SQLVendor vendor)

finalizeQuery

protected abstract org.sql.generation.api.grammar.query.QueryExpression finalizeQuery(org.sql.generation.api.vendor.SQLVendor sqlVendor,
                                                                                      org.sql.generation.api.grammar.builders.query.QuerySpecificationBuilder specBuilder,
                                                                                      java.lang.Class<?> resultType,
                                                                                      Specification<Composite> whereClause,
                                                                                      OrderBy[] orderBySegments,
                                                                                      java.lang.Integer firstResult,
                                                                                      java.lang.Integer maxResults,
                                                                                      java.util.Map<java.lang.String,java.lang.Object> variables,
                                                                                      java.util.List<java.lang.Object> values,
                                                                                      java.util.List<java.lang.Integer> valueSQLTypes,
                                                                                      java.lang.Boolean countOnly)

processBooleanExpression

protected org.sql.generation.api.grammar.builders.query.QueryBuilder processBooleanExpression(Specification<Composite> expression,
                                                                                              java.lang.Boolean negationActive,
                                                                                              org.sql.generation.api.vendor.SQLVendor vendor,
                                                                                              org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
                                                                                              java.util.Map<java.lang.String,java.lang.Object> variables,
                                                                                              java.util.List<java.lang.Object> values,
                                                                                              java.util.List<java.lang.Integer> valueSQLTypes)

selectAllEntitiesOfCorrectType

protected org.sql.generation.api.grammar.builders.query.QuerySpecificationBuilder selectAllEntitiesOfCorrectType(org.sql.generation.api.vendor.SQLVendor vendor,
                                                                                                                 org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition)

processMatchesPredicate

protected org.sql.generation.api.grammar.builders.query.QueryBuilder processMatchesPredicate(MatchesSpecification predicate,
                                                                                             java.lang.Boolean negationActive,
                                                                                             org.sql.generation.api.vendor.SQLVendor vendor,
                                                                                             org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
                                                                                             java.util.Map<java.lang.String,java.lang.Object> variables,
                                                                                             java.util.List<java.lang.Object> values,
                                                                                             java.util.List<java.lang.Integer> valueSQLTypes)

processComparisonPredicate

protected org.sql.generation.api.grammar.builders.query.QueryBuilder processComparisonPredicate(ComparisonSpecification<?> predicate,
                                                                                                java.lang.Boolean negationActive,
                                                                                                org.sql.generation.api.vendor.SQLVendor vendor,
                                                                                                org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
                                                                                                java.util.Map<java.lang.String,java.lang.Object> variables,
                                                                                                java.util.List<java.lang.Object> values,
                                                                                                java.util.List<java.lang.Integer> valueSQLTypes)

processManyAssociationContainsPredicate

protected org.sql.generation.api.grammar.builders.query.QueryBuilder processManyAssociationContainsPredicate(ManyAssociationContainsSpecification<?> predicate,
                                                                                                             java.lang.Boolean negationActive,
                                                                                                             org.sql.generation.api.vendor.SQLVendor vendor,
                                                                                                             org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
                                                                                                             java.util.Map<java.lang.String,java.lang.Object> variables,
                                                                                                             java.util.List<java.lang.Object> values,
                                                                                                             java.util.List<java.lang.Integer> valueSQLTypes)

processPropertyNullPredicate

protected org.sql.generation.api.grammar.builders.query.QueryBuilder processPropertyNullPredicate(PropertyNullSpecification<?> predicate,
                                                                                                  java.lang.Boolean negationActive,
                                                                                                  org.sql.generation.api.vendor.SQLVendor vendor,
                                                                                                  org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition)

processPropertyNotNullPredicate

protected org.sql.generation.api.grammar.builders.query.QueryBuilder processPropertyNotNullPredicate(PropertyNotNullSpecification<?> predicate,
                                                                                                     boolean negationActive,
                                                                                                     org.sql.generation.api.vendor.SQLVendor vendor,
                                                                                                     org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition)

processAssociationNullPredicate

protected org.sql.generation.api.grammar.builders.query.QueryBuilder processAssociationNullPredicate(AssociationNullSpecification<?> predicate,
                                                                                                     java.lang.Boolean negationActive,
                                                                                                     org.sql.generation.api.vendor.SQLVendor vendor,
                                                                                                     org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition)

processAssociationNotNullPredicate

protected org.sql.generation.api.grammar.builders.query.QueryBuilder processAssociationNotNullPredicate(AssociationNotNullSpecification<?> predicate,
                                                                                                        java.lang.Boolean negationActive,
                                                                                                        org.sql.generation.api.vendor.SQLVendor vendor,
                                                                                                        org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition)

processContainsPredicate

protected org.sql.generation.api.grammar.builders.query.QueryBuilder processContainsPredicate(ContainsSpecification<?> predicate,
                                                                                              java.lang.Boolean negationActive,
                                                                                              org.sql.generation.api.vendor.SQLVendor vendor,
                                                                                              org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
                                                                                              java.util.Map<java.lang.String,java.lang.Object> variables,
                                                                                              java.util.List<java.lang.Object> values,
                                                                                              java.util.List<java.lang.Integer> valueSQLTypes)

finalizeContainsQuery

protected org.sql.generation.api.grammar.builders.query.QueryBuilder finalizeContainsQuery(org.sql.generation.api.vendor.SQLVendor vendor,
                                                                                           org.sql.generation.api.grammar.query.QuerySpecification contains,
                                                                                           org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
                                                                                           java.lang.Boolean negationActive)

processContainsAllPredicate

protected org.sql.generation.api.grammar.builders.query.QueryBuilder processContainsAllPredicate(ContainsAllSpecification<?> predicate,
                                                                                                 java.lang.Boolean negationActive,
                                                                                                 org.sql.generation.api.vendor.SQLVendor vendor,
                                                                                                 org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
                                                                                                 java.util.Map<java.lang.String,java.lang.Object> variables,
                                                                                                 java.util.List<java.lang.Object> values,
                                                                                                 java.util.List<java.lang.Integer> valueSQLTypes)

singleQuery

protected org.sql.generation.api.grammar.builders.query.QueryBuilder singleQuery(Specification<Composite> predicate,
                                                                                 PropertyFunction<?> propRef,
                                                                                 org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.TraversedAssoOrManyAssoRef assoRef,
                                                                                 java.lang.Boolean includeLastAssoPathTable,
                                                                                 java.lang.Boolean negationActive,
                                                                                 org.sql.generation.api.vendor.SQLVendor vendor,
                                                                                 org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
                                                                                 org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.WhereClauseProcessor whereClauseGenerator)

constructQueryForPredicate

protected org.sql.generation.api.grammar.query.QuerySpecification constructQueryForPredicate(Specification<Composite> predicate,
                                                                                             PropertyFunction<?> propRef,
                                                                                             org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.TraversedAssoOrManyAssoRef assoRef,
                                                                                             java.lang.Boolean includeLastAssoPathTable,
                                                                                             java.lang.Boolean negationActive,
                                                                                             org.sql.generation.api.vendor.SQLVendor vendor,
                                                                                             org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
                                                                                             org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.WhereClauseProcessor whereClauseGenerator)

addTypeJoin

protected void addTypeJoin(org.sql.generation.api.vendor.SQLVendor vendor,
                           org.sql.generation.api.grammar.builders.query.TableReferenceBuilder from,
                           int startingIndex)

getOperator

protected AbstractSQLQuerying.SQLBooleanCreator getOperator(Specification<Composite> predicate)

getTableJoinStyle

protected org.sql.generation.api.grammar.query.joins.JoinType getTableJoinStyle(Specification<Composite> predicate,
                                                                                java.lang.Boolean negationActive)

findFromLookupTables

protected <ReturnType> ReturnType findFromLookupTables(java.util.Map<java.lang.Class<? extends Specification>,ReturnType> normal,
                                                       java.util.Map<java.lang.Class<? extends Specification>,ReturnType> negated,
                                                       Specification<Composite> predicate,
                                                       java.lang.Boolean negationActive)

getBuilderForPredicate

protected org.sql.generation.api.grammar.builders.query.QuerySpecificationBuilder getBuilderForPredicate(org.sql.generation.api.vendor.SQLVendor vendor,
                                                                                                         java.lang.String tableAlias)

translateJavaRegexpToPGSQLRegexp

protected java.lang.String translateJavaRegexpToPGSQLRegexp(java.lang.String javaRegexp)

processOrderBySegments

protected void processOrderBySegments(OrderBy[] orderBy,
                                      org.sql.generation.api.vendor.SQLVendor vendor,
                                      org.sql.generation.api.grammar.builders.query.QuerySpecificationBuilder builder)

traversePropertyPath

protected java.lang.Integer traversePropertyPath(PropertyFunction<?> reference,
                                                 java.lang.Integer lastTableIndex,
                                                 java.lang.Integer nextAvailableIndex,
                                                 org.sql.generation.api.vendor.SQLVendor vendor,
                                                 org.sql.generation.api.grammar.builders.query.TableReferenceBuilder builder,
                                                 org.sql.generation.api.grammar.query.joins.JoinType joinStyle)

traverseAssociationPath

protected java.lang.Integer traverseAssociationPath(org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.TraversedAssoOrManyAssoRef reference,
                                                    java.lang.Integer lastTableIndex,
                                                    java.lang.Integer nextAvailableIndex,
                                                    org.sql.generation.api.vendor.SQLVendor vendor,
                                                    org.sql.generation.api.grammar.builders.query.TableReferenceBuilder builder,
                                                    org.sql.generation.api.grammar.query.joins.JoinType joinStyle,
                                                    java.lang.Boolean includeLastTable)

getEntityTypeIDs

protected java.util.List<java.lang.Integer> getEntityTypeIDs(java.lang.Class<?> entityType)

modifyFromClauseAndWhereClauseToGetValue

protected java.lang.Integer modifyFromClauseAndWhereClauseToGetValue(QualifiedName qName,
                                                                     java.lang.Object value,
                                                                     Specification<Composite> predicate,
                                                                     java.lang.Boolean negationActive,
                                                                     java.lang.Integer currentTableIndex,
                                                                     org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.ModifiableInt maxTableIndex,
                                                                     java.lang.String columnName,
                                                                     java.lang.String collectionPath,
                                                                     org.sql.generation.api.vendor.SQLVendor vendor,
                                                                     org.sql.generation.api.grammar.builders.booleans.BooleanBuilder whereClause,
                                                                     org.sql.generation.api.grammar.builders.booleans.BooleanBuilder afterWhere,
                                                                     org.sql.generation.api.grammar.builders.query.TableReferenceBuilder fromClause,
                                                                     org.sql.generation.api.grammar.builders.query.GroupByBuilder groupBy,
                                                                     org.sql.generation.api.grammar.builders.booleans.BooleanBuilder having,
                                                                     java.util.List<org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.QNameJoin> qNameJoins,
                                                                     java.util.Map<java.lang.String,java.lang.Object> variables,
                                                                     java.util.List<java.lang.Object> values,
                                                                     java.util.List<java.lang.Integer> valueSQLTypes)