/******************************************************************************* * Copyright (c) 2006, 2015 Oracle and/or its affiliates. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Oracle - initial API and implementation * ******************************************************************************/ package org.eclipse.persistence.jpa.jpql.parser; /** * This interface is used to traverse the JPQL parsed tree. It follows the Visitor pattern. It visits * the concrete instances of {@link Expression}. * <p> * Provisional API: This interface is part of an interim API that is still under development and * expected to change significantly before reaching stability. It is available at this early stage * to solicit feedback from pioneering adopters on the understanding that any code that uses this * API will almost certainly be broken (repeatedly) as the API evolves. * * @version 2.4 * @since 2.3 * @author Pascal Filion */ public interface ExpressionVisitor { /** * Visits the {@link AbsExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(AbsExpression expression); /** * Visits the {@link AbstractSchemaName} expression. * * @param expression The {@link Expression} to visit */ void visit(AbstractSchemaName expression); /** * Visits the {@link AdditionExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(AdditionExpression expression); /** * Visits the {@link AllOrAnyExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(AllOrAnyExpression expression); /** * Visits the {@link AndExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(AndExpression expression); /** * Visits the {@link ArithmeticFactor} expression. * * @param expression The {@link Expression} to visit */ void visit(ArithmeticFactor expression); /** * Visits the {@link AvgFunction} expression. * * @param expression The {@link Expression} to visit */ void visit(AvgFunction expression); /** * Visits the {@link BadExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(BadExpression expression); /** * Visits the {@link BetweenExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(BetweenExpression expression); /** * Visits the {@link CaseExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(CaseExpression expression); /** * Visits the {@link CoalesceExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(CoalesceExpression expression); /** * Visits the {@link CollectionExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(CollectionExpression expression); /** * Visits the {@link CollectionMemberDeclaration} expression. * * @param expression The {@link Expression} to visit */ void visit(CollectionMemberDeclaration expression); /** * Visits the {@link CollectionMemberExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(CollectionMemberExpression expression); /** * Visits the {@link CollectionValuedPathExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(CollectionValuedPathExpression expression); /** * Visits the {@link ComparisonExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(ComparisonExpression expression); /** * Visits the {@link ConcatExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(ConcatExpression expression); /** * Visits the {@link ConstructorExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(ConstructorExpression expression); /** * Visits the {@link CountFunction} expression. * * @param expression The {@link Expression} to visit */ void visit(CountFunction expression); /** * Visits the {@link DateTime} expression. * * @param expression The {@link Expression} to visit */ void visit(DateTime expression); /** * Visits the {@link DeleteClause} expression. * * @param expression The {@link Expression} to visit */ void visit(DeleteClause expression); /** * Visits the {@link DeleteStatement} expression. * * @param expression The {@link Expression} to visit */ void visit(DeleteStatement expression); /** * Visits the {@link DivisionExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(DivisionExpression expression); /** * Visits the {@link EmptyCollectionComparisonExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(EmptyCollectionComparisonExpression expression); /** * Visits the {@link EntityTypeLiteral} expression. * * @param expression The {@link Expression} to visit */ void visit(EntityTypeLiteral expression); /** * Visits the {@link EntryExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(EntryExpression expression); /** * Visits the {@link ExistsExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(ExistsExpression expression); /** * Visits the {@link FromClause} expression. * * @param expression The {@link Expression} to visit */ void visit(FromClause expression); /** * Visits the {@link FunctionExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(FunctionExpression expression); /** * Visits the {@link GroupByClause} expression. * * @param expression The {@link Expression} to visit */ void visit(GroupByClause expression); /** * Visits the {@link HavingClause} expression. * * @param expression The {@link Expression} to visit */ void visit(HavingClause expression); /** * Visits the {@link IdentificationVariable} expression. * * @param expression The {@link Expression} to visit */ void visit(IdentificationVariable expression); /** * Visits the {@link IdentificationVariableDeclaration} expression. * * @param expression The {@link Expression} to visit */ void visit(IdentificationVariableDeclaration expression); /** * Visits the {@link IndexExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(IndexExpression expression); /** * Visits the {@link InExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(InExpression expression); /** * Visits the {@link InputParameter} expression. * * @param expression The {@link Expression} to visit */ void visit(InputParameter expression); /** * Visits the {@link Join} expression. * * @param expression The {@link Expression} to visit */ void visit(Join expression); /** * Visits the {@link JPQLExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(JPQLExpression expression); /** * Visits the {@link KeyExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(KeyExpression expression); /** * Visits the {@link KeywordExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(KeywordExpression expression); /** * Visits the {@link LengthExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(LengthExpression expression); /** * Visits the {@link LikeExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(LikeExpression expression); /** * Visits the {@link LocateExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(LocateExpression expression); /** * Visits the {@link LowerExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(LowerExpression expression); /** * Visits the {@link MaxFunction} expression. * * @param expression The {@link Expression} to visit */ void visit(MaxFunction expression); /** * Visits the {@link MinFunction} expression. * * @param expression The {@link Expression} to visit */ void visit(MinFunction expression); /** * Visits the {@link ModExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(ModExpression expression); /** * Visits the {@link MultiplicationExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(MultiplicationExpression expression); /** * Visits the {@link NotExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(NotExpression expression); /** * Visits the {@link NullComparisonExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(NullComparisonExpression expression); /** * Visits the {@link NullExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(NullExpression expression); /** * Visits the {@link NullIfExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(NullIfExpression expression); /** * Visits the {@link NumericLiteral} expression. * * @param expression The {@link Expression} to visit */ void visit(NumericLiteral expression); /** * Visits the {@link ObjectExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(ObjectExpression expression); /** * Visits the {@link OnClause} expression. * * @param expression The {@link Expression} to visit */ void visit(OnClause expression); /** * Visits the {@link OrderByClause} expression. * * @param expression The {@link Expression} to visit */ void visit(OrderByClause expression); /** * Visits the {@link OrderByItem} expression. * * @param expression The {@link Expression} to visit */ void visit(OrderByItem expression); /** * Visits the {@link OrExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(OrExpression expression); /** * Visits the {@link RangeVariableDeclaration} expression. * * @param expression The {@link Expression} to visit */ void visit(RangeVariableDeclaration expression); /** * Visits the {@link ResultVariable} expression. * * @param expression The {@link Expression} to visit */ void visit(ResultVariable expression); /** * Visits the {@link SelectClause} expression. * * @param expression The {@link Expression} to visit */ void visit(SelectClause expression); /** * Visits the {@link SelectStatement} expression. * * @param expression The {@link Expression} to visit */ void visit(SelectStatement expression); /** * Visits the {@link SimpleFromClause} expression. * * @param expression The {@link Expression} to visit */ void visit(SimpleFromClause expression); /** * Visits the {@link SimpleSelectClause} expression. * * @param expression The {@link Expression} to visit */ void visit(SimpleSelectClause expression); /** * Visits the {@link SimpleSelectStatement} expression. * * @param expression The {@link Expression} to visit */ void visit(SimpleSelectStatement expression); /** * Visits the {@link SizeExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(SizeExpression expression); /** * Visits the {@link SqrtExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(SqrtExpression expression); /** * Visits the {@link StateFieldPathExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(StateFieldPathExpression expression); /** * Visits the {@link StringLiteral} expression. * * @param expression The {@link Expression} to visit */ void visit(StringLiteral expression); /** * Visits the {@link SubExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(SubExpression expression); /** * Visits the {@link SubstringExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(SubstringExpression expression); /** * Visits the {@link SubtractionExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(SubtractionExpression expression); /** * Visits the {@link SumFunction} expression. * * @param expression The {@link Expression} to visit */ void visit(SumFunction expression); /** * Visits the {@link TreatExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(TreatExpression expression); /** * Visits the {@link TrimExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(TrimExpression expression); /** * Visits the {@link TypeExpression} expression. * * @param expression The {@link Expression} to visit */ void visit(TypeExpression expression); /** * Visits the {@link UnknownExpression} expression. * * @param expression The {@link UnknownExpression} to visit */ void visit(UnknownExpression expression); /** * Visits the {@link UpdateClause} expression. * * @param expression The {@link UpdateClause} to visit */ void visit(UpdateClause expression); /** * Visits the {@link UpdateItem} expression. * * @param expression The {@link UpdateItem} to visit */ void visit(UpdateItem expression); /** * Visits the {@link UpdateStatement} expression. * * @param expression The {@link UpdateStatement} to visit */ void visit(UpdateStatement expression); /** * Visits the {@link UpperExpression} expression. * * @param expression The {@link UpperExpression} to visit */ void visit(UpperExpression expression); /** * Visits the {@link ValueExpression} expression. * * @param expression The {@link ValueExpression} to visit */ void visit(ValueExpression expression); /** * Visits the {@link WhenClause} expression. * * @param expression The {@link WhenClause} to visit */ void visit(WhenClause expression); /** * Visits the {@link WhereClause} expression. * * @param expression The {@link WhereClause} to visit */ void visit(WhereClause expression); }