예제 #1
0
        private List <AttributeValidationData> GetValidationData()
        {
            List <AttributeValidationData> toReturn = new List <AttributeValidationData>();

            TextReader validationFileReader = LoadValidationFile();
            string     attributeRow;

            while ((attributeRow = validationFileReader.ReadLine()) != null)
            {
                string[] attributeCells = attributeRow.Split('\t');

                string name = attributeCells[0];
                double min;
                double max;

                if (!double.TryParse(attributeCells[1], out min))
                {
                    min = double.NaN;
                }
                if (!double.TryParse(attributeCells[2], out max))
                {
                    max = double.NaN;
                }

                AttributeValidationData toAdd = new AttributeValidationData(name, min, max);
                toReturn.Add(toAdd);
            }
            validationFileReader.Close();

            return(toReturn);
        }
예제 #2
0
 private void ValidateColumn(DataGridViewColumn columnToCheck, AttributeValidationData range)
 {
     foreach (DataGridViewRow rowToCheck in dgvAttributeView.Rows)
     {
         DataGridViewCell cellToCheck = rowToCheck.Cells[columnToCheck.Name];
         double           cellValue;
         if (double.TryParse(cellToCheck.Value.ToString(), out cellValue))
         {
             if (cellValue > range.Max || cellValue < range.Min)
             {
                 cellToCheck.Style.BackColor = Color.Red;
             }
             else
             {
                 cellToCheck.Style.BackColor = SystemColors.Window;
             }
         }
     }
 }
예제 #3
0
        private void UpdateValidation()
        {
            Regex yearStripper = new Regex(@".*(?=_[0-9][0-9][0-9][0-9]$)");
            List <AttributeValidationData> attributesWithValidation = GetValidationData();

            foreach (DataGridViewColumn columnToCheck in dgvAttributeView.Columns)
            {
                string columnName    = columnToCheck.HeaderText;
                string attributeName = yearStripper.Match(columnName).ToString();
                if (attributeName == "")
                {
                    attributeName = columnName;
                }
                AttributeValidationData range = attributesWithValidation.Find(delegate(AttributeValidationData a)
                {
                    return(a.Name == attributeName);
                });
                if (range != null)
                {
                    ValidateColumn(columnToCheck, range);
                }
            }
        }
예제 #4
0
        private void LoadLimits()
        {
            TextReader validationFileReader = LoadFile();

            List <string> numericAttributes = GetNumericAtributes();
            List <AttributeValidationData> validationLimits = new List <AttributeValidationData>();
            List <string> missingAttributes = new List <string>();

            string attributeRow;

            dataGridView1.CellValueChanged -= new DataGridViewCellEventHandler(dataGridView1_CellValueChanged);
            while ((attributeRow = validationFileReader.ReadLine()) != null)
            {
                string[] attributeCells = attributeRow.Split('\t');
                string   name           = attributeCells[0].Trim();
                if (numericAttributes.Contains(name))
                {
                    double min;
                    double max;

                    if (!double.TryParse(attributeCells[1], out min))
                    {
                        min = double.NaN;
                    }
                    if (!double.TryParse(attributeCells[2], out max))
                    {
                        max = double.NaN;
                    }

                    AttributeValidationData toAdd = new AttributeValidationData(name, min, max);
                    validationLimits.Add(toAdd);
                }
                //else
                //{
                //used to be an attribute, not any more, should probably just ignore this case
                //}
            }

            foreach (string numericAttribute in numericAttributes)
            {
                dataGridView1.Rows.Add();
                DataGridViewRow justAdded = dataGridView1.Rows[dataGridView1.Rows.Count - 1];

                AttributeValidationData attributeLimits = validationLimits.Find(delegate(AttributeValidationData a)
                {
                    return(a.Name.Trim() == numericAttribute.Trim());
                });

                if (attributeLimits != null)
                {
                    justAdded.Cells["ColumnAttribute"].Value = attributeLimits.Name;

                    if (!double.IsNaN(attributeLimits.Min))
                    {
                        justAdded.Cells["ColumnMin"].Value = attributeLimits.Min;
                    }
                    if (!double.IsNaN(attributeLimits.Max))
                    {
                        justAdded.Cells["ColumnMax"].Value = attributeLimits.Max;
                    }
                }
                else
                {
                    justAdded.Cells["ColumnAttribute"].Value = numericAttribute;
                }
            }


            dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(dataGridView1_CellValueChanged);
            validationFileReader.Close();
        }