public ParallelQueryProcessingStrategy(
     string name, ProjectionVersion projectionVersion, IProjectionStateHandler stateHandler,
     Func<IProjectionStateHandler> handlerFactory, ProjectionConfig projectionConfig,
     IQueryDefinition sourceDefinition, ProjectionNamesBuilder namesBuilder, ILogger logger,
     SpooledStreamReadingDispatcher spoolProcessingResponseDispatcher,
     ReaderSubscriptionDispatcher subscriptionDispatcher)
     : base(name, projectionVersion, projectionConfig, sourceDefinition, logger, subscriptionDispatcher)
 {
     _stateHandler = stateHandler;
     _projectionConfig = projectionConfig;
     _sourceDefinition = sourceDefinition;
     _namesBuilder = namesBuilder;
     _spoolProcessingResponseDispatcher = spoolProcessingResponseDispatcher;
     if (_sourceDefinition.CatalogStream == SystemStreams.AllStream)
     {
         _catalogStreamName = SystemStreams.AllStream;
     }
     else if (_sourceDefinition.HasCategories())
     {
         _catalogStreamName = _namesBuilder.GetCategoryCatalogStreamName(_sourceDefinition.Categories[0]);
     }
     else
     {
         _catalogStreamName = _sourceDefinition.CatalogStream;
     }
 }
        public ProjectionProcessingStrategy CreateProjectionProcessingStrategy(
            string name, ProjectionVersion projectionVersion, ProjectionNamesBuilder namesBuilder,
            IQueryDefinition sourceDefinition, ProjectionConfig projectionConfig,
            Func<IProjectionStateHandler> handlerFactory, IProjectionStateHandler stateHandler)
        {

            if (!sourceDefinition.DisableParallelismOption && projectionConfig.StopOnEof && sourceDefinition.ByStreams
                && sourceDefinition.DefinesFold && !string.IsNullOrEmpty(sourceDefinition.CatalogStream))
            {
                return new ParallelQueryProcessingStrategy(
                    name, projectionVersion, stateHandler, handlerFactory, projectionConfig, sourceDefinition,
                    namesBuilder, _logger, _spoolProcessingResponseDispatcher, _subscriptionDispatcher);
            }

            if (!sourceDefinition.DisableParallelismOption && projectionConfig.StopOnEof && sourceDefinition.ByStreams
                && sourceDefinition.DefinesFold && sourceDefinition.HasCategories())
            {
                return new ParallelQueryProcessingStrategy(
                    name, projectionVersion, stateHandler, handlerFactory, projectionConfig, sourceDefinition,
                    namesBuilder, _logger, _spoolProcessingResponseDispatcher, _subscriptionDispatcher);
            }

            return projectionConfig.StopOnEof
                ? (ProjectionProcessingStrategy)
                    new QueryProcessingStrategy(
                        name, projectionVersion, stateHandler, projectionConfig, sourceDefinition, _logger,
                        _subscriptionDispatcher)
                : new ContinuousProjectionProcessingStrategy(
                    name, projectionVersion, stateHandler, projectionConfig, sourceDefinition, _logger,
                    _subscriptionDispatcher);
        }
 public ParallelQueryProcessingStrategy(
     string name, ProjectionVersion projectionVersion, IProjectionStateHandler stateHandler,
     Func <IProjectionStateHandler> handlerFactory, ProjectionConfig projectionConfig,
     IQueryDefinition sourceDefinition, ProjectionNamesBuilder namesBuilder, ILogger logger,
     SpooledStreamReadingDispatcher spoolProcessingResponseDispatcher,
     ReaderSubscriptionDispatcher subscriptionDispatcher)
     : base(name, projectionVersion, projectionConfig, sourceDefinition, logger, subscriptionDispatcher)
 {
     _stateHandler     = stateHandler;
     _projectionConfig = projectionConfig;
     _sourceDefinition = sourceDefinition;
     _namesBuilder     = namesBuilder;
     _spoolProcessingResponseDispatcher = spoolProcessingResponseDispatcher;
     if (_sourceDefinition.CatalogStream == SystemStreams.AllStream)
     {
         _catalogStreamName = SystemStreams.AllStream;
     }
     else if (_sourceDefinition.HasCategories())
     {
         _catalogStreamName = _namesBuilder.GetCategoryCatalogStreamName(_sourceDefinition.Categories[0]);
     }
     else
     {
         _catalogStreamName = _sourceDefinition.CatalogStream;
     }
 }
