public StmtClassForgableAIFactoryProviderCreateSchema( string className, CodegenNamespaceScope namespaceScope, StatementAgentInstanceFactoryCreateSchemaForge forge) : base(className, namespaceScope) { this.forge = forge; }
public StmtForgeMethodResult Make( string @namespace, string classPostfix, StatementCompileTimeServices services) { var statementSpec = @base.StatementSpec; var spec = statementSpec.Raw.CreateSchemaDesc; if (services.EventTypeCompileTimeResolver.GetTypeByName(spec.SchemaName) != null) { throw new ExprValidationException( "Event type named '" + spec.SchemaName + "' has already been declared"); } EPLValidationUtil.ValidateTableExists(services.TableCompileTimeResolver, spec.SchemaName); var eventType = HandleCreateSchema(spec, services); var statementFieldsClassName = CodeGenerationIDGenerator.GenerateClassNameSimple( typeof(StatementFields), classPostfix); var namespaceScope = new CodegenNamespaceScope( @namespace, statementFieldsClassName, services.IsInstrumented); var fieldsForgable = new StmtClassForgableStmtFields(statementFieldsClassName, namespaceScope, 0); var aiFactoryProviderClassName = CodeGenerationIDGenerator.GenerateClassNameSimple( typeof(StatementAIFactoryProvider), classPostfix); var forge = new StatementAgentInstanceFactoryCreateSchemaForge(eventType); var aiFactoryForgable = new StmtClassForgableAIFactoryProviderCreateSchema( aiFactoryProviderClassName, namespaceScope, forge); var selectSubscriberDescriptor = new SelectSubscriberDescriptor(); var informationals = StatementInformationalsUtil.GetInformationals( @base, new EmptyList<FilterSpecCompiled>(), new EmptyList<ScheduleHandleCallbackProvider>(), new EmptyList<NamedWindowConsumerStreamSpec>(), false, selectSubscriberDescriptor, namespaceScope, services); var statementProviderClassName = CodeGenerationIDGenerator.GenerateClassNameSimple(typeof(StatementProvider), classPostfix); var stmtProvider = new StmtClassForgableStmtProvider( aiFactoryProviderClassName, statementProviderClassName, informationals, namespaceScope); IList<StmtClassForgable> forgables = new List<StmtClassForgable>(); forgables.Add(fieldsForgable); forgables.Add(aiFactoryForgable); forgables.Add(stmtProvider); return new StmtForgeMethodResult( forgables, new EmptyList<FilterSpecCompiled>(), new EmptyList<ScheduleHandleCallbackProvider>(), new EmptyList<NamedWindowConsumerStreamSpec>(), new EmptyList<FilterSpecParamExprNodeForge>()); }