protected String getKeyForPath(Path<?> expr, PathMetadata metadata) { return metadata.getElement().toString(); }
protected String getKeyForPath(Path<?> expr, PathMetadata metadata) { return metadata.getElement().toString(); }
/** * Get the String representation of the last path element * * @param path path * @return String representation */ private String toString(Path<?> path) { return path.getMetadata().getElement().toString(); }
@Override public String visit(Path<?> p, Templates templates) { final Path<?> parent = p.getMetadata().getParent(); final Object elem = p.getMetadata().getElement(); if (parent != null) { Template pattern = templates.getTemplate(p.getMetadata().getPathType()); if (pattern != null) { final List<?> args = Arrays.asList(parent, elem); final StringBuilder builder = new StringBuilder(); for (Template.Element element : pattern.getElements()) { Object rv = element.convert(args); if (rv instanceof Expression) { builder.append(((Expression<?>) rv).accept(this, templates)); } else { builder.append(rv.toString()); } } return builder.toString(); } else { throw new IllegalArgumentException("No pattern for " + p.getMetadata().getPathType()); } } else { return elem.toString(); } }
@Override public Expression<?> visit(Path<?> expr, C context) { if (expr.getMetadata().isRoot()) { return expr; } else { PathMetadata metadata = expr.getMetadata(); Path<?> parent = (Path) metadata.getParent().accept(this, context); Object element = metadata.getElement(); if (element instanceof Expression<?>) { element = ((Expression<?>) element).accept(this, context); } if (parent.equals(metadata.getParent()) && Objects.equal(element, metadata.getElement())) { return expr; } else { metadata = new PathMetadata(parent, element, metadata.getPathType()); return ExpressionUtils.path(expr.getType(), metadata); } } }
@Override public Void visit(Path<?> path, Void context) { final PathType pathType = path.getMetadata().getPathType(); final Template template = templates.getTemplate(pathType); final Object element = path.getMetadata().getElement(); List<Object> args; if (path.getMetadata().getParent() != null) { args = ImmutableList.of(path.getMetadata().getParent(), element); } else { args = ImmutableList.of(element); } handleTemplate(template, args); return null; }
@SuppressWarnings("rawtypes") private static <T> Path<T> replaceParent(Path<T> path, Path<?> parent) { PathMetadata metadata = new PathMetadata(parent, path.getMetadata().getElement(), path.getMetadata().getPathType()); if (path instanceof CollectionExpression) { CollectionExpression<?,?> col = (CollectionExpression<?,?>) path; return (Path<T>) Expressions.listPath(col.getParameter(0), SimplePath.class, metadata); } else { return ExpressionUtils.path(path.getType(), metadata); } }
args.add(path.getMetadata().getParent()); args.add(path.getMetadata().getElement()); final Template template = getTemplate(pathType); for (Template.Element element : template.getElements()) {
protected String getKeyForPath(Path<?> expr, PathMetadata metadata) { return metadata.getElement().toString(); }
/** * Get the String representation of the last path element * * @param path path * @return String representation */ private String toString(Path<?> path) { return path.getMetadata().getElement().toString(); }
@Override public String getLeafProperty() { return path.getMetadata().getElement().toString(); }
public static Identifier identifier( Path<?> entityPath ) { return identifier( entityPath.getMetadata().getElement().toString() ); }
public Iterable<T> iterable( Iterator<Map<String, Object>> result ) { List<T> entities = new ArrayList<T>(); while (result.hasNext()) { Map<String, Object> row = result.next(); Object[] args = new Object[row.size()]; int idx = 0; for ( Expression<?> expression : bean.getArgs() ) { args[idx++] = row.get( ((Path) expression).getMetadata().getElement().toString() ); } entities.add( bean.newInstance( args ) ); } return entities; } }
public static Property property( Path<?> entityPath ) { return identifier( entityPath.getRoot().toString() ).property( entityPath.getMetadata().getElement() .toString() ); }
public static NumericExpression number( Path<?> entityPath ) { return identifier( entityPath.getRoot().toString() ).number( entityPath.getMetadata().getElement() .toString() ); }
public static StringExpression string( Path<?> entityPath ) { return identifier( entityPath.getRoot().toString() ).string( entityPath.getMetadata().getElement() .toString() ); }
@SuppressWarnings("unchecked") private void addCondition(Context context, int i, Path<?> path, boolean where) { paths.add(path); EntityPath<?> alias = context.replacements.get(i); leftJoin((Expression) path.getMetadata().getParent(), context.replacements.get(i)); Expression index = ExpressionUtils.operation(Integer.class, JPQLOps.INDEX, alias); Object element = path.getMetadata().getElement(); if (!(element instanceof Expression)) { element = ConstantImpl.create(element); } Predicate condition = ExpressionUtils.eq(index, (Expression) element); if (where) { super.where(condition); } else { super.having(condition); } }
@Override public Expression<?> visit(Path<?> expr, C context) { if (expr.getMetadata().isRoot()) { return expr; } else { PathMetadata metadata = expr.getMetadata(); Path<?> parent = (Path) metadata.getParent().accept(this, context); Object element = metadata.getElement(); if (element instanceof Expression<?>) { element = ((Expression<?>) element).accept(this, context); } if (parent.equals(metadata.getParent()) && Objects.equal(element, metadata.getElement())) { return expr; } else { metadata = new PathMetadata(parent, element, metadata.getPathType()); return ExpressionUtils.path(expr.getType(), metadata); } } }
@Override public Void visit(Path<?> path, Void context) { final PathType pathType = path.getMetadata().getPathType(); final Template template = templates.getTemplate(pathType); final Object element = path.getMetadata().getElement(); List<Object> args; if (path.getMetadata().getParent() != null) { args = ImmutableList.of(path.getMetadata().getParent(), element); } else { args = ImmutableList.of(element); } handleTemplate(template, args); return null; }
@SuppressWarnings("rawtypes") private static <T> Path<T> replaceParent(Path<T> path, Path<?> parent) { PathMetadata metadata = new PathMetadata(parent, path.getMetadata().getElement(), path.getMetadata().getPathType()); if (path instanceof CollectionExpression) { CollectionExpression<?,?> col = (CollectionExpression<?,?>) path; return (Path<T>) Expressions.listPath(col.getParameter(0), SimplePath.class, metadata); } else { return ExpressionUtils.path(path.getType(), metadata); } }