Exemple #4
0
        public void GetQueryDefinition_UnitTest()
        {
            IWorkItemStore   instance = GetTestInstance();
            IQueryDefinition actual   = instance.GetQueryDefinition(Guid.Empty);

            Assert.IsNotNull(actual);
        }
Exemple #5
0
        public ProjectionProcessingStrategy CreateProjectionProcessingStrategy(
            string name, ProjectionVersion projectionVersion, ProjectionNamesBuilder namesBuilder,
            IQueryDefinition sourceDefinition, ProjectionConfig projectionConfig,
            Func <IProjectionStateHandler> handlerFactory, IProjectionStateHandler stateHandler)
        {
            if (!sourceDefinition.DisableParallelismOption && projectionConfig.StopOnEof && sourceDefinition.ByStreams &&
                sourceDefinition.DefinesFold && !string.IsNullOrEmpty(sourceDefinition.CatalogStream))
            {
                return(new ParallelQueryProcessingStrategy(
                           name, projectionVersion, stateHandler, handlerFactory, projectionConfig, sourceDefinition,
                           namesBuilder, _logger, _spoolProcessingResponseDispatcher, _subscriptionDispatcher));
            }

            if (!sourceDefinition.DisableParallelismOption && projectionConfig.StopOnEof && sourceDefinition.ByStreams &&
                sourceDefinition.DefinesFold && sourceDefinition.HasCategories())
            {
                return(new ParallelQueryProcessingStrategy(
                           name, projectionVersion, stateHandler, handlerFactory, projectionConfig, sourceDefinition,
                           namesBuilder, _logger, _spoolProcessingResponseDispatcher, _subscriptionDispatcher));
            }

            return(projectionConfig.StopOnEof
                ? (ProjectionProcessingStrategy)
                   new QueryProcessingStrategy(
                       name, projectionVersion, stateHandler, projectionConfig, sourceDefinition, _logger,
                       _subscriptionDispatcher)
                : new ContinuousProjectionProcessingStrategy(
                       name, projectionVersion, stateHandler, projectionConfig, sourceDefinition, _logger,
                       _subscriptionDispatcher));
        }
Exemple #6
0
        public TResult Execute <TResult>(IQueryDefinition <TResult> query)
        {
            var     handlerType = typeof(IQueryHandler <,>).MakeGenericType(query.GetType(), typeof(TResult));
            dynamic handler     = _lifeTimeScope.Resolve(handlerType);

            return(handler.Handle((dynamic)query));

            throw new Exception();
        }
 public ParallelQueryProcessingStrategy(
     string name, ProjectionVersion projectionVersion, Func<IProjectionStateHandler> handlerFactory,
     ProjectionConfig projectionConfig, IQueryDefinition sourceDefinition, ProjectionNamesBuilder namesBuilder,
     ILogger logger, SpooledStreamReadingDispatcher spoolProcessingResponseDispatcher,
     ReaderSubscriptionDispatcher subscriptionDispatcher)
     : base(name, projectionVersion, projectionConfig, sourceDefinition, logger, subscriptionDispatcher)
 {
     _projectionConfig = projectionConfig;
     _sourceDefinition = sourceDefinition;
     _namesBuilder = namesBuilder;
     _spoolProcessingResponseDispatcher = spoolProcessingResponseDispatcher;
 }
Exemple #8
0
 public ParallelQueryProcessingStrategy(
     string name, ProjectionVersion projectionVersion, Func <IProjectionStateHandler> handlerFactory,
     ProjectionConfig projectionConfig, IQueryDefinition sourceDefinition, ProjectionNamesBuilder namesBuilder,
     ILogger logger, SpooledStreamReadingDispatcher spoolProcessingResponseDispatcher,
     ReaderSubscriptionDispatcher subscriptionDispatcher)
     : base(name, projectionVersion, projectionConfig, sourceDefinition, logger, subscriptionDispatcher)
 {
     _handlerFactory   = handlerFactory;
     _projectionConfig = projectionConfig;
     _sourceDefinition = sourceDefinition;
     _namesBuilder     = namesBuilder;
     _spoolProcessingResponseDispatcher = spoolProcessingResponseDispatcher;
 }
