Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
        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()));
        }