public StatementCompileTimeServices(
     int statementNumber,
     ModuleCompileTimeServices services)
 {    
     _services = services;
     _eventTypeNameGeneratorStatement = new EventTypeNameGeneratorStatement(statementNumber);
     _classProvidedExtension = new ClassProvidedExtensionImpl(services.ClassProvidedCompileTimeResolver);
 }
Exemplo n.º 2
0
        public static ExprNode TryResolveAsAggregation(
            ImportServiceCompileTime importService,
            bool distinct,
            string functionName,
            LazyAllocatedMap<HashableMultiKey, AggregationMultiFunctionForge> plugInAggregations,
            ClassProvidedExtension classProvidedExtension)
        {
            try {
                AggregationFunctionForge aggregationFactory = importService.ResolveAggregationFunction(functionName, classProvidedExtension);
                return new ExprPlugInAggNode(distinct, aggregationFactory, functionName);
            }
            catch (ImportUndefinedException) {
                // Not an aggregation function
            }
            catch (ImportException e) {
                throw new ValidationException("Error resolving aggregation: " + e.Message, e);
            }

            // try plug-in aggregation multi-function
            Pair<ConfigurationCompilerPlugInAggregationMultiFunction, Type> configPair = importService
                .ResolveAggregationMultiFunction(functionName, classProvidedExtension);
            if (configPair != null) {
                HashableMultiKey multiKey = new HashableMultiKey(configPair.First.FunctionNames);
                AggregationMultiFunctionForge factory = plugInAggregations.Map.Get(multiKey);
                if (factory == null) {
                    if (configPair.Second != null) {
                        factory = (AggregationMultiFunctionForge) TypeHelper.Instantiate<AggregationMultiFunctionForge>(
                            configPair.Second);
                    } else {
                        factory = (AggregationMultiFunctionForge) TypeHelper.Instantiate<AggregationMultiFunctionForge>(
                            configPair.First.MultiFunctionForgeClassName, importService.ClassForNameProvider);
                    }
                    plugInAggregations.Map[multiKey] = factory;
                }
                factory.AddAggregationFunction(new AggregationMultiFunctionDeclarationContext(
                    functionName.ToLowerInvariant(),
                    distinct,
                    configPair.First));
                return new ExprPlugInMultiFunctionAggNode(distinct, configPair.First, factory, functionName);
            }

            // try built-in expanded set of aggregation functions
            return importService.ResolveAggExtendedBuiltin(functionName, distinct);
        }
Exemplo n.º 3
0
 public StatementSpecMapEnv(
     ImportServiceCompileTime importService,
     VariableCompileTimeResolver variableCompileTimeResolver,
     Configuration configuration,
     ExprDeclaredCompileTimeResolver exprDeclaredCompileTimeResolver,
     ContextCompileTimeResolver contextCompileTimeResolver,
     TableCompileTimeResolver tableCompileTimeResolver,
     ScriptCompileTimeResolver scriptCompileTimeResolver,
     CompilerServices compilerServices,
     ClassProvidedExtension classProvidedExtension)
 {
     ImportService = importService;
     VariableCompileTimeResolver = variableCompileTimeResolver;
     Configuration = configuration;
     ExprDeclaredCompileTimeResolver = exprDeclaredCompileTimeResolver;
     ContextCompileTimeResolver = contextCompileTimeResolver;
     TableCompileTimeResolver = tableCompileTimeResolver;
     ScriptCompileTimeResolver = scriptCompileTimeResolver;
     CompilerServices = compilerServices;
     ClassProvidedExtension = classProvidedExtension;
 }