public abstract class AbstractJPQLQueryHelper
extends java.lang.Object
getResultType()
;getParameterType(String)
.buildContentAssistProposals(int)
.buildBasicRefactoringTool()
provides support for generating the delta of the
refactoring operation through a collection of TextEdit
objects.buildRefactoringTool()
provides support for refactoring the JPQL query through
the editable StateObject
and once all refactoring operations have been executed, the IJPQLQueryFormatter
will
generate a new string representation of the JPQL query.Provisional API: This interface is part of an interim API that is still under development and expected to change significantly before reaching stability. It is available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.
Modifier | Constructor and Description |
---|---|
|
AbstractJPQLQueryHelper(JPQLGrammar jpqlGrammar)
Creates a new
AbstractJPQLQueryHelper . |
protected |
AbstractJPQLQueryHelper(JPQLQueryContext queryContext)
Creates a new
AbstractJPQLQueryHelper . |
Modifier and Type | Method and Description |
---|---|
abstract BasicRefactoringTool |
buildBasicRefactoringTool()
Creates the concrete instance of the tool that can refactor the content of a JPQL query.
|
ContentAssistProposals |
buildContentAssistProposals(int position)
Retrieves the possibles choices that can complete the query from the given position within
the query.
|
ContentAssistProposals |
buildContentAssistProposals(int position,
ContentAssistExtension extension)
Retrieves the possibles choices that can complete the query from the given position within
the query.
|
protected abstract AbstractContentAssistVisitor |
buildContentAssistVisitor(JPQLQueryContext queryContext)
Creates the concrete instance of the content assist visitor that will give the possible
choices based on the position of the cursor within the JPQL query.
|
protected abstract AbstractGrammarValidator |
buildGrammarValidator(JPQLGrammar jpqlGrammar)
Creates the concrete instance of the validator that will grammatically validate the JPQL query.
|
protected abstract JPQLQueryContext |
buildJPQLQueryContext(JPQLGrammar jpqlGrammar)
Creates a context that will be used to store and retrieve information about the JPQL query.
|
protected java.util.Comparator<IType> |
buildNumericTypeComparator()
Creates the
Comparator that can sort ITypes based on the numerical
priority. |
abstract RefactoringTool |
buildRefactoringTool()
Creates the concrete instance of the tool that can refactor the content of a JPQL query.
|
protected abstract AbstractSemanticValidator |
buildSemanticValidator(JPQLQueryContext queryContext)
Creates the concrete instance of the validator that will semantically validate the JPQL query.
|
void |
dispose()
Disposes of the internal data.
|
protected AbstractContentAssistVisitor |
getContentAssistVisitor()
Returns the visitor that can visit a JPQL query and based on the position of the cursor within
the JPQL query and determines the valid proposals.
|
JPQLGrammar |
getGrammar()
Returns the JPQL grammar that will be used to define how to parse a JPQL query.
|
protected AbstractGrammarValidator |
getGrammarValidator() |
JPQLExpression |
getJPQLExpression()
Returns the root of the parsed tree representation of the JPQL query.
|
IType |
getParameterType(java.lang.String parameterName)
Retrieves, if it can be determined, the type of the given input parameter with the given name.
|
java.lang.String |
getParsedJPQLQuery()
Returns the string representation of the parsed tree.
|
IManagedTypeProvider |
getProvider()
Returns the provider for managed types (entities, embeddables, mapped superclasses).
|
IQuery |
getQuery()
Returns the external form representing a named query.
|
JPQLQueryContext |
getQueryContext()
Returns the
JPQLQueryContext that contains information about the JPQL query. |
IType |
getResultType()
Calculates the type of the query result of the JPQL query.
|
protected AbstractSemanticValidator |
getSemanticValidator() |
IType |
getType(java.lang.Class<?> type)
Returns the
IType representing the given Java type. |
TypeHelper |
getTypeHelper()
Returns a helper that gives access to the most common
types . |
ITypeRepository |
getTypeRepository()
Returns the repository that gives access to the application's types.
|
void |
setJPQLExpression(JPQLExpression jpqlExpression)
Sets the parsed tree representation of the JPQL query.
|
void |
setQuery(IQuery query)
Sets the external form of the JPQL query, which will be parsed and information will be
extracted for later access.
|
java.util.List<JPQLQueryProblem> |
validate()
Validates the query by introspecting it grammatically and semantically.
|
void |
validate(Expression expression,
java.util.List<JPQLQueryProblem> problems)
Validates the query by introspecting it grammatically and semantically.
|
java.util.List<JPQLQueryProblem> |
validateGrammar()
Validates the query by only introspecting it grammatically.
|
void |
validateGrammar(Expression expression,
java.util.List<JPQLQueryProblem> problems)
Validates the query by only introspecting it grammatically.
|
java.util.List<JPQLQueryProblem> |
validateSemantic()
Validates the query by only introspecting it semantically.
|
void |
validateSemantic(Expression expression,
java.util.List<JPQLQueryProblem> problems)
Validates the query by only introspecting it semantically.
|
public AbstractJPQLQueryHelper(JPQLGrammar jpqlGrammar)
AbstractJPQLQueryHelper
.jpqlGrammar
- The JPQLGrammar
that will determine how to parse JPQL queriesprotected AbstractJPQLQueryHelper(JPQLQueryContext queryContext)
AbstractJPQLQueryHelper
.queryContext
- The context used to query information about the JPQL queryjava.lang.NullPointerException
- The JPQLQueryContext cannot be null
public abstract BasicRefactoringTool buildBasicRefactoringTool()
RefactoringTool
buildRefactoringTool()
public ContentAssistProposals buildContentAssistProposals(int position)
Note: Disposing of the internal data is not done automatically.
position
- The position within the query for which a list of possible choices are created
for completing the querypublic ContentAssistProposals buildContentAssistProposals(int position, ContentAssistExtension extension)
Note: Disposing of the internal data is not done automatically.
position
- The position within the query for which a list of possible choices are created
for completing the queryextension
- This extension can be used to provide additional information that is outside
the scope of simply providing JPA metadata information, such as table names, column names,
class namesprotected abstract AbstractContentAssistVisitor buildContentAssistVisitor(JPQLQueryContext queryContext)
queryContext
- The context used to query information about the JPQL queryAbstractContentAssistVisitor
protected abstract AbstractGrammarValidator buildGrammarValidator(JPQLGrammar jpqlGrammar)
jpqlGrammar
- The context used to query information about the JPQL queryAbstractGrammarValidator
protected abstract JPQLQueryContext buildJPQLQueryContext(JPQLGrammar jpqlGrammar)
jpqlGrammar
- The JPQL grammar that is required for dictating how the JPQL query will be
parsed. It is also used by validation and by the content assistJPQLQueryContext
protected java.util.Comparator<IType> buildNumericTypeComparator()
Comparator
that can sort ITypes
based on the numerical
priority.NumericTypeComparator
public abstract RefactoringTool buildRefactoringTool()
StateObject
and simply
outputs the result of the refactoring operations, i.e. the updated JPQL query).RefactoringTool
buildBasicRefactoringTool()
protected abstract AbstractSemanticValidator buildSemanticValidator(JPQLQueryContext queryContext)
queryContext
- The context used to query information about the JPQL queryAbstractSemanticValidator
public void dispose()
protected AbstractContentAssistVisitor getContentAssistVisitor()
AbstractContentAssistVisitor
buildContentAssistVisitor(JPQLQueryContext)
public JPQLGrammar getGrammar()
Expression
protected AbstractGrammarValidator getGrammarValidator()
public JPQLExpression getJPQLExpression()
public IType getParameterType(java.lang.String parameterName)
Note: Both named and positional input parameter can be used.
parameterName
- The name of the input parameter to retrieve its type, which needs to be
prepended by ':' or '?'null
if the type
couldn't be determinedpublic java.lang.String getParsedJPQLQuery()
public IManagedTypeProvider getProvider()
public IQuery getQuery()
public JPQLQueryContext getQueryContext()
JPQLQueryContext
that contains information about the JPQL query.JPQLQueryContext
that contains information contained in the JPQL querypublic IType getResultType()
See Resolver
to understand how the type is calculated.
IType
for Object
if it could not be calculatedprotected AbstractSemanticValidator getSemanticValidator()
public IType getType(java.lang.Class<?> type)
IType
representing the given Java type.type
- The Java type for which its external form is requestedpublic TypeHelper getTypeHelper()
types
.IType
public ITypeRepository getTypeRepository()
public void setJPQLExpression(JPQLExpression jpqlExpression)
setQuery(IQuery)
because the JPQL query is automatically parsed by that method.jpqlExpression
- The parsed representation of the JPQL query to manipulatesetQuery(IQuery)
public void setQuery(IQuery query)
query
- The external form of the JPQL querypublic java.util.List<JPQLQueryProblem> validate()
null
list that will be used to store the problems
if any was foundpublic void validate(Expression expression, java.util.List<JPQLQueryProblem> problems)
expression
- The parsed tree representation of the JPQL fragment to validateproblems
- A non-null
list that will be used to store the problems
if any was foundpublic java.util.List<JPQLQueryProblem> validateGrammar()
null
list that will be used to store the problems
if any was foundpublic void validateGrammar(Expression expression, java.util.List<JPQLQueryProblem> problems)
expression
- The parsed tree representation of the queryproblems
- A non-null
list that will be used to store the problems
if any was foundpublic java.util.List<JPQLQueryProblem> validateSemantic()
null
list that will be used to store the problems
if any was foundpublic void validateSemantic(Expression expression, java.util.List<JPQLQueryProblem> problems)
expression
- The parsed tree representation of the queryproblems
- A non-null
list that will be used to store the problems
if any was found