Exemple #9
0
        public static IEnumerable <IPanelDTO> MergeAll(this IQueryDefinition query)
        {
            var lastPanelIndex = query.Panels.Max(p => p.Index);
            var merge          = new List <IPanelDTO>();

            merge.AddRange(query.Panels);

            for (int i = 0; i < query.PanelFilters.Count(); i++)
            {
                lastPanelIndex += i + 1;
                var filter = query.PanelFilters.ElementAt(i);
                var dto    = PanelDTO.FromPanelFilterDTO(filter, lastPanelIndex);
                merge.Add(dto);
            }
            return(merge);
        }
Exemple #10
0
        public async Task <PanelValidationContext> GetPanelsAsync(IQueryDefinition query)
        {
            var resources = await GetPreflightResourcesAsync(query.All());

            if (!resources.Ok)
            {
                log.LogInformation("Preflight Check Failed. Query:{@Query} Preflight:{@Preflight}", query, resources);
                return(new PanelValidationContext(query, resources));
            }

            var concepts = resources.Concepts(compilerOptions);

            var panels = GetPanels(query.All(), concepts);

            return(new PanelValidationContext(query, resources, panels));
        }
Exemple #11
0
        /// <summary>
        /// Converts stub AST query definition into local, fully hydrated AST.
        /// The returned AST is unvalidated.
        /// </summary>
        /// <returns>The panels async.</returns>
        /// <param name="query">Stub AST query definition.</param>
        public async Task <PanelValidationContext> GetPanelsAsync(IQueryDefinition query)
        {
            var resources = await GetPreflightResourcesAsync(query.All());

            if (!resources.Ok)
            {
                log.LogInformation("Preflight Check Failed. Query:{@Query} Preflight:{@Preflight}", query, resources);
                return(new PanelValidationContext(query, resources));
            }

            var concepts  = resources.Concepts(compilerOptions);
            var crosswalk = CrosswalkImportIds(query.All(), resources.DirectImportsCheck.Results.Select(r => r.ImportRef));
            var panels    = GetPanels(crosswalk, concepts);
            var merged    = MergeFilters(panels, resources.GlobalPanelFilters);

            return(new PanelValidationContext(query, resources, merged));
        }
Exemple #12
0
        public void LocalizeDefinition(IQueryDefinition definition, PatientCountQuery localQuery)
        {
            if (user.IsInstutional)
            {
                return;
            }

            var map = new Dictionary <string, ResourceRef>(localQuery.Panels
                                                           .GetConcepts()
                                                           .Select(c => new KeyValuePair <string, ResourceRef>(key: c.UniversalId.ToString(), value: new ResourceRef {
                Id = c.Id, UniversalId = c.UniversalId.ToString()
            })));

            var items = definition.Panels
                        .SelectMany(p => p.SubPanels)
                        .SelectMany(s => s.PanelItems);

            foreach (var item in items)
            {
                var name = item.Resource?.UiDisplayName;
                if (map.TryGetValue(item.Resource.UniversalId, out var repl))
                {
                    item.Resource = new ResourceRef {
                        Id = repl.Id, UniversalId = repl.UniversalId, UiDisplayName = name
                    };
                }
            }

            foreach (var filter in definition.PanelFilters)
            {
                if (map.TryGetValue(filter.Concept.UniversalId, out var replFilterConcept))
                {
                    filter.Concept.Id          = replFilterConcept.Id;
                    filter.Concept.UniversalId = replFilterConcept.UniversalId;
                }
            }
        }
Exemple #13
0
 partial void QueryType_SetCondition(ref IQueryDefinition instance, ref IQueryType setValue);
Exemple #14
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="id">ID of this extractor.</param>
 /// <param name="queryDefinition">Definition of a query
 /// that will produce rows.</param>
 public DataBaseExtractor(string id, IQueryDefinition queryDefinition)
 {
     this.ID = id;
     this.QueryDefinition = queryDefinition;
     this.ExtractedData   = null;
 }
 public PanelValidationContext(IQueryDefinition query, PreflightResources check, IEnumerable <Panel> allowed) : this(query, check)
 {
     Allowed = allowed;
 }
 public PanelValidationContext(IQueryDefinition query, PreflightResources check)
 {
     PreflightCheck = check;
     Requested      = query.All();
     Allowed        = new Panel[] { };
 }