public void Attach(
            EventType parentEventType,
            StatementContext statementContext,
            ViewFactory optionalParentFactory,
            IList <ViewFactory> parentViewFactories)
        {
            var validated = ViewFactorySupport.Validate(
                ViewName, parentEventType, statementContext, _viewParameters, true);

            if (_viewParameters.Count != 2)
            {
                throw new ViewParameterException(ViewParamMessage);
            }

            if (!validated[0].ExprEvaluator.ReturnType.IsNumeric())
            {
                throw new ViewParameterException(ViewParamMessage);
            }
            _timestampExpression     = validated[0];
            _timestampExpressionEval = _timestampExpression.ExprEvaluator;
            ViewFactorySupport.AssertReturnsNonConstant(ViewName, validated[0], 0);

            _timeDeltaComputationFactory = ViewFactoryTimePeriodHelper.ValidateAndEvaluateTimeDeltaFactory(
                ViewName, statementContext, _viewParameters[1], ViewParamMessage, 1);
            _eventType = parentEventType;
        }
        public void Attach(EventType parentEventType, StatementContext statementContext, ViewFactory optionalParentFactory, IList <ViewFactory> parentViewFactories)
        {
            var windowName = ViewName;
            var validated  = ViewFactorySupport.Validate(windowName, parentEventType, statementContext, _viewParameters, true);

            if (_viewParameters.Count < 2 || _viewParameters.Count > 3)
            {
                throw new ViewParameterException(ViewParamMessage);
            }

            // validate first parameter: timestamp expression
            if (!validated[0].ExprEvaluator.ReturnType.IsNumeric())
            {
                throw new ViewParameterException(ViewParamMessage);
            }
            _timestampExpression     = validated[0];
            _timestampExpressionEval = _timestampExpression.ExprEvaluator;
            ViewFactorySupport.AssertReturnsNonConstant(windowName, validated[0], 0);

            _timeDeltaComputationFactory = ViewFactoryTimePeriodHelper.ValidateAndEvaluateTimeDeltaFactory(ViewName, statementContext, _viewParameters[1], ViewParamMessage, 1);

            // validate optional parameters
            if (validated.Length == 3)
            {
                var constant = ViewFactorySupport.ValidateAndEvaluate(windowName, statementContext, validated[2]);
                if ((!constant.IsNumber()) || constant.IsFloatingPointNumber())
                {
                    throw new ViewParameterException("Externally-timed batch view requires a long-typed reference point in msec as a third parameter");
                }
                _optionalReferencePoint = constant.AsLong();
            }

            this._eventType = parentEventType;
        }
Example #3
0
 public void SetViewParameters(ViewFactoryContext viewFactoryContext, IList <ExprNode> expressionParameters)
 {
     if (expressionParameters.Count != 1)
     {
         throw new ViewParameterException(ViewParamMessage);
     }
     _timeDeltaComputationFactory = ViewFactoryTimePeriodHelper.ValidateAndEvaluateTimeDeltaFactory(
         ViewName, viewFactoryContext.StatementContext, expressionParameters[0], ViewParamMessage, 0);
 }