Top Description Fields Constructors Methods
org.eclipse.persistence.internal.expressions

public Class ExpressionNormalizer

extends Object
Class Inheritance
Imports
org.eclipse.persistence.expressions.*, org.eclipse.persistence.internal.sessions.AbstractSession, java.util.*

This is used during the normalization process to allow for a single main expression traversal.

Field Summary

Modifier and TypeField and Description
protected boolean
addAdditionalExpressionsWithinCurrrentExpressionContext

Used to trigger adding additional join operations etc to the expression being processed instead of at the end of the where clause.

protected Expression
additionalExpression

A new root expression can be made from joins being added to the original expression.

protected Expression
additionalLocalExpression

Local expression from joins being added to the original expression.

protected Map<Expression, Expression>
clonedExpressions

Used to maintain identity of cloned expressions.

protected AbstractSession
session

The session being normalized in.

protected SQLSelectStatement
statement

The statement being normalized.

protected List<SubSelectExpression>
subSelectExpressions

Subselect expressions found in the course of normalization.

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public void
public void
addAdditionalLocalExpression(Expression theExpression)

Similar to addAdditionalExpression, this keeps a running expression used for joins so that they can be added locally within 'OR' predicates rather than to the entire where clause.

public void
addSubSelectExpression(SubSelectExpression subSelectExpression)

INTERNAL: Remember this subselect so that it can be normalized after the enclosing select statement is.

public boolean
encounteredSubSelectExpressions()

INTERNAL: Were subselect expressions found while normalizing the selection criteria?

public Expression
public Map<Expression, Expression>
public AbstractSession
public SQLSelectStatement
public boolean
public void
normalizeSubSelects(Map<K, V> clonedExpressions)

INTERNAL: Normalize all subselect expressions found in the course of normalizing the enclosing query.

public Expression
processAdditionalLocalExpressions(Expression localExpression, boolean isLogicalExpression)

INTERNAL This will return the localExpression if isLogicalExpression is false, otherwise it will check the addAdditionalExpressionsWithinCurrrentExpressionContext flag and clear additionalLocalExpression once adding it to the localExpression.

public void
setAddAdditionalExpressionsWithinCurrrentExpressionContext(boolean addAdditionalExpressionsWithinCurrrentExpressionContext)

INTERNAL: Allows keeping track when the normalizer is within a logical OR statement, where additionalExpressions might need to be added to the local expression instead of at the end of the where clause.

public void
setAdditionalExpression(Expression additionalExpression)

public void
public void
public void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

addAdditionalExpressionsWithinCurrrentExpressionContextback to summary
protected boolean addAdditionalExpressionsWithinCurrrentExpressionContext

Used to trigger adding additional join operations etc to the expression being processed instead of at the end of the where clause. Useful for dealing with Treat within an Or clause, as the type expression needs to be appended within the OR condition rather AND'd to the entire thing.

additionalExpressionback to summary
protected Expression additionalExpression

A new root expression can be made from joins being added to the original expression.

additionalLocalExpressionback to summary
protected Expression additionalLocalExpression

Local expression from joins being added to the original expression.

clonedExpressionsback to summary
protected Map<Expression, Expression> clonedExpressions

Used to maintain identity of cloned expressions.

sessionback to summary
protected AbstractSession session

The session being normalized in.

statementback to summary
protected SQLSelectStatement statement

The statement being normalized.

subSelectExpressionsback to summary
protected List<SubSelectExpression> subSelectExpressions

Subselect expressions found in the course of normalization.

Constructor Detail

ExpressionNormalizerback to summary
public ExpressionNormalizer(SQLSelectStatement statement)

Method Detail

addAdditionalExpressionback to summary
public void addAdditionalExpression(Expression theExpression)
addAdditionalLocalExpressionback to summary
public void addAdditionalLocalExpression(Expression theExpression)

Similar to addAdditionalExpression, this keeps a running expression used for joins so that they can be added locally within 'OR' predicates rather than to the entire where clause. If addAdditionalExpressionsWithinCurrrentExpressionContext is false, it will work the same as addAdditionalExpression

addSubSelectExpressionback to summary
public void addSubSelectExpression(SubSelectExpression subSelectExpression)

INTERNAL: Remember this subselect so that it can be normalized after the enclosing select statement is.

encounteredSubSelectExpressionsback to summary
public boolean encounteredSubSelectExpressions()

INTERNAL: Were subselect expressions found while normalizing the selection criteria? Assumes underlying collection is initialized on first add.

getAdditionalExpressionback to summary
public Expression getAdditionalExpression()
getClonedExpressionsback to summary
public Map<Expression, Expression> getClonedExpressions()
getSessionback to summary
public AbstractSession getSession()
getStatementback to summary
public SQLSelectStatement getStatement()
isAddAdditionalExpressionsWithinCurrrentExpressionContextback to summary
public boolean isAddAdditionalExpressionsWithinCurrrentExpressionContext()
normalizeSubSelectsback to summary
public void normalizeSubSelects(Map<K, V> clonedExpressions)

INTERNAL: Normalize all subselect expressions found in the course of normalizing the enclosing query. This method allows one to completely normalize the parent statement first (which should treat its sub selects as black boxes), and then normalize the subselects (which require full knowledge of the enclosing statement). This should make things clearer too, Assumes encounteredSubSelectExpressions() true. For CR#4223.

processAdditionalLocalExpressionsback to summary
public Expression processAdditionalLocalExpressions(Expression localExpression, boolean isLogicalExpression)

INTERNAL This will return the localExpression if isLogicalExpression is false, otherwise it will check the addAdditionalExpressionsWithinCurrrentExpressionContext flag and clear additionalLocalExpression once adding it to the localExpression.

setAddAdditionalExpressionsWithinCurrrentExpressionContextback to summary
public void setAddAdditionalExpressionsWithinCurrrentExpressionContext(boolean addAdditionalExpressionsWithinCurrrentExpressionContext)

INTERNAL: Allows keeping track when the normalizer is within a logical OR statement, where additionalExpressions might need to be added to the local expression instead of at the end of the where clause.

setAdditionalExpressionback to summary
public void setAdditionalExpression(Expression additionalExpression)
setClonedExpressionsback to summary
public void setClonedExpressions(Map<Expression, Expression> clonedExpressions)
setSessionback to summary
public void setSession(AbstractSession session)
setStatementback to summary
public void setStatement(SQLSelectStatement statement)