@Override public InFilter withDimension(Dimension dimension) { return new InFilter(dimension, getValues()); }
@Override public String toString() { return "Filter{ type=" + getType() + ", dimension=" + getDimension() + ", value=" + getValues() + "}"; } }
/** * Evaluates an Infilter filter. * * @param inFilter An inFilter to be evaluated. * @param builder The RelBuilder used to build queries with Calcite. * @param apiToFieldMapper A function to get the aliased aggregation's name from the metric name. * * @return a RexNode containing an equivalent filter to the one given. */ public RexNode evaluate(InFilter inFilter, RelBuilder builder, ApiToFieldMapper apiToFieldMapper) { Dimension dimension = inFilter.getDimension(); OrFilter orFilterOfSelectors = new OrFilter( inFilter.getValues() .stream() .map(value -> new SelectorFilter(dimension, value)) .collect(Collectors.toList()) ); return dispatcher.invoke(orFilterOfSelectors); }