Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.openjpa.kernel.jpql
Class JPQLExpressionBuilder

    java.lang.Object
      org.apache.openjpa.kernel.exps.AbstractExpressionBuilder
          org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder

All Implemented Interfaces:
  org.apache.openjpa.kernel.jpql.JPQLTreeConstants

    public class JPQLExpressionBuilder

extends AbstractExpressionBuilder
implements org.apache.openjpa.kernel.jpql.JPQLTreeConstants

Builder for JPQL expressions. This class takes the query parsed in `JPQLExpressionBuilder.ParsedJPQL` and converts it to an expression tree using an `ExpressionFactory`. Public for unit testing purposes.

Author:
  Marc Prud'hommeaux, Patrick Linskey

Nested Class Summary
`protected static class` | `JPQLExpressionBuilder.JPQLNode` Base node that will be generated by the JPQLExpressionBuilder; base class of the `SimpleNode` that is used by `JPQLExpressionBuilder.ParsedJPQL`.
`static class` | `JPQLExpressionBuilder.ParsedJPQL` Public for unit testing purposes.

Field Summary

Fields inherited from class org.apache.openjpa.kernel.exps.AbstractExpressionBuilder
`CONTAINS_TYPE_ELEMENT, CONTAINS_TYPE_KEY, CONTAINS_TYPE_VALUE, EX_FATAL, EX_UNSUPPORTED, EX_USER, factory, resolver, TYPE_CHAR_OBJ, TYPE_COLLECTION, TYPE_MAP, TYPE_NUMBER, TYPE_OBJECT, TYPE_STRING`

Fields inherited from interface org.apache.openjpa.kernel.jpql.JPQLTreeConstants
`JJTABS, JJTABSTRACTSCHEMANAME, JJTADD, JJTAGGREGATE, JJTALL, JJTAND, JJTANY, JJTASCENDING, JJTAVERAGE, JJTBETWEEN, JJTBOOLEANLITERAL, JJTCASE, JJTCLASSNAME, JJTCOALESCE, JJTCOLLECTIONPARAMETER, JJTCONCAT, JJTCONSTRUCTOR, JJTCONSTRUCTORPARAM, JJTCONSTRUCTORPARAMS, JJTCOUNT, JJTCURRENTDATE, JJTCURRENTTIME, JJTCURRENTTIMESTAMP, JJTDATELITERAL, JJTDECIMALLITERAL, JJTDELETE, JJTDESCENDING, JJTDISTINCT, JJTDISTINCTPATH, JJTDIVIDE, JJTENTRY, JJTEQUALS, JJTESCAPECHARACTER, JJTEXISTS, JJTFROM, JJTFROMITEM, JJTGENERALCASE, JJTGENERALIDENTIFIER, JJTGREATEROREQUAL, JJTGREATERTHAN, JJTGROUPBY, JJTGROUPBYEXTENSION, JJTHAVING, JJTIDENTIFICATIONVARIABLE, JJTIDENTIFIER, JJTIN, JJTINDEX, JJTINNERFETCHJOIN, JJTINNERJOIN, JJTINTEGERLITERAL, JJTISEMPTY, JJTISNULL, JJTKEY, JJTLENGTH, JJTLESSOREQUAL, JJTLESSTHAN, JJTLIKE, JJTLOCATE, JJTLOWER, JJTMAX, JJTMEMBEROF, JJTMIN, JJTMOD, JJTMULTIPLY, JJTNAMEDINPUTPARAMETER, JJTNEGATIVE, jjtNodeName, JJTNOT, JJTNOTEQUALS, JJTNULLIF, JJTOR, JJTORDERBY, JJTORDERBYEXTENSION, JJTORDERBYITEM, JJTOUTERFETCHJOIN, JJTOUTERJOIN, JJTPATH, JJTPATTERNVALUE, JJTPOSITIONALINPUTPARAMETER, JJTQUALIFIEDIDENTIFIER, JJTQUALIFIEDPATH, JJTSCALAREXPRESSION, JJTSELECT, JJTSELECTCLAUSE, JJTSELECTEXPRESSION, JJTSELECTEXPRESSIONS, JJTSELECTEXTENSION, JJTSIMPLECASE, JJTSIZE, JJTSQRT, JJTSTRINGLITERAL, JJTSTRINGLITERAL2, JJTSUBSELECT, JJTSUBSTRING, JJTSUBTRACT, JJTSUM, JJTTIMELITERAL, JJTTIMESTAMPLITERAL, JJTTOK, JJTTRIM, JJTTRIMBOTH, JJTTRIMCHARACTER, JJTTRIMLEADING, JJTTRIMTRAILING, JJTTYPE, JJTTYPELITERAL, JJTUPDATE, JJTUPDATEITEM, JJTUPDATEVALUE, JJTUPPER, JJTVALUE, JJTVOID, JJTWHEN, JJTWHENSCALAR, JJTWHERE`

