public void attach(EventType parentEventType, int streamNumber, ViewForgeEnv env) throws ViewParameterException {
if (viewParameters.size() != 2) {
throw new ViewParameterException("View requires a two parameters: the expression returning timestamps and the expression supplying OHLC data points");
}
ExprNode[] validatedNodes = ViewForgeSupport.validate("OHLC view", parentEventType, viewParameters, false, env, streamNumber);
timestampExpression = validatedNodes[0];
valueExpression = validatedNodes[1];
if ((timestampExpression.getForge().getEvaluationType() != long.class) && (timestampExpression.getForge().getEvaluationType() != Long.class)) {
throw new ViewParameterException("View requires long-typed timestamp values in parameter 1");
}
if ((valueExpression.getForge().getEvaluationType() != double.class) && (valueExpression.getForge().getEvaluationType() != Double.class)) {
throw new ViewParameterException("View requires double-typed values for in parameter 2");
}
String outputEventTypeName = env.getStatementCompileTimeServices().getEventTypeNameGeneratorStatement().getViewDerived(getViewName(), streamNumber);
EventTypeMetadata metadata = new EventTypeMetadata(outputEventTypeName, env.getModuleName(), EventTypeTypeClass.VIEWDERIVED, EventTypeApplicationType.CLASS, NameAccessModifier.TRANSIENT, EventTypeBusModifier.NONBUS, false, EventTypeIdPair.unassigned());
BeanEventTypeStem stem = env.getStatementCompileTimeServices().getBeanEventTypeStemService().getCreateStem(OHLCBarValue.class, null);
eventType = new BeanEventType(stem, metadata, env.getBeanEventTypeFactoryProtected(), null, null, null, null);
env.getEventTypeModuleCompileTimeRegistry().newType(eventType);
}