public AlarmsRunTarget( alarm_categories alarmCategory, INotificationReporter reporter, IAlarmsRepository repository, IProject project, ITimeService timeService, INpgsqlConnectionFactory connectionFactory) { _name = string.Format("{0} \"{1}\"", Res.Alarms, alarmCategory.name); _reporter = reporter; _timeService = timeService; _repository = repository; _project = project; _connectionFactory = connectionFactory; if (alarmCategory.time_to_store.HasValue) { _timeToStore = new TimeSpan(alarmCategory.time_to_store.Value); } _alarmDigitalValues = new Dictionary <int, AlarmStatus>(alarmCategory.alarm_tags.Count); foreach (var t in alarmCategory.alarm_tags) { _alarmDigitalValues.Add(t.id, new AlarmStatus(t.acknowledgeable)); _alarmPrivileges.Add(t.id, t.privilege); } _updateAlarmTagsDigitalValues = () => UpdateAlarmDigitalValues(GetIoDeviceGroups(alarmCategory)); }
protected override void EstablishContext() { base.EstablishContext(); AlarmCategory = new alarm_categories { name = "AlarmCategory", id = RandomGenerator.GetRandomInt32() }; Categories = new EnumerableQuery <alarm_categories>(new[] { AlarmCategory }); Context.Setup(context => context.Get <alarm_categories>()).Returns(Categories); RunTarget = new Mock <IAlarmsRunTarget>(); AlarmsRunTargetFactory.Setup(f => f.Create(DataDbConStr, ProjectRunner, AlarmCategory, TimeService.Object)) .Returns(RunTarget.Object); CyclicRunner = new Mock <ICyclicRunner>(); CyclicRunnerFactory.Setup(f => f.Create(RunTarget.Object)).Returns(CyclicRunner.Object); }
public IAlarmsRunTarget Create(string connectionString, IProject project, alarm_categories alarmCategory, ITimeService timeService) { var npgsqlConnectionFactory = new NpgsqlConnectionFactory(connectionString); var alarmsRepository = new AlarmsRepository(alarmCategory.id); using (var connection = npgsqlConnectionFactory.Create()) { alarmsRepository.EnsureTable(connection); } return(new AlarmsRunTarget( alarmCategory, new NotificationReporter(timeService) { LifeTime = TimeSpan.FromTicks(0) }, alarmsRepository, project, timeService, npgsqlConnectionFactory)); }
protected override void EstablishContext() { base.EstablishContext(); AlarmTag = new alarm_tags { dig_tags = new dig_tags { id = RandomGenerator.GetRandomInt32(), io_devices = new io_devices { id = RandomGenerator.GetRandomInt32() } }, id = RandomGenerator.GetRandomInt32(), acknowledgeable = Acknowledgeable }; AlarmCatetory = new alarm_categories { name = "AlarmCategory", time_to_store = TimeToStore }; AlarmCatetory.alarm_tags.Add(AlarmTag); Reporter = new Mock <INotificationReporter>(); Repository = new Mock <IAlarmsRepository>(); Project = new Mock <IProject>(); TimeService = new Mock <ITimeService>(); TimeService.Setup(t => t.UtcTime).Returns(DateTime.UtcNow); ConnectionFactory = new Mock <INpgsqlConnectionFactory>(); Connection = new NpgsqlConnection(); ConnectionFactory.Setup(f => f.Create()).Returns(Connection); AlarmsRunTarget = new AlarmsRunTarget( AlarmCatetory, Reporter.Object, Repository.Object, Project.Object, TimeService.Object, ConnectionFactory.Object); }
private static IEnumerable <Tuple <int, Tuple <int, int>[]> > GetIoDeviceGroups(alarm_categories alarmCategory) { var ioDeviceGroups = alarmCategory.alarm_tags .GroupBy(a => a.dig_tags.io_devices) .Select(g => new Tuple <int, Tuple <int, int>[]>( g.Key.id, g.Select(a => new Tuple <int, int>(a.dig_tags.id, a.id)) .ToArray())) .ToArray(); return(ioDeviceGroups); }