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