@Override public void attach(EventType parentEventType, StatementContext context, ViewFactory optionalParentViewFactory, List<ViewFactory> parentViewFactories) throws ViewParameterException { ExprNode[] validated = ViewFactorySupport.validate("Holt-Winters view", parentEventType, context, Arrays.asList(fieldName), false); if (!JavaClassHelper.isNumeric(validated[0].getExprEvaluator().getType())) { throw new ViewParameterException("The field expression for the Holt-Winters view must be of a numeric type"); } fieldName = validated[0]; eventType = HoltWinters.createEventType(context); }
@Override public void setViewParameters(ViewFactoryContext context, List<ExprNode> viewParameters) throws ViewParameterException { fieldName = viewParameters.get(0); List<Object> evaluated = ViewFactorySupport.validateAndEvaluate("Holt-Winters view", context.getStatementContext(), viewParameters.subList(1, viewParameters.size())); alpha = toNumber("alpha", evaluated.get(0)).doubleValue(); if (evaluated.size() > 1) { beta = toNumber("beta", evaluated.get(1)).doubleValue(); if (evaluated.size() > 2) { gamma = toNumber("gamma", evaluated.get(2)).doubleValue(); period = toNumber("period", evaluated.get(3)).intValue(); } } }
@Override public void attach(EventType parentEventType, StatementContext statementContext, ViewFactory optionalParentFactory, List<ViewFactory> parentViewFactories) throws ViewParameterException { ExprNode[] validatedNodes = ViewFactorySupport.validate("OHLC view", parentEventType, statementContext, viewParameters, false); timestampExpression = validatedNodes[0]; valueExpression = validatedNodes[1]; volumeExpression = validatedNodes[2]; marketExpression = validatedNodes[3]; intervalExpression = validatedNodes[4]; if ((timestampExpression.getExprEvaluator().getType() != long.class) && (timestampExpression.getExprEvaluator().getType() != Long.class)) { throw new ViewParameterException("View requires long-typed timestamp values in parameter 1"); } if ((valueExpression.getExprEvaluator().getType() != double.class) && (valueExpression.getExprEvaluator().getType() != Double.class)) { throw new ViewParameterException("View requires double-typed values for in parameter 2"); } if ((volumeExpression.getExprEvaluator().getType() != double.class) && (volumeExpression.getExprEvaluator().getType() != Double.class)) { throw new ViewParameterException("View requires double-typed values for in parameter 3"); } if ((marketExpression.getExprEvaluator().getType() != Tradeable.class) && (marketExpression.getExprEvaluator().getType() != Tradeable.class)) { throw new ViewParameterException("View requires tradeable-typed values for in parameter 4"); } if ((intervalExpression.getExprEvaluator().getType() != double.class) && (intervalExpression.getExprEvaluator().getType() != Double.class)) { throw new ViewParameterException("View requires double-typed values for in parameter 5"); } }