blob: 18b78f7c457ade905cba968d6432f67c737377d3 [file] [log] [blame]
/*
* Copyright (c) 2006, 2020 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 v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// 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);
}