@Scope(value="prototype") @Component(value="cuba_QueryTransformer") public class QueryTransformerAstBased extends java.lang.Object implements QueryTransformer
Modifier and Type | Field and Description |
---|---|
protected java.util.Set<java.lang.String> |
addedParams |
protected DomainModel |
model |
protected java.lang.String |
query |
protected QueryTreeAnalyzer |
queryAnalyzer |
protected QueryTreeTransformer |
queryTransformer |
protected QueryTree |
queryTree |
ALIAS_PLACEHOLDER, NAME
Constructor and Description |
---|
QueryTransformerAstBased(DomainModel model,
java.lang.String query) |
Modifier and Type | Method and Description |
---|---|
void |
addDistinct()
Replaces 'select' with 'select distinct'.
|
void |
addEntityInGroupBy(java.lang.String entityAlias)
Adds @param entityAlias to 'group by' clause
|
void |
addFirstSelectionSource(java.lang.String selection) |
void |
addJoinAndWhere(java.lang.String join,
java.lang.String where)
Adds 'join' and 'where' clauses.
|
void |
addJoinAsIs(java.lang.String join)
Adds 'join' clause
|
void |
addOrderByIdIfNotExists(java.lang.String idProperty)
Adds 'order by' clause if it doesn't exists
|
protected void |
addWhere(org.antlr.runtime.tree.CommonTree whereTree,
EntityReference ref,
boolean replaceVariableName) |
void |
addWhere(java.lang.String where)
Adds 'where' clause replacing entity alias
|
void |
addWhereAsIs(java.lang.String where)
Adds 'where' clause
|
protected EntityReference |
createMainIdentificationVariableReference() |
protected EntityReference |
createMainSelectedPathNodeReference() |
java.util.Set<java.lang.String> |
getAddedParams()
Get parameter names found during transformation
|
protected QueryTreeAnalyzer |
getAnalyzer() |
java.lang.String |
getResult()
Get buffer
|
protected QueryTreeTransformer |
getTransformer() |
protected QueryTree |
getTree() |
void |
handleCaseInsensitiveParam(java.lang.String parameterName) |
void |
mergeWhere(java.lang.String statement)
Deprecated.
|
protected java.util.List<JoinVariableNode> |
parseJoinCondition(java.lang.String joinCondition) |
protected org.antlr.runtime.tree.CommonTree |
parseSelectionSource(java.lang.String selectionSource) |
protected org.antlr.runtime.tree.CommonTree |
parseWhereCondition(java.lang.String whereCondition) |
boolean |
removeDistinct()
Replaces 'select distinct' with 'select'.
|
void |
removeOrderBy()
Removes 'order by' clause
|
void |
replaceEntityName(java.lang.String newName)
Replace main entity name, e.g.
|
void |
replaceInCondition(java.lang.String parameterName) |
boolean |
replaceIsNullStatements(java.lang.String parameterName,
boolean isNullValue)
Replace all
is null and is not null statements with provided parameter |
void |
replaceOrderBy(boolean desc,
java.lang.String... properties)
Adds or replaces 'order by' clause
|
void |
replaceWithCount()
Replaces
select e.f1, e.f2, ... clause with select count(e) ... |
void |
replaceWithSelectEntityVariable(java.lang.String selectEntityVariable)
Replaces
select e from ... clause with select 'selectEntityVariable' from ... |
void |
replaceWithSelectId()
Replaces
select e from ... clause with select e.id from ... |
void |
replaceWithSelectId(java.lang.String pkName)
Replaces
select e from ... clause with select e.pkName from ... |
void |
reset()
Reset internal buffer
|
protected DomainModel model
protected java.lang.String query
protected QueryTree queryTree
protected QueryTreeTransformer queryTransformer
protected QueryTreeAnalyzer queryAnalyzer
protected java.util.Set<java.lang.String> addedParams
public QueryTransformerAstBased(DomainModel model, java.lang.String query)
protected QueryTreeTransformer getTransformer()
protected QueryTreeAnalyzer getAnalyzer()
protected QueryTree getTree()
public java.lang.String getResult()
QueryTransformer
getResult
in interface QueryTransformer
public java.util.Set<java.lang.String> getAddedParams()
QueryTransformer
getAddedParams
in interface QueryTransformer
public void handleCaseInsensitiveParam(java.lang.String parameterName)
handleCaseInsensitiveParam
in interface QueryTransformer
public void addWhere(java.lang.String where)
QueryTransformer
addWhere
in interface QueryTransformer
where
- - "{E}" may be used as a replaceable entity placeholder. No such value
should be used as a string constantpublic void addWhereAsIs(java.lang.String where)
QueryTransformer
addWhereAsIs
in interface QueryTransformer
@Deprecated public void mergeWhere(java.lang.String statement)
mergeWhere
in interface QueryTransformer
statement
- from we copy where clausepublic void addJoinAndWhere(java.lang.String join, java.lang.String where)
QueryTransformer
addJoinAndWhere
in interface QueryTransformer
public void addJoinAsIs(java.lang.String join)
QueryTransformer
addJoinAsIs
in interface QueryTransformer
public void addFirstSelectionSource(java.lang.String selection)
addFirstSelectionSource
in interface QueryTransformer
public void replaceWithCount()
QueryTransformer
select e.f1, e.f2, ...
clause with select count(e) ...
replaceWithCount
in interface QueryTransformer
public void replaceWithSelectId()
QueryTransformer
select e from ...
clause with select e.id from ...
replaceWithSelectId
in interface QueryTransformer
public void replaceWithSelectId(java.lang.String pkName)
QueryTransformer
select e from ...
clause with select e.pkName from ...
replaceWithSelectId
in interface QueryTransformer
public void replaceWithSelectEntityVariable(java.lang.String selectEntityVariable)
QueryTransformer
select e from ...
clause with select 'selectEntityVariable' from ...
replaceWithSelectEntityVariable
in interface QueryTransformer
public boolean removeDistinct()
QueryTransformer
removeDistinct
in interface QueryTransformer
public void addDistinct()
QueryTransformer
addDistinct
in interface QueryTransformer
public void replaceOrderBy(boolean desc, java.lang.String... properties)
QueryTransformer
replaceOrderBy
in interface QueryTransformer
public void addOrderByIdIfNotExists(java.lang.String idProperty)
QueryTransformer
addOrderByIdIfNotExists
in interface QueryTransformer
public void addEntityInGroupBy(java.lang.String entityAlias)
QueryTransformer
addEntityInGroupBy
in interface QueryTransformer
public void removeOrderBy()
QueryTransformer
removeOrderBy
in interface QueryTransformer
public void replaceEntityName(java.lang.String newName)
QueryTransformer
replaceEntityName
in interface QueryTransformer
public void reset()
QueryTransformer
reset
in interface QueryTransformer
public void replaceInCondition(java.lang.String parameterName)
replaceInCondition
in interface QueryTransformer
public boolean replaceIsNullStatements(java.lang.String parameterName, boolean isNullValue)
QueryTransformer
is null
and is not null
statements with provided parameterreplaceIsNullStatements
in interface QueryTransformer
parameterName
- name of the parameterisNullValue
- is parameter value nulltrue
if at least one statement was replaced, false
otherwiseprotected org.antlr.runtime.tree.CommonTree parseWhereCondition(java.lang.String whereCondition)
protected java.util.List<JoinVariableNode> parseJoinCondition(java.lang.String joinCondition)
protected org.antlr.runtime.tree.CommonTree parseSelectionSource(java.lang.String selectionSource)
protected void addWhere(org.antlr.runtime.tree.CommonTree whereTree, EntityReference ref, boolean replaceVariableName)
protected EntityReference createMainIdentificationVariableReference()
protected EntityReference createMainSelectedPathNodeReference()