org.apache.cayenne.exp.parser
Class SimpleNode

java.lang.Object
  extended by org.apache.cayenne.exp.Expression
      extended by org.apache.cayenne.exp.parser.SimpleNode
All Implemented Interfaces:
Serializable, Node, XMLSerializable
Direct Known Subclasses:
AggregateConditionNode, ASTAdd, ASTDivide, ASTList, ASTMultiply, ASTNegate, ASTPath, ASTScalar, ASTSubtract, ConditionNode

public abstract class SimpleNode
extends Expression
implements Node

Superclass of AST* expressions that implements Node interface defined by JavaCC framework.

Some parts of the parser are based on OGNL parser, copyright (c) 2002, Drew Davidson and Luke Blanshard.

Since:
1.1
See Also:
Serialized Form

Field Summary
protected  Node[] children
           
protected  int id
           
protected  Node parent
           
 
Fields inherited from class org.apache.cayenne.exp.Expression
ADD, AND, BETWEEN, DB_PATH, DIVIDE, EQUAL_TO, FALSE, GREATER_THAN, GREATER_THAN_EQUAL_TO, IN, LESS_THAN, LESS_THAN_EQUAL_TO, LIKE, LIKE_IGNORE_CASE, LIST, MULTIPLY, NEGATIVE, NOT, NOT_BETWEEN, NOT_EQUAL_TO, NOT_IN, NOT_LIKE, NOT_LIKE_IGNORE_CASE, OBJ_PATH, OR, PRUNED_NODE, SUBTRACT, TRUE, type
 
Constructor Summary
protected SimpleNode(int i)
           
 
Method Summary
protected  void connectChildren()
          Sets the parent to this for all children.
 void encodeAsEJBQL(PrintWriter pw, String rootId)
          Stores a String representation of Expression as EJBQL using a provided PrintWriter.
protected static void encodeAsEscapedString(PrintWriter pw, String source)
          Utility method that prints a string to the provided PrintWriter, escaping special characters.
 void encodeAsString(PrintWriter pw)
          Stores a String representation of Expression using a provided PrintWriter.
protected  void encodeChildrenAsEJBQL(PrintWriter pw, String rootId)
          Encodes child of this node with specified index to EJBQL
protected static void encodeScalarAsString(PrintWriter pw, Object scalar, char quoteChar)
          Utility method that encodes an object that is not an expression Node to String.
 Object evaluate(Object o)
          Calculates expression value with object as a context for path expressions.
protected  Object evaluateChild(int index, Object o)
           
protected abstract  Object evaluateNode(Object o)
          Evaluates itself with object, pushing result on the stack.
 String expName()
          Implemented for backwards compatibility with exp package.
protected  void flattenTree()
          Flattens the tree under this node by eliminating any children that are of the same class as this node and copying their children to this node.
protected  String getEJBQLExpressionOperator(int index)
          Returns operator for ebjql statements, which can differ for Cayenne expression operator
protected abstract  String getExpressionOperator(int index)
           
 Object getOperand(int index)
          Returns a value of operand at index.
 int getOperandCount()
          Returns a count of operands of this expression.
 Map<String,String> getPathAliases()
          Always returns empty map.
 void jjtAddChild(Node n, int i)
          This method tells the node to add its argument to the node's list of children.
 void jjtClose()
          Called after all the child nodes have been added.
 Node jjtGetChild(int i)
          This method returns a child node.
 int jjtGetNumChildren()
          Return the number of children the node has.
 Node jjtGetParent()
           
 void jjtOpen()
          Called after the node has been made the current node.
 void jjtSetParent(Node n)
          This pair of methods are used to inform the node of its parent.
 Expression notExp()
          Returns a logical NOT of current expression.
protected  boolean pruneNodeForPrunedChild(Object prunedChild)
          Returns true if this node should be pruned from expression tree in the event a child is removed.
 void setOperand(int index, Object value)
          Sets a value of operand at index.
protected  Object unwrapChild(Node child)
           
protected  Node wrapChild(Object child)
           
 
Methods inherited from class org.apache.cayenne.exp.Expression
andExp, deepCopy, encodeAsXML, equals, expWithParameters, expWithParameters, filter, filterObjects, fromString, getType, joinExp, match, orExp, setType, shallowCopy, toEJBQL, toString, transform, transformExpression, traverse, traverse
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

parent

protected Node parent

children

protected Node[] children

id

protected int id
Constructor Detail

SimpleNode

protected SimpleNode(int i)
Method Detail

encodeScalarAsString

