View Javadoc

1   // BSD License (http://www.galagosearch.org/license)
2   
3   package org.galagosearch.core.retrieval.traversal;
4   
5   import java.util.ArrayList;
6   import org.galagosearch.core.retrieval.query.Node;
7   import org.galagosearch.core.retrieval.query.Traversal;
8   
9   /***
10   * Adds a #combine at the top level of the query.
11   * @author trevor
12   */
13  public class AddCombineTraversal implements Traversal {
14      int levels = 0;
15  
16      public void beforeNode(Node object) throws Exception {
17          levels++;
18      }
19  
20      public Node afterNode(Node original) throws Exception {
21          levels--;
22          if (levels > 0) {
23              return original;
24          } else if (!original.getOperator().equals("combine")) {
25              // Only add a combine if the top level operator is not already a combine
26              ArrayList<Node> originalChild = new ArrayList<Node>();
27              originalChild.add(original);
28              return new Node("combine", originalChild);
29          } else {
30              return original;
31          }
32      }
33  }