public RuntimeMeasurementData(RuntimeMeasurement runtimeMeasurement)
 {
     this.DataType  = runtimeMeasurement.DataType;
     this.DeviceId  = runtimeMeasurement.DeviceId;
     this.Quality   = runtimeMeasurement.Quality;
     this.SensorId  = runtimeMeasurement.SensorId;
     this.Unit      = runtimeMeasurement.Unit;
     this.Timestamp = runtimeMeasurement.Timestamp;
     this.Value     = runtimeMeasurement.Value;
 }
        /// <summary>
        /// Creates the measurement.
        /// </summary>
        /// <param name="measurement">The measurement.</param>
        /// <returns>The measurement element.</returns>
        private XmlElement CreateMeasurement(RuntimeMeasurement measurement)
        {
            var elem = this.CreateElement(CommonFormat.MeasurementElementName);

            this.AddAttribute(ref elem, CommonFormat.UnitAttributeName, measurement.Unit);
            this.AddAttribute(ref elem, CommonFormat.DataTypeAttributeName, measurement.DataType);
            this.AddAttribute(ref elem, CommonFormat.QualityAttributeName, measurement.Quality);
            this.AddAttribute(ref elem, CommonFormat.TimestampAttributeName, measurement.Timestamp);
            elem.InnerText = measurement.Value;

            return(elem);
        }
        /// <summary>
        /// Initializes the runtime measurements.
        /// </summary>
        private void InitializeRuntimeMeasurements()
        {
            long index = 0;

            foreach (var item in this.ConfiguredMeasurements)
            {
                var measurement = new RuntimeMeasurement(true);

                // Sets the fields initially according to their mapping.
                InitializeRuntimeMeasurement(index, item, measurement);
                index++;

                // Adds to the list.
                this.RuntimeMeasurements.Add(measurement);
            }
        }
        /// <summary>
        /// Inserts the measurement linq.
        /// </summary>
        /// <param name="runtimeMeasurement">The runtime measurement.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
        private bool InsertMeasurementLinq(RuntimeMeasurement runtimeMeasurement)
        {
            var retVal = false;

            var measurementQuery = from measurementItem in this.RuntimeMeasurements where (runtimeMeasurement.DeviceId == measurementItem.DeviceId) && (runtimeMeasurement.SensorId == measurementItem.SensorId) select measurementItem;
            var measurement      = measurementQuery.FirstOrDefault();

            if (measurement != null)
            {
                var index = this.RuntimeMeasurements.IndexOf(measurement);

                if (index != -1)
                {
                    this.RuntimeMeasurements.RemoveAt(index);
                    this.RuntimeMeasurements.Insert(index, new RuntimeMeasurementData(runtimeMeasurement));
                    retVal = true;
                }
            }

            return(retVal);
        }
        /// <summary>
        /// Inserts the measurement.
        /// </summary>
        /// <param name="runtimeMeasurement">The runtime measurement.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
        private bool InsertMeasurement(RuntimeMeasurement runtimeMeasurement)
        {
            var retVal = false;

            foreach (var measurement in this.RuntimeMeasurements)
            {
                if (runtimeMeasurement.DeviceId == measurement.DeviceId && runtimeMeasurement.SensorId == measurement.SensorId)
                {
                    var index = this.RuntimeMeasurements.IndexOf(measurement);

                    if (index != -1)
                    {
                        this.RuntimeMeasurements.RemoveAt(index);
                        this.RuntimeMeasurements.Insert(index, new RuntimeMeasurementData(runtimeMeasurement));
                        retVal = true;
                        break;
                    }
                }
            }

            return(retVal);
        }
        /// <summary>
        /// Initializes runtime measurement.
        /// </summary>
        /// <param name="index">The index.</param>
        /// <param name="item">The item.</param>
        /// <param name="measurement">The measurement.</param>
        private static void InitializeRuntimeMeasurement(long index, ConfiguredMeasurement item, RuntimeMeasurement measurement)
        {
            // Initializes the request index.
            measurement.RequestIndex = index;

            // Initializes the fields.
            // The device id is always a static value, the mapping is ignored here.
            measurement.DeviceId = item.DeviceId.Value;

            // The sensor id is always a static value, the mapping is ignored here.
            measurement.SensorId = item.SensorId.Value;

            // Sets the unit.
            measurement.Unit = InitializeValue(item.Unit);

            // The data type of the configured item is an enumerated value.
            measurement.DataType = new DataTypeDisplayNames()[(int)item.DataType];

            // Sets the timestamp.
            measurement.Timestamp = InitializeValue(item.Timestamp);

            // Sets the quality.
            measurement.Quality = InitializeValue(item.Quality);

            // Sets the value.
            measurement.Value = InitializeValue(item.Value);
        }