package net.ion.craken.expression; import net.ion.craken.node.NodeCommonMap; import net.ion.craken.node.crud.Filters; import net.ion.framework.util.NumberUtil; import org.apache.lucene.search.Filter; public final class NumberExpression extends ValueObject implements Expression , ConstantExpression{ public final String number; public NumberExpression(String number) { this.number = number; } @Override public Comparable value(NodeCommonMap node) { return NumberUtil.createBigDecimal(number); } public Object constantValue(){ return NumberUtil.createBigDecimal(number) ; } @Override public Filter filter(Op operand, QualifiedNameExpression qne) { String field = qne.lastName(); long longValue = Long.parseLong(number) ; if( operand == Op.EQ){ return Filters.eq(qne.lastName(), longValue) ; } else if (operand == Op.CONTAIN) { return Filters.eq(qne.lastName(), longValue) ; } else if (operand == Op.GT){ return Filters.gt(field, longValue) ; } else if (operand == Op.GE) { return Filters.gte(field, longValue) ; } else if (operand == Op.LT) { return Filters.lt(field, longValue) ; } else if (operand == Op.LE){ return Filters.lte(field, longValue) ; } else { throw new IllegalArgumentException("operand :" + operand) ; } } }