public override void GetCurrent(CriteriaType criteriaType, AlarmSampleId criteria, int maxCount, Action <Alarm[]> callback) { lock (_currentQueries) { _currentQueries.Add(new Tuple <CriteriaType, AlarmSampleId, int, Action <Alarm[]> >( criteriaType, criteria, maxCount, callback)); } }
public abstract void GetHistory(CriteriaType criteriaType, AlarmSampleId criteria, int maxCount, Action <Alarm[]> callback);
protected override void EstablishContext() { base.EstablishContext(); StrangeAlarm = new AlarmSampleId(TimeService.Object.UtcTime - TimeSpan.FromDays(1), RandomGenerator.GetRandomInt32()); Repository.Setup(r => r.GetActiveIds(Connection)).Returns(new[] {StrangeAlarm}); }
protected override void EstablishContext() { base.EstablishContext(); ActiveId = new AlarmSampleId(TimeService.Object.UtcTime - TimeSpan.FromDays(1.111), AlarmTag.Id); Repository.Setup(r => r.GetActiveIds(Connection)) .Returns(new[] { ActiveId }); }
protected override void EstablishContext() { base.EstablishContext(); CriteriaType = CriteriaType.DownFromInfinity; Criteria = new AlarmSampleId(DateTime.UtcNow, RandomGenerator.GetRandomInt32()); MaxCount = RandomGenerator.GetRandomInt32(); AlarmsRunTarget.GetHistoryAlarms(CriteriaType, Criteria, MaxCount); }
public Alarm[] GetHistoryAlarms(NpgsqlConnection connection, CriteriaType criteriaType, AlarmSampleId criteria, int maxCount) { return GetAlarms(connection, null, criteriaType, criteria, maxCount); }
public Alarm[] GetCurrentAlarms(NpgsqlConnection connection, CriteriaType criteriaType, AlarmSampleId criteria, int maxCount) { var whereOp = new Or(new IsNull(DbStr.EndTime), new IsNull(DbStr.AcknowledgeTime)); return GetAlarms(connection, whereOp, criteriaType, criteria, maxCount); }
private Alarm[] GetAlarms( NpgsqlConnection connection, IWhereOp alarmsWhereOp, CriteriaType criteriaType, AlarmSampleId criteria, int maxCount) { IWhereOp whereOp; bool asc; switch (criteriaType) { case CriteriaType.DownFromInfinity: whereOp = null; asc = false; break; case CriteriaType.DownFrom: whereOp = new Or( new And(new Eq(DbStr.StartTime, criteria.StartTime.Ticks), new Lt(DbStr.AlarmId, criteria.AlarmId)), new Lt(DbStr.StartTime, criteria.StartTime.Ticks)); asc = false; break; case CriteriaType.DownFromOrEqual: whereOp = new Or( new And(new Eq(DbStr.StartTime, criteria.StartTime.Ticks), new Le(DbStr.AlarmId, criteria.AlarmId)), new Lt(DbStr.StartTime, criteria.StartTime.Ticks)); asc = false; break; case CriteriaType.UpFromInfinity: whereOp = null; asc = true; break; case CriteriaType.UpFrom: whereOp = new Or( new And(new Eq(DbStr.StartTime, criteria.StartTime.Ticks), new Gt(DbStr.AlarmId, criteria.AlarmId)), new Gt(DbStr.StartTime, criteria.StartTime.Ticks)); asc = true; break; case CriteriaType.UpFromOrEqual: whereOp = new Or( new And(new Eq(DbStr.StartTime, criteria.StartTime.Ticks), new Ge(DbStr.AlarmId, criteria.AlarmId)), new Gt(DbStr.StartTime, criteria.StartTime.Ticks)); asc = true; break; default: throw new NotSupportedException("CriteriaType " + criteriaType); } if (alarmsWhereOp != null) { whereOp = whereOp == null ? alarmsWhereOp : new And(whereOp, alarmsWhereOp); } var query = _npgQueryHelper.Select( _tableName, _columns, whereOp, new[] { DbStr.StartTime, DbStr.AlarmId }, asc, Math.Min(maxCount, MaxAlarmsToRetrieve)); var alarms = _npgHelper.ExecuteReader(connection, query, reader => new Alarm(reader.GetDateTimeFormTicks(0), reader.GetInt32(1)) { EndTime = reader.GetNullableDateTimeFormTicks(2), AcknowledgeTime = reader.GetNullableDateTimeFormTicks(3), UserId = reader.GetNullableInt64(4) }); return asc ? alarms.Reverse().ToArray() : alarms; }
public void Update(NpgsqlConnection connection, AlarmSampleId[] alarms, DateTime acknowledgeTime, long? userId) { var query = _npgQueryHelper.UpdateWhere( _tableName, new And( new Or(alarms.Select(a => new And(new Eq(DbStr.StartTime, a.StartTime.Ticks), new Eq(DbStr.AlarmId, a.AlarmId))).Cast<IWhereOp>().ToArray()), new IsNull(DbStr.AcknowledgeTime)), new[] { DbStr.AcknowledgeTime, DbStr.UserId }, new object[] { acknowledgeTime.Ticks, userId }); _npgHelper.ExecuteNonQuery(connection, query); }
public void Update(NpgsqlConnection connection, AlarmSampleId[] alarms, DateTime endTime) { var query = _npgQueryHelper.UpdateWhere( _tableName, new Or(alarms.Select(a => new And(new Eq(DbStr.StartTime, a.StartTime.Ticks), new Eq(DbStr.AlarmId, a.AlarmId))) .Cast<IWhereOp>().ToArray()), new[] {DbStr.EndTime}, new object[] {endTime.Ticks}); _npgHelper.ExecuteNonQuery(connection, query); }
public override void GetHistory(CriteriaType criteriaType, AlarmSampleId criteria, int maxCount, Action<Alarm[]> callback) { lock (_historyQueries) { _historyQueries.Add(new Tuple<CriteriaType, AlarmSampleId, int, Action<Alarm[]>>( criteriaType, criteria, maxCount, callback)); } }
public void Acknowledge(AlarmSampleId[] alarms, Identity identity) { var privilege = _project.UsersRunner.GetPrivilege(identity); var alarmsToAcknowledge = (from a in alarms let p = GetPrivilege(a.AlarmId) where !p.HasValue || (privilege.HasValue && (p.Value & privilege.Value) != 0) select a).ToArray(); if (!alarmsToAcknowledge.Any()) return; var userId = identity == null ? null : identity.UserId as long?; using (var connection = _connectionFactory.Create()) { _repository.Update(connection, alarmsToAcknowledge, _timeService.UtcTime, userId); } }
public Alarm[] GetHistoryAlarms(CriteriaType criteriaType, AlarmSampleId criteria, int maxCount) { using (var connection = _connectionFactory.Create()) { return _repository.GetHistoryAlarms(connection, criteriaType, criteria, maxCount); } }
public abstract void GetHistory(CriteriaType criteriaType, AlarmSampleId criteria, int maxCount, Action<Alarm[]> callback);