public ReportQuery(Class javaClass, Expression expression) { this(); this.defaultBuilder = expression.getBuilder(); setReferenceClass(javaClass); setSelectionCriteria(expression); }
public ReportQuery(Class javaClass, Expression expression) { this(); this.defaultBuilder = expression.getBuilder(); setReferenceClass(javaClass); setSelectionCriteria(expression); }
public ReportQuery(Class javaClass, Expression expression) { this(); this.defaultBuilder = expression.getBuilder(); setReferenceClass(javaClass); setSelectionCriteria(expression); }
protected SQLSelectStatement createSQLSelectStatementForUpdateAllForOracleAnonymousBlock(HashMap tables_databaseFieldsToValues) { ExpressionBuilder builder = ((UpdateAllQuery)getQuery()).getExpressionBuilder(); Expression whereClause = getSelectionCriteria(); ReportQuery reportQuery = new ReportQuery(getDescriptor().getJavaClass(), builder); reportQuery.setDescriptor(getDescriptor()); reportQuery.setSelectionCriteria(whereClause); reportQuery.setSession(getSession()); reportQuery.setShouldRetrievePrimaryKeys(true); Iterator itDatabaseFieldsToValues = tables_databaseFieldsToValues.values().iterator(); while(itDatabaseFieldsToValues.hasNext()) { HashMap databaseFieldsToValues = (HashMap)itDatabaseFieldsToValues.next(); Iterator itValues = databaseFieldsToValues.values().iterator(); while(itValues.hasNext()) { reportQuery.addAttribute("", (Expression)itValues.next()); } } SQLSelectStatement selectStatement = ((ExpressionQueryMechanism)reportQuery.getQueryMechanism()).buildReportQuerySelectStatement(false); reportQuery.setSession(null); return selectStatement; }
protected SQLSelectStatement createSQLSelectStatementForUpdateAllForOracleAnonymousBlock(HashMap tables_databaseFieldsToValues) { ExpressionBuilder builder = ((UpdateAllQuery)getQuery()).getExpressionBuilder(); Expression whereClause = getSelectionCriteria(); ReportQuery reportQuery = new ReportQuery(getDescriptor().getJavaClass(), builder); reportQuery.setDescriptor(getDescriptor()); reportQuery.setSelectionCriteria(whereClause); reportQuery.setSession(getSession()); reportQuery.setShouldRetrievePrimaryKeys(true); Iterator itDatabaseFieldsToValues = tables_databaseFieldsToValues.values().iterator(); while(itDatabaseFieldsToValues.hasNext()) { HashMap databaseFieldsToValues = (HashMap)itDatabaseFieldsToValues.next(); Iterator itValues = databaseFieldsToValues.values().iterator(); while(itValues.hasNext()) { reportQuery.addAttribute("", (Expression)itValues.next()); } } SQLSelectStatement selectStatement = ((ExpressionQueryMechanism)reportQuery.getQueryMechanism()).buildReportQuerySelectStatement(false); reportQuery.setSession(null); return selectStatement; }
protected SQLSelectStatement createSQLSelectStatementForUpdateAllForOracleAnonymousBlock(HashMap tables_databaseFieldsToValues) { ExpressionBuilder builder = ((UpdateAllQuery)getQuery()).getExpressionBuilder(); Expression whereClause = getSelectionCriteria(); ReportQuery reportQuery = new ReportQuery(getDescriptor().getJavaClass(), builder); reportQuery.setDescriptor(getDescriptor()); reportQuery.setSelectionCriteria(whereClause); reportQuery.setSession(getSession()); reportQuery.setShouldRetrievePrimaryKeys(true); Iterator itDatabaseFieldsToValues = tables_databaseFieldsToValues.values().iterator(); while(itDatabaseFieldsToValues.hasNext()) { HashMap databaseFieldsToValues = (HashMap)itDatabaseFieldsToValues.next(); Iterator itValues = databaseFieldsToValues.values().iterator(); while(itValues.hasNext()) { reportQuery.addAttribute("", (Expression)itValues.next()); } } SQLSelectStatement selectStatement = ((ExpressionQueryMechanism)reportQuery.getQueryMechanism()).buildReportQuerySelectStatement(false); reportQuery.setSession(null); return selectStatement; }
/** */ public ReportQuery getReportQuery(GenerationContext context) { ReportQuery innerQuery = new ReportQuery(); GenerationContext innerContext = subqueryParseTree.populateSubquery(innerQuery, context); Expression joins = innerContext.joinVariables(outerVars); if (joins != null) { Expression where = innerQuery.getSelectionCriteria(); where = appendExpression(where, joins); innerQuery.setSelectionCriteria(where); } return innerQuery; }
/** */ public ReportQuery getReportQuery(GenerationContext context) { ReportQuery innerQuery = new ReportQuery(); GenerationContext innerContext = subqueryParseTree.populateSubquery(innerQuery, context); Expression joins = innerContext.joinVariables(outerVars); if (joins != null) { Expression where = innerQuery.getSelectionCriteria(); where = appendExpression(where, joins); innerQuery.setSelectionCriteria(where); } return innerQuery; }
/** */ public ReportQuery getReportQuery(GenerationContext context) { ReportQuery innerQuery = new ReportQuery(); GenerationContext innerContext = subqueryParseTree.populateSubquery(innerQuery, context); Expression joins = innerContext.joinVariables(outerVars); if (joins != null) { Expression where = innerQuery.getSelectionCriteria(); where = appendExpression(where, joins); innerQuery.setSelectionCriteria(where); } return innerQuery; }
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; }
protected SQLSelectStatement createSQLSelectStatementForModifyAllForTempTable(HashMap databaseFieldsToValues) { ExpressionBuilder builder = ((ModifyAllQuery)getQuery()).getExpressionBuilder(); Expression whereClause = getSelectionCriteria(); ReportQuery reportQuery = new ReportQuery(getDescriptor().getJavaClass(), builder); reportQuery.setDescriptor(getDescriptor()); reportQuery.setSelectionCriteria(whereClause); reportQuery.setSession(getSession()); reportQuery.setShouldRetrievePrimaryKeys(true); if(databaseFieldsToValues != null) { Iterator itValues = databaseFieldsToValues.values().iterator(); while(itValues.hasNext()) { reportQuery.addAttribute("", (Expression)itValues.next()); } } SQLSelectStatement selectStatement = ((ExpressionQueryMechanism)reportQuery.getQueryMechanism()).buildReportQuerySelectStatement(false); reportQuery.setSession(null); return selectStatement; }
protected SQLSelectStatement createSQLSelectStatementForModifyAllForTempTable(HashMap databaseFieldsToValues) { ExpressionBuilder builder = ((ModifyAllQuery)getQuery()).getExpressionBuilder(); Expression whereClause = getSelectionCriteria(); ReportQuery reportQuery = new ReportQuery(getDescriptor().getJavaClass(), builder); reportQuery.setDescriptor(getDescriptor()); reportQuery.setSelectionCriteria(whereClause); reportQuery.setSession(getSession()); reportQuery.setShouldRetrievePrimaryKeys(true); if(databaseFieldsToValues != null) { Iterator itValues = databaseFieldsToValues.values().iterator(); while(itValues.hasNext()) { reportQuery.addAttribute("", (Expression)itValues.next()); } } SQLSelectStatement selectStatement = ((ExpressionQueryMechanism)reportQuery.getQueryMechanism()).buildReportQuerySelectStatement(false); reportQuery.setSession(null); return selectStatement; }
protected SQLSelectStatement createSQLSelectStatementForModifyAllForTempTable(HashMap databaseFieldsToValues) { ExpressionBuilder builder = ((ModifyAllQuery)getQuery()).getExpressionBuilder(); Expression whereClause = getSelectionCriteria(); ReportQuery reportQuery = new ReportQuery(getDescriptor().getJavaClass(), builder); reportQuery.setDescriptor(getDescriptor()); reportQuery.setSelectionCriteria(whereClause); reportQuery.setSession(getSession()); reportQuery.setShouldRetrievePrimaryKeys(true); if(databaseFieldsToValues != null) { Iterator itValues = databaseFieldsToValues.values().iterator(); while(itValues.hasNext()) { reportQuery.addAttribute("", (Expression)itValues.next()); } } SQLSelectStatement selectStatement = ((ExpressionQueryMechanism)reportQuery.getQueryMechanism()).buildReportQuerySelectStatement(false); reportQuery.setSession(null); return selectStatement; }
/** * PUBLIC: A logical expression for the size of collection <code>attributeName</code>. * <p>Example: * <pre><blockquote> * TopLink: employee.size("phoneNumbers") * Java: employee.getPhoneNumbers().size() * SQL: SELECT ... FROM EMP t0 WHERE ... * (SELECT COUNT(*) FROM PHONE t1 WHERE (t0.EMP_ID = t1.EMP_ID)) * </blockquote></pre> * This is a case where a fast operation in java does not translate to an * equally fast operation in SQL, requiring a correlated subselect. */ public Expression size(String attributeName) { // Create an anoymous subquery that will get its reference class // set during SubSelectExpression.normalize. ReportQuery subQuery = new ReportQuery(); subQuery.addCount(); subQuery.setSelectionCriteria(subQuery.getExpressionBuilder().equal(this.anyOf(attributeName))); return subQuery(subQuery); }
private void appendJoinVariables(org.eclipse.persistence.jpa.jpql.parser.Expression expression, ReportQuery subquery) { queryExpression = null; for (String variableName : collectOuterIdentificationVariables()) { Expression innerExpression = queryContext.getQueryExpression(variableName); Expression outerExpression = queryContext.getParent().getQueryExpressionImp(variableName); Expression equalExpression = innerExpression.equal(outerExpression); if (queryExpression == null) { queryExpression = equalExpression; } else { queryExpression = queryExpression.and(equalExpression); } } // Aggregate the WHERE clause with the joins expression if (queryExpression != null) { Expression whereClause = subquery.getSelectionCriteria(); if (whereClause != null) { whereClause = whereClause.and(queryExpression); } else { whereClause = queryExpression; } subquery.setSelectionCriteria(whereClause); } }
/** * PUBLIC: A logical expression for the size of collection expression. * <p>Example: * <pre><blockquote> * TopLink: employee.size(Class returnType) * Java: employee.getPhoneNumbers().size() * SQL: SELECT ... FROM EMP t0 WHERE ... * (SELECT COUNT(*) FROM PHONE t1 WHERE (t0.EMP_ID = t1.EMP_ID)) * </blockquote></pre> * This is a case where a fast operation in java does not translate to an * equally fast operation in SQL, requiring a correlated subselect. */ public Expression size(Class returnType) { // Create an anonymous subquery that will get its reference class // set during SubSelectExpression.normalize. ReportQuery subQuery = new ReportQuery(); subQuery.addCount("COUNT", subQuery.getExpressionBuilder(), returnType); subQuery.setSelectionCriteria(subQuery.getExpressionBuilder().equal(this)); if (((BaseExpression)this).getBaseExpression() == null){ return this.subQuery(subQuery); } return ((BaseExpression)this).getBaseExpression().subQuery(subQuery); }
/** * Customary inheritance expression is required for DeleteAllQuery and UpdateAllQuery preparation. * Ability to switch off AdditionalJoinExpression is required for DeleteAllQuery. */ protected SQLSelectStatement createSQLSelectStatementForModifyAll(Expression whereClause, Expression inheritanceExpression, ClassDescriptor desc, boolean useCustomaryInheritanceExpression, boolean shouldUseAdditionalJoinExpression) { ExpressionBuilder builder; if(whereClause != null) { whereClause = (Expression)whereClause.clone(); builder = whereClause.getBuilder(); } else { builder = new ExpressionBuilder(); } ReportQuery reportQuery = new ReportQuery(desc.getJavaClass(), builder); reportQuery.setDescriptor(desc); reportQuery.setShouldRetrieveFirstPrimaryKey(true); reportQuery.setSelectionCriteria(whereClause); reportQuery.setSession(getSession()); SQLSelectStatement selectStatement = ((ExpressionQueryMechanism)reportQuery.getQueryMechanism()).buildReportQuerySelectStatement(false, useCustomaryInheritanceExpression, inheritanceExpression, shouldUseAdditionalJoinExpression); reportQuery.setSession(null); return selectStatement; }
/** * Customary inheritance expression is required for DeleteAllQuery and UpdateAllQuery preparation. * Ability to switch off AdditionalJoinExpression is required for DeleteAllQuery. */ protected SQLSelectStatement createSQLSelectStatementForModifyAll(Expression whereClause, Expression inheritanceExpression, ClassDescriptor desc, boolean useCustomaryInheritanceExpression, boolean shouldUseAdditionalJoinExpression) { ExpressionBuilder builder; if(whereClause != null) { whereClause = (Expression)whereClause.clone(); builder = whereClause.getBuilder(); } else { builder = new ExpressionBuilder(); } ReportQuery reportQuery = new ReportQuery(desc.getJavaClass(), builder); reportQuery.setDescriptor(desc); reportQuery.setShouldRetrieveFirstPrimaryKey(true); reportQuery.setSelectionCriteria(whereClause); reportQuery.setSession(getSession()); SQLSelectStatement selectStatement = ((ExpressionQueryMechanism)reportQuery.getQueryMechanism()).buildReportQuerySelectStatement(false, useCustomaryInheritanceExpression, inheritanceExpression, shouldUseAdditionalJoinExpression); reportQuery.setSession(null); return selectStatement; }
protected SQLSelectStatement createSQLSelectStatementForModifyAll(Expression whereClause, Expression inheritanceExpression, ClassDescriptor desc, boolean useCustomaryInheritanceExpression) { ExpressionBuilder builder; if(whereClause != null) { whereClause = (Expression)whereClause.clone(); builder = whereClause.getBuilder(); } else { builder = new ExpressionBuilder(); } ReportQuery reportQuery = new ReportQuery(desc.getJavaClass(), builder); reportQuery.setDescriptor(desc); reportQuery.setShouldRetrieveFirstPrimaryKey(true); reportQuery.setSelectionCriteria(whereClause); reportQuery.setSession(getSession()); SQLSelectStatement selectStatement = ((ExpressionQueryMechanism)reportQuery.getQueryMechanism()).buildReportQuerySelectStatement(false, useCustomaryInheritanceExpression, inheritanceExpression); reportQuery.setSession(null); return selectStatement; }
/** * Create a predicate that tests whether an element is not a member of a * collection. * * @param elem * element expression * @param collection * expression * @return predicate */ public <E, C extends Collection<E>> Predicate isNotMember(Expression<E> elem, Expression<C> collection){ ReportQuery subQuery = new ReportQuery(); subQuery.setReferenceClass(((ExpressionImpl)elem).getJavaType()); org.eclipse.persistence.expressions.ExpressionBuilder elemBuilder = new org.eclipse.persistence.expressions.ExpressionBuilder(); org.eclipse.persistence.expressions.Expression collectionExp =((InternalSelection)collection).getCurrentNode(); org.eclipse.persistence.expressions.Expression elemExp =((InternalSelection)elem).getCurrentNode(); subQuery.setExpressionBuilder(elemBuilder); subQuery.setShouldRetrieveFirstPrimaryKey(true); subQuery.setSelectionCriteria(elemBuilder.equal(collectionExp).and(collectionExp.equal(elemExp))); return new CompoundExpressionImpl(metamodel, ((InternalSelection)elem).getCurrentNode().notExists(subQuery), buildList(elem, collection), "isNotMemeber"); }