| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.jena.sparql.algebra.walker; |
| |
| import java.util.List ; |
| |
| import org.apache.jena.query.SortCondition ; |
| import org.apache.jena.sparql.algebra.OpVisitor ; |
| import org.apache.jena.sparql.algebra.op.* ; |
| import org.apache.jena.sparql.core.Var ; |
| import org.apache.jena.sparql.core.VarExprList ; |
| import org.apache.jena.sparql.expr.ExprAggregator ; |
| import org.apache.jena.sparql.expr.ExprList ; |
| |
| /** A visitor helper that maps all visits to a few general ones. |
| * Includes visiting expressions, sort conditions etc |
| */ |
| public interface OpVisitorByTypeAndExpr extends OpVisitor |
| { |
| public void visit0(Op0 op) ; |
| |
| public void visit1(Op1 op) ; |
| |
| public void visit2(Op2 op) ; |
| |
| public void visitN(OpN op) ; |
| |
| public default void visitExt(OpExt op) { |
| op.effectiveOp().visit(this); |
| } |
| |
| public void visitExpr(ExprList exprs) ; |
| public void visitVarExpr(VarExprList exprs) ; |
| public default void visitAssignVar(Var var) {} |
| |
| // Currently, we assume these are handled by the visitor/transformer. |
| public default void visitSortConditions(List<SortCondition> list) {} |
| public default void visitAggregators(List<ExprAggregator> aggregators) {} |
| |
| public default void visitModifer(OpModifier opMod) { |
| visit1(opMod); |
| } |
| |
| @Override |
| public default void visit(OpBGP opBGP) { |
| visit0(opBGP); |
| } |
| |
| @Override |
| public default void visit(OpQuadPattern quadPattern) { |
| visit0(quadPattern); |
| } |
| |
| @Override |
| public default void visit(OpQuadBlock quadBlock) { |
| visit0(quadBlock); |
| } |
| |
| @Override |
| public default void visit(OpTriple opTriple) { |
| visit0(opTriple); |
| } |
| |
| @Override |
| public default void visit(OpQuad opQuad) { |
| visit0(opQuad); |
| } |
| |
| @Override |
| public default void visit(OpPath opPath) { |
| visit0(opPath); |
| } |
| |
| @Override |
| public default void visit(OpFind opFind) { |
| visit0(opFind); |
| } |
| |
| @Override |
| public default void visit(OpProcedure opProcedure) { |
| visit1(opProcedure); |
| } |
| |
| @Override |
| public default void visit(OpPropFunc opPropFunc) { |
| visit1(opPropFunc); |
| } |
| |
| @Override |
| public default void visit(OpJoin opJoin) { |
| visit2(opJoin); |
| } |
| |
| @Override |
| public default void visit(OpSequence opSequence) { |
| visitN(opSequence); |
| } |
| |
| @Override |
| public default void visit(OpDisjunction opDisjunction) { |
| visitN(opDisjunction); |
| } |
| |
| @Override |
| public default void visit(OpLeftJoin opLeftJoin) { |
| visitExpr(opLeftJoin.getExprs()); |
| visit2(opLeftJoin); |
| } |
| |
| @Override |
| public default void visit(OpDiff opDiff) { |
| visit2(opDiff); |
| } |
| |
| @Override |
| public default void visit(OpMinus opMinus) { |
| visit2(opMinus); |
| } |
| |
| @Override |
| public default void visit(OpUnion opUnion) { |
| visit2(opUnion); |
| } |
| |
| @Override |
| public default void visit(OpConditional opCond) { |
| visit2(opCond); |
| } |
| |
| @Override |
| public default void visit(OpFilter opFilter) { |
| visitExpr(opFilter.getExprs()); |
| visit1(opFilter); |
| } |
| |
| @Override |
| public default void visit(OpGraph opGraph) { |
| visit1(opGraph); |
| } |
| |
| @Override |
| public default void visit(OpService opService) { |
| visit1(opService); |
| } |
| |
| @Override |
| public default void visit(OpDatasetNames dsNames) { |
| visit0(dsNames); |
| } |
| |
| @Override |
| public default void visit(OpTable opUnit) { |
| visit0(opUnit); |
| } |
| |
| @Override |
| public default void visit(OpExt opExt) { |
| visitExt(opExt); |
| } |
| |
| @Override |
| public default void visit(OpNull opNull) { |
| visit0(opNull); |
| } |
| |
| @Override |
| public default void visit(OpLabel opLabel) { |
| visit1(opLabel); |
| } |
| |
| @Override |
| public default void visit(OpOrder opOrder) { |
| visitSortConditions(opOrder.getConditions()) ; |
| visitModifer(opOrder); |
| } |
| |
| @Override |
| public default void visit(OpGroup opGroup) { |
| visitVarExpr(opGroup.getGroupVars()) ; |
| visitAggregators(opGroup.getAggregators()) ; |
| visit1(opGroup); |
| } |
| |
| @Override |
| public default void visit(OpTopN opTop) { |
| visitSortConditions(opTop.getConditions()) ; |
| visit1(opTop); |
| } |
| |
| @Override |
| public default void visit(OpAssign opAssign) { |
| visitVarExpr(opAssign.getVarExprList()) ; |
| visit1(opAssign); |
| } |
| |
| @Override |
| public default void visit(OpExtend opExtend) { |
| visitVarExpr(opExtend.getVarExprList()) ; |
| visit1(opExtend); |
| } |
| |
| @Override |
| public default void visit(OpList opList) { |
| visitModifer(opList); |
| } |
| |
| @Override |
| public default void visit(OpProject opProject) { |
| visitModifer(opProject); |
| } |
| |
| @Override |
| public default void visit(OpReduced opReduced) { |
| visitModifer(opReduced); |
| } |
| |
| @Override |
| public default void visit(OpDistinct opDistinct) { |
| visitModifer(opDistinct); |
| } |
| |
| @Override |
| public default void visit(OpSlice opSlice) { |
| visitModifer(opSlice); |
| } |
| } |