org.apache.accumulo.examples.wikisearch.parser
Class QueryParser

java.lang.Object
  extended by org.apache.accumulo.examples.wikisearch.parser.QueryParser
All Implemented Interfaces:
org.apache.commons.jexl2.parser.ParserVisitor
Direct Known Subclasses:
RangeCalculator

public class QueryParser
extends Object
implements org.apache.commons.jexl2.parser.ParserVisitor

Parses the query for the purposes of extracting terms, operators, and literals for query optimization. This class does not necessarily understand how to parse all of the possible combinations of the JEXL syntax, but that does not mean that the query will not evaluate against the event objects. It means that the unsupported operators will not be parsed and included in the optimization step.


Nested Class Summary
static class QueryParser.QueryTerm
           
 
Field Summary
protected  Set<String> negatedTerms
           
 
Constructor Summary
QueryParser()
           
 
Method Summary
protected  void decodeResults(Object left, Object right, StringBuilder fieldName, org.apache.accumulo.examples.wikisearch.parser.QueryParser.ObjectHolder holder)
           
 void execute(String query)
           
 Set<String> getAndTermsForOptimizer()
           
 org.apache.commons.jexl2.parser.ASTJexlScript getAST()
           
 int getHashValue()
           
 TreeNode getIteratorTree()
           
 Set<String> getNegatedTermsForOptimizer()
           
 Set<String> getOrTermsForOptimizer()
           
 Set<String> getQueryIdentifiers()
           
 Set<Object> getQueryLiterals()
           
 com.google.common.collect.Multimap<String,QueryParser.QueryTerm> getQueryTerms()
           
 Object visit(org.apache.commons.jexl2.parser.ASTAdditiveNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTAdditiveOperator node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTAmbiguous node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTAndNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTArrayAccess node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTArrayLiteral node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTAssignment node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTBitwiseAndNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTBitwiseComplNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTBitwiseOrNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTBitwiseXorNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTBlock node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTConstructorNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTDivNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTEmptyFunction node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTEQNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTERNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTFalseNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTFloatLiteral node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTForeachStatement node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTFunctionNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTGENode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTGTNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTIdentifier node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTIfStatement node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTIntegerLiteral node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTJexlScript node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTLENode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTLTNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTMapEntry node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTMapLiteral node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTMethodNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTModNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTMulNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTNENode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTNotNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTNRNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTNullLiteral node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTOrNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTReference node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTSizeFunction node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTSizeMethod node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTStringLiteral node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTTernaryNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTTrueNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTUnaryMinusNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTWhileStatement node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.SimpleNode node, Object data)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

negatedTerms

protected Set<String> negatedTerms
Constructor Detail

QueryParser

public QueryParser()
Method Detail

execute

public void execute(String query)
             throws org.apache.commons.jexl2.parser.ParseException
Throws:
org.apache.commons.jexl2.parser.ParseException

getHashValue

public int getHashValue()
Returns:
this queries hash value

getIteratorTree

public TreeNode getIteratorTree()

getAST

public org.apache.commons.jexl2.parser.ASTJexlScript getAST()
Returns:
JEXL abstract syntax tree

getNegatedTermsForOptimizer

public Set<String> getNegatedTermsForOptimizer()
Returns:
Set of field names to use in the optimizer for nots. As a general rule none of these terms should be used to find an event and should they should be evaluated on each event after being found.

getAndTermsForOptimizer

public Set<String> getAndTermsForOptimizer()
Returns:
Set of field names to use in the optimizer for ands. As a general rule any one term of an and clause can be used to find associated events.

getOrTermsForOptimizer

public Set<String> getOrTermsForOptimizer()
Returns:
Set of field names to use in the optimizer for ors. As a general rule any terms that are part of an or clause need to be searched to find the associated events.

getQueryLiterals

public Set<Object> getQueryLiterals()
Returns:
String, Integer, and Float literals used in the query.

getQueryIdentifiers

public Set<String> getQueryIdentifiers()
Returns:
Set of all identifiers (field names) in the query.

getQueryTerms

public com.google.common.collect.Multimap<String,QueryParser.QueryTerm> getQueryTerms()
Returns:
map of term (field name) to QueryTerm object

visit

public Object visit(org.apache.commons.jexl2.parser.SimpleNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTJexlScript node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTBlock node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTAmbiguous node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTIfStatement node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTWhileStatement node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTForeachStatement node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTAssignment node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTTernaryNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTOrNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTAndNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTBitwiseOrNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTBitwiseXorNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTBitwiseAndNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTEQNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTNENode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTLTNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTGTNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTLENode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTGENode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTERNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTNRNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTAdditiveNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTAdditiveOperator node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTMulNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTDivNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTModNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTUnaryMinusNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTBitwiseComplNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTNotNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTIdentifier node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTNullLiteral node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTTrueNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTFalseNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTIntegerLiteral node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTFloatLiteral node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTStringLiteral node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTArrayLiteral node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTMapLiteral node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTMapEntry node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTEmptyFunction node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTSizeFunction node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTFunctionNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTMethodNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTSizeMethod node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTConstructorNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTArrayAccess node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

visit

public Object visit(org.apache.commons.jexl2.parser.ASTReference node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor

decodeResults

protected void decodeResults(Object left,
                             Object right,
                             StringBuilder fieldName,
                             org.apache.accumulo.examples.wikisearch.parser.QueryParser.ObjectHolder holder)


Copyright © 2012 The Apache Software Foundation. All Rights Reserved.