Package org.apache.cayenne.exp
Class Expression
java.lang.Object
org.apache.cayenne.exp.Expression
- All Implemented Interfaces:
- Serializable,- XMLSerializable
- Direct Known Subclasses:
- SimpleNode
public abstract class Expression extends Object implements Serializable, XMLSerializable
Superclass of Cayenne expressions that defines basic API for expressions use.
- See Also:
- Serialized Form
- 
Field SummaryFields Modifier and Type Field Description static intADDstatic intANDstatic intASTERISKstatic intBETWEENstatic intBITWISE_ANDstatic intBITWISE_LEFT_SHIFTstatic intBITWISE_NOTstatic intBITWISE_ORstatic intBITWISE_RIGHT_SHIFTstatic intBITWISE_XORstatic intDB_PATHExpression describes a path relative to a DbEntity.static intDIVIDEstatic intEQUAL_TOstatic intFALSEstatic intFULL_OBJECTstatic intFUNCTION_CALLstatic intGREATER_THANstatic intGREATER_THAN_EQUAL_TOstatic intINstatic intLESS_THANstatic intLESS_THAN_EQUAL_TOstatic intLIKEstatic intLIKE_IGNORE_CASEstatic intLISTInterpreted as a comma-separated list of literals.static intMULTIPLYstatic intNEGATIVEstatic intNOTstatic intNOT_BETWEENstatic intNOT_EQUAL_TOstatic intNOT_INstatic intNOT_LIKEstatic intNOT_LIKE_IGNORE_CASEstatic intOBJ_PATHExpression describes a path relative to an ObjEntity.static intORstatic ObjectPRUNED_NODEA value that a Transformer might return to indicate that a node has to be pruned from the expression during the transformation.static intSUBTRACTstatic intTRUEprotected inttype
- 
Constructor SummaryConstructors Constructor Description Expression()
- 
Method SummaryModifier and Type Method Description ExpressionandExp(Expression exp)Chains this expression with another expression using "and".ExpressionandExp(Expression exp, Expression... expressions)Chains this expression with other expressions using "and".voidappendAsEJBQL(Appendable out, String rootId)Stores a String representation of Expression as EJBQL using a provided Appendable.abstract voidappendAsEJBQL(List<Object> parameterAccumulator, Appendable out, String rootId)Stores a String representation of Expression as EJBQL using a provided PrintWriter.abstract voidappendAsString(Appendable out)Appends own content as a String to the provided Appendable.ExpressiondeepCopy()Clones this expression.voidencodeAsXML(XMLEncoder encoder, ConfigurationNodeVisitor delegate)Encodes itself, wrapping the string into XML CDATA section.booleanequals(Object object)abstract Objectevaluate(Object o)Calculates expression value with object as a context for path expressions.StringexpName()Returns String label for this expression.<T> Collection<?>filter(Collection<T> source, Collection<T> target)Adds objects matching this expression from the source collection to the target collection.<T> List<T>filterObjects(Collection<T> objects)Returns a list of objects that match the expression.<T> Tfirst(List<T> objects)Returns the first object in the list that matches the expression.protected abstract voidflattenTree()Restructures expression to make sure that there are no children of the same type as this expression.abstract ObjectgetOperand(int index)Returns a value of operand atindex.abstract intgetOperandCount()Returns a count of operands of this expression.abstract Map<String,String>getPathAliases()Returns a map of path aliases for this expression.intgetType()Returns a type of expression.inthashCode()ExpressionjoinExp(int type, Expression exp)Creates a new expression that joins this object with another expression, using specified join type.ExpressionjoinExp(int type, Expression exp, Expression... expressions)Creates a new expression that joins this object with other expressions, using specified join type.booleanmatch(Object o)Calculates expression boolean value with object as a context for path expressions.abstract ExpressionnotExp()Returns a logical NOT of current expression.ExpressionorExp(Expression exp)Chains this expression with another expression using "or".ExpressionorExp(Expression exp, Expression... expressions)Chains this expression with other expressions using "or".Expressionparams(Map<String,?> parameters)Creates and returns a new Expression instance based on this expression, but with named parameters substituted with provided values.Expressionparams(Map<String,?> parameters, boolean pruneMissing)Creates and returns a new Expression instance based on this expression, but with named parameters substituted with provided values.If any subexpressions containing parameters not matching the "name" argument are found, the behavior depends on "pruneMissing" argument.ExpressionparamsArray(Object... parameters)Creates and returns a new Expression instance based on this expression, but with parameters substituted with provided values.protected abstract booleanpruneNodeForPrunedChild(Object prunedChild)Returns true if this node should be pruned from expression tree in the event a child is removed.abstract voidsetOperand(int index, Object value)Sets a value of operand atindex.voidsetType(int type)abstract ExpressionshallowCopy()Creates a copy of this expression node, without copying children.StringtoEJBQL(String rootId)Produces an EJBQL string that represents this expression.StringtoEJBQL(List<Object> parameterAccumulator, String rootId)Produces an EJBQL string that represents this expression.StringtoString()Expressiontransform(Function<Object,Object> transformer)Creates a transformed copy of this expression, applying transformation provided by Transformer to all its nodes.protected ObjecttransformExpression(Function<Object,Object> transformer)A recursive method called from "transform" to do the actual transformation.protected voidtraverse(Expression parentExp, TraversalHandler visitor)Traverses itself and child expressions, notifying visitor via callback methods as it goes.voidtraverse(TraversalHandler visitor)Traverses itself and child expressions, notifying visitor via callback methods as it goes.
- 
Field Details- 
PRUNED_NODEA value that a Transformer might return to indicate that a node has to be pruned from the expression during the transformation.- Since:
- 1.2
 
