content: /*
   * 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.chemistry.opencmis.inmemory.query;
  
  import java.util.List;
  
  import org.antlr.runtime.tree.Tree;
  import org.apache.chemistry.opencmis.server.support.query.PredicateWalkerBase;
  
  /**
   * An interface used by the walker when traversing the AST from the grammar. The
   * interface consists of callback methods that are called when a rule is
   * processed (as part of the WHERE statement)
   */
  public interface QueryConditionProcessor extends PredicateWalkerBase {
  
      void onStartProcessing(Tree whereNode);
  
      void onStopProcessing();
  
      // Compare operators
      void onEquals(Tree eqNode, Tree leftNode, Tree rightNode);
  
      void onNotEquals(Tree neNode, Tree leftNode, Tree rightNode);
  
      void onGreaterThan(Tree gtNode, Tree leftNode, Tree rightNode);
  
      void onGreaterOrEquals(Tree geNode, Tree leftNode, Tree rightNode);
  
      void onLessThan(Tree ltNode, Tree leftNode, Tree rightNode);
  
      void onLessOrEquals(Tree leqNode, Tree leftNode, Tree rightNode);
  
      // Boolean operators
      void onPreNot(Tree opNode, Tree leftNode);
  
      void onNot(Tree opNode, Tree leftNode);
  
      void onPostNot(Tree opNode, Tree leftNode);
  
      void onPreAnd(Tree opNode, Tree leftNode, Tree rightNode);
  
      void onAnd(Tree opNode, Tree leftNode, Tree rightNode);
  
      void onPostAnd(Tree opNode, Tree leftNode, Tree rightNode);
  
      void onPreOr(Tree opNode, Tree leftNode, Tree rightNode);
  
      void onOr(Tree opNode, Tree leftNode, Tree rightNode);
  
      void onPostOr(Tree opNode, Tree leftNode, Tree rightNode);
  
      // Multi-value:
      void onIn(Tree node, Tree colNode, Tree listNode);
  
      void onNotIn(Tree node, Tree colNode, Tree listNode);
  
      void onInAny(Tree node, Tree colNode, Tree listNode);
  
      void onNotInAny(Tree node, Tree colNode, Tree listNode);
  
      void onEqAny(Tree node, Tree literalNode, Tree colNode);
  
      // Null comparisons:
      void onIsNull(Tree nullNode, Tree colNode);
  
      void onIsNotNull(Tree notNullNode, Tree colNode);
  
      // String matching:
      void onIsLike(Tree node, Tree colNode, Tree stringNode);
  
      void onIsNotLike(Tree node, Tree colNode, Tree stringNode);
  
      // Functions:
      void onContains(Tree node, Tree typeNode, Tree searchExprNode);
  
      void onInFolder(Tree node, Tree colNode, Tree paramNode);
  
      void onInTree(Tree node, Tree colNode, Tree paramNode);
  
      void onScore(Tree node);
  
      // full text search
      void onTextAnd(Tree node, List<Tree> conjunctionNodes);
  
      void onTextOr(Tree node, List<Tree> termNodes);
  
      void onTextMinus(Tree node, Tree notNode);
  
      void onTextWord(String word);
  
      void onTextPhrase(String phrase);
  }
  