Ejemplo n.º 1
0
        private void saveButton_Click(object sender, EventArgs e)
        {
            var allWarnings   = new StringBuilder();
            var allBlankCells = new List <DataGridViewCell>();

            // validate that all channels have names
            foreach (var methodTablePair in isobaricMappingTables)
            {
                var tableWarnings = new StringBuilder();
                foreach (var row in methodTablePair.Value.Rows.Cast <DataGridViewRow>())
                {
                    var blankCells    = row.Cells.Cast <DataGridViewCell>().Where(o => o.Value == null || o.Value.ToString() == String.Empty);
                    var blankChannels = blankCells.Select(o => methodTablePair.Value.Columns[o.ColumnIndex].HeaderText);
                    if (blankChannels.Any())
                    {
                        tableWarnings.AppendFormat("\t{0}: {1}\r\n", row.Cells[0].Value, String.Join(", ", blankChannels));
                    }
                    allBlankCells.AddRange(blankCells);
                }
                if (tableWarnings.Length > 0)
                {
                    allWarnings.AppendFormat("Some sample names for {0} were left blank:\r\n{1}\r\n\r\nDo you want to assign these channels to Empty?", methodTablePair.Key, tableWarnings);
                }
            }

            if (allWarnings.Length > 0)
            {
                if (MessageBox.Show(this, allWarnings.ToString(), "Warning", MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    return;
                }
                allBlankCells.ForEach(o => o.Value = "Empty");
            }

            IDictionary <string, IList <string> > isobaricSampleMapping = new Dictionary <string, IList <string> >();

            foreach (var methodTablePair in isobaricMappingTables)
            {
                foreach (var row in methodTablePair.Value.Rows.Cast <DataGridViewRow>())
                {
                    var sourceGroup = row.Cells[0].Value.ToString();
                    isobaricSampleMapping.Add(sourceGroup, new List <string>(row.Cells.Cast <DataGridViewCell>().Skip(1).Select(o => o.Value.ToString())));
                }
            }

            var idpDbFilepath = session.Connection.GetDataSource();
            var existingIsobaricSampleMapping = Embedder.GetIsobaricSampleMapping(idpDbFilepath);

            if (!existingIsobaricSampleMapping.SequenceEqual(isobaricSampleMapping))
            {
                Embedder.EmbedIsobaricSampleMapping(idpDbFilepath, isobaricSampleMapping);
                DialogResult = DialogResult.OK;
            }
            else
            {
                DialogResult = DialogResult.Cancel;
            }

            Close();
        }