Пример #1
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();
        }
Пример #2
0
        public RemapAlarmResult[] RemapAlarms(RemapAlarmsParameter[] parameters)
        {
            if (NotValid())
            {
                return(null);
            }
            var results = new RemapAlarmResult[parameters.Length];

            for (var i = 0; i < parameters.Length; i++)
            {
                var result = new RemapAlarmResult();
                RemapAlarmsParameter parameter = parameters[i];
                results[i] = result;
                IAlarmsRunTarget runTarget;
                if (!_project.AlarmsRunTargets.TryGetValue(parameter.CategoryId, out runTarget))
                {
                    continue;
                }
                AcknowledgeAlarms(parameter, runTarget);
                ReadAlarmStatus(parameter, result, runTarget);
                ReadCurrentAlarms(parameter, result, runTarget);
                ReadHistoryAlarms(parameter, result, runTarget);
                result.Notifications = GetNotifications(runTarget.Reporter.Notifications);
            }

            return(results);
        }
Пример #3
0
        private static void ReadHistoryAlarms(RemapAlarmsParameter parameter, RemapAlarmResult result, IAlarmsRunTarget runTarget)
        {
            var currentAlarms = new Alarm[parameter.HistoryParameters.Length][];

            for (var i = 0; i < parameter.HistoryParameters.Length; i++)
            {
                var curPar = parameter.HistoryParameters[i];
                currentAlarms[i] = runTarget.GetHistoryAlarms(curPar.Item1, curPar.Item2, curPar.Item3);
            }
            result.History = currentAlarms;
        }
Пример #4
0
        private static void ReadAlarmStatus(RemapAlarmsParameter parameter, RemapAlarmResult result, IAlarmsRunTarget runTarget)
        {
            if (!parameter.GetStatus)
            {
                return;
            }
            var status = runTarget.GetHasActiveAndUnacknowledged();

            result.HasActive         = status.Item1;
            result.HasUnacknowledged = status.Item2;
        }
Пример #5
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);
            }
        }
Пример #6
0
 protected override void EstablishContext()
 {
     base.EstablishContext();
     Parameter = new RemapAlarmsParameter {
         AcknowledgeParameters = new Tuple <AlarmSampleId[], Identity> [0],
         GetStatus             = false,
         CategoryId            = Id,
         CurrentParameters     = new Tuple <CriteriaType, AlarmSampleId, int> [0],
         HistoryParameters     = new Tuple <CriteriaType, AlarmSampleId, int> [0]
     };
     Notification = new Notification(DateTime.Now, "Message", "Short", "Long");
     AlarmsRunTarget.Setup(t => t.Reporter.Notifications).Returns(
         new ReadOnlyObservableCollection <Notification>(new ObservableCollection <Notification> {
         Notification
     })).Verifiable();
     Result = Service.RemapAlarms(new[] { Parameter }).Single();
 }
Пример #7
0
 protected override void EstablishContext()
 {
     base.EstablishContext();
     Service      = new Mock <IService>();
     Notification = new WcfNotification {
         StartTime        = DateTime.UtcNow,
         Message          = "Message",
         ShortDescription = "ShortDescription",
         LongDescription  = "LongDescription"
     };
     Result = new RemapAlarmResult {
         HasActive         = true,
         HasUnacknowledged = false,
         Current           = new Alarm[0][],
         History           = new Alarm[0][],
         Notifications     = new[] { Notification }
     };
     Service.Setup(s => s.RemapAlarms(It.Is <RemapAlarmsParameter[]>(p =>
                                                                     p.Length == 1 && p[0].CategoryId == Category.Object.Id && p[0].GetStatus)))
     .Returns(new[] { Result }).Verifiable();
 }
Пример #8
0
                protected override void EstablishContext()
                {
                    base.EstablishContext();
                    Parameter = new RemapAlarmsParameter {
                        AcknowledgeParameters = new Tuple <AlarmSampleId[], Identity> [0],
                        GetStatus             = true,
                        CategoryId            = Id,
                        CurrentParameters     = new[] {
                            new Tuple <CriteriaType, AlarmSampleId, int>(
                                CriteriaType.DownFromInfinity, new AlarmSampleId(
                                    DateTime.Now, RandomGenerator.GetRandomInt32()),
                                RandomGenerator.GetRandomInt32())
                        },
                        HistoryParameters = new[] {
                            new Tuple <CriteriaType, AlarmSampleId, int>(
                                CriteriaType.DownFromInfinity, new AlarmSampleId(
                                    DateTime.Now, RandomGenerator.GetRandomInt32()),
                                RandomGenerator.GetRandomInt32())
                        }
                    };
                    AlarmsRunTarget.Setup(t => t.GetHasActiveAndUnacknowledged())
                    .Returns(new Tuple <bool, bool>(true, false)).Verifiable();
                    var curPar = Parameter.CurrentParameters.Single();

                    Current = new Alarm[0];
                    AlarmsRunTarget.Setup(t => t.GetCurrentAlarms(curPar.Item1, curPar.Item2, curPar.Item3))
                    .Returns(Current).Verifiable();
                    var histPar = Parameter.HistoryParameters.Single();

                    History = new Alarm[0];
                    AlarmsRunTarget
                    .Setup(t => t.GetHistoryAlarms(histPar.Item1, histPar.Item2, histPar.Item3))
                    .Returns(History).Verifiable();
                    Notification = new Notification(DateTime.Now, "Message", "Short", "Long");
                    AlarmsRunTarget.Setup(t => t.Reporter.Notifications).Returns(
                        new ReadOnlyObservableCollection <Notification>(new ObservableCollection <Notification> {
                        Notification
                    })).Verifiable();
                    Result = Service.RemapAlarms(new[] { Parameter }).Single();
                }