/** * @param newPath * @param path * @return */ private <P extends Path<?>> P addMetadataOf(P newPath, Path<?> path) { if (path.getMetadata().getParent() instanceof EntityPath) { EntityPath<?> parent = (EntityPath)path.getMetadata().getParent(); propertyMetadata.put(newPath, parent.getMetadata(path)); } return newPath; }
private Path<?> normalizePath(Path<?> expr) { Context context = new Context(); Path<?> replaced = (Path<?>)expr.accept(CollectionAnyVisitor.DEFAULT, context); if (!replaced.equals(expr)) { for (int i = 0; i < context.paths.size(); i++) { Path path = context.paths.get(i).getMetadata().getParent(); Path replacement = context.replacements.get(i); this.innerJoin(path, replacement); } return replaced; } else { return expr; } }
@SuppressWarnings({ "unchecked", "rawtypes" }) private <T> Type<T> getType(@Nullable Path<?> path, Class<T> clazz) { if (hasTableColumnTypes && path != null && !clazz.equals(Null.class) && path.getMetadata().getParent() instanceof RelationalPath) { String table = ((RelationalPath)path.getMetadata().getParent()).getTableName(); String column = ColumnMetadata.getName(path); Type<T> type = (Type)javaTypeMapping.getType(table, column); if (type != null) { return type; } } return javaTypeMapping.getType(clazz); }
@Override public Void visit(Path<?> path, Void context) { if (path.getMetadata().getParent() == null && !path.getType().equals(path.getClass())){ super.visit(path, context); append(".*"); entityPaths.add(path); }else{ super.visit(path, context); } return null; }
@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; }
private MappedPath getMappedPath(Path<?> path) { PathMetadata<?> md = path.getMetadata(); if (path.getMetadata().getPathType() != PathType.PROPERTY) { md = md.getParent().getMetadata(); } MappedClass mc = configuration.getMappedClass(md.getParent().getType()); return mc.getMappedPath(md.getElement().toString()); }
protected void appendAsColumnName(Path<?> path, boolean precededByDot) { String column = ColumnMetadata.getName(path); if (path.getMetadata().getParent() instanceof RelationalPath) { RelationalPath<?> parent = (RelationalPath<?>)path.getMetadata().getParent(); column = configuration.getColumnOverride(parent.getSchemaAndTable(), column); } append(templates.quoteIdentifier(column, precededByDot)); }
@SuppressWarnings("unchecked") private void addCondition(Context context, int i, Path<?> path, boolean where) { EntityPath<?> alias = context.replacements.get(i); from(alias); Predicate condition = PredicateOperation.create(Ops.IN, alias, path.getMetadata().getParent()); if (where) { super.where(condition); } else { super.having(condition); } }
private void handleJoinTarget(JoinExpression je) { // type specifier if (je.getTarget() instanceof EntityPath<?>) { EntityPath<?> pe = (EntityPath<?>) je.getTarget(); if (pe.getMetadata().getParent() == null) { if (pe.getType().getPackage() != null){ String pn = pe.getType().getPackage().getName(); String typeName = pe.getType().getName().substring(pn.length() + 1); append(typeName); }else{ append(pe.getType().getName()); } append(" "); } } handle(je.getTarget()); }
/** * template method, override to customize * * @param path * @return */ protected String toField(Path<?> path) { String rv = path.getMetadata().getName(); if (path.getMetadata().getParent() != null) { Path<?> parent = path.getMetadata().getParent(); if (parent.getMetadata().getPathType() != PathType.VARIABLE) { rv = toField(parent) + "." + rv; } } return rv; }
@Override public String visit(Path<?> expr, Void context) { PathMetadata<?> metadata = expr.getMetadata(); if (metadata.getParent() != null) { Path<?> parent = metadata.getParent(); if (parent.getMetadata().getPathType() == PathType.DELEGATE) { parent = parent.getMetadata().getParent(); } if (metadata.getPathType() == PathType.COLLECTION_ANY) { return visit(parent, context); } else if (parent.getMetadata().getPathType() != PathType.VARIABLE) { String rv = getKeyForPath(expr, metadata); String parentStr = visit(parent, context); return rv != null ? parentStr + "." + rv : parentStr; } } return getKeyForPath(expr, metadata); }
public static String getName(Path<?> path) { Path<?> parent = path.getMetadata().getParent(); if (parent instanceof EntityPath) { Object columnMetadata = ((EntityPath<?>) parent).getMetadata(path); if (columnMetadata instanceof ColumnMetadata) { return ((ColumnMetadata)columnMetadata).getName(); } } return path.getMetadata().getName(); }
@Override public Set<RelationalPath<?>> visit(Path<?> expr, Set<RelationalPath<?>> known) { if (expr.getMetadata().isRoot()) { if (expr instanceof RelationalPath) { known = add(known, (RelationalPath<?>)expr); } } else { known = expr.getMetadata().getParent().accept(this, known); } return known; }
/** * Returns this path's column metadata if present. Otherwise returns default * metadata where the column name is equal to the path's name. */ public static ColumnMetadata getColumnMetadata(Path<?> path) { Path<?> parent = path.getMetadata().getParent(); if (parent instanceof EntityPath) { Object columnMetadata = ((EntityPath<?>) parent).getMetadata(path); if (columnMetadata instanceof ColumnMetadata) { return (ColumnMetadata)columnMetadata; } } return ColumnMetadata.named(path.getMetadata().getName()); }
private void serializeVariables(List<JoinExpression> joins) { append(VARIABLES); for (int i = 1; i < joins.size(); i++) { final JoinExpression je = joins.get(i); if (i > 1) { append("; "); } // type specifier if (je.getTarget() instanceof EntityPath) { final EntityPath<?> pe = (EntityPath<?>) je.getTarget(); if (pe.getMetadata().getParent() == null) { append(pe.getType().getName()).append(" "); } } handle(je.getTarget()); } }
@Override public final AnnotatedElement getAnnotatedElement() { if (annotatedElement == null) { if (metadata.getPathType() == PathType.PROPERTY) { Class<?> beanClass = metadata.getParent().getType(); String propertyName = metadata.getName(); annotatedElement = ReflectionUtils.getAnnotatedElement(beanClass, propertyName, getType()); } else { annotatedElement = getType(); } } return annotatedElement; }
@Test public void BasicStructure2() { assertEquals(cat, cat.alive.getMetadata().getParent()); }
@Override public Void visit(Path<?> expr, Void context) { if (expr.getMetadata().getElement() instanceof Expression) { handle((Expression) expr.getMetadata().getElement()); } handle(expr.getMetadata().getParent()); return null; }
@Test public void BasicStructure() { assertNull(cat.getMetadata().getParent()); }