GetSensorEvents(TestBedViewModel testBed, DateTimeOffset startTime, DateTimeOffset stopTime)
        {
            List <string> binaryEvents      = new List <string>();
            List <string> temperatureEvents = new List <string>();
            List <string> lightSensorEvents = new List <string>();
            List <string> radioEvents       = new List <string>();
            List <string> otherEvents       = new List <string>();

            using (var cmd = new NpgsqlCommand())
            {
                cmd.Connection  = dbConnection;
                cmd.CommandText = string.Format("select stamp, target, message, sensor_type from detailed_all_events where tbname='{0}' and stamp > '{1:u}' and stamp < '{2:u}';",
                                                testBed.Name, startTime, stopTime);
                // Need to increase command timeout.
                cmd.CommandTimeout = 1200;
                appLog.Debug(this.GetType().ToString(),
                             string.Format("Executing SQL \"{0}\".", cmd.CommandText));
                using (var reader = cmd.ExecuteReader())
                {
                    appLog.Debug(this.GetType().ToString(),
                                 string.Format("Data retrieved from database."));
                    while (reader.Read())
                    {
                        // Check binary events based on messages
                        string         message           = reader.IsDBNull(2) ? "" : reader.GetString(2);
                        string         sensorTypeString  = reader.IsDBNull(3) ? "" : reader.GetString(3);
                        DateTimeOffset utcDateTimeOffset = reader.IsDBNull(0) ? DateTimeOffset.MinValue : reader.GetFieldValue <DateTimeOffset>(0);
                        string         eventString       = String.Format("{0:MM/dd/yyyy HH:mm:ss.ffffff zzz},{1},{2},,,{3}",
                                                                         TimeZoneInfo.ConvertTime(utcDateTimeOffset, testBed.TimeZone),
                                                                         reader.IsDBNull(1) ? "" : reader.GetString(1),
                                                                         message,
                                                                         sensorTypeString
                                                                         );
                        if (binarySensorMessages.Contains(message))
                        {
                            binaryEvents.Add(eventString);
                        }
                        else
                        {
                            switch (SensorType.GetSensorType(sensorTypeString).Category)
                            {
                            case "Light":
                                lightSensorEvents.Add(eventString);
                                break;

                            case "Temperature":
                                temperatureEvents.Add(eventString);
                                break;

                            case "Radio":
                                radioEvents.Add(eventString);
                                break;

                            default:
                                otherEvents.Add(eventString);
                                break;
                            }
                        }
                    }
                }
            }
            return(new Tuple <List <string>, List <string>, List <string>, List <string>, List <string> >
                       (binaryEvents, temperatureEvents, lightSensorEvents, radioEvents, otherEvents));
        }
 public List <Sensor> GetSensors(TestBedViewModel testBed)
 {
     return(GetSensors(testBed.Name));
 }
 public List <string> GetSensorTypeList(TestBedViewModel testBed)
 {
     return(GetSensorTypeList(testBed.Name));
 }
 public List <string> GetDistinctSensorTargetList(TestBedViewModel testBed)
 {
     return(GetDistinctSensorTargetList(testBed.Name));
 }
 public Tuple <DateTime, DateTime> GetStartStopDateTime(TestBedViewModel testBed)
 {
     return(GetStartStopDateTime(testBed.Name));
 }