Exemplo n.º 1
0
        public ActiveAnalysis(
            AnalysisId id,
            AnalysisTemplate template,
            ITaskScheduler taskScheduler,
            ILogAnalyserEngine logAnalyserEngine,
            TimeSpan maximumWaitTime)
        {
            if (template == null)
            {
                throw new ArgumentNullException(nameof(template));
            }
            if (taskScheduler == null)
            {
                throw new ArgumentNullException(nameof(taskScheduler));
            }
            if (logAnalyserEngine == null)
            {
                throw new ArgumentNullException(nameof(logAnalyserEngine));
            }

            _id                = id;
            _template          = template;
            _taskScheduler     = taskScheduler;
            _maximumWaitTime   = maximumWaitTime;
            _logFiles          = new List <ILogFile>();
            _logFile           = new LogFileProxy(taskScheduler, maximumWaitTime);
            _logAnalyserEngine = logAnalyserEngine;
            _analysers         = new Dictionary <DataSourceAnalyser, AnalyserTemplate>();
            _syncRoot          = new object();
        }
Exemplo n.º 2
0
        /// <inheritdoc />
        public Task SaveSnapshot(IAnalysis analysis, AnalysisViewTemplate viewTemplate)
        {
            var tmp = analysis as ActiveAnalysis;

            if (tmp == null)
            {
                throw new ArgumentException("It makes no sense to create a snapshot from anything else but an active analysis",
                                            nameof(analysis));
            }

            var analysisSnapshot = tmp.CreateSnapshot();
            var template         = new AnalysisTemplate(analysisSnapshot.Analysers.Select(x => new AnalyserTemplate
            {
                Id = x.Id,
                AnalyserPluginId = x.AnalyserPluginId,
                Configuration    = x.Configuration
            }));
            var clone   = viewTemplate.Clone();
            var results = analysisSnapshot.Analysers.Select(x => new AnalyserResult
            {
                AnalyserId = x.Id,
                Result     = x.Result
            }).ToList();
            var snapshot = new Core.Analysis.AnalysisSnapshot(template, clone, results);

            return(_snapshots.Save(snapshot));
        }
Exemplo n.º 3
0
        public IAnalysis CreateAnalysis(AnalysisTemplate template, AnalysisViewTemplate viewTemplate)
        {
            ActiveAnalysisConfiguration analysisConfiguration;

            var id       = AnalysisId.CreateNew();
            var analysis = new ActiveAnalysis(id,
                                              template,
                                              _taskScheduler,
                                              _dataSourceAnalyserEngine,
                                              TimeSpan.FromMilliseconds(100));

            try
            {
                analysisConfiguration = new ActiveAnalysisConfiguration(id, template, viewTemplate);
                lock (_syncRoot)
                {
                    _templates.Add(analysisConfiguration);
                    _analyses.Add(analysis.Id, analysis);
                    _lastSavedAnalyses.Add(analysis.Id, analysisConfiguration);
                }
            }
            catch (Exception)
            {
                analysis.Dispose();                 //< ActiveAnalysis actually spawns new analyses on the engine so we should cancel those in case an exception si thrown here...
                throw;
            }

            SaveAsync(analysisConfiguration).Wait();

            return(analysis);
        }
Exemplo n.º 4
0
        public void TestCreateAnalysis3()
        {
            var storage = new AnalysisStorage(_taskScheduler,
                                              _filesystem,
                                              _dataSourceAnalyserEngine.Object,
                                              _typeFactory);
            var analysisTemplate     = new AnalysisTemplate();
            var analysisViewTemplate = new AnalysisViewTemplate();
            var analysis             = storage.CreateAnalysis(analysisTemplate, analysisViewTemplate);

            analysisViewTemplate.Add(new PageTemplate {
                Title = "A great page"
            });

            var task = storage.SaveAsync(analysis.Id);

            task.Should().NotBeNull();
            task.Wait(TimeSpan.FromSeconds(5)).Should().BeTrue("because the modified template should've been saved");

            var anotherStorage = new AnalysisStorage(_taskScheduler,
                                                     _filesystem,
                                                     _dataSourceAnalyserEngine.Object,
                                                     _typeFactory);

            anotherStorage.AnalysisTemplates.Should().HaveCount(1, "because we've created and saved one template");
            var template = anotherStorage.AnalysisTemplates.First();

            template.Should().NotBeNull();
            template.ViewTemplate.Pages.Should().HaveCount(1, "because we've added one page to that template");
            var pageTemplate = template.ViewTemplate.Pages.First();

            pageTemplate.Should().NotBeNull();
            pageTemplate.Title.Should().Be("A great page");
        }
