예제 #1
0
        /// <summary>
        /// Processes the concrete AutoBook output data type.
        /// </summary>
        /// <typeparam name="TData">The type of the data.</typeparam>
        /// <param name="scope">Current KPI calculation scope.</param>
        /// <param name="featureManager">The feature manager.</param>
        /// <param name="audit">The audit.</param>
        /// <param name="folder">The folder.</param>
        /// <returns></returns>
        private static void ProcessData <TData>(IKPICalculationScope scope, IFeatureManager featureManager,
                                                IAuditEventRepository audit, string folder) where TData : class
        {
            var context       = scope.Resolve <IKPICalculationContext>();
            var fileProcessor = scope.Resolve <IOutputFileProcessor <TData> >();

            if (!featureManager.IsServiceEnabled(fileProcessor.GetType()))
            {
                audit.Insert(AuditEventFactory.CreateAuditEventForInformationMessage(0, 0,
                                                                                     $"Skipping disabled file processor. ScenarioId: {context.ScenarioId}, FileName: {fileProcessor.FileName}"));
                return;
            }

            var data = fileProcessor.ProcessFile(context.ScenarioId, folder);

            context.SetContextData(data);

            if (scope.TryResolve <IOutputDataHandler <TData> >(out var handler))
            {
                handler.ProcessData(data, context.Snapshot.Run.Value, context.Snapshot.Scenario.Value);
            }
        }