public TrendsRunTarget( trend_categories trendCategory, INotificationReporter reporter, ITrendsRepositoryFactory repositoryFactory, IProject project, ITimeService timeService, ITrendTableSelector tableSelector) { _name = string.Format("{0} \"{1}\"", Res.Trends, trendCategory.name); _timeToStore = trendCategory.time_to_store.HasValue ? new TimeSpan(trendCategory.time_to_store.Value) as TimeSpan? : null; foreach (var t in trendCategory.trend_tags.ToArray()) { Func <bool> triggerValueGetter; if (t.dig_tags == null) { triggerValueGetter = () => true; } else { var trIoDevId = t.dig_tags.io_devices.id; var trId = t.dig_tags.id; triggerValueGetter = () => project.IoDeviceRunTargets[trIoDevId].GetDigitalValue(trId) == true; } var ioDeviceId = t.num_tags.io_devices.id; var tagId = t.num_tags.id; var trendInfo = new TrendTagInfo( t.id, triggerValueGetter, () => project.IoDeviceRunTargets[ioDeviceId].GetNumericValue(tagId)); _trendsInfo.Add(t.id, trendInfo); } _reporter = reporter; _repositoryFactory = repositoryFactory; _timeService = timeService; _tableSelector = tableSelector; }
public ITrendsRunTarget Create(string connectionString, IProject project, trend_categories trendCategory, ITimeService timeService) { var npgsqlConnectionFactory = new NpgsqlConnectionFactory(connectionString); var repositoryFactory = new TrendsRepositoryFactory( npgsqlConnectionFactory, trendCategory.id, trendCategory.trend_tags.Select(t => t.id).ToArray()); using (var repository = repositoryFactory.Create()) { repository.EnsureTables(); } return(new TrendsRunTarget( trendCategory, new NotificationReporter(timeService) { LifeTime = TimeSpan.FromTicks(0) }, repositoryFactory, project, timeService, new TrendTableSelector())); }