private void verifyDivide() { if (ExpressionColCollector.collectMeasureColumns(getRight()).size() > 0) { throw new IllegalArgumentException( "That the right side of the BinaryTupleExpression owns columns is not supported for " + operator.toString()); } }
public String toString() { return operator.toString() + "(" + getLeft().toString() + "," + getRight().toString() + ")"; }
private void verifyMultiply() { if (ExpressionColCollector.collectMeasureColumns(getLeft()).size() > 0 // && ExpressionColCollector.collectMeasureColumns(getRight()).size() > 0) { throw new IllegalArgumentException( "That both of the two sides of the BinaryTupleExpression own columns is not supported for " + operator.toString()); } }
@Override public BigDecimal calculate(IEvaluatableTuple tuple, IFilterCodeSystem<?> cs) { assert children.size() == 2; BigDecimal left = DecimalUtil.toBigDecimal(getLeft().calculate(tuple, cs)); if (left == null) return null; BigDecimal right = DecimalUtil.toBigDecimal(getRight().calculate(tuple, cs)); if (right == null) return null; switch (operator) { case PLUS: return left.add(right); case MINUS: return left.subtract(right); case MULTIPLE: return left.multiply(right); case DIVIDE: return left.divide(right); default: throw new UnsupportedOperationException(); } }
@Override public TupleExpression visitBinary(BinaryTupleExpression binaryExpr) { binaryExpr.getLeft().accept(this); binaryExpr.getRight().accept(this); return binaryExpr; }
@Override public TupleExpression visitBinary(BinaryTupleExpression binaryExpr) { // serialize expression+true serializeExpression(1, binaryExpr, buffer, cs); // serialize children TupleExpression left = binaryExpr.getLeft().accept(this); TupleExpression right = binaryExpr.getRight().accept(this); // serialize none serializeExpression(-1, binaryExpr, buffer, cs); return decorator == null ? binaryExpr : new BinaryTupleExpression(binaryExpr.getOperator(), Lists.newArrayList(left, right)); }
ifToCnt = ifToCntO; ifCntSet = ifCntSetO; rightCopy = binaryExpr.getRight().accept(this); break; case MULTIPLE: case DIVIDE: if (ifToCntO) { ifToCnt = ExpressionColCollector.collectMeasureColumns(binaryExpr.getRight()).isEmpty(); rightCopy = binaryExpr.getRight().accept(this); ifCntSet = ifToCntO && (ifCntSet || !ifToCnt); break;
private void verifyDivide() { if (ExpressionColCollector.collectMeasureColumns(getRight()).size() > 0) { throw new IllegalArgumentException( "That the right side of the BinaryTupleExpression owns columns is not supported for " + operator.toString()); } }
public String toString() { return operator.toString() + "(" + getLeft().toString() + "," + getRight().toString() + ")"; }
private void verifyMultiply() { if (ExpressionColCollector.collectMeasureColumns(getLeft()).size() > 0 // && ExpressionColCollector.collectMeasureColumns(getRight()).size() > 0) { throw new IllegalArgumentException( "That both of the two sides of the BinaryTupleExpression own columns is not supported for " + operator.toString()); } }
@Override public BigDecimal calculate(IEvaluatableTuple tuple, IFilterCodeSystem<?> cs) { assert children.size() == 2; BigDecimal left = DecimalUtil.toBigDecimal(getLeft().calculate(tuple, cs)); if (left == null) return null; BigDecimal right = DecimalUtil.toBigDecimal(getRight().calculate(tuple, cs)); if (right == null) return null; switch (operator) { case PLUS: return left.add(right); case MINUS: return left.subtract(right); case MULTIPLE: return left.multiply(right); case DIVIDE: return left.divide(right); default: throw new UnsupportedOperationException(); } }
@Override public TupleExpression visitBinary(BinaryTupleExpression binaryExpr) { binaryExpr.getLeft().accept(this); binaryExpr.getRight().accept(this); return binaryExpr; }
@Override public TupleExpression visitBinary(BinaryTupleExpression binaryExpr) { // serialize expression+true serializeExpression(1, binaryExpr, buffer, cs); // serialize children TupleExpression left = binaryExpr.getLeft().accept(this); TupleExpression right = binaryExpr.getRight().accept(this); // serialize none serializeExpression(-1, binaryExpr, buffer, cs); return decorator == null ? binaryExpr : new BinaryTupleExpression(binaryExpr.getOperator(), Lists.newArrayList(left, right)); }
ifToCnt = ifToCntO; ifCntSet = ifCntSetO; rightCopy = binaryExpr.getRight().accept(this); break; case MULTIPLE: case DIVIDE: if (ifToCntO) { ifToCnt = ExpressionColCollector.collectMeasureColumns(binaryExpr.getRight()).isEmpty(); rightCopy = binaryExpr.getRight().accept(this); ifCntSet = ifToCntO && (ifCntSet || !ifToCnt); break;