/** * Get a new instance of this filter with the given pattern. * * @param pattern Pattern of the new filter * * @return a new instance of this filter with the given pattern */ public RegularExpressionFilter withPattern(Pattern pattern) { return new RegularExpressionFilter(getDimension(), pattern); }
/** * Evaluates a regular expression filter. * * @param regexFilter A regexFilter 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( RegularExpressionFilter regexFilter, RelBuilder builder, ApiToFieldMapper apiToFieldMapper ) { // todo test this String apiName = regexFilter.getDimension().getApiName(); return builder.call( SqlStdOperatorTable.LIKE, builder.field(apiToFieldMapper.apply(apiName)), builder.literal(regexFilter.getPattern().toString()) ); }
@Override public RegularExpressionFilter withDimension(Dimension dimension) { return new RegularExpressionFilter(dimension, pattern); }