FileDocCategorySizeDatePackage
EqualsNode.javaAPI DocGlassfish v2 API4337Tue May 22 16:54:38 BST 2007oracle.toplink.essentials.internal.parsing

EqualsNode

public class EqualsNode extends BinaryOperatorNode
INTERNAL

Purpose: Represent an '=' in EJBQL

Responsibilities:

  • Generate the correct expression for an '=' in EJBQL
author
Jon Driscoll and Joel Lucuik
since
TopLink 4.0

Fields Summary
Constructors Summary
public EqualsNode()
EqualsNode constructor comment.

        super();
    
Methods Summary
public oracle.toplink.essentials.expressions.ExpressiongenerateExpression(oracle.toplink.essentials.internal.parsing.GenerationContext context)
Resolve the expression. The steps are: 1. Set the expressionBuilder for the left and right nodes 2. Generate the expression for the left node 3. Add the .equals to the where clause returned from step 2 4. Generate the expression for the right side and use it as the parameter for the .equals() 5. Return the completed where clause to the caller

        Expression whereClause = getLeft().generateExpression(context);
        whereClause = whereClause.equal(getRight().generateExpression(context));
        return whereClause;
    
public java.lang.StringgetAsString()
INTERNAL Get the string representation of this node.

        return left.getAsString() + " = " + right.getAsString();
    
public voidvalidate(oracle.toplink.essentials.internal.parsing.ParseTreeContext context)
INTERNAL Validate node and calculates its type.

        super.validate(context);
        TypeHelper typeHelper = context.getTypeHelper();
        Object leftType = left.getType();
        Object rightType = right.getType();
        if (typeHelper.isEnumType(leftType) && !typeHelper.isEnumType(rightType)) {
            throw EJBQLException.invalidEnumEqualExpression( 
                context.getQueryInfo(), getLine(), getColumn(), 
                typeHelper.getTypeName(leftType), typeHelper.getTypeName(rightType));
        } else if (typeHelper.isEnumType(rightType) && !typeHelper.isEnumType(leftType)) {
            throw EJBQLException.invalidEnumEqualExpression( 
                context.getQueryInfo(), getLine(), getColumn(),
                typeHelper.getTypeName(rightType), typeHelper.getTypeName(leftType));
        }
                
        setType(typeHelper.getBooleanType());