| java.lang.Object org.objectweb.jonas_ejb.lib.EjbqlAbstractVisitor org.objectweb.jonas_ejb.lib.EjbqlQueryFilterVisitor
EjbqlQueryFilterVisitor | public class EjbqlQueryFilterVisitor extends EjbqlAbstractVisitor (Code) | | Implementation of a visitor that creates the filter corresponding
to the WHERE clause.
Created on Sep 6, 2002
author: Christophe Ney [cney@batisseurs.com] : Intial developer author: Helene Joanin: Take into account the following operators author: abs(x), sqrt(x), author: length(str), substring(s, start, length), author: locate(str1, str2), locate(str1, str2, start). author: Helene Joanin: EJBLocalObject as parameter of a EJB-QL query. author: Helene Joanin: Take into account the InExpression (IN operator). author: Helene Joanin: Take into account the IS NULL operator. author: Helene Joanin: Fix a bug in the visitor for ASTIdentificationVariable: author: push a BasicFieldOperand(field) instead of the field itself. author: Helene Joanin: add '.element' to the path for CollectionValuedPathExpression. author: Helene Joanin: Convert IsNull(cmr-field) to Equal(cmr-field, PNameNull). author: Helene Joanin: Take into account the operators: IS EMPTY / IS NOT EMPTY author: Helene Joanin: Take into account the CONCAT operator author: Helene Joanin: Take into account the EJBQL version 2.1 syntax. author: Helene Joanin: Take into account the operator MOD. author: Helene Joanin: Take into account the operator ISNULL with a parameter. |
Method Summary | |
public Expression | getQueryFilter() | public Object | visit(ASTWhereClause node, Object data) | public Object | visit(ASTSingleValuedPathExpression node, Object data) | public Object | visit(ASTCmpPathExpression node, Object data) Push corresponding MedorField to the stack.
cmp_path_expression ::= path
was in initial BNF
cmp_path_expression ::= identification_variable. | public Object | visit(ASTSingleValuedCmrPathExpression node, Object data) Push corresponding MedorField to the stack.
single_valued_cmr_path_expression ::= path
was in initial BNF
single_valued_cmr_path_expression ::= identification_variable. | public Object | visit(ASTCollectionValuedPathExpression node, Object data) Push corresponding MedorField to the stack.
collection_valued_path_expression ::= path
was in initial BNF
collection_valued_path_expression ::= identification_variable. | public Object | visit(ASTConditionalExpression node, Object data) | public Object | visit(ASTConditionalTerm node, Object data) | public Object | visit(ASTConditionalFactor node, Object data) | public Object | visit(ASTBetweenExpression node, Object data) | public Object | visit(ASTInExpression node, Object data) | public Object | visit(ASTLikeExpression node, Object data) | public Object | visit(ASTNullComparisonExpression node, Object data) | public Object | visit(ASTEmptyCollectionComparisonExpression node, Object data) | public Object | visit(ASTCollectionMemberExpression node, Object data) | public Object | visit(ASTComparisonExpression node, Object data) | public Object | visit(ASTArithmeticExpression node, Object data) | public Object | visit(ASTArithmeticTerm node, Object data) | public Object | visit(ASTArithmeticFactor node, Object data) | public Object | visit(ASTStringExpression node, Object data) | public Object | visit(ASTDatetimeExpression node, Object data) | public Object | visit(ASTBooleanExpression node, Object data) | public Object | visit(ASTEntityBeanExpression node, Object data) | public Object | visit(ASTFunctionsReturningStrings node, Object data) | public Object | visit(ASTFunctionsReturningNumerics node, Object data) | public Object | visit(ASTIdentificationVariable node, Object data) Node with value set to identification variable string. | public Object | visit(ASTLiteral node, Object data) | public Object | visit(ASTStringLiteral node, Object data) Node with value set to litteral string. | public Object | visit(ASTArithmeticLiteral node, Object data) | public Object | visit(ASTIntegerLiteral node, Object data) Node with value set to integer litteral arithmetic. | public Object | visit(ASTFloatingPointLiteral node, Object data) Node with value set to integer litteral arithmetic. | public Object | visit(ASTBooleanLiteral node, Object data) Node with value set to litteral boolean. | public Object | visit(ASTInputParameter node, Object data) Node with value set to parameter index (1..n) string. | public Object | visit(ASTPath node, Object data) |
EjbqlQueryFilterVisitor | public EjbqlQueryFilterVisitor(PMapper _mapper, Map _fields, Class[] parameterTypes, ASTEJBQL ejbql, QueryBuilder qb) throws Exception(Code) | | Constructor
Parameters: _mapper - the mapper of each fields.Needed to build the expression for the IsNull with a reference as an operand.This parameter may be null in case of the GenIC phase Parameters: _fields - QueryTreeFields for all defined identifiers and all path expression of the query Parameters: parameterTypes - Type of paramaters of the finder/select method Parameters: ejbql - root of the lexical tree of the query |
getQueryFilter | public Expression getQueryFilter()(Code) | | get the query filter that was built from visiting the syntaxic tree
|
visit | public Object visit(ASTWhereClause node, Object data)(Code) | | If query contains WHERE clause, visit child nodes
where_clause ::= WHERE conditional_expression
|
visit | public Object visit(ASTSingleValuedPathExpression node, Object data)(Code) | | Push corresponding MedorField to the stack.
single_valued_path_expression ::= path
was in initial BNF
single_valued_path_expression ::= cmp_path_expression | single_valued_cmr_path_expression
|
visit | public Object visit(ASTCmpPathExpression node, Object data)(Code) | | Push corresponding MedorField to the stack.
cmp_path_expression ::= path
was in initial BNF
cmp_path_expression ::= identification_variable. [ single_valued_cmr_field. ] * cmp_field
|
visit | public Object visit(ASTSingleValuedCmrPathExpression node, Object data)(Code) | | Push corresponding MedorField to the stack.
single_valued_cmr_path_expression ::= path
was in initial BNF
single_valued_cmr_path_expression ::= identification_variable. [ single_valued_cmr_field. ] * single_valued_cmr_field
|
visit | public Object visit(ASTCollectionValuedPathExpression node, Object data)(Code) | | Push corresponding MedorField to the stack.
collection_valued_path_expression ::= path
was in initial BNF
collection_valued_path_expression ::= identification_variable. [ single_valued_cmr_field. ] *collection_valued_cmr_field
|
visit | public Object visit(ASTConditionalTerm node, Object data)(Code) | | Push corresponding Expression to the stack.
conditional_term ::= conditional_factor [ AND conditional_factor ]*
|
visit | public Object visit(ASTBetweenExpression node, Object data)(Code) | | Push corresponding Expression to the stack.
between_expression ::= arithmetic_expression [ NOT ] BETWEEN arithmetic_expression AND arithmetic_expression
|
visit | public Object visit(ASTInExpression node, Object data)(Code) | | Push corresponding Expression to the stack.
in_expression ::= cmp_path_expression [ NOT ] IN
{literal|input_parameter} [ , {literal|input_parameter} ] * )
|
visit | public Object visit(ASTLikeExpression node, Object data)(Code) | | Push corresponding Expression to the stack.
like_expression ::= cmp_path_expression [ NOT ] LIKE pattern_value
[ ESCAPE escape_character ]
|
visit | public Object visit(ASTEmptyCollectionComparisonExpression node, Object data)(Code) | | Nothing to do:
Already taken into account in EjbqlVariableVisitor at the variables parsing,
so, just push the OP_IGNORE in the stack
empty_collection_comparison_expression ::= collection_valued_path_expression IS [ NOT ] EMPTY
|
visit | public Object visit(ASTCollectionMemberExpression node, Object data)(Code) | | Push corresponding Expression to the stack.
collection_member_expression ::= {single_valued_cmr_path_expression | identification_variable | input_parameter}
[ NOT ] MEMBER [ OF ] collection_valued_path_expression
|
visit | public Object visit(ASTComparisonExpression node, Object data)(Code) | | Push corresponding Expression to the stack.
comparison_expression ::= string_value { = | > | >= | < | <= | <> } string_expression
| boolean_value { = | <>} boolean_expression
| datetime_value { = | > | >= | < | <= | <> } datetime_expression
| entity_bean_value { = | <> } entity_bean_expression
| arithmetic_value { = | > | >= | < | <= | <> } single_value_designator
|
visit | public Object visit(ASTArithmeticTerm node, Object data)(Code) | | Push corresponding Expression to the stack.
arithmetic_term ::= arithmetic_factor [ { * | / } arithmetic_factor ]*
|
visit | public Object visit(ASTFunctionsReturningStrings node, Object data)(Code) | | visit child nodes
Push corresponding Expression to the stack.
functions_returning_strings ::= CONCAT (string_expression, string_expression)
| SUBSTRING (string_expression,arithmetic_expression,arithmetic_expression)
|
visit | public Object visit(ASTFunctionsReturningNumerics node, Object data)(Code) | | visit child nodes
Push corresponding Expression to the stack.
functions_returning_numerics ::= LENGTH (string_expression)
| LOCATE (string_expression, string_expression
[ , arithmetic_expression ] )
| ABS (arithmetic_expression)
| SQRT (arithmetic_expression)
| MOD (arithmetic_expression , arithmetic_expression)
|
visit | public Object visit(ASTLiteral node, Object data)(Code) | | Visit child nodes
literal ::= string_literal | arithmetic_literal | boolean_literal
|
Methods inherited from org.objectweb.jonas_ejb.lib.EjbqlAbstractVisitor | protected String[] basePath(String[] path)(Code)(Java Doc) protected boolean endsWith(String[] path, String suffix)(Code)(Java Doc) protected String mergePath(String[] path, int begin, int length)(Code)(Java Doc) protected String mergePath(String[] path)(Code)(Java Doc) protected String[] splitPath(String path)(Code)(Java Doc) public Object visit(SimpleNode node) throws Exception(Code)(Java Doc) public Object visit(SimpleNode node, Object data)(Code)(Java Doc) public Object visit(ASTEJBQL node, Object data)(Code)(Java Doc) public Object visit(ASTFromClause node, Object data)(Code)(Java Doc) public Object visit(ASTCollectionMemberDeclaration node, Object data)(Code)(Java Doc) public Object visit(ASTRangeVariableDeclaration node, Object data)(Code)(Java Doc) public Object visit(ASTSingleValuedPathExpression node, Object data)(Code)(Java Doc) public Object visit(ASTCmpPathExpression node, Object data)(Code)(Java Doc) public Object visit(ASTSingleValuedCmrPathExpression node, Object data)(Code)(Java Doc) public Object visit(ASTCollectionValuedPathExpression node, Object data)(Code)(Java Doc) public Object visit(ASTSelectClause node, Object data)(Code)(Java Doc) public Object visit(ASTSelectExpression node, Object data)(Code)(Java Doc) public Object visit(ASTAggregateSelectExpression node, Object data)(Code)(Java Doc) public Object visit(ASTOrderByClause node, Object data)(Code)(Java Doc) public Object visit(ASTOrderByItem node, Object data)(Code)(Java Doc) public Object visit(ASTLimitClause node, Object data)(Code)(Java Doc) public Object visit(ASTLimitExpression node, Object data)(Code)(Java Doc) public Object visit(ASTWhereClause node, Object data)(Code)(Java Doc) public Object visit(ASTConditionalExpression node, Object data)(Code)(Java Doc) public Object visit(ASTConditionalTerm node, Object data)(Code)(Java Doc) public Object visit(ASTConditionalFactor node, Object data)(Code)(Java Doc) public Object visit(ASTBetweenExpression node, Object data)(Code)(Java Doc) public Object visit(ASTInExpression node, Object data)(Code)(Java Doc) public Object visit(ASTLikeExpression node, Object data)(Code)(Java Doc) public Object visit(ASTNullComparisonExpression node, Object data)(Code)(Java Doc) public Object visit(ASTEmptyCollectionComparisonExpression node, Object data)(Code)(Java Doc) public Object visit(ASTCollectionMemberExpression node, Object data)(Code)(Java Doc) public Object visit(ASTComparisonExpression node, Object data)(Code)(Java Doc) public Object visit(ASTArithmeticExpression node, Object data)(Code)(Java Doc) public Object visit(ASTIntegerLiteral node, Object data)(Code)(Java Doc) public Object visit(ASTFloatingPointLiteral node, Object data)(Code)(Java Doc) public Object visit(ASTArithmeticTerm node, Object data)(Code)(Java Doc) public Object visit(ASTArithmeticFactor node, Object data)(Code)(Java Doc) public Object visit(ASTStringExpression node, Object data)(Code)(Java Doc) public Object visit(ASTDatetimeExpression node, Object data)(Code)(Java Doc) public Object visit(ASTBooleanExpression node, Object data)(Code)(Java Doc) public Object visit(ASTEntityBeanExpression node, Object data)(Code)(Java Doc) public Object visit(ASTFunctionsReturningStrings node, Object data)(Code)(Java Doc) public Object visit(ASTFunctionsReturningNumerics node, Object data)(Code)(Java Doc) public Object visit(ASTAbstractSchemaName node, Object data)(Code)(Java Doc) public Object visit(ASTIdentificationVariable node, Object data)(Code)(Java Doc) public Object visit(ASTIdentifier node, Object data)(Code)(Java Doc) public Object visit(ASTPath node, Object data)(Code)(Java Doc) public Object visit(ASTLiteral node, Object data)(Code)(Java Doc) public Object visit(ASTStringLiteral node, Object data)(Code)(Java Doc) public Object visit(ASTArithmeticLiteral node, Object data)(Code)(Java Doc) public Object visit(ASTBooleanLiteral node, Object data)(Code)(Java Doc) public Object visit(ASTInputParameter node, Object data)(Code)(Java Doc)
|
|
|