TimeObjectPair(long timestamp, Object container) { this.setTimestamp(timestamp); this.setContainer(container); }
/** * <根据inputExpr和whenExpr校验类型,inputExpr和WhenExpr类型必须可比较> * <功能详细描述> * */ private void validateCompareType(List<Class< ? >> compareTypes) throws IllegalDataTypeException { compareType = StreamClassUtil.getCommonType(compareTypes); if (StreamClassUtil.isNumberic(compareType)) { for (Class< ? > type : compareTypes) { if (type != compareType) { isCompareInfer = true; } } } }
/** {@inheritDoc} */ @Override public Number add(Number left, Number right) { BigDecimal bl = StreamClassUtil.getBigDecimalValue(left); BigDecimal br = StreamClassUtil.getBigDecimalValue(right); return bl.add(br); }
/** * 添加表达式 */ public void addOrderByExpression(ExpressionDescribe expression, SortEnum type) { orderbyExpressions.add(new Pair<ExpressionDescribe, SortEnum>(expression, type)); }
/** * 根据事件及设定属性名称,获得属性值相关MultiKey * <功能详细描述> */ public static MultiKey getMultiKey(IEvent event, String[] propertyNames) { Object[] keys = getProperties(event, propertyNames); return new MultiKey(keys); }
private Object processResult(Object result) { if (result == null) { return null; } if (isNumbericResult && result.getClass() != resultType) { result = StreamClassUtil.getNumbericValueForType((Number)result, resultType); } return result; }
/** * {@inheritDoc} */ @Override public void enter(Object value, boolean filter) { if (valueSet.add(value)) { inner.enter(value, filter); } }
/** * {@inheritDoc} */ @Override public void clear() { valueSet.clear(); inner.clear(); }
/** * {@inheritDoc} */ @Override public void leave(Object value, boolean filter) { if (valueSet.remove(value)) { inner.leave(value, filter); } }
private void validateResultType(List<Class< ? >> childTypes) throws IllegalDataTypeException { if (!childTypes.isEmpty()) { resultType = StreamClassUtil.getCommonType(childTypes); if (StreamClassUtil.isNumberic(resultType)) { isNumbericResult = true; } } }
private int compare(Number nl, Number nr) { BigDecimal left = StreamClassUtil.getBigDecimalValue(nl); BigDecimal right = StreamClassUtil.getBigDecimalValue(nr); return left.compareTo(right); }
/** * 根据事件及设定表达式,获得值相关MultiKey * <功能详细描述> */ public static MultiKey getMultiKey(IEvent event, IExpression[] exp) { Object[] keys = getExpressionValues(event, exp); return new MultiKey(keys); }
private Object processResult(Object result) { if (result == null) { return null; } if (isNumbericResult && result.getClass() != resultType) { result = StreamClassUtil.getNumbericValueForType((Number)result, resultType); } return result; }
/** * <根据thenExpr和elseExpr校验类型,从 result_expressions和可选 else_result_expression 的类型返回优先级最高的类型。> * <功能详细描述> * */ private void validateResultType(List<Class< ? >> childTypes) throws IllegalDataTypeException { if (!childTypes.isEmpty()) { resultType = StreamClassUtil.getCommonType(childTypes); if (StreamClassUtil.isNumberic(resultType)) { isNumbericResult = true; } } }
/** {@inheritDoc} */ @Override public Number subtract(Number left, Number right) { BigDecimal bl = StreamClassUtil.getBigDecimalValue(left); BigDecimal br = StreamClassUtil.getBigDecimalValue(right); return bl.subtract(br); }
/** * <根据事件求分组值> */ protected Object getGroupKey(IEvent theEvent) { if (exprs.length == 1) { return exprs[0].evaluate(theEvent); } Object[] values = new Object[exprs.length]; for (int i = 0; i < exprs.length; i++) { values[i] = exprs[i].evaluate(theEvent); } return new MultiKey(values); }
private boolean compare(Object inputValue, Object whenValue) { if (inputValue == null) { return whenValue == null; } if (whenValue == null) { return false; } if (isCompareInfer) { inputValue = StreamClassUtil.getNumbericValueForType((Number)inputValue, compareType); whenValue = StreamClassUtil.getNumbericValueForType((Number)whenValue, compareType); } return inputValue.equals(whenValue); }
/** {@inheritDoc} */ @Override public Number multiply(Number left, Number right) { BigDecimal bl = StreamClassUtil.getBigDecimalValue(left); BigDecimal br = StreamClassUtil.getBigDecimalValue(right); return bl.multiply(br); }
/** * <根据事件求分组值> */ protected Object getGroupKey(IEvent theEvent) { if (exprs.length == 1) { return exprs[0].evaluate(theEvent); } Object[] values = new Object[exprs.length]; for (int i = 0; i < exprs.length; i++) { values[i] = exprs[i].evaluate(theEvent); } return new MultiKey(values); }
/** {@inheritDoc} */ @Override public Number mod(Number left, Number right) { BigDecimal bl = StreamClassUtil.getBigDecimalValue(left); BigDecimal br = StreamClassUtil.getBigDecimalValue(right); if (br.signum() == 0) { LOG.warn("The value of rightExpression is 0,the result is null."); return null; } return new BigDecimal(bl.doubleValue() % br.doubleValue()); }