package org.araqne.logdb.query.expr; import java.util.List; import org.araqne.logdb.QueryContext; import org.araqne.logdb.Row; public class Pow extends FunctionExpression { private Expression valueExpr1; private Expression valueExpr2; public Pow(QueryContext ctx, List<Expression> exprs) { super("pow", exprs, 2); this.valueExpr1 = exprs.get(0); this.valueExpr2 = exprs.get(1); } @Override public Object eval(Row row) { Object value1 = valueExpr1.eval(row); if (value1 == null) return null; Object value2 = valueExpr2.eval(row); if (value2 == null) return null; if (value1 instanceof Number && value2 instanceof Number) { double d1 = ((Number) value1).doubleValue(); double d2 = ((Number) value2).doubleValue(); return Math.pow(d1, d2); } else { return null; } } }