- 
ANDpublic static final int AND- See Also:
- Constant Field Values
 
- 
ORpublic static final int OR- See Also:
- Constant Field Values
 
- 
NOTpublic static final int NOT- See Also:
- Constant Field Values
 
- 
EQUAL_TOpublic static final int EQUAL_TO- See Also:
- Constant Field Values
 
- 
NOT_EQUAL_TOpublic static final int NOT_EQUAL_TO- See Also:
- Constant Field Values
 
- 
LESS_THANpublic static final int LESS_THAN- See Also:
- Constant Field Values
 
- 
GREATER_THANpublic static final int GREATER_THAN- See Also:
- Constant Field Values
 
- 
LESS_THAN_EQUAL_TOpublic static final int LESS_THAN_EQUAL_TO- See Also:
- Constant Field Values
 
- 
GREATER_THAN_EQUAL_TOpublic static final int GREATER_THAN_EQUAL_TO- See Also:
- Constant Field Values
 
- 
BETWEENpublic static final int BETWEEN- See Also:
- Constant Field Values
 
- 
INpublic static final int IN- See Also:
- Constant Field Values
 
- 
LIKEpublic static final int LIKE- See Also:
- Constant Field Values
 
- 
LIKE_IGNORE_CASEpublic static final int LIKE_IGNORE_CASE- See Also:
- Constant Field Values
 
- 
ADDpublic static final int ADD- See Also:
- Constant Field Values
 
- 
SUBTRACTpublic static final int SUBTRACT- See Also:
- Constant Field Values
 
- 
MULTIPLYpublic static final int MULTIPLY- See Also:
- Constant Field Values
 
- 
DIVIDEpublic static final int DIVIDE- See Also:
- Constant Field Values
 
- 
NEGATIVEpublic static final int NEGATIVE- See Also:
- Constant Field Values
 
- 
TRUEpublic static final int TRUE- See Also:
- Constant Field Values
 
- 
FALSEpublic static final int FALSE- See Also:
- Constant Field Values
 
- 
OBJ_PATHpublic static final int OBJ_PATHExpression describes a path relative to an ObjEntity. OBJ_PATH expression is resolved relative to some root ObjEntity. Path expression components are separated by "." (dot). Path can point to either one of these:- An attribute of root ObjEntity. For entity Gallery OBJ_PATH expression "galleryName" will point to ObjAttribute "galleryName"
- Another ObjEntity related to root ObjEntity via a chain of relationships. For entity Gallery OBJ_PATH expression "paintingArray.toArtist" will point to ObjEntity "Artist"
- ObjAttribute of another ObjEntity related to root ObjEntity via a chain of relationships. For entity Gallery OBJ_PATH expression "paintingArray.toArtist.artistName" will point to ObjAttribute "artistName"
 - See Also:
- Constant Field Values
 
