org.qi4j.index.sql.support.skeletons
Class AbstractSQLQuerying
java.lang.Object
org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying
- All Implemented Interfaces:
- Activatable, SQLQuerying
- Direct Known Subclasses:
- PostgreSQLQuerying
public abstract class AbstractSQLQuerying
- extends Object
- implements SQLQuerying, Activatable
Method Summary |
void |
activate()
This is invoked on the service when the instance is being activated |
String |
constructQuery(Class<?> resultType,
BooleanExpression whereClause,
OrderBy[] orderBySegments,
Integer firstResult,
Integer maxResults,
List<Object> values,
List<Integer> valueSQLTypes,
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(Predicate predicate,
PropertyReference<?> propRef,
AssociationReference assoRef,
Boolean includeLastAssoPathTable,
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(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,
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,
Class<?> resultType,
BooleanExpression whereClause,
OrderBy[] orderBySegments,
Integer firstResult,
Integer maxResults,
List<Object> values,
List<Integer> valueSQLTypes,
Boolean countOnly)
|
protected
|
findFromLookupTables(Map<Class<? extends Predicate>,ReturnType> normal,
Map<Class<? extends Predicate>,ReturnType> negated,
Predicate predicate,
Boolean negationActive)
|
protected org.sql.generation.api.grammar.builders.query.QuerySpecificationBuilder |
getBuilderForPredicate(org.sql.generation.api.vendor.SQLVendor vendor,
String tableAlias)
|
protected List<Integer> |
getEntityTypeIDs(Class<?> entityType)
|
protected AbstractSQLQuerying.SQLBooleanCreator |
getOperator(Predicate predicate)
|
Integer |
getResultSetType(Integer firstResult,
Integer maxResults)
|
protected org.sql.generation.api.grammar.query.joins.JoinType |
getTableJoinStyle(Predicate predicate,
Boolean negationActive)
|
Boolean |
isFirstResultSettingSupported()
|
protected Integer |
modifyFromClauseAndWhereClauseToGetValue(QualifiedName qName,
Object value,
Predicate predicate,
Boolean negationActive,
Integer currentTableIndex,
org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.ModifiableInt maxTableIndex,
String columnName,
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,
List<org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.QNameJoin> qNameJoins,
List<Object> values,
List<Integer> valueSQLTypes)
|
void |
passivate()
This is invoked on the service when the instance is being passivated |
protected org.sql.generation.api.grammar.builders.query.QueryBuilder |
processAssociationNullPredicate(AssociationNullPredicate 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 |
processBooleanExpression(BooleanExpression expression,
Boolean negationActive,
org.sql.generation.api.vendor.SQLVendor vendor,
org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
List<Object> values,
List<Integer> valueSQLTypes)
|
protected org.sql.generation.api.grammar.builders.query.QueryBuilder |
processComparisonPredicate(ComparisonPredicate<?> predicate,
Boolean negationActive,
org.sql.generation.api.vendor.SQLVendor vendor,
org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
List<Object> values,
List<Integer> valueSQLTypes)
|
protected org.sql.generation.api.grammar.builders.query.QueryBuilder |
processContainsAllPredicate(ContainsAllPredicate<?,? extends Collection<?>> predicate,
Boolean negationActive,
org.sql.generation.api.vendor.SQLVendor vendor,
org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
List<Object> values,
List<Integer> valueSQLTypes)
|
protected org.sql.generation.api.grammar.builders.query.QueryBuilder |
processContainsPredicate(ContainsPredicate<?,? extends Collection<?>> predicate,
Boolean negationActive,
org.sql.generation.api.vendor.SQLVendor vendor,
org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
List<Object> values,
List<Integer> valueSQLTypes)
|
protected org.sql.generation.api.grammar.builders.query.QueryBuilder |
processManyAssociationContainsPredicate(ManyAssociationContainsPredicate<?> predicate,
Boolean negationActive,
org.sql.generation.api.vendor.SQLVendor vendor,
org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
List<Object> values,
List<Integer> valueSQLTypes)
|
protected org.sql.generation.api.grammar.builders.query.QueryBuilder |
processMatchesPredicate(MatchesPredicate predicate,
Boolean negationActive,
org.sql.generation.api.vendor.SQLVendor vendor,
org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
List<Object> values,
List<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 |
processPropertyNullPredicate(PropertyNullPredicate<?> 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.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(Predicate predicate,
PropertyReference<?> propRef,
AssociationReference assoRef,
Boolean includeLastAssoPathTable,
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 String |
translateJavaRegexpToPGSQLRegexp(String javaRegexp)
|
protected Integer |
traverseAssociationPath(AssociationReference reference,
Integer lastTableIndex,
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,
Boolean includeLastTable)
|
protected Integer |
traversePropertyPath(PropertyReference<?> reference,
Integer lastTableIndex,
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 Integer getResultSetType(Integer firstResult,
Integer maxResults)
- Specified by:
getResultSetType
in interface SQLQuerying
isFirstResultSettingSupported
public Boolean isFirstResultSettingSupported()
- Specified by:
isFirstResultSettingSupported
in interface SQLQuerying
activate
public void activate()
throws Exception
- Description copied from interface:
Activatable
- This is invoked on the service when the instance is being activated
- Specified by:
activate
in interface Activatable
- Throws:
Exception
- if service could not be activated
passivate
public void passivate()
throws Exception
- Description copied from interface:
Activatable
- This is invoked on the service when the instance is being passivated
- Specified by:
passivate
in interface Activatable
- Throws:
Exception
- if the service could not be passivated
constructQuery
public String constructQuery(Class<?> resultType,
BooleanExpression whereClause,
OrderBy[] orderBySegments,
Integer firstResult,
Integer maxResults,
List<Object> values,
List<Integer> valueSQLTypes,
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(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,
Class<?> resultType,
BooleanExpression whereClause,
OrderBy[] orderBySegments,
Integer firstResult,
Integer maxResults,
List<Object> values,
List<Integer> valueSQLTypes,
Boolean countOnly)
processBooleanExpression
protected org.sql.generation.api.grammar.builders.query.QueryBuilder processBooleanExpression(BooleanExpression expression,
Boolean negationActive,
org.sql.generation.api.vendor.SQLVendor vendor,
org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
List<Object> values,
List<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(MatchesPredicate predicate,
Boolean negationActive,
org.sql.generation.api.vendor.SQLVendor vendor,
org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
List<Object> values,
List<Integer> valueSQLTypes)
processComparisonPredicate
protected org.sql.generation.api.grammar.builders.query.QueryBuilder processComparisonPredicate(ComparisonPredicate<?> predicate,
Boolean negationActive,
org.sql.generation.api.vendor.SQLVendor vendor,
org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
List<Object> values,
List<Integer> valueSQLTypes)
processManyAssociationContainsPredicate
protected org.sql.generation.api.grammar.builders.query.QueryBuilder processManyAssociationContainsPredicate(ManyAssociationContainsPredicate<?> predicate,
Boolean negationActive,
org.sql.generation.api.vendor.SQLVendor vendor,
org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
List<Object> values,
List<Integer> valueSQLTypes)
processPropertyNullPredicate
protected org.sql.generation.api.grammar.builders.query.QueryBuilder processPropertyNullPredicate(PropertyNullPredicate<?> 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(AssociationNullPredicate predicate,
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(ContainsPredicate<?,? extends Collection<?>> predicate,
Boolean negationActive,
org.sql.generation.api.vendor.SQLVendor vendor,
org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
List<Object> values,
List<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,
Boolean negationActive)
processContainsAllPredicate
protected org.sql.generation.api.grammar.builders.query.QueryBuilder processContainsAllPredicate(ContainsAllPredicate<?,? extends Collection<?>> predicate,
Boolean negationActive,
org.sql.generation.api.vendor.SQLVendor vendor,
org.sql.generation.api.grammar.booleans.BooleanExpression entityTypeCondition,
List<Object> values,
List<Integer> valueSQLTypes)
singleQuery
protected org.sql.generation.api.grammar.builders.query.QueryBuilder singleQuery(Predicate predicate,
PropertyReference<?> propRef,
AssociationReference assoRef,
Boolean includeLastAssoPathTable,
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(Predicate predicate,
PropertyReference<?> propRef,
AssociationReference assoRef,
Boolean includeLastAssoPathTable,
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)
getOperator
protected AbstractSQLQuerying.SQLBooleanCreator getOperator(Predicate predicate)
getTableJoinStyle
protected org.sql.generation.api.grammar.query.joins.JoinType getTableJoinStyle(Predicate predicate,
Boolean negationActive)
findFromLookupTables
protected <ReturnType> ReturnType findFromLookupTables(Map<Class<? extends Predicate>,ReturnType> normal,
Map<Class<? extends Predicate>,ReturnType> negated,
Predicate predicate,
Boolean negationActive)
getBuilderForPredicate
protected org.sql.generation.api.grammar.builders.query.QuerySpecificationBuilder getBuilderForPredicate(org.sql.generation.api.vendor.SQLVendor vendor,
String tableAlias)
translateJavaRegexpToPGSQLRegexp
protected String translateJavaRegexpToPGSQLRegexp(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 Integer traversePropertyPath(PropertyReference<?> reference,
Integer lastTableIndex,
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 Integer traverseAssociationPath(AssociationReference reference,
Integer lastTableIndex,
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,
Boolean includeLastTable)
getEntityTypeIDs
protected List<Integer> getEntityTypeIDs(Class<?> entityType)
modifyFromClauseAndWhereClauseToGetValue
protected Integer modifyFromClauseAndWhereClauseToGetValue(QualifiedName qName,
Object value,
Predicate predicate,
Boolean negationActive,
Integer currentTableIndex,
org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.ModifiableInt maxTableIndex,
String columnName,
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,
List<org.qi4j.index.sql.support.skeletons.AbstractSQLQuerying.QNameJoin> qNameJoins,
List<Object> values,
List<Integer> valueSQLTypes)