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(); }
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); }
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; }
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; }
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); } }
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(); }
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(); }
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(); }