public void Initialize() { Db.ClearTables(); Db.PopulateSignal(); Db.PopulateSignalsWithApproaches(); Db.PopulateApproachesWithDetectors(); var signals = Db.Signals; foreach (var signal in signals) { foreach (var approach in signal.Approaches) { foreach (var detector in approach.Detectors) { Db.PopulateDetectorAggregationsWithRandomRecords(Convert.ToDateTime("2/1/2016"), Convert.ToDateTime("2/2/2018"), detector); } } } ApproachSplitFailAggregationRepositoryFactory.SetApplicationEventRepository( new InMemoryApproachSplitFailAggregationRepository(Db)); MOE.Common.Models.Repositories.SignalsRepositoryFactory.SetSignalsRepository( new InMemorySignalsRepository(Db)); MetricTypeRepositoryFactory.SetMetricsRepository(new InMemoryMetricTypeRepository(Db)); ApplicationEventRepositoryFactory.SetApplicationEventRepository(new InMemoryApplicationEventRepository(Db)); DetectorAggregationsRepositoryFactory.SetDetectorAggregationRepository(new InMemoryDetectorAggregationsRepository(Db)); Models.Repositories.DirectionTypeRepositoryFactory.SetDirectionsRepository( new InMemoryDirectionTypeRepository()); SignalsRepository = SignalsRepositoryFactory.Create(); }
public void Initialize() { Db.ClearTables(); Db.PopulateSignal(); Db.PopulateSignalsWithApproaches(); Db.PopulateApproachesWithDetectors(); var signals = Db.Signals; foreach (var signal in signals) { Db.PopulatePreemptAggregations(Convert.ToDateTime("1/1/2016"), Convert.ToDateTime("1/1/2018"), signal.SignalID, signal.VersionID); } ApproachRepositoryFactory.SetApproachRepository(new InMemoryApproachRepository(Db)); PreemptAggregationDatasRepositoryFactory.SetArchivedMetricsRepository( new InMemoryPreemptAggregationDatasRepository(Db)); MOE.Common.Models.Repositories.SignalsRepositoryFactory.SetSignalsRepository( new InMemorySignalsRepository(Db)); MetricTypeRepositoryFactory.SetMetricsRepository(new InMemoryMetricTypeRepository(Db)); ApplicationEventRepositoryFactory.SetApplicationEventRepository(new InMemoryApplicationEventRepository(Db)); DetectorAggregationsRepositoryFactory.SetDetectorAggregationRepository(new InMemoryDetectorAggregationsRepository(Db)); Models.Repositories.DirectionTypeRepositoryFactory.SetDirectionsRepository( new InMemoryDirectionTypeRepository()); SignalsRepository = SignalsRepositoryFactory.Create(); PreemptAggregationDatasRepositoryFactory.SetArchivedMetricsRepository(new InMemoryPreemptAggregationDatasRepository(Db)); }
protected override void LoadBins(Models.Detector detector, DetectorAggregationMetricOptions options) { var detectorAggregationRepository = DetectorAggregationsRepositoryFactory.Create(); var detectorAggregations = detectorAggregationRepository.GetDetectorAggregationByApproachIdAndDateRange( detector.ID, options.StartDate, options.EndDate); if (detectorAggregations != null) { var concurrentBinContainers = new ConcurrentBag <BinsContainer>(); //foreach (var binsContainer in binsContainers) Parallel.ForEach(BinsContainers, binsContainer => { var tempBinsContainer = new BinsContainer(binsContainer.Start, binsContainer.End); var concurrentBins = new ConcurrentBag <Bin>(); //foreach (var bin in binsContainer.Bins) Parallel.ForEach(binsContainer.Bins, bin => { if (detectorAggregations.Any(s => s.BinStartTime >= bin.Start && s.BinStartTime < bin.End)) { var volume = 0; switch (options.SelectedAggregatedDataType.DataName) { case "DetectorActivationCount": volume = detectorAggregations.Where(s => s.BinStartTime >= bin.Start && s.BinStartTime < bin.End) .Sum(s => s.Volume); break; default: throw new Exception("Unknown Aggregate Data Type for Split Failure"); } concurrentBins.Add(new Bin { Start = bin.Start, End = bin.End, Sum = volume, Average = volume }); } else { concurrentBins.Add(new Bin { Start = bin.Start, End = bin.End, Sum = 0, Average = 0 }); } }); tempBinsContainer.Bins = concurrentBins.OrderBy(c => c.Start).ToList(); concurrentBinContainers.Add(tempBinsContainer); }); BinsContainers = concurrentBinContainers.OrderBy(b => b.Start).ToList(); } }