org.qi4j.index.sql.support.skeletons
Class AbstractSQLQuerying
java.lang.Object
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
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
|
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 |
AbstractSQLQuerying
public AbstractSQLQuerying()
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)