/// <summary>
        ///
        /// </summary>
        /// <param name="lpResult" type="Itron.Metering.DeviceDataTypes.LoadProfileEnergyData">
        /// </param>
        /// <returns>
        ///     A Itron.Metering.Datafiles.TotalizationContributorList.TotalizationResult value...
        /// </returns>
        private TotalizationResult Totalize(out LoadProfileEnergyData lpResult)
        {
            lpResult = null;

            TotalizationResult Result = ValidateDataSources();

            if (Result == TotalizationResult.Success)
            {
                lpResult = new LoadProfileEnergyData(IntervalLength);

                // Add the appropriate number of channels
                for (int nChannelIndex = 0; nChannelIndex < NumProfileChannels; nChannelIndex++)
                {
                    // The channels will assume the same name as the first contributor
                    lpResult.AddChannel(m_lstDataSources[0].LPData.Channels[nChannelIndex].ChannelName,
                                        (float)1.0,
                                        (float)1.0);
                }

                // Next combine the load profile data from all the contributors
                foreach (LoadProfileDataSource ProfileContributor in m_lstDataSources)
                {
                    TotalizationDataSource contributor = ProfileContributor as TotalizationDataSource;

                    if (contributor != null)
                    {
                        TotalizeIntervalData(lpResult, contributor.LPData.EnergyData, contributor.Calculation);
                    }
                }
            }

            return(Result);
        }
        /// <summary>
        /// This method adds the given file to the list of data sources to be
        /// totalized. In doing so, the file will be opened and the load profile data
        /// will be extracted.
        /// </summary>
        /// <param name="strMIFFileName" type="string">
        /// </param>
        /// <returns>
        /// True if the given file was successfully opened, the load profile data was
        /// extracted, and the file was added to the list of data sources.  False is
        /// returned if the file could not be added to the data source list.
        /// </returns>
        /// <remarks>
        ///  Revision History
        ///  MM/DD/YY Who Version Issue#        Description
        ///  -------- --- ------- ------------- -----------------------------------
        ///  08/26/08 MAH 9.50				    Created
        ///  12/22/08 MAH 9.50.28 CQ 124757     Added error handling to prevent
        ///  totaliation of more contributors with more than 16 channels of data
        ///  11/25/09 AF  2.30.22               Changed the catch block to preserve
        ///                                     the call stack and quiet compiler warning
        /// </remarks>
        public override Boolean AddContributor(String strMIFFileName)
        {
            Boolean boolSuccess = false;
            MIF     hhfFile     = null;

            try
            {
                if (MIF.IsMeterImageFile(strMIFFileName))
                {
                    hhfFile = new MIF(strMIFFileName);

                    TotalizationDataSource newContributor = new TotalizationDataSource(hhfFile);

                    // By default all new contributors will be added to the resulting data
                    newContributor.Calculation = TotalizationDataSource.CalculationType.Addition;

                    m_lstDataSources.Add(newContributor);

                    // We are successful only after we have added the file to the list of
                    // contributors
                    boolSuccess = true;

                    // Clear any previous totalized results.  They will need to be recalculated
                    FlushCachedValues();
                }
            }

            // If, for any reason we could not read the load profile data
            // simply treat it as if it doesn't exist
            catch (Exception)
            {
                throw;
            }

            finally
            {
                if (hhfFile != null)
                {
                    hhfFile.Close();
                }
            }

            return(boolSuccess);
        }