org.apache.openjpa.jdbc.kernel.exps
Class PCPath

java.lang.Object
  extended by org.apache.openjpa.kernel.exps.Val
      extended by org.apache.openjpa.kernel.exps.CandidatePath
          extended by org.apache.openjpa.jdbc.kernel.exps.PCPath
All Implemented Interfaces:
Serializable, JDBCPath, Val, Path, Value

public class PCPath
extends CandidatePath
implements JDBCPath

A path represents a traversal into fields of a candidate object.

Author:
Abe White
See Also:
Serialized Form

Nested Class Summary
static class PCPath.PathExpState
          Expression state.
 
Nested classes/interfaces inherited from class org.apache.openjpa.kernel.exps.CandidatePath
CandidatePath.Traversal
 
Field Summary
protected static String FALSE
           
protected static 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
PCPath(ClassMapping type)
          Return a path starting with the 'this' ptr.
PCPath(ClassMapping candidate, Variable var)
          Return a path starting from the given variable.
PCPath(SubQ sub)
          Return a path starting from the given subquery.
 
Method Summary
 void addVariableAction(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 the indexth 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(Object other)
           
protected  Object eval(Object candidate, Object orig, StoreContext ctx, 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, 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.
 String getPCPathString()
           
 String getSchemaAlias()
           
 Class getType()
          Return the expected type for this value, or Object if the type is unknown.
 XMLMetaData getXmlMapping()
          Return the current XPath's xmlmapping metadata.
 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.
 Object load(ExpContext ctx, ExpState state, Result res)
          Load the data for this value.
(package private)  Object load(ExpContext ctx, ExpState state, Result res, boolean pks)
           
 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(String id)
          If this path is part of a contains clause, then alias it to the proper contains id before initialization.
 void setImplicitType(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(String schemaAlias)
          Set the schema alias (the identification variable) this path is begin with.
 void setSubqueryContext(Context context, String correlationVar)
           
 Object toDataStoreValue(Select sel, ExpContext ctx, ExpState state, 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 String TRUE
See Also:
Constant Field Values

FALSE

protected static final 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,
              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(String schemaAlias)
Description copied from interface: Path
Set the schema alias (the identification variable) this path is begin with.

Specified by:
setSchemaAlias in interface Path
Overrides:
setSchemaAlias in class CandidatePath

getSchemaAlias

public String getSchemaAlias()
Specified by:
getSchemaAlias in interface Path
Overrides:
getSchemaAlias in class CandidatePath

setSubqueryContext

public void setSubqueryContext(Context context,
                               String correlationVar)
Specified by:
setSubqueryContext in interface Path
Overrides:
setSubqueryContext in class CandidatePath

addVariableAction

public void addVariableAction(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(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 interface Value
Overrides:
getMetaData in class Val

setMetaData

public void setMetaData(ClassMetaData meta)
Description copied from interface: Value
Associate a persistent type with this value.

Specified by:
setMetaData in interface Value
Overrides:
setMetaData in class Val

isKey

public boolean isKey()

isXPath

public boolean isXPath()
Description copied from interface: Value
Return true if this value is an XML Path.

Specified by:
isXPath in interface Value
Overrides:
isXPath in class Val

getXPath

public String getXPath()

getPCPathString

public String getPCPathString()

getClassMapping

public ClassMapping getClassMapping(ExpState state)

getFieldMapping

public FieldMapping getFieldMapping(ExpState state)

getColumns

public Column[] getColumns(ExpState state)

isVariable

public boolean isVariable()
Description copied from interface: Value
Return true if this value is a variable.

Specified by:
isVariable in interface Value
Overrides:
isVariable in class Val

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 interface Path
Overrides:
get in class CandidatePath
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 interface Path
Overrides:
get in class CandidatePath
Parameters:
fmd - field maps to xml column
meta - associated xml mapping

get

public void get(XMLMetaData meta,
                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 interface Path
Overrides:
get in class CandidatePath

getXmlMapping

public XMLMetaData getXmlMapping()
Description copied from interface: Path
Return the current XPath's xmlmapping metadata.

Specified by:
getXmlMapping in interface Path
Overrides:
getXmlMapping in class CandidatePath
Returns:
Return xmlmapping

getKey

public void getKey()
Specified by:
getKey in interface JDBCPath

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 interface Path
Overrides:
last in class CandidatePath

getType

public Class getType()
Description copied from interface: Value
Return the expected type for this value, or Object if the type is unknown.

Specified by:
getType in interface Value
Overrides:
getType in class CandidatePath

setImplicitType

public void setImplicitType(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 return Object from Value.getType().

Specified by:
setImplicitType in interface Value
Overrides:
setImplicitType in class CandidatePath

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 interface Val

eval

protected Object eval(Object candidate,
                      Object orig,
                      StoreContext ctx,
                      Object[] params)
Description copied from class: Val
Return this value for the given candidate.

Overrides:
eval in class CandidatePath

toDataStoreValue

public Object toDataStoreValue(Select sel,
                               ExpContext ctx,
                               ExpState state,
                               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 interface Val

select

public void select(Select sel,
                   ExpContext ctx,
                   ExpState state,
                   boolean pks)
Description copied from interface: Val
Select the data for this value.

Specified by:
select in interface Val

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 interface Val

groupBy

public void groupBy(Select sel,
                    ExpContext ctx,
                    ExpState state)
Description copied from interface: Val
Group by this value.

Specified by:
groupBy in interface Val

orderBy

public void orderBy(Select sel,
                    ExpContext ctx,
                    ExpState state,
                    boolean asc)
Description copied from interface: Val
Order by this value.

Specified by:
orderBy in interface Val

load

public Object load(ExpContext ctx,
                   ExpState state,
                   Result res)
            throws SQLException
Description copied from interface: Val
Load the data for this value.

Specified by:
load in interface Val
Throws:
SQLException

load

Object load(ExpContext ctx,
            ExpState state,
            Result res,
            boolean pks)
      throws SQLException
Throws:
SQLException

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 before length or any append methods.

Specified by:
calculateValue in interface Val
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.

Specified by:
length in interface Val

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 the indexth SQL element to the given buffer.

Specified by:
appendTo in interface Val

appendTo

public void appendTo(Select sel,
                     ExpState state,
                     SQLBuffer sql,
                     Column col)

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 interface Val

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 interface Val

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 interface Val

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 interface Val

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 interface Val

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 interface Val

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 interface Val

isSubqueryPath

public boolean isSubqueryPath()

hashCode

public int hashCode()
Overrides:
hashCode in class CandidatePath

equals

public boolean equals(Object other)
Overrides:
equals in class CandidatePath

getId

public int getId()
Specified by:
getId in interface Val


Copyright © 2006-2012 Apache Software Foundation. All Rights Reserved.