Example #1
0
        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);
        }
Example #2
0
 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);
 }