@Override public T otherwise(String elseExpression) { if (whenExpressions.isEmpty()) { throw new IllegalStateException("No when clauses specified"); } expression = new SimpleCaseExpression(caseOperandExpression, whenExpressions, expressionFactory.createScalarExpression(elseExpression)); listener.onBuilderEnded(this); return result; }
@Override public SimpleCaseExpression clone(boolean resolved) { int size = whenClauses.size(); List<WhenClauseExpression> newWhenClauses = new ArrayList<WhenClauseExpression>(size); for (int i = 0; i < size; i++) { newWhenClauses.add(whenClauses.get(i).clone(resolved)); } if (defaultExpr == null) { return new SimpleCaseExpression(caseOperand.clone(resolved), newWhenClauses, null); } else { return new SimpleCaseExpression(caseOperand.clone(resolved), newWhenClauses, defaultExpr.clone(resolved)); } }
@Override public SimpleCaseExpression clone(boolean resolved) { int size = whenClauses.size(); List<WhenClauseExpression> newWhenClauses = new ArrayList<WhenClauseExpression>(size); for (int i = 0; i < size; i++) { newWhenClauses.add(whenClauses.get(i).clone(resolved)); } if (defaultExpr == null) { return new SimpleCaseExpression(caseOperand.clone(resolved), newWhenClauses, null); } else { return new SimpleCaseExpression(caseOperand.clone(resolved), newWhenClauses, defaultExpr.clone(resolved)); } }
@Override public Expression visitSimple_case_expression(JPQLSelectExpressionParser.Simple_case_expressionContext ctx) { List<WhenClauseExpression> whenClauses = new ArrayList<WhenClauseExpression>(); for (JPQLSelectExpressionParser.Simple_when_clauseContext whenClause : ctx.simple_when_clause()) { whenClauses.add((WhenClauseExpression) whenClause.accept(this)); } JPQLSelectExpressionParser.Scalar_expressionContext elseExpressionCtx = ctx.scalar_expression(); return new SimpleCaseExpression(ctx.case_operand().accept(this), whenClauses, elseExpressionCtx == null ? null : elseExpressionCtx.accept(this)); }
@Override public Expression visitSimple_case_expression(JPQLSelectExpressionParser.Simple_case_expressionContext ctx) { List<WhenClauseExpression> whenClauses = new ArrayList<WhenClauseExpression>(); for (JPQLSelectExpressionParser.Simple_when_clauseContext whenClause : ctx.simple_when_clause()) { whenClauses.add((WhenClauseExpression) whenClause.accept(this)); } JPQLSelectExpressionParser.Scalar_expressionContext elseExpressionCtx = ctx.scalar_expression(); return new SimpleCaseExpression(ctx.case_operand().accept(this), whenClauses, elseExpressionCtx == null ? null : elseExpressionCtx.accept(this)); }
@Override public Expression visit(SimpleCaseExpression expression) { expression = (SimpleCaseExpression) visit((GeneralCaseExpression) expression); return new SimpleCaseExpression(expression.getCaseOperand().accept(this), expression.getWhenClauses(), expression.getDefaultExpr()); }
@Override public Expression visit(SimpleCaseExpression expression) { expression = (SimpleCaseExpression) visit((GeneralCaseExpression) expression); return new SimpleCaseExpression(expression.getCaseOperand().accept(this), expression.getWhenClauses(), expression.getDefaultExpr()); }
@Override public Expression visit(SimpleCaseExpression expression) { Expression newCaseOperandExpr = expression.getCaseOperand().accept(this); List<WhenClauseExpression> newExpressions = visitExpressionList(expression.getWhenClauses()); Expression newDefaultExpr = null; if (expression.getDefaultExpr() != null) { newDefaultExpr = expression.getDefaultExpr().accept(this); } if (newExpressions != null) { return new SimpleCaseExpression(newCaseOperandExpr, newExpressions, newDefaultExpr); } else if (expression.getCaseOperand() != newCaseOperandExpr || expression.getDefaultExpr() != newDefaultExpr) { return new SimpleCaseExpression(newCaseOperandExpr, expression.getWhenClauses(), newDefaultExpr); } return expression; }
@Override public Expression visit(SimpleCaseExpression expression) { Expression newCaseOperandExpr = expression.getCaseOperand().accept(this); List<WhenClauseExpression> newExpressions = visitExpressionList(expression.getWhenClauses()); Expression newDefaultExpr = null; if (expression.getDefaultExpr() != null) { newDefaultExpr = expression.getDefaultExpr().accept(this); } if (newExpressions != null) { return new SimpleCaseExpression(newCaseOperandExpr, newExpressions, newDefaultExpr); } else if (expression.getCaseOperand() != newCaseOperandExpr || expression.getDefaultExpr() != newDefaultExpr) { return new SimpleCaseExpression(newCaseOperandExpr, expression.getWhenClauses(), newDefaultExpr); } return expression; }