/// <summary> /// Handles the component mapping except for the TimeDimension when TRANSCODING is used /// </summary> /// <param name="reader">The IDataReader to read data from DDB</param> /// <param name="componentValues">The collection to store the component values</param> /// <param name="componentMappings">Component mappings list</param> /// <param name="info">The data retrieval information.</param> /// <returns> /// True all components were mapped - false when an unmapped code was found /// </returns> protected static bool HandleComponentMapping(IDataReader reader, IMappedValues componentValues, IList<IComponentMapping> componentMappings, DataRetrievalInfo info) { var dimensionAtObservationMapping = info.DimensionAtObservationMapping; for (int index = 0; index < componentMappings.Count; index++) { var componentMapping = componentMappings[index]; var val = componentMapping.MapComponent(reader); if (val != null) { componentValues.Add(index, val); if (componentMapping.Component.FrequencyDimension) { componentValues.FrequencyValue = val; } if (componentMapping.Equals(dimensionAtObservationMapping)) { componentValues.DimensionAtObservationValue = val; } } else { return false; } } return true; }