Class PCPath

All Implemented Interfaces:
Serializable, Val, Path, Value

public class PCPath extends CandidatePath
A path represents a traversal into fields of a candidate object.
Author:
Abe White
See Also:
  • Field Details

  • Constructor Details

    • 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 Details

    • 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(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(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()
    • 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
    • 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