Constructor Summary
`JPQLExpressionBuilder(ExpressionFactory factory, ExpressionStoreQuery query, Object parsedQuery)` Constructor.

Method Summary
`protected void` | `addSchemaToContext(String id, ClassMetaData meta)` Register the schema alias to the current JPQL query context.
`protected void` | `addVariableToContext(String id, Value var)` Register the variable associated with the schema alias (id) to the current JPQL query context.
`static void` | `checkEmbeddable(Value val, String currentQuery)`
`static Value` | `convertSubstringArguments(ExpressionFactory factory, Value val1, Value val2, Value val3)` Converts JPQL substring() function to OpenJPA ExpressionFactory substring() arguments.
`protected String` | `currentQuery()` Returns the current string being parsed; used for error messages.
`protected Expression` | `evalFetchJoins(QueryExpressions exps)`
`protected void` | `evalSetClause(QueryExpressions exps)`
`protected ClassMetaData` | `getCandidateMetaData(JPQLExpressionBuilder.JPQLNode node)`
`protected ClassLoader` | `getClassLoader()` Returns the class loader that should be used for resolving class names (in addition to the resolver in the query).
`protected Class<?>` | `getDeclaredVariableType(String name)` Returns the type of the named variable if it has been declared.
`protected Value` | `getDefinedVariable(String id)`
`protected Localizer` | `getLocalizer()` Used for obtaining the `Localizer` to use for translating error messages.
`protected JPQLExpressionBuilder.ParsedJPQL` | `getParsedQuery()`
`protected JPQLExpressionBuilder.ParsedJPQL` | `getParsedQuery(String jpql)`
`(package private) QueryExpressions` | `getQueryExpressions()`
`protected Value` | `getVariable(String var)` Returns the variable associated with the schema alias (id).
`protected Value` | `getVariable(String id, boolean bind)` Identification variables in JPQL are case insensitive, so lower-case all variables we are going to bind.
`protected boolean` | `isDeclaredVariable(String name)` Returns whether the specified variable name has been explicitly declared.
`(package private) boolean` | `isPath(JPQLExpressionBuilder.JPQLNode node)` Check to see if the specific node is a path (vs.
`protected boolean` | `isSeenVariable(String var)` Return whether the given id has been used as a variable.
`protected ClassMetaData` | `resolveClassMetaData(JPQLExpressionBuilder.JPQLNode node)`
`void` | `setImplicitTypes(Value val1, Value val2, Class<?> expected)` Set the implicit types of the given values based on the fact that they're used together, and based on the operator type.
`static void` | `setImplicitTypes(Value val1, Value val2, Class<?> expected, Resolver resolver, OrderedMap<Object,Class<?>> parameterTypes, String currentQuery)`

Methods inherited from class org.apache.openjpa.kernel.exps.AbstractExpressionBuilder
`addAccessPath, assertUnboundVariablesValid, bind, convertTypes, convertTypesQuotedNumbers, createVariable, getAccessPath, getMetaData, getMetaData, isBound, isNumeric, parseException, setImplicitContainsTypes, setImplicitType, setImplicitTypes, traversePath, traversePath, traverseStaticField, traverseXPath`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.apache.openjpa.kernel.jpql.JPQLTreeConstants
``

Constructor Detail

### JPQLExpressionBuilder

    public JPQLExpressionBuilder(ExpressionFactory factory,
                                 ExpressionStoreQuery query,
                                 Object parsedQuery)

  Constructor.

  Parameters:
    `factory` - the expression factory to use
    `query` - used to resolve variables, parameters, and class names used in the query
    `parsedQuery` - the parsed query

Method Detail

### getLocalizer

    protected Localizer getLocalizer()

  Description copied from class: `AbstractExpressionBuilder`
  Used for obtaining the `Localizer` to use for translating error messages.

  Specified by:
    `getLocalizer` in class `AbstractExpressionBuilder`

### getClassLoader

    protected ClassLoader getClassLoader()

  Description copied from class: `AbstractExpressionBuilder`
  Returns the class loader that should be used for resolving class names (in addition to the resolver in the query).

  Specified by:
    `getClassLoader` in class `AbstractExpressionBuilder`

### getParsedQuery

    protected JPQLExpressionBuilder.ParsedJPQL getParsedQuery()

### getParsedQuery

    protected JPQLExpressionBuilder.ParsedJPQL getParsedQuery(String jpql)

### resolveClassMetaData

    protected ClassMetaData resolveClassMetaData(JPQLExpressionBuilder.JPQLNode node)

### getCandidateMetaData

    protected ClassMetaData getCandidateMetaData(JPQLExpressionBuilder.JPQLNode node)

### currentQuery

    protected String currentQuery()

  Description copied from class: `AbstractExpressionBuilder`
  Returns the current string being parsed; used for error messages.

  Specified by:
    `currentQuery` in class `AbstractExpressionBuilder`

### getQueryExpressions

    QueryExpressions getQueryExpressions()

### evalFetchJoins

    protected Expression evalFetchJoins(QueryExpressions exps)

### evalSetClause

    protected void evalSetClause(QueryExpressions exps)

### isDeclaredVariable

    protected boolean isDeclaredVariable(String name)

  Description copied from class: `AbstractExpressionBuilder`
  Returns whether the specified variable name has been explicitly declared. Note all query languages necessarily support declaring variables.

  Specified by:
    `isDeclaredVariable` in class `AbstractExpressionBuilder`
  Parameters:
    `name` - the variable to check
  Returns:
    true if the variabe has been explicitely declared

### isPath

    boolean isPath(JPQLExpressionBuilder.JPQLNode node)

  Check to see if the specific node is a path (vs. a schema name)

### getVariable

    protected Value getVariable(String id,
                                boolean bind)

  Identification variables in JPQL are case insensitive, so lower-case all variables we are going to bind.

  Overrides:
    `getVariable` in class `AbstractExpressionBuilder`

### getDefinedVariable

    protected Value getDefinedVariable(String id)

### isSeenVariable

    protected boolean isSeenVariable(String var)

  Description copied from class: `AbstractExpressionBuilder`
  Return whether the given id has been used as a variable.

  Overrides:
    `isSeenVariable` in class `AbstractExpressionBuilder`

### checkEmbeddable

    public static void checkEmbeddable(Value val,
                                       String currentQuery)

### convertSubstringArguments

    public static Value convertSubstringArguments(ExpressionFactory factory,
                                                  Value val1,
                                                  Value val2,
                                                  Value val3)

  Converts JPQL substring() function to OpenJPA ExpressionFactory substring() arguments.

  Parameters:
    `val1` - the original String
    `val2` - the 1-based start index as per JPQL substring() semantics
    `val3` - the length of the returned string as per JPQL semantics

### setImplicitTypes

    public void setImplicitTypes(Value val1,
                                 Value val2,
                                 Class<?> expected)

  Description copied from class: `AbstractExpressionBuilder`
  Set the implicit types of the given values based on the fact that they're used together, and based on the operator type.

  Overrides:
    `setImplicitTypes` in class `AbstractExpressionBuilder`

### setImplicitTypes

    public static void setImplicitTypes(Value val1,
                                        Value val2,
                                        Class<?> expected,
                                        Resolver resolver,
                                        OrderedMap<Object,Class<?>> parameterTypes,
                                        String currentQuery)

### getDeclaredVariableType

    protected Class<?> getDeclaredVariableType(String name)

  Description copied from class: `AbstractExpressionBuilder`
  Returns the type of the named variable if it has been declared.

  Specified by:
    `getDeclaredVariableType` in class `AbstractExpressionBuilder`

### addSchemaToContext

    protected void addSchemaToContext(String id,
                                      ClassMetaData meta)

  Description copied from class: `AbstractExpressionBuilder`
  Register the schema alias to the current JPQL query context.

  Specified by:
    `addSchemaToContext` in class `AbstractExpressionBuilder`

### addVariableToContext

    protected void addVariableToContext(String id,
                                        Value var)

  Description copied from class: `AbstractExpressionBuilder`
  Register the variable associated with the schema alias (id) to the current JPQL query context.

  Specified by:
    `addVariableToContext` in class `AbstractExpressionBuilder`

### getVariable

    protected Value getVariable(String var)

  Description copied from class: `AbstractExpressionBuilder`
  Returns the variable associated with the schema alias (id).

  Specified by:
    `getVariable` in class `AbstractExpressionBuilder`
  Returns:

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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