- 
DB_PATHpublic static final int DB_PATHExpression describes a path relative to a DbEntity. DB_PATH expression is resolved relative to some root DbEntity. Path expression components are separated by "." (dot). Path can point to either one of these:- An attribute of root DbEntity. For entity GALLERY, DB_PATH expression "GALLERY_NAME" will point to a DbAttribute "GALLERY_NAME".
- Another DbEntity related to root DbEntity via a chain of relationships. For entity GALLERY DB_PATH expression "paintingArray.toArtist" will point to DbEntity "ARTIST".
- DbAttribute of another ObjEntity related to root DbEntity via a chain of relationships. For entity GALLERY DB_PATH expression "paintingArray.toArtist.ARTIST_NAME" will point to DbAttribute "ARTIST_NAME".
 - See Also:
- Constant Field Values
 
- 
LISTpublic static final int LISTInterpreted as a comma-separated list of literals.- See Also:
- Constant Field Values
 
- 
NOT_BETWEENpublic static final int NOT_BETWEEN- See Also:
- Constant Field Values
 
- 
NOT_INpublic static final int NOT_IN- See Also:
- Constant Field Values
 
- 
NOT_LIKEpublic static final int NOT_LIKE- See Also:
- Constant Field Values
 
- 
NOT_LIKE_IGNORE_CASEpublic static final int NOT_LIKE_IGNORE_CASE- See Also:
- Constant Field Values
 
- 
BITWISE_NOTpublic static final int BITWISE_NOT- Since:
- 3.1
- See Also:
- Constant Field Values
 
- 
BITWISE_ANDpublic static final int BITWISE_AND- Since:
- 3.1
- See Also:
- Constant Field Values
 
- 
BITWISE_ORpublic static final int BITWISE_OR- Since:
- 3.1
- See Also:
- Constant Field Values
 
- 
BITWISE_XORpublic static final int BITWISE_XOR- Since:
- 3.1
- See Also:
- Constant Field Values
 
- 
BITWISE_LEFT_SHIFTpublic static final int BITWISE_LEFT_SHIFT- Since:
- 4.0
- See Also:
- Constant Field Values
 
- 
BITWISE_RIGHT_SHIFTpublic static final int BITWISE_RIGHT_SHIFT- Since:
- 4.0
- See Also:
- Constant Field Values
 
- 
FUNCTION_CALLpublic static final int FUNCTION_CALL- Since:
- 4.0
- See Also:
- Constant Field Values
 
- 
ASTERISKpublic static final int ASTERISK- Since:
- 4.0
- See Also:
- Constant Field Values
 
- 
FULL_OBJECTpublic static final int FULL_OBJECT- Since:
- 4.0
- See Also:
- Constant Field Values
 
- 
typeprotected int type
 
- 
- 
Constructor Details- 
Expressionpublic Expression()
 
- 
- 
Method Details- 
getPathAliasesReturns a map of path aliases for this expression. It returns a non-empty map only if this is a path expression and the aliases are known at the expression creation time. Otherwise an empty map is returned.- Since:
- 3.0
 
- 
expNameReturns String label for this expression. Used for debugging.
- 
equals
- 
hashCodepublic int hashCode()
- 
getTypepublic int getType()Returns a type of expression. Most common types are defined as public static fields of this interface.
- 
setTypepublic void setType(int type)
- 
paramsArrayCreates and returns a new Expression instance based on this expression, but with parameters substituted with provided values. This is a positional style of binding. If a given parameter name is used more than once, only the first occurrence is treated as "position", subsequent occurrences are bound with the same value as the first one. If expression parameters count is different from the array parameter count, an exception will be thrown.positional style would not allow subexpression pruning. - Since:
- 4.0
 
- 
paramsCreates and returns a new Expression instance based on this expression, but with named parameters substituted with provided values. Any subexpressions containing parameters not matching the "name" argument will be pruned.Note that if you want matching against nulls to be preserved, you must place NULL values for the corresponding keys in the map. - Since:
- 4.0
 
- 
paramsCreates and returns a new Expression instance based on this expression, but with named parameters substituted with provided values.If any subexpressions containing parameters not matching the "name" argument are found, the behavior depends on "pruneMissing" argument. If it is false an Exception will be thrown, otherwise subexpressions with missing parameters will be pruned from the resulting expression.Note that if you want matching against nulls to be preserved, you must place NULL values for the corresponding keys in the map. - Since:
- 4.0
 
- 
joinExpCreates a new expression that joins this object with another expression, using specified join type. It is very useful for incrementally building chained expressions, like long AND or OR statements.
- 
joinExpCreates a new expression that joins this object with other expressions, using specified join type. It is very useful for incrementally building chained expressions, like long AND or OR statements.- Since:
- 4.0
 