protected static void encodeScalarAsString(PrintWriter pw,
                                           Object scalar,
                                           char quoteChar)
Utility method that encodes an object that is not an expression Node to String.


encodeAsEscapedString

protected static void encodeAsEscapedString(PrintWriter pw,
                                            String source)
Utility method that prints a string to the provided PrintWriter, escaping special characters.


getPathAliases

public Map<String,String> getPathAliases()
Always returns empty map.

Specified by:
getPathAliases in class Expression
Since:
3.0

getExpressionOperator

protected abstract String getExpressionOperator(int index)

getEJBQLExpressionOperator

protected String getEJBQLExpressionOperator(int index)
Returns operator for ebjql statements, which can differ for Cayenne expression operator


pruneNodeForPrunedChild

protected boolean pruneNodeForPrunedChild(Object prunedChild)
Description copied from class: Expression
Returns true if this node should be pruned from expression tree in the event a child is removed.

Specified by:
pruneNodeForPrunedChild in class Expression

expName

public String expName()
Implemented for backwards compatibility with exp package.

Overrides:
expName in class Expression

flattenTree

protected void flattenTree()
Flattens the tree under this node by eliminating any children that are of the same class as this node and copying their children to this node.

Specified by:
flattenTree in class Expression

encodeAsString

public void encodeAsString(PrintWriter pw)
Description copied from class: Expression
Stores a String representation of Expression using a provided PrintWriter.

Specified by:
encodeAsString in class Expression

getOperand

public Object getOperand(int index)
Description copied from class: Expression
Returns a value of operand at index. Operand indexing starts at 0.

Specified by:
getOperand in class Expression

wrapChild

protected Node wrapChild(Object child)

unwrapChild

protected Object unwrapChild(Node child)

getOperandCount

public int getOperandCount()
Description copied from class: Expression
Returns a count of operands of this expression. In real life there are unary (count == 1), binary (count == 2) and ternary (count == 3) expressions.

Specified by:
getOperandCount in class Expression

setOperand

public void setOperand(int index,
                       Object value)
Description copied from class: Expression
Sets a value of operand at index. Operand indexing starts at 0.

Specified by:
setOperand in class Expression

jjtOpen

public void jjtOpen()
Description copied from interface: Node
Called after the node has been made the current node. It indicates that child nodes can now be added to it.

Specified by:
jjtOpen in interface Node

jjtClose

public void jjtClose()
Description copied from interface: Node
Called after all the child nodes have been added.

Specified by:
jjtClose in interface Node

jjtSetParent

public void jjtSetParent(Node n)
Description copied from interface: Node
This pair of methods are used to inform the node of its parent.

Specified by:
jjtSetParent in interface Node

jjtGetParent

public Node jjtGetParent()
Specified by:
jjtGetParent in interface Node

jjtAddChild

public void jjtAddChild(Node n,
                        int i)
Description copied from interface: Node
This method tells the node to add its argument to the node's list of children.

Specified by:
jjtAddChild in interface Node

jjtGetChild

public Node jjtGetChild(int i)
Description copied from interface: Node
This method returns a child node. The children are numbered from zero, left to right.

Specified by:
jjtGetChild in interface Node

jjtGetNumChildren

public final int jjtGetNumChildren()
Description copied from interface: Node
Return the number of children the node has.

Specified by:
jjtGetNumChildren in interface Node

evaluateNode

protected abstract Object evaluateNode(Object o)
                                throws Exception
Evaluates itself with object, pushing result on the stack.

Throws:
Exception

connectChildren

protected void connectChildren()
Sets the parent to this for all children.

Since:
3.0

evaluateChild

protected Object evaluateChild(int index,
                               Object o)
                        throws Exception
Throws:
Exception

notExp

public Expression notExp()
Description copied from class: Expression
Returns a logical NOT of current expression.

Specified by:
notExp in class Expression

evaluate

public Object evaluate(Object o)
Description copied from class: Expression
Calculates expression value with object as a context for path expressions.

Specified by:
evaluate in class Expression

encodeAsEJBQL

public void encodeAsEJBQL(PrintWriter pw,
                          String rootId)
Description copied from class: Expression
Stores a String representation of Expression as EJBQL using a provided PrintWriter. DB path expressions produce non-standard EJBQL path expressions.

Specified by:
encodeAsEJBQL in class Expression
Since:
3.0

encodeChildrenAsEJBQL

protected void encodeChildrenAsEJBQL(PrintWriter pw,
                                     String rootId)
Encodes child of this node with specified index to EJBQL



Copyright © 2001-2011 Apache Cayenne. All Rights Reserved.