Пример #1
0
 internal void SetAlarmInfo(Func <string> locationGetter, Func <string> descriptionGetter,
                            AlarmCategoryAbstract category)
 {
     _locationGetter    = locationGetter;
     _descriptionGetter = descriptionGetter;
     _category          = category;
 }
Пример #2
0
        private static Tuple <AlarmSampleId[], Identity>[] GetAcknowledgeParameters(
            AlarmCategoryAbstract category,
            IEnumerable <Tuple <AlarmSampleId[], Identity> > commonAcknowledgeParameters)
        {
            var alarmsToAcknowledge = new List <Tuple <AlarmSampleId, Identity> >();

            foreach (var tuple in commonAcknowledgeParameters)
            {
                alarmsToAcknowledge.AddRange(from alarmSampleId in tuple.Item1
                                             where category.HasAlarm(alarmSampleId.AlarmId)
                                             select new Tuple <AlarmSampleId, Identity>(alarmSampleId, tuple.Item2));
            }
            var acknowledgeParameters = category.AlarmsToAcknowledge();

            foreach (var tuple in acknowledgeParameters)
            {
                alarmsToAcknowledge.AddRange(from alarmSampleId in tuple.Item1
                                             where category.HasAlarm(alarmSampleId.AlarmId)
                                             select new Tuple <AlarmSampleId, Identity>(alarmSampleId, tuple.Item2));
            }
            return(alarmsToAcknowledge
                   .GroupBy(t => t.Item2)
                   .Select(g => new Tuple <AlarmSampleId[], Identity>(g.Select(i => i.Item1).ToArray(), g.Key))
                   .ToArray());
        }
Пример #3
0
        private void ApplyStatus(ParametersInfo info, IList <RemapAlarmResult> result)
        {
            var categoriesSet = new HashSet <AlarmCategoryAbstract>();

            for (var i = 0; i < result.Count; i++)
            {
                var p = info.Parameters[i];
                RemapAlarmResult      r = result[i];
                AlarmCategoryAbstract c = _categories[p.Item1.CategoryId];
                categoriesSet.Add(c);
                if (p.Item1.GetStatus)
                {
                    c.HasActive         = r.HasActive;
                    c.HasUnacknowledged = r.HasUnacknowledged;
                }
                else
                {
                    c.HasActive         = null;
                    c.HasUnacknowledged = null;
                }
            }

            foreach (AlarmCategoryAbstract unAppliedCategory in _categories.Values.Where(c =>
                                                                                         !categoriesSet.Contains(c)))
            {
                unAppliedCategory.HasActive         = null;
                unAppliedCategory.HasUnacknowledged = null;
            }

            ApplyCommonStatus();
        }
Пример #4
0
 public void Add(AlarmCategoryAbstract category)
 {
     if (category.Id == 0)
     {
         _commonCategory = category;
     }
     else
     {
         _categories.Add(category.Id, category);
     }
 }
Пример #5
0
 public void Add(AlarmCategoryAbstract category)
 {
     if (category.Id == 0)
     {
         _commonCategory = category;
     }
     else
     {
         _categories.Add(category.Id, category);
     }
 }
Пример #6
0
        private void ApplyHistoryQueries(ParametersInfo info, IList <RemapAlarmResult> result)
        {
            for (var i = 0; i < result.Count; i++)
            {
                var p = info.Parameters[i];
                RemapAlarmResult      r             = result[i];
                AlarmCategoryAbstract alarmCategory = _categories[p.Item1.CategoryId];
                foreach (Alarm a in r.History.SelectMany(alarms => alarms))
                {
                    var alarmInfo = alarmCategory.GetAlarmInfo(a.AlarmId);
                    a.SetAlarmInfo(alarmInfo.Item1, alarmInfo.Item2, alarmCategory);
                }

                var callbacks = p.Item3;
                for (var j = 0; j < callbacks.Length; j++)
                {
                    var callback = callbacks[j];
                    var alarms   = r.History[info.CommonCurrentInfo.Count + j];
                    callback(alarms);
                }
            }

            for (var i = 0; i < info.CommonHistoryInfo.Count; i++)
            {
                var historyInfo = info.CommonHistoryInfo[i];
                int i1          = i;
                var alarms      = result.SelectMany(r => r.History[i1]);
                switch (historyInfo.Item2)
                {
                case CriteriaType.DownFromInfinity:
                case CriteriaType.DownFrom:
                case CriteriaType.DownFromOrEqual:
                    alarms = alarms.OrderByDescending(a => a.StartTime).ThenByDescending(a => a.AlarmId)
                             .Take(historyInfo.Item3);
                    break;

                case CriteriaType.UpFromInfinity:
                case CriteriaType.UpFrom:
                case CriteriaType.UpFromOrEqual:
                    alarms = alarms.OrderBy(a => a.StartTime).ThenBy(a => a.AlarmId)
                             .Take(historyInfo.Item3).Reverse();
                    break;
                }

                var callback    = historyInfo.Item1;
                var alarmsArray = alarms.ToArray();
                callback(alarmsArray);
            }
        }
Пример #7
0
 private static Tuple<AlarmSampleId[], Identity>[] GetAcknowledgeParameters(
     AlarmCategoryAbstract category,
     IEnumerable<Tuple<AlarmSampleId[], Identity>> commonAcknowledgeParameters)
 {
     var alarmsToAcknowledge = new List<Tuple<AlarmSampleId, Identity>>();
     foreach (var tuple in commonAcknowledgeParameters)
     {
         alarmsToAcknowledge.AddRange(from alarmSampleId in tuple.Item1
                                      where category.HasAlarm(alarmSampleId.AlarmId)
                                      select new Tuple<AlarmSampleId, Identity>(alarmSampleId, tuple.Item2));
     }
     var acknowledgeParameters = category.AlarmsToAcknowledge();
     foreach (var tuple in acknowledgeParameters)
     {
         alarmsToAcknowledge.AddRange(from alarmSampleId in tuple.Item1
                                      where category.HasAlarm(alarmSampleId.AlarmId)
                                      select new Tuple<AlarmSampleId, Identity>(alarmSampleId, tuple.Item2));
     }
     return alarmsToAcknowledge
         .GroupBy(t => t.Item2)
         .Select(g => new Tuple<AlarmSampleId[], Identity>(g.Select(i => i.Item1).ToArray(), g.Key))
         .ToArray();
 }
Пример #8
0
 internal void SetAlarmInfo(Func<string> locationGetter, Func<string> descriptionGetter, AlarmCategoryAbstract category)
 {
     _locationGetter = locationGetter;
     _descriptionGetter = descriptionGetter;
     _category = category;
 }