/// <summary> /// Closes FuelTanksMeasurements stream and sets IsStreamOpen to "false". /// </summary> private void CloseFuelTanksMeasurementsStream() { if (IsStreamOpen) { FuelTankMeasurementsStreamReader.Close(); FuelTankMeasurementsStreamReader.Dispose(); IsStreamOpen = false; } }
/// <summary> /// Method used to retrieve next measurement value from dataset. /// </summary> /// <returns>KeyValuePair with key being tank id and value being measurement value.</returns> /// <exception cref="InvalidDataException">Thrown when read lind from dataset cannot be parsed by regex, /// basically meaning that this particular line is incorrectly saved into file.</exception> public KeyValuePair <int, double> GetNextMeasurementValue() { if (!IsStreamOpen) { OpenFuelTankMeasurementsStream(); } if (FuelTankMeasurementsStreamReader.EndOfStream) { CloseFuelTanksMeasurementsStream(); OpenFuelTankMeasurementsStream(); } var dataLine = FuelTankMeasurementsStreamReader.ReadLine(); var values = FuelTankCSVRegex.Match(dataLine); if (values.Success) { int fuelTankId = int.Parse(values.Groups[1].Value); double fuelTankMeasurement = double.Parse(values.Groups[2].Value.Replace(',', '.')); return(new KeyValuePair <int, double>(fuelTankId, fuelTankMeasurement)); } throw new InvalidDataException("Data in csv file did not meet requiriments: REGEX - @\"(\\d+),\"?(\\d+,?\\d*)\"?\")"); }