summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/schema/parser/ParsedIndexingOp.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main/java/com/yahoo/schema/parser/ParsedIndexingOp.java')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/parser/ParsedIndexingOp.java37
1 files changed, 37 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/parser/ParsedIndexingOp.java b/config-model/src/main/java/com/yahoo/schema/parser/ParsedIndexingOp.java
new file mode 100644
index 00000000000..3a2df2aac4c
--- /dev/null
+++ b/config-model/src/main/java/com/yahoo/schema/parser/ParsedIndexingOp.java
@@ -0,0 +1,37 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.schema.parser;
+
+import com.yahoo.vespa.indexinglanguage.ExpressionSearcher;
+import com.yahoo.vespa.indexinglanguage.expressions.AttributeExpression;
+import com.yahoo.vespa.indexinglanguage.expressions.Expression;
+import com.yahoo.vespa.indexinglanguage.expressions.IndexExpression;
+import com.yahoo.vespa.indexinglanguage.expressions.LowerCaseExpression;
+import com.yahoo.vespa.indexinglanguage.expressions.ScriptExpression;
+import com.yahoo.vespa.indexinglanguage.expressions.SummaryExpression;
+
+/**
+ * This class wraps an indexing script expression, with some helper
+ * methods for extracting information from it
+ * @author arnej27959
+ **/
+class ParsedIndexingOp {
+
+ private final ScriptExpression script;
+
+ ParsedIndexingOp(ScriptExpression script) {
+ this.script = script;
+ }
+
+ ScriptExpression script() { return this.script; }
+
+ public boolean doesAttributing() { return containsExpression(AttributeExpression.class); }
+ public boolean doesIndexing() { return containsExpression(IndexExpression.class); }
+ public boolean doesLowerCasing() { return containsExpression(LowerCaseExpression.class); }
+ public boolean doesSummarying() { return containsExpression(SummaryExpression.class); }
+
+ private <T extends Expression> boolean containsExpression(Class<T> searchFor) {
+ var searcher = new ExpressionSearcher<>(searchFor);
+ var expr = searcher.searchIn(script);
+ return (expr != null);
+ }
+}