Class PCPath
- java.lang.Object
-
- org.apache.openjpa.kernel.exps.Val
-
- org.apache.openjpa.kernel.exps.CandidatePath
-
- org.apache.openjpa.jdbc.kernel.exps.PCPath
-
public class PCPath extends CandidatePath
A path represents a traversal into fields of a candidate object.- Author:
- Abe White
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
PCPath.PathExpState
Expression state.-
Nested classes/interfaces inherited from class org.apache.openjpa.kernel.exps.CandidatePath
CandidatePath.Traversal
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.String
FALSE
protected static java.lang.String
TRUE
-
Fields inherited from class org.apache.openjpa.kernel.exps.CandidatePath
_actions, _correlationVar
-
Fields inherited from interface org.apache.openjpa.jdbc.kernel.exps.Val
ABS_VAL, ARGS_VAL, CMP_EQUAL, COALESCE_VAL, CONCAT_VAL, FORCE_OUTER, GENERALCASE_VAL, INDEXOF_VAL, JOIN_REL, LENGTH_VAL, LOCATE_VAL, LOWER_VAL, MATH_VAL, NULL_CMP, NULLIF_VAL, SIMPLECASE_VAL, SQRT_VAL, SUBSTRING_VAL, TRIM_VAL, UPPER_VAL, VAL, WHENCONDITION_VAL, WHENSCALAR_VAL
-
-
Constructor Summary
Constructors Constructor Description PCPath(SubQ sub)
Return a path starting from the given subquery.PCPath(ClassMapping type)
Return a path starting with the 'this' ptr.PCPath(ClassMapping candidate, org.apache.openjpa.jdbc.kernel.exps.Variable var)
Return a path starting from the given variable.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addVariableAction(org.apache.openjpa.jdbc.kernel.exps.Variable var)
Set the path as a binding of the given variable.void
appendIndex(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql)
Append the SQL checking the index of this value.void
appendIsEmpty(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql)
Append the SQL testing whether this value is empty to the given buffer.void
appendIsNotEmpty(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql)
Append the SQL testing whether this value is not empty to the given buffer.void
appendIsNotNull(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql)
Append the SQL testing whether this value is not null to the given buffer.void
appendIsNull(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql)
Append the SQL testing whether this value is null to the given buffer.void
appendSize(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql)
Append the SQL checking the size of this value.void
appendTo(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql)
void
appendTo(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql, int index)
Append theindex
th SQL element to the given buffer.void
appendTo(Select sel, ExpState state, SQLBuffer sql, Column col)
void
appendType(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql)
Append the SQL checking the type of this value.void
calculateValue(Select sel, ExpContext ctx, ExpState state, Val other, ExpState otherState)
Calculate and cache the SQL for this value.boolean
equals(java.lang.Object other)
protected java.lang.Object
eval(java.lang.Object candidate, java.lang.Object orig, StoreContext ctx, java.lang.Object[] params)
Return this value for the given candidate.void
get(FieldMetaData field, boolean nullTraversal)
Traverse into the given field of the current object, and update the current object to that field value.void
get(FieldMetaData fmd, XMLMetaData meta)
Traverse into the given field that maps to xml column, and update the current object to that field value.void
get(XMLMetaData meta, java.lang.String name)
Traverse into the gevin xpath name of the current object, and update the current object to that xpath field.ClassMapping
getClassMapping(ExpState state)
Column[]
getColumns(ExpState state)
FieldMapping
getFieldMapping(ExpState state)
int
getId()
void
getKey()
ClassMetaData
getMetaData()
Return any associated persistent type.java.lang.String
getPCPathString()
java.lang.String
getSchemaAlias()
java.lang.Class
getType()
Return the expected type for this value, orObject
if the type is unknown.XMLMetaData
getXmlMapping()
Return the current XPath's xmlmapping metadata.java.lang.String
getXPath()
void
groupBy(Select sel, ExpContext ctx, ExpState state)
Group by this value.int
hashCode()
ExpState
initialize(Select sel, ExpContext ctx, int flags)
Initialize the value.boolean
isKey()
boolean
isSubqueryPath()
boolean
isUnaccessedVariable()
Return true if this is a bound variable that has not been accessed after binding.boolean
isVariable()
Return true if this value is a variable.boolean
isVariablePath()
Return whether this is a path involving a variable.boolean
isXPath()
Return true if this value is an XML Path.FieldMetaData
last()
Return the last field in the path, or null if the path does not not contain a final field.int
length(Select sel, ExpContext ctx, ExpState state)
Return the number of SQL elements in this value.java.lang.Object
load(ExpContext ctx, ExpState state, Result res)
Load the data for this value.void
orderBy(Select sel, ExpContext ctx, ExpState state, boolean asc)
Order by this value.void
select(Select sel, ExpContext ctx, ExpState state, boolean pks)
Select the data for this value.void
selectColumns(Select sel, ExpContext ctx, ExpState state, boolean pks)
Select just the columns for this value.void
setContainsId(java.lang.String id)
If this path is part of a contains clause, then alias it to the proper contains id before initialization.void
setImplicitType(java.lang.Class type)
Set the implicit type of the value, based on how it is used in the filter.void
setMetaData(ClassMetaData meta)
Associate a persistent type with this value.void
setSchemaAlias(java.lang.String schemaAlias)
Set the schema alias (the identification variable) this path is begin with.void
setSubqueryContext(Context context, java.lang.String correlationVar)
java.lang.Object
toDataStoreValue(Select sel, ExpContext ctx, ExpState state, java.lang.Object val)
Return the datastore value of the given object in the context of this value.void
verifyIndexedField()
-
Methods inherited from class org.apache.openjpa.kernel.exps.CandidatePath
castTo, getCandidateType, getCorrelationVar
-
Methods inherited from class org.apache.openjpa.kernel.exps.Val
acceptVisit, eval, evaluate, evaluate, getAlias, getName, getPath, getSelectAs, isAggregate, setAlias
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.openjpa.kernel.exps.Path
getCorrelationVar
-
Methods inherited from interface org.apache.openjpa.jdbc.kernel.exps.Val
getSelectAs
-
Methods inherited from interface org.apache.openjpa.kernel.exps.Value
acceptVisit, getAlias, getName, getPath, isAggregate, setAlias
-
-
-
-
Field Detail
-
TRUE
protected static final java.lang.String TRUE
- See Also:
- Constant Field Values
-
FALSE
protected static final java.lang.String FALSE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
PCPath
public PCPath(ClassMapping type)
Return a path starting with the 'this' ptr.
-
PCPath
public PCPath(ClassMapping candidate, org.apache.openjpa.jdbc.kernel.exps.Variable var)
Return a path starting from the given variable.
-
PCPath
public PCPath(SubQ sub)
Return a path starting from the given subquery.
-
-
Method Detail
-
setSchemaAlias
public void setSchemaAlias(java.lang.String schemaAlias)
Description copied from interface:Path
Set the schema alias (the identification variable) this path is begin with.- Specified by:
setSchemaAlias
in interfacePath
- Overrides:
setSchemaAlias
in classCandidatePath
-
getSchemaAlias
public java.lang.String getSchemaAlias()
- Specified by:
getSchemaAlias
in interfacePath
- Overrides:
getSchemaAlias
in classCandidatePath
-
setSubqueryContext
public void setSubqueryContext(Context context, java.lang.String correlationVar)
- Specified by:
setSubqueryContext
in interfacePath
- Overrides:
setSubqueryContext
in classCandidatePath
-
addVariableAction
public void addVariableAction(org.apache.openjpa.jdbc.kernel.exps.Variable var)
Set the path as a binding of the given variable.
-
isUnaccessedVariable
public boolean isUnaccessedVariable()
Return true if this is a bound variable that has not been accessed after binding. Useful for filters like "coll.contains (var) && var == null", which should really just act like "coll.contains (null)".
-
isVariablePath
public boolean isVariablePath()
Return whether this is a path involving a variable.
-
setContainsId
public void setContainsId(java.lang.String id)
If this path is part of a contains clause, then alias it to the proper contains id before initialization.
-
getMetaData
public ClassMetaData getMetaData()
Description copied from interface:Value
Return any associated persistent type.- Specified by:
getMetaData
in interfaceValue
- Overrides:
getMetaData
in classVal
-
setMetaData
public void setMetaData(ClassMetaData meta)
Description copied from interface:Value
Associate a persistent type with this value.- Specified by:
setMetaData
in interfaceValue
- Overrides:
setMetaData
in classVal
-
isKey
public boolean isKey()
-
isXPath
public boolean isXPath()
Description copied from interface:Value
Return true if this value is an XML Path.
-
getXPath
public java.lang.String getXPath()
-
getPCPathString
public java.lang.String getPCPathString()
-
getClassMapping
public ClassMapping getClassMapping(ExpState state)
-
getFieldMapping
public FieldMapping getFieldMapping(ExpState state)
-
isVariable
public boolean isVariable()
Description copied from interface:Value
Return true if this value is a variable.- Specified by:
isVariable
in interfaceValue
- Overrides:
isVariable
in classVal
-
get
public void get(FieldMetaData field, boolean nullTraversal)
Description copied from class:CandidatePath
Traverse into the given field of the current object, and update the current object to that field value.- Specified by:
get
in interfacePath
- Overrides:
get
in classCandidatePath
nullTraversal
- if true, allow traversal through a null field
-
get
public void get(FieldMetaData fmd, XMLMetaData meta)
Description copied from interface:Path
Traverse into the given field that maps to xml column, and update the current object to that field value.- Specified by:
get
in interfacePath
- Overrides:
get
in classCandidatePath
- Parameters:
fmd
- field maps to xml columnmeta
- associated xml mapping
-
get
public void get(XMLMetaData meta, java.lang.String name)
Description copied from interface:Path
Traverse into the gevin xpath name of the current object, and update the current object to that xpath field.- Specified by:
get
in interfacePath
- Overrides:
get
in classCandidatePath
-
getXmlMapping
public XMLMetaData getXmlMapping()
Description copied from interface:Path
Return the current XPath's xmlmapping metadata.- Specified by:
getXmlMapping
in interfacePath
- Overrides:
getXmlMapping
in classCandidatePath
- Returns:
- Return xmlmapping
-
getKey
public void getKey()
-
last
public FieldMetaData last()
Description copied from interface:Path
Return the last field in the path, or null if the path does not not contain a final field.- Specified by:
last
in interfacePath
- Overrides:
last
in classCandidatePath
-
getType
public java.lang.Class getType()
Description copied from interface:Value
Return the expected type for this value, orObject
if the type is unknown.- Specified by:
getType
in interfaceValue
- Overrides:
getType
in classCandidatePath
-
setImplicitType
public void setImplicitType(java.lang.Class type)
Description copied from interface:Value
Set the implicit type of the value, based on how it is used in the filter. This method is only called on values who returnObject
fromValue.getType()
.- Specified by:
setImplicitType
in interfaceValue
- Overrides:
setImplicitType
in classCandidatePath
-
initialize
public ExpState initialize(Select sel, ExpContext ctx, int flags)
Description copied from interface:Val
Initialize the value. This method should recursively initialize any sub-values.- Specified by:
initialize
in interfaceVal
-
eval
protected java.lang.Object eval(java.lang.Object candidate, java.lang.Object orig, StoreContext ctx, java.lang.Object[] params)
Description copied from class:Val
Return this value for the given candidate.- Overrides:
eval
in classCandidatePath
-
toDataStoreValue
public java.lang.Object toDataStoreValue(Select sel, ExpContext ctx, ExpState state, java.lang.Object val)
Description copied from interface:Val
Return the datastore value of the given object in the context of this value.- Specified by:
toDataStoreValue
in interfaceVal
-
select
public void select(Select sel, ExpContext ctx, ExpState state, boolean pks)
Description copied from interface:Val
Select the data for this value.
-
selectColumns
public void selectColumns(Select sel, ExpContext ctx, ExpState state, boolean pks)
Description copied from interface:Val
Select just the columns for this value.- Specified by:
selectColumns
in interfaceVal
-
groupBy
public void groupBy(Select sel, ExpContext ctx, ExpState state)
Description copied from interface:Val
Group by this value.
-
orderBy
public void orderBy(Select sel, ExpContext ctx, ExpState state, boolean asc)
Description copied from interface:Val
Order by this value.
-
load
public java.lang.Object load(ExpContext ctx, ExpState state, Result res) throws java.sql.SQLException
Description copied from interface:Val
Load the data for this value.
-
calculateValue
public void calculateValue(Select sel, ExpContext ctx, ExpState state, Val other, ExpState otherState)
Description copied from interface:Val
Calculate and cache the SQL for this value. This method is called beforelength
or anyappend
methods.- Specified by:
calculateValue
in interfaceVal
other
- the value being compared to, or null if not a comparison
-
verifyIndexedField
public void verifyIndexedField()
-
length
public int length(Select sel, ExpContext ctx, ExpState state)
Description copied from interface:Val
Return the number of SQL elements in this value.
-
appendTo
public void appendTo(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql)
-
appendTo
public void appendTo(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql, int index)
Description copied from interface:Val
Append theindex
th SQL element to the given buffer.
-
appendIsEmpty
public void appendIsEmpty(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql)
Description copied from interface:Val
Append the SQL testing whether this value is empty to the given buffer.- Specified by:
appendIsEmpty
in interfaceVal
-
appendIsNotEmpty
public void appendIsNotEmpty(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql)
Description copied from interface:Val
Append the SQL testing whether this value is not empty to the given buffer.- Specified by:
appendIsNotEmpty
in interfaceVal
-
appendIndex
public void appendIndex(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql)
Description copied from interface:Val
Append the SQL checking the index of this value.- Specified by:
appendIndex
in interfaceVal
-
appendType
public void appendType(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql)
Description copied from interface:Val
Append the SQL checking the type of this value.- Specified by:
appendType
in interfaceVal
-
appendSize
public void appendSize(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql)
Description copied from interface:Val
Append the SQL checking the size of this value.- Specified by:
appendSize
in interfaceVal
-
appendIsNull
public void appendIsNull(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql)
Description copied from interface:Val
Append the SQL testing whether this value is null to the given buffer.- Specified by:
appendIsNull
in interfaceVal
-
appendIsNotNull
public void appendIsNotNull(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql)
Description copied from interface:Val
Append the SQL testing whether this value is not null to the given buffer.- Specified by:
appendIsNotNull
in interfaceVal
-
isSubqueryPath
public boolean isSubqueryPath()
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classCandidatePath
-
equals
public boolean equals(java.lang.Object other)
- Overrides:
equals
in classCandidatePath
-
-