Exemplo n.º 5
0
        public void TestCtor1()
        {
            var id            = AnalysisId.CreateNew();
            var template      = new AnalysisTemplate();
            var viewTemplate  = new AnalysisViewTemplate();
            var configuration = new ActiveAnalysisConfiguration(id, template, viewTemplate);

            configuration.Id.Should().Be(id);
            configuration.Template.Should().BeSameAs(template);
            configuration.ViewTemplate.Should().BeSameAs(viewTemplate);
        }
Exemplo n.º 6
0
        public void Setup()
        {
            _taskScheduler  = new ManualTaskScheduler();
            _analysisEngine = new Mock <ILogAnalyserEngine>();
            _analysisEngine.Setup(x => x.CreateAnalysis(It.IsAny <ILogFile>(),
                                                        It.IsAny <DataSourceAnalysisConfiguration>(),
                                                        It.IsAny <IDataSourceAnalysisListener>()))
            .Returns(() => new Mock <IDataSourceAnalysisHandle>().Object);

            _template = new AnalysisTemplate();
        }
Exemplo n.º 7
0
        public void TestRoundtripEmpty()
        {
            var id            = AnalysisId.CreateNew();
            var template      = new AnalysisTemplate();
            var viewTemplate  = new AnalysisViewTemplate();
            var configuration = new ActiveAnalysisConfiguration(id, template, viewTemplate);

            var actualConfiguration = configuration.Roundtrip();

            actualConfiguration.Id.Should().Be(id);
            actualConfiguration.Template.Should().NotBeNull();
            actualConfiguration.ViewTemplate.Should().NotBeNull();
        }
        public static Stream GetAnalysisTemplate(AnalysisTemplate template)
        {
            switch (template)
            {
            case AnalysisTemplate.CustomerSales:
                return(GetTemplateStream("CustomerAnalysis.xlsx"));

            case AnalysisTemplate.ProductSales:
                return(GetTemplateStream("ProductAnalysis.xlsx"));

            default:
                throw new NotSupportedException(template.ToString());
            }
        }
Exemplo n.º 9
0
        public AnalysisViewModel CreateNew()
        {
            var viewTemplate = new AnalysisViewTemplate();
            var template     = new AnalysisTemplate();
            var analysis     = _analysisStorage.CreateAnalysis(template, viewTemplate);
            var viewModel    = new AnalysisViewModel(_dispatcher, viewTemplate, analysis, _analysisStorage);

            _active.Add(viewModel);
            _activeById.Add(viewModel.Id, viewModel);

            viewModel.OnRemove += AnalysisOnOnRemove;
            Update();

            return(viewModel);
        }
Exemplo n.º 10
0
        public ActiveAnalysis(
            AnalysisId id,
            AnalysisTemplate template,
            ITaskScheduler taskScheduler,
            IDataSourceAnalyserEngine analyserEngine,
            TimeSpan maximumWaitTime)
        {
            if (template == null)
            {
                throw new ArgumentNullException(nameof(template));
            }
            if (taskScheduler == null)
            {
                throw new ArgumentNullException(nameof(taskScheduler));
            }
            if (analyserEngine == null)
            {
                throw new ArgumentNullException(nameof(analyserEngine));
            }

            _id              = id;
            _template        = template;
            _taskScheduler   = taskScheduler;
            _maximumWaitTime = maximumWaitTime;
            _logFiles        = new Dictionary <DataSourceId, ILogFile>();
            _logFile         = new LogFileProxy(taskScheduler, maximumWaitTime);
            _analyserEngine  = analyserEngine;
            _analysers       = new Dictionary <IDataSourceAnalyser, AnalyserTemplate>();
            _syncRoot        = new object();

            foreach (var analysisTemplate in template.Analysers)
            {
                // TODO: Solve this conundrum
                Add((AnalyserTemplate)analysisTemplate);
            }
        }