summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/querytransform/QueryTreeUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/querytransform/QueryTreeUtil.java')
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/QueryTreeUtil.java35
1 files changed, 35 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/QueryTreeUtil.java b/container-search/src/main/java/com/yahoo/search/querytransform/QueryTreeUtil.java
new file mode 100644
index 00000000000..fb5373d59ea
--- /dev/null
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/QueryTreeUtil.java
@@ -0,0 +1,35 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.search.querytransform;
+
+import com.yahoo.prelude.query.AndItem;
+import com.yahoo.prelude.query.Item;
+import com.yahoo.search.Query;
+import com.yahoo.search.query.QueryTree;
+
+/**
+ * Utility class for manipulating a QueryTree.
+ *
+ * @author <a href="mailto:geirst@yahoo-inc.com">Geir Storli</a>
+ */
+public class QueryTreeUtil {
+
+ static public void andQueryItemWithRoot(Query query, Item item) {
+ andQueryItemWithRoot(query.getModel().getQueryTree(), item);
+ }
+
+ static public void andQueryItemWithRoot(QueryTree tree, Item item) {
+ if (tree.isEmpty()) {
+ tree.setRoot(item);
+ } else {
+ Item oldRoot = tree.getRoot();
+ if (oldRoot.getClass() == AndItem.class) {
+ ((AndItem) oldRoot).addItem(item);
+ } else {
+ AndItem newRoot = new AndItem();
+ newRoot.addItem(oldRoot);
+ newRoot.addItem(item);
+ tree.setRoot(newRoot);
+ }
+ }
+ }
+}