@Override public Void visit(TemplateExpression<?> expr, List<Path<?>> paths) { visit(expr.getArgs(), paths); return null; }
@Override public Set<Expression<?>> visit(TemplateExpression<?> expr, Set<Expression<?>> known) { for (Object arg : expr.getArgs()) { if (arg instanceof Expression<?>) { known = ((Expression<?>) arg).accept(this, known); } } return known; }
@Override public Void visit(TemplateExpression<?> expr, QueryMetadata context) { for (Object arg : expr.getArgs()) { if (arg instanceof Expression<?>) { ((Expression<?>) arg).accept(this, context); } } return null; }
@Override public Path<?> visit(TemplateExpression<?> expr, Void context) { return visit(expr.getArgs()); }
@Override public Integer visit(TemplateExpression<?> expr, Void context) { int result = expr.getTemplate().hashCode(); return 31 * result + expr.getArgs().hashCode(); }
@Override public Void visit(TemplateExpression<?> expr, Void context) { handleTemplate(expr.getTemplate(), expr.getArgs()); return null; }
@Override public String visit(TemplateExpression<?> expr, Templates templates) { final StringBuilder builder = new StringBuilder(); for (Template.Element element : expr.getTemplate().getElements()) { Object rv = element.convert(expr.getArgs()); if (rv instanceof Expression) { builder.append(((Expression<?>) rv).accept(this, templates)); } else { builder.append(rv.toString()); } } return builder.toString(); }
@SuppressWarnings("unchecked") @Override public Expression<?> visit(TemplateExpression<?> expr, C context) { ImmutableList.Builder builder = ImmutableList.builder(); for (Object arg : expr.getArgs()) { if (arg instanceof Expression) { builder.add(((Expression<?>) arg).accept(this, context)); } else { builder.add(arg); } } ImmutableList args = builder.build(); if (args.equals(expr.getArgs())) { return expr; } else { if (expr instanceof Predicate) { return Expressions.booleanTemplate(expr.getTemplate(), args); } else { return ExpressionUtils.template(expr.getType(), expr.getTemplate(), args); } } }
@Override public final boolean equals(Object o) { if (o == this) { return true; } else if (o instanceof TemplateExpression) { TemplateExpression<?> c = (TemplateExpression<?>) o; return c.getTemplate().equals(template) && c.getType().equals(getType()) && c.getArgs().equals(args); } else { return false; } }
@Override public Expression<?> visit(TemplateExpression<?> expr, Context context) { Object[] args = new Object[expr.getArgs().size()]; for (int i = 0; i < args.length; i++) { Context c = new Context(); if (expr.getArg(i) instanceof Expression) { args[i] = ((Expression<?>) expr.getArg(i)).accept(this, c); } else { args[i] = expr.getArg(i); } context.add(c); } if (context.replace) { if (expr.getType().equals(Boolean.class)) { Predicate predicate = Expressions.booleanTemplate(expr.getTemplate(), args); return !context.paths.isEmpty() ? exists(context, predicate) : predicate; } else { return ExpressionUtils.template(expr.getType(), expr.getTemplate(), args); } } else { return expr; } }
assertNotNull(custom.getTemplate()); assertNotNull(custom.getType()); assertNotNull(custom.getArgs()); assertEquals(custom, custom); if (prev != null) {
@Override public List<?> getArgs() { return templateMixin.getArgs(); }
@Override public Set<Expression<?>> visit(TemplateExpression<?> expr, Set<Expression<?>> known) { for (Object arg : expr.getArgs()) { if (arg instanceof Expression<?>) { known = ((Expression<?>) arg).accept(this, known); } } return known; }
@Override public Set<RelationalPath<?>> visit(TemplateExpression<?> expr, Set<RelationalPath<?>> known) { for (Object arg : expr.getArgs()) { if (arg instanceof Expression<?>) { known = ((Expression<?>) arg).accept(this, known); } } return known; }
@Override public Void visit(TemplateExpression<?> expr, List<Path<?>> paths) { visit(expr.getArgs(), paths); return null; }
@Override public Void visit(TemplateExpression<?> expr, QueryMetadata context) { for (Object arg : expr.getArgs()) { if (arg instanceof Expression<?>) { ((Expression<?>) arg).accept(this, context); } } return null; }
@Override public Path<?> visit(TemplateExpression<?> expr, Void context) { return visit(expr.getArgs()); }
@Override public Integer visit(TemplateExpression<?> expr, Void context) { int result = expr.getTemplate().hashCode(); return 31 * result + expr.getArgs().hashCode(); }
@Override public Void visit(TemplateExpression<?> expr, Void context) { handleTemplate(expr.getTemplate(), expr.getArgs()); return null; }
@Override public final boolean equals(Object o) { if (o == this) { return true; } else if (o instanceof TemplateExpression) { TemplateExpression<?> c = (TemplateExpression<?>) o; return c.getTemplate().equals(template) && c.getType().equals(getType()) && c.getArgs().equals(args); } else { return false; } }