/* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html */ package org.hibernate.query.sqm.consume.spi; import org.hibernate.query.sqm.tree.SqmDeleteStatement; import org.hibernate.query.sqm.tree.SqmInsertSelectStatement; import org.hibernate.query.sqm.tree.SqmQuerySpec; import org.hibernate.query.sqm.tree.SqmSelectStatement; import org.hibernate.query.sqm.tree.SqmStatement; import org.hibernate.query.sqm.tree.SqmUpdateStatement; import org.hibernate.query.sqm.tree.expression.BinaryArithmeticSqmExpression; import org.hibernate.query.sqm.tree.expression.CaseSearchedSqmExpression; import org.hibernate.query.sqm.tree.expression.CaseSimpleSqmExpression; import org.hibernate.query.sqm.tree.expression.CoalesceSqmExpression; import org.hibernate.query.sqm.tree.expression.CollectionSizeSqmExpression; import org.hibernate.query.sqm.tree.expression.ConcatSqmExpression; import org.hibernate.query.sqm.tree.expression.ConstantEnumSqmExpression; import org.hibernate.query.sqm.tree.expression.ConstantFieldSqmExpression; import org.hibernate.query.sqm.tree.expression.EntityTypeLiteralSqmExpression; import org.hibernate.query.sqm.tree.expression.LiteralBigDecimalSqmExpression; import org.hibernate.query.sqm.tree.expression.LiteralBigIntegerSqmExpression; import org.hibernate.query.sqm.tree.expression.LiteralCharacterSqmExpression; import org.hibernate.query.sqm.tree.expression.LiteralDoubleSqmExpression; import org.hibernate.query.sqm.tree.expression.LiteralFalseSqmExpression; import org.hibernate.query.sqm.tree.expression.LiteralFloatSqmExpression; import org.hibernate.query.sqm.tree.expression.LiteralIntegerSqmExpression; import org.hibernate.query.sqm.tree.expression.LiteralLongSqmExpression; import org.hibernate.query.sqm.tree.expression.LiteralNullSqmExpression; import org.hibernate.query.sqm.tree.expression.LiteralStringSqmExpression; import org.hibernate.query.sqm.tree.expression.LiteralTrueSqmExpression; import org.hibernate.query.sqm.tree.expression.NamedParameterSqmExpression; import org.hibernate.query.sqm.tree.expression.NullifSqmExpression; import org.hibernate.query.sqm.tree.expression.ParameterizedEntityTypeSqmExpression; import org.hibernate.query.sqm.tree.expression.PositionalParameterSqmExpression; import org.hibernate.query.sqm.tree.expression.SubQuerySqmExpression; import org.hibernate.query.sqm.tree.expression.UnaryOperationSqmExpression; import org.hibernate.query.sqm.tree.expression.domain.AbstractSpecificSqmCollectionIndexReference; import org.hibernate.query.sqm.tree.expression.domain.SqmAttributeReference; import org.hibernate.query.sqm.tree.expression.domain.SqmCollectionElementReference; import org.hibernate.query.sqm.tree.expression.domain.SqmCollectionIndexReference; import org.hibernate.query.sqm.tree.expression.domain.SqmEntityIdentifierReference; import org.hibernate.query.sqm.tree.expression.domain.SqmEntityTypeSqmExpression; import org.hibernate.query.sqm.tree.expression.domain.SqmMapEntryBinding; import org.hibernate.query.sqm.tree.expression.domain.SqmMaxElementReference; import org.hibernate.query.sqm.tree.expression.domain.SqmMinElementReference; import org.hibernate.query.sqm.tree.expression.domain.SqmMinIndexReferenceBasic; import org.hibernate.query.sqm.tree.expression.function.AvgFunctionSqmExpression; import org.hibernate.query.sqm.tree.expression.function.CastFunctionSqmExpression; import org.hibernate.query.sqm.tree.expression.function.ConcatFunctionSqmExpression; import org.hibernate.query.sqm.tree.expression.function.CountFunctionSqmExpression; import org.hibernate.query.sqm.tree.expression.function.CountStarFunctionSqmExpression; import org.hibernate.query.sqm.tree.expression.function.GenericFunctionSqmExpression; import org.hibernate.query.sqm.tree.expression.function.LowerFunctionSqmExpression; import org.hibernate.query.sqm.tree.expression.function.MaxFunctionSqmExpression; import org.hibernate.query.sqm.tree.expression.function.MinFunctionSqmExpression; import org.hibernate.query.sqm.tree.expression.function.SubstringFunctionSqmExpression; import org.hibernate.query.sqm.tree.expression.function.SumFunctionSqmExpression; import org.hibernate.query.sqm.tree.expression.function.TrimFunctionSqmExpression; import org.hibernate.query.sqm.tree.expression.function.UpperFunctionSqmExpression; import org.hibernate.query.sqm.tree.from.SqmFromElementSpace; import org.hibernate.query.sqm.tree.from.SqmAttributeJoin; import org.hibernate.query.sqm.tree.from.SqmCrossJoin; import org.hibernate.query.sqm.tree.from.SqmEntityJoin; import org.hibernate.query.sqm.tree.from.SqmFromClause; import org.hibernate.query.sqm.tree.from.SqmRoot; import org.hibernate.query.sqm.tree.order.SqmOrderByClause; import org.hibernate.query.sqm.tree.order.SqmSortSpecification; import org.hibernate.query.sqm.tree.paging.SqmLimitOffsetClause; import org.hibernate.query.sqm.tree.predicate.AndSqmPredicate; import org.hibernate.query.sqm.tree.predicate.BetweenSqmPredicate; import org.hibernate.query.sqm.tree.predicate.BooleanExpressionSqmPredicate; import org.hibernate.query.sqm.tree.predicate.EmptinessSqmPredicate; import org.hibernate.query.sqm.tree.predicate.GroupedSqmPredicate; import org.hibernate.query.sqm.tree.predicate.InListSqmPredicate; import org.hibernate.query.sqm.tree.predicate.InSubQuerySqmPredicate; import org.hibernate.query.sqm.tree.predicate.LikeSqmPredicate; import org.hibernate.query.sqm.tree.predicate.MemberOfSqmPredicate; import org.hibernate.query.sqm.tree.predicate.NegatedSqmPredicate; import org.hibernate.query.sqm.tree.predicate.NullnessSqmPredicate; import org.hibernate.query.sqm.tree.predicate.OrSqmPredicate; import org.hibernate.query.sqm.tree.predicate.RelationalSqmPredicate; import org.hibernate.query.sqm.tree.predicate.SqmWhereClause; import org.hibernate.query.sqm.tree.select.SqmDynamicInstantiation; import org.hibernate.query.sqm.tree.select.SqmSelectClause; import org.hibernate.query.sqm.tree.select.SqmSelection; import org.hibernate.query.sqm.tree.set.SqmAssignment; import org.hibernate.query.sqm.tree.set.SqmSetClause; /** * @author Steve Ebersole */ public interface SemanticQueryWalker<T> { T visitStatement(SqmStatement statement); T visitUpdateStatement(SqmUpdateStatement statement); T visitSetClause(SqmSetClause setClause); T visitAssignment(SqmAssignment assignment); T visitInsertSelectStatement(SqmInsertSelectStatement statement); T visitDeleteStatement(SqmDeleteStatement statement); T visitSelectStatement(SqmSelectStatement statement); T visitQuerySpec(SqmQuerySpec querySpec); T visitFromClause(SqmFromClause fromClause); T visitFromElementSpace(SqmFromElementSpace fromElementSpace); T visitRootEntityFromElement(SqmRoot rootEntityFromElement); T visitCrossJoinedFromElement(SqmCrossJoin joinedFromElement); T visitQualifiedEntityJoinFromElement(SqmEntityJoin joinedFromElement); T visitQualifiedAttributeJoinFromElement(SqmAttributeJoin joinedFromElement); T visitSelectClause(SqmSelectClause selectClause); T visitSelection(SqmSelection selection); T visitDynamicInstantiation(SqmDynamicInstantiation dynamicInstantiation); T visitWhereClause(SqmWhereClause whereClause); T visitGroupedPredicate(GroupedSqmPredicate predicate); T visitAndPredicate(AndSqmPredicate predicate); T visitOrPredicate(OrSqmPredicate predicate); T visitRelationalPredicate(RelationalSqmPredicate predicate); T visitIsEmptyPredicate(EmptinessSqmPredicate predicate); T visitIsNullPredicate(NullnessSqmPredicate predicate); T visitBetweenPredicate(BetweenSqmPredicate predicate); T visitLikePredicate(LikeSqmPredicate predicate); T visitMemberOfPredicate(MemberOfSqmPredicate predicate); T visitNegatedPredicate(NegatedSqmPredicate predicate); T visitInListPredicate(InListSqmPredicate predicate); T visitInSubQueryPredicate(InSubQuerySqmPredicate predicate); T visitBooleanExpressionPredicate(BooleanExpressionSqmPredicate predicate); T visitOrderByClause(SqmOrderByClause orderByClause); T visitSortSpecification(SqmSortSpecification sortSpecification); T visitLimitOffsetClause(SqmLimitOffsetClause limitOffsetClause); T visitPositionalParameterExpression(PositionalParameterSqmExpression expression); T visitNamedParameterExpression(NamedParameterSqmExpression expression); T visitEntityTypeLiteralExpression(EntityTypeLiteralSqmExpression expression); T visitEntityTypeExpression(SqmEntityTypeSqmExpression expression); T visitParameterizedEntityTypeExpression(ParameterizedEntityTypeSqmExpression expression); T visitUnaryOperationExpression(UnaryOperationSqmExpression expression); T visitAttributeReferenceExpression(SqmAttributeReference expression); T visitGenericFunction(GenericFunctionSqmExpression expression); T visitCastFunction(CastFunctionSqmExpression expression); T visitAvgFunction(AvgFunctionSqmExpression expression); T visitCountStarFunction(CountStarFunctionSqmExpression expression); T visitCountFunction(CountFunctionSqmExpression expression); T visitMaxFunction(MaxFunctionSqmExpression expression); T visitMinFunction(MinFunctionSqmExpression expression); T visitSumFunction(SumFunctionSqmExpression expression); T visitPluralAttributeSizeFunction(CollectionSizeSqmExpression function); T visitPluralAttributeElementBinding(SqmCollectionElementReference binding); T visitPluralAttributeIndexFunction(SqmCollectionIndexReference function); T visitMapKeyBinding(SqmCollectionIndexReference binding); T visitMapEntryFunction(SqmMapEntryBinding function); T visitMaxElementBinding(SqmMaxElementReference binding); T visitMinElementBinding(SqmMinElementReference binding); T visitMaxIndexFunction(AbstractSpecificSqmCollectionIndexReference function); T visitMinIndexFunction(SqmMinIndexReferenceBasic function); T visitLiteralStringExpression(LiteralStringSqmExpression expression); T visitLiteralCharacterExpression(LiteralCharacterSqmExpression expression); T visitLiteralDoubleExpression(LiteralDoubleSqmExpression expression); T visitLiteralIntegerExpression(LiteralIntegerSqmExpression expression); T visitLiteralBigIntegerExpression(LiteralBigIntegerSqmExpression expression); T visitLiteralBigDecimalExpression(LiteralBigDecimalSqmExpression expression); T visitLiteralFloatExpression(LiteralFloatSqmExpression expression); T visitLiteralLongExpression(LiteralLongSqmExpression expression); T visitLiteralTrueExpression(LiteralTrueSqmExpression expression); T visitLiteralFalseExpression(LiteralFalseSqmExpression expression); T visitLiteralNullExpression(LiteralNullSqmExpression expression); T visitConcatExpression(ConcatSqmExpression expression); T visitConcatFunction(ConcatFunctionSqmExpression expression); T visitConstantEnumExpression(ConstantEnumSqmExpression expression); T visitConstantFieldExpression(ConstantFieldSqmExpression expression); T visitBinaryArithmeticExpression(BinaryArithmeticSqmExpression expression); T visitSubQueryExpression(SubQuerySqmExpression expression); T visitSimpleCaseExpression(CaseSimpleSqmExpression expression); T visitSearchedCaseExpression(CaseSearchedSqmExpression expression); T visitCoalesceExpression(CoalesceSqmExpression expression); T visitNullifExpression(NullifSqmExpression expression); T visitSubstringFunction(SubstringFunctionSqmExpression expression); T visitTrimFunction(TrimFunctionSqmExpression expression); T visitUpperFunction(UpperFunctionSqmExpression expression); T visitLowerFunction(LowerFunctionSqmExpression expression); T visitEntityIdentifierBinding(SqmEntityIdentifierReference sqmEntityIdentifierBinding); }