/** * INTERNAL: * Return if the expression is equal to the other. * This is used to allow dynamic expression's SQL to be cached. */ public boolean equals(Object expression) { if (this == expression) { return true; } // Return false for parallel expressions, as equality is unknown. return super.equals(expression) && ((getQueryClass() == null) && ((ExpressionBuilder)expression).getQueryClass() == null); }
/** * INTERNAL: * Return if the expression is equal to the other. * This is used to allow dynamic expression's SQL to be cached. */ public boolean equals(Object expression) { if (this == expression) { return true; } // Return false for parallel expressions, as equality is unknown. return super.equals(expression) && ((getQueryClass() == null) && ((ExpressionBuilder)expression).getQueryClass() == null); }
/** * INTERNAL: * Return if the expression is equal to the other. * This is used to allow dynamic expression's SQL to be cached. */ public boolean equals(Object expression) { if (this == expression) { return true; } // Return false for parralel expressions, as equality is unknown. return super.equals(expression) && ((getQueryClass() == null) && ((ExpressionBuilder)expression).getQueryClass() == null); }
/** * INTERNAL: * For debug printing purposes. */ public void writeDescriptionOn(BufferedWriter writer) throws IOException { String className; if (getQueryClass() == null) { className = "QUERY OBJECT"; } else { className = getQueryClass().getName(); } writer.write(className + tableAliasesDescription()); } }
/** * INTERNAL: * For debug printing purposes. */ public void writeDescriptionOn(BufferedWriter writer) throws IOException { String className; if (getQueryClass() == null) { className = "QUERY OBJECT"; } else { className = getQueryClass().getName(); } writer.write(className + tableAliasesDescription()); } }
/** * INTERNAL: * For debug printing purposes. */ public void writeDescriptionOn(BufferedWriter writer) throws IOException { String className; if (getQueryClass() == null) { className = "QUERY OBJECT"; } else { className = getQueryClass().getName(); } writer.write(className + tableAliasesDescription()); } }
/** * ADVANCED: * Set all of the objects from the given Expression to be invalid in the cache. */ public void invalidateObjects(Expression selectionCriteria) { invalidateObjects(selectionCriteria, selectionCriteria.getBuilder().getQueryClass(), new DatabaseRecord(0), true); }
/** * ADVANCED: * Set all of the objects from the given Expression to be invalid in the cache. */ public void invalidateObjects(Expression selectionCriteria) { invalidateObjects(selectionCriteria, selectionCriteria.getBuilder().getQueryClass(), new DatabaseRecord(0), true); }
/** * Initialize the expression builder which should be used for this query. If * there is a where clause, use its expression builder, otherwise * generate one and cache it. This helps avoid unnecessary rebuilds. */ protected void initializeDefaultBuilder() { DatabaseQueryMechanism mech = getQueryMechanism(); if (mech.isExpressionQueryMechanism() && ((ExpressionQueryMechanism)mech).getExpressionBuilder() != null) { this.defaultBuilder = ((ExpressionQueryMechanism)mech).getExpressionBuilder(); if (this.defaultBuilder.getQueryClass() != null && !this.defaultBuilder.getQueryClass().equals(this.referenceClass)){ this.defaultBuilder = new ExpressionBuilder(); } return; } this.defaultBuilder = new ExpressionBuilder(); }
/** * ADVANCED: * Set all of the objects from the given Expression to be invalid in the cache. */ public void invalidateObjects(Expression selectionCriteria) { invalidateObjects(selectionCriteria, selectionCriteria.getBuilder().getQueryClass(), new DatabaseRecord(0), true); }
/** * Initialize the expression builder which should be used for this query. If * there is a where clause, use its expression builder, otherwise * generate one and cache it. This helps avoid unnecessary rebuilds. */ protected void initializeDefaultBuilder() { DatabaseQueryMechanism mech = getQueryMechanism(); if (mech.isExpressionQueryMechanism() && ((ExpressionQueryMechanism)mech).getExpressionBuilder() != null) { this.defaultBuilder = ((ExpressionQueryMechanism)mech).getExpressionBuilder(); if (this.defaultBuilder.getQueryClass() != null && !this.defaultBuilder.getQueryClass().equals(this.referenceClass)){ this.defaultBuilder = new ExpressionBuilder(); } return; } this.defaultBuilder = new ExpressionBuilder(); }
/** * INTERNAL: * Lookup the descriptor for this item by traversing its expression recursively. */ @Override public ClassDescriptor getLeafDescriptor(DatabaseQuery query, ClassDescriptor rootDescriptor, AbstractSession session) { // The base case // The following special case is where there is a parallel builder // which has a different reference class as the primary builder. Class queryClass = getQueryClass(); if ((queryClass != null) && ((query == null) || (queryClass != query.getReferenceClass()))) { return convertToCastDescriptor( session.getDescriptor(queryClass), session); } return convertToCastDescriptor(rootDescriptor, session);//support casting }
/** * INTERNAL: * Lookup the descriptor for this item by traversing its expression recursively. */ @Override public ClassDescriptor getLeafDescriptor(DatabaseQuery query, ClassDescriptor rootDescriptor, AbstractSession session) { // The base case // The following special case is where there is a parallel builder // which has a different reference class as the primary builder. Class queryClass = getQueryClass(); if ((queryClass != null) && ((query == null) || (queryClass != query.getReferenceClass()))) { return convertToCastDescriptor( session.getDescriptor(queryClass), session); } return convertToCastDescriptor(rootDescriptor, session);//support casting }
/** * {@inheritDoc} */ @Override public void visit(RangeVariableDeclaration expression) { // Set the ExpressionBuilder ExpressionBuilder expressionBuilder = queryContext.getBaseExpression().getBuilder(); query.setExpressionBuilder(expressionBuilder); // Set the reference class if it's not set if (query.getReferenceClass() == null) { query.setReferenceClass(expressionBuilder.getQueryClass()); } }
/** * {@inheritDoc} */ @Override public void visit(RangeVariableDeclaration expression) { // Set the ExpressionBuilder ExpressionBuilder expressionBuilder = queryContext.getBaseExpression().getBuilder(); query.setExpressionBuilder(expressionBuilder); // Set the reference class if it's not set if (query.getReferenceClass() == null) { query.setReferenceClass(expressionBuilder.getQueryClass()); } }
protected org.eclipse.persistence.expressions.Expression internalCorrelate(FromImpl from){ org.eclipse.persistence.expressions.Expression expression = ((InternalSelection)from).getCurrentNode(); ExpressionBuilder builder = new ExpressionBuilder(expression.getBuilder().getQueryClass()); org.eclipse.persistence.expressions.Expression correlated = expression.rebuildOn(builder); expression = expression.equal(correlated); this.correlations.add(expression); org.eclipse.persistence.expressions.Expression selectionCriteria = expression.and(this.subQuery.getSelectionCriteria()); this.subQuery.setSelectionCriteria(selectionCriteria); return correlated; }
public void setSelectionCriteria(Expression expression) { super.setSelectionCriteria(expression); if ((expression != null) && (defaultBuilder != null) && (defaultBuilder.getQueryClass() == null)){ // For flashback: Must make sure expression and defaultBuilder always in sync. ExpressionBuilder newBuilder = expression.getBuilder(); if (newBuilder != defaultBuilder) { if (hasAsOfClause() && getAsOfClause().isUniversal()) { newBuilder.asOf(defaultBuilder.getAsOfClause()); } defaultBuilder = newBuilder; } } }
/** * INTERNAL: * Return the descriptor for the base expression. This is used in ReportItem when building the * return value (a class), as none of the expressions will have a session. */ public ClassDescriptor getContainingDescriptor(ObjectLevelReadQuery query) { AbstractSession session; Class queryClass = null; if (getBaseExpression().isExpressionBuilder()){ queryClass = ((ExpressionBuilder)getBaseExpression()).getQueryClass(); return query.getSession().getDescriptor(queryClass); } else { //it must be a QueryKeyExpression return query.getLeafDescriptorFor(getBaseExpression(), query.getDescriptor()); } }
/** * INTERNAL: * Return the descriptor for the base expression. This is used in ReportItem when building the * return value (a class), as none of the expressions will have a session. */ public ClassDescriptor getContainingDescriptor(ObjectLevelReadQuery query) { Class queryClass = null; if (getBaseExpression().isExpressionBuilder()){ queryClass = ((ExpressionBuilder)getBaseExpression()).getQueryClass(); return query.getSession().getDescriptor(queryClass); } else { // It must be a QueryKeyExpression. return getBaseExpression().getLeafDescriptor(query, query.getDescriptor(), query.getSession()); } }
/** * INTERNAL: * Return the descriptor for the base expression. This is used in ReportItem when building the * return value (a class), as none of the expressions will have a session. */ public ClassDescriptor getContainingDescriptor(ObjectLevelReadQuery query) { Class queryClass = null; if (getBaseExpression().isExpressionBuilder()){ queryClass = ((ExpressionBuilder)getBaseExpression()).getQueryClass(); return query.getSession().getDescriptor(queryClass); } else { // It must be a QueryKeyExpression. return getBaseExpression().getLeafDescriptor(query, query.getDescriptor(), query.getSession()); } }