Search in sources :

Example 1 with HavingAndBuilder

use of com.blazebit.persistence.HavingAndBuilder in project blaze-persistence by Blazebit.

the class HavingAndBuilderImpl method havingSubquery.

@Override
@SuppressWarnings({ "rawtypes", "unchecked" })
public SubqueryInitiator<RestrictionBuilder<HavingAndBuilder<T>>> havingSubquery(String subqueryAlias, String expression) {
    Expression expr = expressionFactory.createSimpleExpression(expression, true);
    superExprLeftSubqueryPredicateBuilderListener = new SuperExpressionLeftHandsideSubqueryPredicateBuilder(subqueryAlias, expr);
    RestrictionBuilder<HavingAndBuilder<T>> restrictionBuilder = startBuilder(new RestrictionBuilderImpl<HavingAndBuilder<T>>(this, this, subqueryInitFactory, expressionFactory, parameterManager, ClauseType.HAVING));
    return subqueryInitFactory.createSubqueryInitiator(restrictionBuilder, superExprLeftSubqueryPredicateBuilderListener, false, ClauseType.HAVING);
}
Also used : HavingAndBuilder(com.blazebit.persistence.HavingAndBuilder) Expression(com.blazebit.persistence.parser.expression.Expression)

Example 2 with HavingAndBuilder

use of com.blazebit.persistence.HavingAndBuilder in project blaze-persistence by Blazebit.

the class HavingAndBuilderImpl method havingSubqueries.

@Override
public MultipleSubqueryInitiator<RestrictionBuilder<HavingAndBuilder<T>>> havingSubqueries(String expression) {
    Expression expr = expressionFactory.createSimpleExpression(expression, true);
    RestrictionBuilderImpl<HavingAndBuilder<T>> restrictionBuilder = startBuilder(new RestrictionBuilderImpl<HavingAndBuilder<T>>(this, this, subqueryInitFactory, expressionFactory, parameterManager, ClauseType.HAVING));
    // We don't need a listener or marker here, because the resulting restriction builder can only be ended, when the initiator is ended
    MultipleSubqueryInitiator<RestrictionBuilder<HavingAndBuilder<T>>> initiator = new MultipleSubqueryInitiatorImpl<RestrictionBuilder<HavingAndBuilder<T>>>(restrictionBuilder, expr, new RestrictionBuilderExpressionBuilderListener(restrictionBuilder), subqueryInitFactory, ClauseType.HAVING);
    return initiator;
}
Also used : HavingAndBuilder(com.blazebit.persistence.HavingAndBuilder) Expression(com.blazebit.persistence.parser.expression.Expression) MultipleSubqueryInitiatorImpl(com.blazebit.persistence.impl.MultipleSubqueryInitiatorImpl) RestrictionBuilderExpressionBuilderListener(com.blazebit.persistence.impl.RestrictionBuilderExpressionBuilderListener) RestrictionBuilder(com.blazebit.persistence.RestrictionBuilder)

Example 3 with HavingAndBuilder

use of com.blazebit.persistence.HavingAndBuilder in project blaze-persistence by Blazebit.

the class HavingAndBuilderImpl method havingExpressionSubqueries.

@Override
public MultipleSubqueryInitiator<HavingAndBuilder<T>> havingExpressionSubqueries(String expression) {
    Predicate predicate = expressionFactory.createBooleanExpression(expression, true);
    // We don't need a listener or marker here, because the resulting restriction builder can only be ended, when the initiator is ended
    MultipleSubqueryInitiator<HavingAndBuilder<T>> initiator = new MultipleSubqueryInitiatorImpl<HavingAndBuilder<T>>(this, predicate, new ExpressionBuilderEndedListener() {

        @Override
        public void onBuilderEnded(ExpressionBuilder builder) {
            HavingAndBuilderImpl.this.predicate.getChildren().add((Predicate) builder.getExpression());
            currentMultipleSubqueryInitiator = null;
        }
    }, subqueryInitFactory, ClauseType.HAVING);
    currentMultipleSubqueryInitiator = initiator;
    return initiator;
}
Also used : ExpressionBuilderEndedListener(com.blazebit.persistence.impl.builder.expression.ExpressionBuilderEndedListener) HavingAndBuilder(com.blazebit.persistence.HavingAndBuilder) MultipleSubqueryInitiatorImpl(com.blazebit.persistence.impl.MultipleSubqueryInitiatorImpl) ExpressionBuilder(com.blazebit.persistence.impl.builder.expression.ExpressionBuilder) Predicate(com.blazebit.persistence.parser.predicate.Predicate) CompoundPredicate(com.blazebit.persistence.parser.predicate.CompoundPredicate) ExistsPredicate(com.blazebit.persistence.parser.predicate.ExistsPredicate)

Example 4 with HavingAndBuilder

use of com.blazebit.persistence.HavingAndBuilder in project blaze-persistence by Blazebit.

the class HavingAndBuilderImpl method havingSubquery.

@Override
public SubqueryBuilder<RestrictionBuilder<HavingAndBuilder<T>>> havingSubquery(String subqueryAlias, String expression, FullQueryBuilder<?, ?> criteriaBuilder) {
    Expression expr = expressionFactory.createSimpleExpression(expression, true);
    superExprLeftSubqueryPredicateBuilderListener = new SuperExpressionLeftHandsideSubqueryPredicateBuilder(subqueryAlias, expr);
    RestrictionBuilder<HavingAndBuilder<T>> restrictionBuilder = startBuilder(new RestrictionBuilderImpl<HavingAndBuilder<T>>(this, this, subqueryInitFactory, expressionFactory, parameterManager, ClauseType.HAVING));
    return subqueryInitFactory.createSubqueryBuilder(restrictionBuilder, superExprLeftSubqueryPredicateBuilderListener, false, criteriaBuilder, ClauseType.HAVING);
}
Also used : HavingAndBuilder(com.blazebit.persistence.HavingAndBuilder) Expression(com.blazebit.persistence.parser.expression.Expression)

Aggregations

HavingAndBuilder (com.blazebit.persistence.HavingAndBuilder)4 Expression (com.blazebit.persistence.parser.expression.Expression)3 MultipleSubqueryInitiatorImpl (com.blazebit.persistence.impl.MultipleSubqueryInitiatorImpl)2 RestrictionBuilder (com.blazebit.persistence.RestrictionBuilder)1 RestrictionBuilderExpressionBuilderListener (com.blazebit.persistence.impl.RestrictionBuilderExpressionBuilderListener)1 ExpressionBuilder (com.blazebit.persistence.impl.builder.expression.ExpressionBuilder)1 ExpressionBuilderEndedListener (com.blazebit.persistence.impl.builder.expression.ExpressionBuilderEndedListener)1 CompoundPredicate (com.blazebit.persistence.parser.predicate.CompoundPredicate)1 ExistsPredicate (com.blazebit.persistence.parser.predicate.ExistsPredicate)1 Predicate (com.blazebit.persistence.parser.predicate.Predicate)1