/// <summary>
        /// Performs general and specific data checks on stream gage station data. </summary>
        /// <param name="props"> A property list for specific properties </param>
        /// <param name="data_vector"> Vector of data to check.
        /// on checking this data. </param>
        private void checkStreamGageStationData(PropList props, System.Collections.IList data_vector)
        {
            // Create elements for the checks and check file
            string[] header = StateMod_StreamGage.getDataHeader();
            System.Collections.IList data = new List <object>();
            string title = "Stream Gage Station";

            // Perform the general validation using the Data Table Model
            StateMod_Data_TableModel tm = new StateMod_StreamGage_Data_TableModel(data_vector, false);

            System.Collections.IList @checked = performDataValidation(tm, title);
            //String [] columnHeader = getDataTableModelColumnHeader( tm );
            string[] columnHeader = getColumnHeader(tm);

            // Do specific checks
            int size = 0;

            if (data_vector != null)
            {
                size = data_vector.Count;
            }
            data = doSpecificDataChecks(data_vector, props);
            // Add the data and checks to the check file.
            // Provides basic header information for this data check table
            string info = "The following " + title + " (" + data.Count +
                          " out of " + size + ") have no .....";

            // Create data models for Check file
            CheckFile_DataModel dm     = new CheckFile_DataModel(data, header, title, info, data.Count, size);
            CheckFile_DataModel gen_dm = new CheckFile_DataModel(@checked, columnHeader, title + " Missing or Invalid Data", "", __gen_problems, size);

            __check_file.addData(dm, gen_dm);
        }
        /// <summary>
        /// Helper method to check that well rights sum to the well station capacity.  This
        /// is called by the well right and well station checks.  The check is performed
        /// by formatting the capacity and decree sum to .NN precision.
        /// </summary>
        private void checkWellRights_CapacityData()
        {
            // get component data
            System.Collections.IList wes_Vector = (System.Collections.IList)getComponentData(StateMod_DataSet.COMP_WELL_STATIONS);
            System.Collections.IList wer_Vector = (System.Collections.IList)getComponentData(StateMod_DataSet.COMP_WELL_RIGHTS);
            if (wes_Vector == null || wer_Vector == null)
            {
                return;
            }
            System.Collections.IList data = new List <object>();
            int size = 0;

            // initialize some info for the check file
            string[] header = StateMod_Well.getCapacityHeader();
            string   title  = "Well Station Capacity";

            // check that there data available
            StateMod_Well wes_i = null;

            if (wes_Vector == null)
            {
                return;
            }
            // loop through the vector of data and perform specific
            // data checks
            size = wes_Vector.Count;
            for (int i = 0; i < size; i++)
            {
                wes_i = (StateMod_Well)wes_Vector[i];
                if (wes_i == null)
                {
                    continue;
                }
                string[] checks = wes_i.checkComponentData_Capacity(wer_Vector, i);
                // add the data to the data vector
                if (checks != null && checks.Length > 0)
                {
                    data.Add(checks);
                }
            }
            // add the data and checks to the check file
            if (data.Count > 0)
            {
                // provides basic header information for this data table
                string info = "The following well stations (" + data.Count +
                              " out of " + size +
                              ") have capacity different\nfrom the sum of well rights for " +
                              "the station.\n" +
                              "Parcel count and area in the following table are available " +
                              "only if well rights are read from HydroBase.\n";

                // create data models for Check file
                CheckFile_DataModel dm = new CheckFile_DataModel(data, header, title, info, data.Count, size);
                __check_file.addData(dm, null);
            }
        }
        /// <summary>
        /// Helper method to check well rights component data.  The following are checked:
        /// <ol>
        /// <li>	Well stations without at least one right are listed.  This requires that
        /// the dataset include well stations.</li>
        /// <li>	Well rights with yield <= 0.0</li>
        /// <li>	Well rights summary for a station is not equal to the well capacity.
        /// This requires that the dataset include well stations.<li>
        /// </ol>
        /// </summary>
        private void checkWellStationRights(PropList props, System.Collections.IList wer_Vector)
        {
            int size = 0;

            // create elements for the checks and check file
            string[] header = StateMod_WellRight.getDataHeader();
            System.Collections.IList data = new List <object>();
            string title = "Well Rights";

            // Do the general data validation
            // using this components data table model
            StateMod_Data_TableModel tm = new StateMod_WellRight_Data_TableModel(wer_Vector, false);

            System.Collections.IList @checked = performDataValidation(tm, title);
            //String [] columnHeader = getDataTableModelColumnHeader( tm );
            string[] columnHeader = getColumnHeader(tm);

            // check Well Station data
            PropList props_rights = new PropList("Well Rights");

            props_rights.add("checkRights=true");
            System.Collections.IList wes_Vector = getComponentData(StateMod_DataSet.COMP_WELL_STATIONS);
            if (wes_Vector != null && wes_Vector.Count > 0)
            {
                checkWellStationData(props_rights, wes_Vector);
            }
            props_rights = null;     // cleanup

            // Check to make sure the sum of well rights equals the well station
            // capacity...
            checkWellRights_CapacityData();

            // Since well rights are determined from parcel data, print a list of
            // well rights that do not have associated yield (decree)...
            size = 0;
            if (wer_Vector != null)
            {
                size = wer_Vector.Count;
            }
            // Do data checks listed in the StateMod_WellRight class
            // Remove all previous checks from StateMod_Well
            data.Clear();
            data = doSpecificDataChecks(wer_Vector, props);
            // provides basic header information for this data check table
            string info = "The following well rights (" + data.Count +
                          " out of " + size +
                          ") have no decree (checked to StateMod file .XX precision).\n" +
                          "Well yield data may not be available.";

            // create data models for Check file
            CheckFile_DataModel dm     = new CheckFile_DataModel(data, header, title, info, data.Count, size);
            CheckFile_DataModel gen_dm = new CheckFile_DataModel(@checked, columnHeader, title + " Missing or Invalid Data", "", __gen_problems, size);

            __check_file.addData(dm, gen_dm);
        }
        /// <summary>
        /// Performs general and specific data checks on well station data. </summary>
        /// <param name="props"> A property list for specific properties </param>
        /// <param name="wes_Vector"> Vector of data to check.
        /// on checking this data. </param>
        private void checkWellStationData(PropList props, System.Collections.IList wes_Vector)
        {
            // create elements for the checks and check file
            string[] header = StateMod_Well.getDataHeader();
            string   title  = "Well Station";

            // first do the general data validation
            // using this components data table model
            StateMod_Data_TableModel tm = new StateMod_Well_Data_TableModel(wes_Vector, false);

            System.Collections.IList @checked = performDataValidation(tm, title);
            //String [] columnHeader = getDataTableModelColumnHeader( tm );
            string[] columnHeader = getColumnHeader(tm);

            // do specific checks
            int size = 0;

            if (wes_Vector != null)
            {
                size = wes_Vector.Count;
            }
            System.Collections.IList data = new List <object>();
            data = doSpecificDataChecks(wes_Vector, props);
            // add the data and checks to the check file
            // provides basic header information for this data check table
            string info = "The following well stations (" + data.Count +
                          " out of " + size +
                          ") have no irrigated parcels served by wells.\n" +
                          "Data may be OK if the station is an M&I or has no wells.\n" +
                          "Parcel count and area in the following table are available " +
                          "only if well stations are read from HydroBase.\n";

            // create data models for Check file
            CheckFile_DataModel dm     = new CheckFile_DataModel(data, header, title, info, data.Count, size);
            CheckFile_DataModel gen_dm = new CheckFile_DataModel(@checked, columnHeader, title + " Missing or Invalid Data", "", __gen_problems, size);

            __check_file.addData(dm, gen_dm);

            // Check to make sure the sum of well rights equals the well station
            // capacity..
            checkWellRights_CapacityData();
        }