@Nonnull @Override public ExprEval getObject() { return expression.eval(bindings); }
@Override public ExprEval apply(List<Expr> args, Expr.ObjectBinding bindings) { if (args.size() != 1) { throw new IAE("Function[%s] needs 1 argument", name()); } Expr expr = args.get(0); return eval(expr.eval(bindings)); }
@Nonnull @Override public ExprEval eval(final ObjectBinding bindings) { final PeriodGranularity granularity = getGranularity(args, bindings); return ExprEval.of(granularity.bucketEnd(DateTimes.utc(args.get(0).eval(bindings).asLong())).getMillis()); }
@Override public ExprEval apply(List<Expr> args, Expr.ObjectBinding bindings) { if (args.size() != 1) { throw new IAE("Function[%s] needs 1 argument", name()); } final ExprEval expr = args.get(0).eval(bindings); return ExprEval.of(expr.value() != null, ExprType.LONG); } }
@Nonnull @Override public ExprEval eval(final ObjectBinding bindings) { ExprEval eval = arg.eval(bindings); if (eval.isNumericNull()) { // Return null if the argument if null. return ExprEval.of(null); } return ExprEval.of(granularity.bucketEnd(DateTimes.utc(arg.eval(bindings).asLong())).getMillis()); }
@Nonnull @Override public ExprEval eval(final ObjectBinding bindings) { return ExprEval.of(chronology.add(period, arg.eval(bindings).asLong(), step)); }
@Override public ExprEval apply(List<Expr> args, Expr.ObjectBinding bindings) { if (args.size() != 1) { throw new IAE("Function[%s] needs 1 argument", name()); } final String arg = args.get(0).eval(bindings).asString(); return arg == null ? ExprEval.ofLong(NullHandling.defaultLongValue()) : ExprEval.of(arg.length()); } }
@Nonnull @Override public ExprEval eval(final ObjectBinding bindings) { final PeriodGranularity granularity = getGranularity(args, bindings); final Period period = granularity.getPeriod(); final Chronology chronology = ISOChronology.getInstance(granularity.getTimeZone()); final int step = getStep(args, bindings); return ExprEval.of(chronology.add(period, args.get(0).eval(bindings).asLong(), step)); }
@Nonnull @Override public ExprEval eval(final ObjectBinding bindings) { ExprEval eval = arg.eval(bindings); if (eval.isNumericNull()) { // Return null if the argument if null. return ExprEval.of(null); } return ExprEval.of(granularity.bucketStart(DateTimes.utc(eval.asLong())).getMillis()); }
@Override public ExprEval apply(List<Expr> args, Expr.ObjectBinding bindings) { if (args.size() != 1) { throw new IAE("Function[%s] needs 1 argument", name()); } final String arg = args.get(0).eval(bindings).asString(); if (arg == null) { return ExprEval.of(NullHandling.defaultStringValue()); } return ExprEval.of(StringUtils.toLowerCase(arg)); } }
@Nonnull @Override public ExprEval eval(ObjectBinding bindings) { ExprEval ret = expr.eval(bindings); if (NullHandling.sqlCompatible() && (ret.value() == null)) { return ExprEval.of(null); } // conforming to other boolean-returning binary operators ExprType retType = ret.type() == ExprType.DOUBLE ? ExprType.DOUBLE : ExprType.LONG; return ExprEval.of(!ret.asBoolean(), retType); }
public ExprEval compute(final int id) { ExprEval value = m.getAndMoveToFirst(id); if (value == null) { value = expression.eval(bindings); m.putAndMoveToFirst(id, value); if (m.size() > CACHE_SIZE) { m.removeLast(); } } return value; } }
private ExprEval eval(String x, Expr.ObjectBinding bindings) { return Parser.parse(x, ExprMacroTable.nil()).eval(bindings); }
private void assertExpr(final String expression, final Object expectedResult) { final Expr expr = Parser.parse(expression, LookupEnabledTestExprMacroTable.INSTANCE); Assert.assertEquals(expression, expectedResult, expr.eval(BINDINGS).value()); } }
private void validateConstantExpression(String expression, Object expected) { Assert.assertEquals( expression, expected, Parser.parse(expression, ExprMacroTable.nil()).eval(Parser.withMap(ImmutableMap.of())).value() ); } }
private void assertExpr(final String expression, final Object expectedResult) { final Expr expr = Parser.parse(expression, ExprMacroTable.nil()); Assert.assertEquals(expression, expectedResult, expr.eval(bindings).value()); }