1
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
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 }