@SuppressWarnings("unchecked") public final boolean equals(Object o) { if (o == this) { return true; } else if (o instanceof SubQueryExpression) { SubQueryExpression<T> s = (SubQueryExpression<T>)o; return s.getMetadata().equals(metadata); } else { return false; } }
@SuppressWarnings({ "unchecked", "rawtypes" }) private <T> CollectionExpressionBase<?,T> union(Operator<Object> op, List<? extends SubQueryExpression<?>> sq) { Expression<?> rv = sq.get(0); if (sq.size() == 1 && !CollectionExpression.class.isInstance(rv)) { return new ListSubQuery(rv.getType(), sq.get(0).getMetadata()); } else { Class<?> elementType = sq.get(0).getType(); if (rv instanceof CollectionExpression) { elementType = ((CollectionExpression)rv).getParameter(0); } for (int i = 1; i < sq.size(); i++) { rv = CollectionOperation.create(op, (Class)elementType, rv, sq.get(i)); } return (CollectionExpressionBase<?,T>)rv; } }
@Override public String visit(SubQueryExpression<?> expr, Templates templates) { return expr.getMetadata().toString(); }
QueryMetadata md = new DefaultQueryMetadata(); md.setValidate(false); md.setDistinct(expr.getMetadata().isDistinct()); md.setModifiers(expr.getMetadata().getModifiers()); md.setUnique(expr.getMetadata().isUnique()); for (QueryFlag flag : expr.getMetadata().getFlags()) { md.addFlag(new QueryFlag(flag.getPosition(), flag.getFlag().accept(this, null))); for (Expression<?> e : expr.getMetadata().getGroupBy()) { md.addGroupBy(e.accept(this, null)); Predicate having = expr.getMetadata().getHaving(); if (having != null) { md.addHaving((Predicate)having.accept(this, null)); for (JoinExpression je : expr.getMetadata().getJoins()) { md.addJoin(je.getType(), je.getTarget().accept(this, null)); if (je.getCondition() != null) { for (OrderSpecifier<?> os : expr.getMetadata().getOrderBy()) { OrderSpecifier<?> os2 = new OrderSpecifier(os.getOrder(), os.getTarget().accept(this, null), os.getNullHandling()); md.addOrderBy(os2); for (Map.Entry<ParamExpression<?>, Object> entry : expr.getMetadata().getParams() .entrySet()) { md.setParam((ParamExpression)entry.getKey().accept(this, null), entry.getValue()); for (Expression<?> e : expr.getMetadata().getProjection()) {
@Override public Integer visit(SubQueryExpression<?> expr, Void context) { return expr.getMetadata().hashCode(); }
@Override public Void visit(SubQueryExpression<?> expr, Void context) { return visit(expr.getMetadata()); }
@SuppressWarnings("unchecked") @Override public TupleExpr visit(SubQueryExpression<?> expr, QueryMetadata md) { for (Map.Entry<ParamExpression<?>, Object> entry : md.getParams().entrySet()) { expr.getMetadata().setParam((ParamExpression) entry.getKey(), entry.getValue()); } return visit(expr.getMetadata(), QueryLanguage.TUPLE); }
@SuppressWarnings("unchecked") @Override public TupleExpr visit(SubQueryExpression<?> expr, QueryMetadata md) { for (Map.Entry<ParamExpression<?>, Object> entry : md.getParams().entrySet()) { expr.getMetadata().setParam((ParamExpression) entry.getKey(), entry.getValue()); } return visit(expr.getMetadata(), QueryLanguage.TUPLE); }
@SuppressWarnings("unchecked") @Override public TupleExpr visit(SubQueryExpression<?> expr, QueryMetadata md) { for (Map.Entry<ParamExpression<?>, Object> entry : md.getParams().entrySet()){ expr.getMetadata().setParam((ParamExpression)entry.getKey(), entry.getValue()); } return visit(expr.getMetadata(), QueryLanguage.TUPLE); }
@Override public SQLInsertClause select(SubQueryExpression<?> sq) { subQuery = sq; for (Map.Entry<ParamExpression<?>, Object> entry : sq.getMetadata().getParams().entrySet()) { metadata.setParam((ParamExpression) entry.getKey(), entry.getValue()); } return this; }
@SuppressWarnings("unchecked") @Override public Void visit(SubQueryExpression<?> expr, Void context) { for (Map.Entry<ParamExpression<?>, Object> entry : metadata.getParams().entrySet()) { expr.getMetadata().setParam((ParamExpression) entry.getKey(), entry.getValue()); } if (!operators.isEmpty() && operators.peek() == Ops.EXISTS) { handle(expr.getMetadata().getWhere()); } else { visit(expr.getMetadata(), QueryLanguage.TUPLE); } return null; }
@Override public Void visit(SubQueryExpression<?> query, Void context) { if (inUnion && !templates.isUnionsWrapped()) { serialize(query.getMetadata(), false); } else { append("("); serialize(query.getMetadata(), false); append(")"); } return null; }
@Override public Void visit(SubQueryExpression<?> query, Void context) { append("("); serialize(query.getMetadata(), false, null); append(")"); return null; }
@Override public Void visit(SubQueryExpression<?> query, Void context) { append("("); serialize(query.getMetadata(), false, true); append(")"); return null; }
@SuppressWarnings("unchecked") private <RT> Union<RT> innerUnion(SubQueryExpression<?>... sq) { queryMixin.getMetadata().setValidate(false); if (!queryMixin.getMetadata().getJoins().isEmpty()) { throw new IllegalArgumentException("Don't mix union and from"); } this.union = UnionUtils.union(sq, unionAll); this.firstUnionSubQuery = sq[0]; return new UnionImpl<Q ,RT>((Q)this, sq[0].getMetadata().getProjection()); }
SubQueryExpression subQuery = (SubQueryExpression) args.get(0); append("exists ("); serialize(subQuery.getMetadata(), false, "1"); append(")");
final SubQueryExpression subQuery = (SubQueryExpression) args.get(0); append("("); serialize(subQuery.getMetadata(), true, true); append(") > 0"); final SubQueryExpression subQuery = (SubQueryExpression) ((Operation)args.get(0)).getArg(0); append("("); serialize(subQuery.getMetadata(), true, true); append(") == 0");
@Override public Void visit(SubQueryExpression<?> expr, QueryMetadata context) { QueryMetadata md = expr.getMetadata(); for (Map.Entry<ParamExpression<?>, Object> entry : md.getParams().entrySet()) { context.setParam((ParamExpression)entry.getKey(), entry.getValue()); } visit(md.getGroupBy(), context); visit(md.getHaving(), context); for (JoinExpression join : md.getJoins()) { visit(join.getTarget(), context); visit(join.getCondition(), context); } visit(md.getProjection(), context); visit(md.getWhere(), context); return null; }
protected SQLSerializer serialize(boolean forCountRow) { SQLSerializer serializer = createSerializer(); if (union != null) { if (queryMixin.getMetadata().getProjection().isEmpty() || expandProjection(queryMixin.getMetadata().getProjection()).equals( expandProjection(firstUnionSubQuery.getMetadata().getProjection()))) { serializer.serializeUnion(union, queryMixin.getMetadata(), unionAll); } else { QueryMixin mixin2 = new QueryMixin(queryMixin.getMetadata().clone()); Set<Path<?>> paths = getRootPaths(expandProjection(mixin2.getMetadata().getProjection())); if (paths.isEmpty()) { mixin2.from(ExpressionUtils.as((Expression) union, defaultQueryAlias)); } else if (paths.size() == 1) { mixin2.from(ExpressionUtils.as((Expression) union, paths.iterator().next())); } else { throw new IllegalStateException("Unable to create serialize union"); } serializer.serialize(mixin2.getMetadata(), forCountRow); } } else { serializer.serialize(queryMixin.getMetadata(), forCountRow); } return serializer; }
serialize(subQuery.getMetadata(), false);