public static List <CycleSpeed> GetSpeedCycles(DateTime startDate, DateTime endDate, bool getPermissivePhase, Models.Detector detector) { var cycleEvents = GetCycleEvents(getPermissivePhase, startDate, endDate, detector.Approach, null); if (cycleEvents != null && cycleEvents.Count > 0 && GetEventType(cycleEvents.LastOrDefault().EventCode) != RedToRedCycle.EventType.ChangeToRed) { GetEventsToCompleteCycle(getPermissivePhase, endDate, detector.Approach, cycleEvents); } var cycles = new List <CycleSpeed>(); if (cycleEvents != null) { for (var i = 0; i < cycleEvents.Count; i++) { if (i < cycleEvents.Count - 3 && GetEventType(cycleEvents[i].EventCode) == RedToRedCycle.EventType.ChangeToRed && GetEventType(cycleEvents[i + 1].EventCode) == RedToRedCycle.EventType.ChangeToGreen && GetEventType(cycleEvents[i + 2].EventCode) == RedToRedCycle.EventType.ChangeToYellow && GetEventType(cycleEvents[i + 3].EventCode) == RedToRedCycle.EventType.ChangeToRed) { cycles.Add(new CycleSpeed(cycleEvents[i].Timestamp, cycleEvents[i + 1].Timestamp, cycleEvents[i + 2].Timestamp, cycleEvents[i + 3].Timestamp)); } } } if (cycles.Any()) { var speedEventRepository = SpeedEventRepositoryFactory.Create(); var speedEvents = speedEventRepository.GetSpeedEventsByDetector(startDate, cycles.LastOrDefault().EndTime, detector, detector.MinSpeedFilter ?? 5); foreach (var cycle in cycles) { cycle.FindSpeedEventsForCycle(speedEvents); } } return(cycles); }
public static void InitializeTestDataFor7185Feb012018(InMemoryMOEDatabase db) { db.ClearTables(); XmlToListImporter.LoadControllerEventLog("7185Events02_01_2018.Xml", db); XmlToListImporter.LoadSignals("signals.xml", db); XmlToListImporter.LoadApproaches("approachesfor7185.xml", db); XmlToListImporter.LoadDetectors("detectorsFor7185.xml", db); XmlToListImporter.AddDetectionTypesToDetectors ("DetectorTypesforDetectorsFor7185.xml", db); XmlToListImporter.AddDetectionTypesToMetricTypes("mtdt.xml", db); MOE.Common.Models.Repositories.SignalsRepositoryFactory.SetSignalsRepository( new InMemorySignalsRepository(db)); MetricTypeRepositoryFactory.SetMetricsRepository(new InMemoryMetricTypeRepository(db)); ApplicationEventRepositoryFactory.SetApplicationEventRepository( new InMemoryApplicationEventRepository(db)); DirectionTypeRepositoryFactory.SetDirectionsRepository( new InMemoryDirectionTypeRepository()); SpeedEventRepositoryFactory.SetSignalsRepository(new InMemorySpeedEventRepository(db)); ApproachRepositoryFactory.SetApproachRepository(new InMemoryApproachRepository(db)); ControllerEventLogRepositoryFactory.SetRepository(new InMemoryControllerEventLogRepository(db)); DetectorRepositoryFactory.SetDetectorRepository(new InMemoryDetectorRepository(db)); XmlToListImporter.LoadSpeedEvents("7185speed.xml", db); }