private Dictionary<int, uint> GetMeterValuesAndAssignDlvNumbers(SpatialRecord spatialRecord, List<WorkingData> meters)
{
var dlvValues = new Dictionary<int, uint>();
for (int meterIndex = 0; meterIndex < meters.Count; meterIndex++)
{
var meter = meters[meterIndex];
var numericMeter = meter as NumericWorkingData;
UInt32? value = null;
if (numericMeter != null && spatialRecord.GetMeterValue(numericMeter) != null)
{
value = _numericValueMapper.Map(numericMeter, spatialRecord);
}
var isoEnumerateMeter = meter as ISOEnumeratedMeter;
if (isoEnumerateMeter != null && spatialRecord.GetMeterValue(isoEnumerateMeter) != null)
{
value = _enumeratedValueMapper.Map(isoEnumerateMeter, new List<WorkingData> {meter}, spatialRecord);
}
if (value == null)
continue;
if (_previousDlvs.ContainsKey(meterIndex) && _previousDlvs[meterIndex] != value)
{
_previousDlvs[meterIndex] = value.Value;
dlvValues.Add(meterIndex, value.Value);
}
else if (!_previousDlvs.ContainsKey(meterIndex))
{
_previousDlvs.Add(meterIndex, value.Value);
dlvValues.Add(meterIndex, value.Value);
}
}
return dlvValues;
}