- 
andExpChains this expression with another expression using "and".
- 
andExpChains this expression with other expressions using "and".- Since:
- 4.0
 
- 
orExpChains this expression with another expression using "or".
- 
orExpChains this expression with other expressions using "or".- Since:
- 4.0
 
- 
notExpReturns a logical NOT of current expression.- Since:
- 1.0.6
 
- 
getOperandCountpublic abstract int getOperandCount()Returns a count of operands of this expression. In real life there are unary (count == 1), binary (count == 2) and ternary (count == 3) expressions.
- 
getOperandReturns a value of operand atindex. Operand indexing starts at 0.
- 
setOperandSets a value of operand atindex. Operand indexing starts at 0.
- 
evaluateCalculates expression value with object as a context for path expressions.- Since:
- 1.1
 
- 
matchCalculates expression boolean value with object as a context for path expressions.- Since:
- 1.1
 
- 
firstReturns the first object in the list that matches the expression.- Since:
- 3.1
 
- 
filterObjectsReturns a list of objects that match the expression.
- 
filterAdds objects matching this expression from the source collection to the target collection.- Since:
- 1.1
 
- 
deepCopyClones this expression.- Since:
- 1.1
 
- 
shallowCopyCreates a copy of this expression node, without copying children.- Since:
- 1.1
 
- 
pruneNodeForPrunedChildReturns true if this node should be pruned from expression tree in the event a child is removed.- Since:
- 1.1
 
- 
flattenTreeprotected abstract void flattenTree()Restructures expression to make sure that there are no children of the same type as this expression.- Since:
- 1.1
 
- 
traverseTraverses itself and child expressions, notifying visitor via callback methods as it goes. This is an Expression-specific implementation of the "Visitor" design pattern.- Since:
- 1.1
 
- 
traverseTraverses itself and child expressions, notifying visitor via callback methods as it goes.- Since:
- 1.1
 
- 
transformCreates a transformed copy of this expression, applying transformation provided by Transformer to all its nodes. Null transformer will result in an identical deep copy of this expression.To force a node and its children to be pruned from the copy, Transformer should return Expression.PRUNED_NODE. Otherwise an expectation is that if a node is an Expression it must be transformed to null or another Expression. Any other object type would result in a ExpressionException. - Since:
- 1.1
 
- 
transformExpressionA recursive method called from "transform" to do the actual transformation.- Returns:
- null, Expression.PRUNED_NODE or transformed expression.
- Since:
- 1.2
 
- 
encodeAsXMLEncodes itself, wrapping the string into XML CDATA section.- Specified by:
- encodeAsXMLin interface- XMLSerializable
- Since:
- 1.1
 
- 
appendAsStringAppends own content as a String to the provided Appendable.- Throws:
- IOException
- Since:
- 4.0
 
- 
appendAsEJBQLStores a String representation of Expression as EJBQL using a provided Appendable. DB path expressions produce non-standard EJBQL path expressions.- Throws:
- IOException
- Since:
- 4.0
 
- 
appendAsEJBQLpublic abstract void appendAsEJBQL(List<Object> parameterAccumulator, Appendable out, String rootId) throws IOExceptionStores a String representation of Expression as EJBQL using a provided PrintWriter. DB path expressions produce non-standard EJBQL path expressions. If the parameterAccumulator is supplied then as the EJBQL is output, it may load parameters into this list. In this case, the EJBQL output will contain reference to positional parameters. If no parameterAccumulator is supplied and a scalar type is encountered for which there is no EJBQL literal representation (such as dates) then this method will throw a runtime exception to indicate that it was not possible to generate a string-only representation of the Expression in EJBQL.- Throws:
- IOException
- Since:
- 4.0
 
- 
toString
- 
toEJBQLProduces an EJBQL string that represents this expression. If the parameterAccumulator is supplied then, where appropriate, parameters to the EJBQL may be written into the parameterAccumulator. If this method encounters a scalar type which is not able to be represented as an EJBQL literal then this method will throw a runtime exception to indicate that it was not possible to generate a string-only representation of the Expression as EJBQL.- Since:
- 3.1
 
- 
toEJBQLProduces an EJBQL string that represents this expression. If this method encounters a scalar type which is not able to be represented as an EJBQL literal then this method will throw a runtime exception.- Since:
- 3.0
 
 
-