private <V> Expression<V> getLookup(Expression<V> expression) { if (expression instanceof GroupExpression) { @SuppressWarnings("unchecked") // This is the underlying type GroupExpression<V, ?> groupExpression = (GroupExpression<V, ?>) expression; return groupExpression.getExpression(); } else { return expression; } }
@Override public boolean equals(Object o) { if (o != null && getClass().equals(o.getClass())) { return ((GroupExpression<?,?>) o).getExpression().equals(expr); } else { return false; } }
@Override @SuppressWarnings("unchecked") public <T, R> R getGroup(GroupExpression<T, R> definition) { for (GroupExpression<?, ?> def : groupExpressions) { if (def.equals(definition)) { return (R) groupCollectorMap.get(def.getExpression()).get(); } } throw new NoSuchElementException(definition.toString()); }
@SuppressWarnings({ "rawtypes", "unchecked" }) public Mixin(GroupExpression<K, T> keyExpression, GroupExpression<V, U> valueExpression, AbstractGroupExpression<Pair<T, U>, R> mixin) { super((Class) mixin.getType(), QPair.create(keyExpression.getExpression(), valueExpression.getExpression())); this.keyExpression = keyExpression; this.valueExpression = valueExpression; this.mixin = mixin; }
@SuppressWarnings({ "unchecked", "rawtypes" }) public MixinGroupExpression(GroupExpression<E, F> groupExpression, GroupExpression<F, R> mixin) { super((Class) mixin.getType(), groupExpression.getExpression()); this.mixin = mixin; this.groupExpression = groupExpression; }
public GroupImpl(List<GroupExpression<?, ?>> columnDefinitions, List<QPair<?, ?>> maps) { this.groupExpressions = columnDefinitions; this.maps = maps; for (int i = 0; i < columnDefinitions.size(); i++) { GroupExpression<?, ?> coldef = columnDefinitions.get(i); GroupCollector<?,?> collector = groupCollectorMap.get(coldef.getExpression()); if (collector == null) { collector = coldef.createGroupCollector(); Expression<?> coldefExpr = coldef.getExpression(); groupCollectorMap.put(coldefExpr, collector); if (coldefExpr instanceof Operation && ((Operation) coldefExpr).getOperator() == Ops.ALIAS) { groupCollectorMap.put(((Operation) coldefExpr).getArg(1), collector); } } groupCollectors.add(collector); } }
protected static FactoryExpression<Tuple> withoutGroupExpressions(final FactoryExpression<Tuple> expr) { List<Expression<?>> args = new ArrayList<Expression<?>>(expr.getArgs().size()); for (Expression<?> arg : expr.getArgs()) { if (arg instanceof GroupExpression) { args.add(((GroupExpression) arg).getExpression()); } else { args.add(arg); } } return new FactoryExpressionAdapter<Tuple>(expr, args); }
@SuppressWarnings("unchecked") AbstractGroupByTransformer(Expression<K> key, Expression<?>... expressions) { List<Expression<?>> projection = new ArrayList<Expression<?>>(expressions.length); groupExpressions.add(new GOne<K>(key)); projection.add(key); for (Expression<?> expr : expressions) { if (expr instanceof GroupExpression<?,?>) { GroupExpression<?,?> groupExpr = (GroupExpression<?,?>) expr; groupExpressions.add(groupExpr); Expression<?> colExpression = groupExpr.getExpression(); if (colExpression instanceof Operation && ((Operation) colExpression).getOperator() == Ops.ALIAS) { projection.add(((Operation) colExpression).getArg(0)); } else { projection.add(colExpression); } if (groupExpr instanceof GMap) { maps.add((QPair<?, ?>) colExpression); } } else { groupExpressions.add(new GOne(expr)); projection.add(expr); } } this.expressions = projection.toArray(new Expression[projection.size()]); }
private <V> Expression<V> getLookup(Expression<V> expression) { if (expression instanceof GroupExpression) { @SuppressWarnings("unchecked") // This is the underlying type GroupExpression<V, ?> groupExpression = (GroupExpression<V, ?>) expression; return groupExpression.getExpression(); } else { return expression; } }
@Override public boolean equals(Object o) { if (o != null && getClass().equals(o.getClass())) { return ((GroupExpression<?,?>) o).getExpression().equals(expr); } else { return false; } }
@SuppressWarnings({ "rawtypes", "unchecked" }) public Mixin(GroupExpression<K, T> keyExpression, GroupExpression<V, U> valueExpression, AbstractGroupExpression<Pair<T, U>, R> mixin) { super((Class) mixin.getType(), QPair.create(keyExpression.getExpression(), valueExpression.getExpression())); this.keyExpression = keyExpression; this.valueExpression = valueExpression; this.mixin = mixin; }
@Override @SuppressWarnings("unchecked") public <T, R> R getGroup(GroupExpression<T, R> definition) { for (GroupExpression<?, ?> def : groupExpressions) { if (def.equals(definition)) { return (R) groupCollectorMap.get(def.getExpression()).get(); } } throw new NoSuchElementException(definition.toString()); }
@SuppressWarnings({ "unchecked", "rawtypes" }) public MixinGroupExpression(GroupExpression<E, F> groupExpression, GroupExpression<F, R> mixin) { super((Class) mixin.getType(), groupExpression.getExpression()); this.mixin = mixin; this.groupExpression = groupExpression; }
public GroupImpl(List<GroupExpression<?, ?>> columnDefinitions, List<QPair<?, ?>> maps) { this.groupExpressions = columnDefinitions; this.maps = maps; for (int i = 0; i < columnDefinitions.size(); i++) { GroupExpression<?, ?> coldef = columnDefinitions.get(i); GroupCollector<?,?> collector = groupCollectorMap.get(coldef.getExpression()); if (collector == null) { collector = coldef.createGroupCollector(); Expression<?> coldefExpr = coldef.getExpression(); groupCollectorMap.put(coldefExpr, collector); if (coldefExpr instanceof Operation && ((Operation) coldefExpr).getOperator() == Ops.ALIAS) { groupCollectorMap.put(((Operation) coldefExpr).getArg(1), collector); } } groupCollectors.add(collector); } }
protected static FactoryExpression<Tuple> withoutGroupExpressions(final FactoryExpression<Tuple> expr) { List<Expression<?>> args = new ArrayList<Expression<?>>(expr.getArgs().size()); for (Expression<?> arg : expr.getArgs()) { if (arg instanceof GroupExpression) { args.add(((GroupExpression) arg).getExpression()); } else { args.add(arg); } } return new FactoryExpressionAdapter<Tuple>(expr, args); }
@SuppressWarnings("unchecked") AbstractGroupByTransformer(Expression<K> key, Expression<?>... expressions) { List<Expression<?>> projection = new ArrayList<Expression<?>>(expressions.length); groupExpressions.add(new GOne<K>(key)); projection.add(key); for (Expression<?> expr : expressions) { if (expr instanceof GroupExpression<?,?>) { GroupExpression<?,?> groupExpr = (GroupExpression<?,?>) expr; groupExpressions.add(groupExpr); Expression<?> colExpression = groupExpr.getExpression(); if (colExpression instanceof Operation && ((Operation) colExpression).getOperator() == Ops.ALIAS) { projection.add(((Operation) colExpression).getArg(0)); } else { projection.add(colExpression); } if (groupExpr instanceof GMap) { maps.add((QPair<?, ?>) colExpression); } } else { groupExpressions.add(new GOne(expr)); projection.add(expr); } } this.expressions = projection.toArray(new Expression[projection.size()]); }