blob: 64623ec376c344b928f52e91393fce40068484b0 [file] [log] [blame]
/*
* 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.
*
* Contributors:
* Florent Guillaume, Nuxeo
*/
package org.apache.chemistry.opencmis.server.support.query;
import org.antlr.runtime.tree.Tree;
/**
* Interface for a tree walker of a WHERE clause.
* <p>
* Can be used to build another datastructure, or for direct value evaluation
* (thus the boolean return values for clauses, and Object for values).
* <p>
* The method {@link #walkExpr} is the entry point.
*/
public interface PredicateWalker extends PredicateWalkerBase {
Boolean walkNot(Tree opNode, Tree leftNode);
Boolean walkAnd(Tree opNode, Tree leftNode, Tree rightNode);
Boolean walkOr(Tree opNode, Tree leftNode, Tree rightNode);
Object walkExpr(Tree node);
Boolean walkEquals(Tree eqNode, Tree leftNode, Tree rightNode);
Boolean walkNotEquals(Tree neNode, Tree leftNode, Tree rightNode);
Boolean walkGreaterThan(Tree gtNode, Tree leftNode, Tree rightNode);
Boolean walkGreaterOrEquals(Tree geNode, Tree leftNode, Tree rightNode);
Boolean walkLessThan(Tree ltNode, Tree leftNode, Tree rightNode);
Boolean walkLessOrEquals(Tree leqNode, Tree leftNode, Tree rightNode);
Boolean walkIn(Tree node, Tree colNode, Tree listNode);
Boolean walkNotIn(Tree node, Tree colNode, Tree listNode);
Boolean walkInAny(Tree node, Tree colNode, Tree listNode);
Boolean walkNotInAny(Tree node, Tree colNode, Tree listNode);
Boolean walkEqAny(Tree node, Tree literalNode, Tree colNode);
Boolean walkIsNull(Tree nullNode, Tree colNode);
Boolean walkIsNotNull(Tree notNullNode, Tree colNode);
Boolean walkLike(Tree node, Tree colNode, Tree stringNode);
Boolean walkNotLike(Tree node, Tree colNode, Tree stringNode);
Boolean walkContains(Tree node, Tree qualNode, Tree paramNode);
Boolean walkInFolder(Tree node, Tree qualNode, Tree paramNode);
Boolean walkInTree(Tree node, Tree qualNode, Tree paramNode);
Object walkList(Tree node);
Object walkBoolean(Tree node);
Object walkNumber(Tree node);
Object walkString(Tree node);
Object walkTimestamp(Tree node);
Object walkCol(Tree node);
Object walkId(Tree node);
}