protected Map<String, Path<?>> getColumns(RelationalPath<?> path) { Map<String, Path<?>> columns = Maps.newLinkedHashMap(); for (Path<?> column : path.getColumns()) { columns.put(column.getMetadata().getName(), column); } return columns; }
private static <T> FactoryExpression<T> createBeanProjection(RelationalPath<T> path) { Map<String,Expression<?>> bindings = new LinkedHashMap<String,Expression<?>>(); for (Path<?> column : path.getColumns()) { bindings.put(column.getMetadata().getName(), column); } if (bindings.isEmpty()) { throw new IllegalArgumentException("No bindings could be derived from " + path); } return new QBean<T>((Class)path.getType(), true, bindings); }
@SuppressWarnings("unchecked") public QBeans(RelationalPath<?>... beanPaths) { super(Beans.class); try { final ImmutableList.Builder<Expression<?>> listBuilder = ImmutableList.builder(); final ImmutableMap.Builder<RelationalPath<?>, QBean<?>> mapBuilder = ImmutableMap.builder(); for (RelationalPath<?> path : beanPaths) { Map<String, Expression<?>> bindings = new LinkedHashMap<String, Expression<?>>(); for (Path<?> column : path.getColumns()) { bindings.put(column.getMetadata().getName(), column); listBuilder.add(column); } mapBuilder.put(path, new QBean<Object>((Class)path.getType(), bindings)); } expressions = listBuilder.build(); qBeans = mapBuilder.build(); } catch (Exception e) { throw new IllegalStateException(e); } }
@Override public long execute() { int rv = 0; for (T match : query.list(expr)) { BeanMap beanMap = new BeanMap(match); for (Map.Entry<Path<?>,Object> entry : paths.entrySet()) { // TODO : support deep updates as well String propertyName = entry.getKey().getMetadata().getName(); beanMap.put(propertyName, entry.getValue()); } rv++; } return rv; }
/** * Create a fuzzy query * * @param path * @param value * @return */ public static BooleanExpression fuzzyLike(Path<String> path, String value) { Term term = new Term(path.getMetadata().getName(), value); return new QueryElement(new FuzzyQuery(term)); }
private static ImmutableMap<String,Expression<?>> createBindings(Expression<?>... args) { ImmutableMap.Builder<String, Expression<?>> rv = ImmutableMap.builder(); for (Expression<?> expr : args) { if (expr instanceof Path<?>) { Path<?> path = (Path<?>)expr; rv.put(path.getMetadata().getName(), expr); } else if (expr instanceof Operation<?>) { Operation<?> operation = (Operation<?>)expr; if (operation.getOperator() == Ops.ALIAS && operation.getArg(1) instanceof Path<?>) { Path<?> path = (Path<?>)operation.getArg(1); if (isCompoundExpression(operation.getArg(0))) { rv.put(path.getMetadata().getName(), operation.getArg(0)); } else { rv.put(path.getMetadata().getName(), operation); } } else { throw new IllegalArgumentException("Unsupported expression " + expr); } } else { throw new IllegalArgumentException("Unsupported expression " + expr); } } return rv.build(); }
/** * Create a fuzzy query * * @param path * @param value * @param minimumSimilarity * @return */ public static BooleanExpression fuzzyLike(Path<String> path, String value, float minimumSimilarity) { Term term = new Term(path.getMetadata().getName(), value); return new QueryElement(new FuzzyQuery(term, minimumSimilarity)); }
/** * Create a fuzzy query * * @param path * @param value * @param minimumSimilarity * @param prefixLength * @return */ public static BooleanExpression fuzzyLike(Path<String> path, String value, float minimumSimilarity, int prefixLength) { Term term = new Term(path.getMetadata().getName(), value); return new QueryElement(new FuzzyQuery(term, minimumSimilarity, prefixLength)); }
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(); }
/** * 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()); }
@Test public void BasicStructure3() { assertEquals("cat", cat.getMetadata().getName()); }
@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; }
/** * 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; }
if (pathType == PathType.PROPERTY) { final Path<?> parent = path.getMetadata().getParent(); final String property = path.getMetadata().getName(); final Class<?> parentType = parent.getType(); try {