Automatak.Simulator.DNP3.Commons.MeasurementView.InsertOrUpdate C# (CSharp) Method

InsertOrUpdate() private method

private InsertOrUpdate ( Measurement meas ) : void
meas Measurement
return void
        void InsertOrUpdate(Measurement meas)
        {
            if (indexToRow.ContainsKey(meas.Index))
            {
                var row = indexToRow[meas.Index];
                this.listView.Items[row] = CreateItem(meas);
            }
            else
            {
                // figure out where to insert
                var entry = indexToRow.FirstOrDefault(kvp => kvp.Key > meas.Index);
                if (entry.Equals(default(KeyValuePair<ushort, int>)))
                {
                    var row = listView.Items.Count;
                    listView.Items.Add(CreateItem(meas));
                    indexToRow[meas.Index] = row;
                }
                else
                {
                    listView.Items.Insert(entry.Value, CreateItem(meas));
                    indexToRow[meas.Index] = entry.Value;
                    var rows = indexToRow.Select(kvp => kvp.Key > meas.Index);
                    foreach (var kvp in indexToRow)
                    {
                        if (kvp.Key > meas.Index)
                        {
                            indexToRow[kvp.Key] = kvp.Value + 1;
                        }
                    }
                }
            }
        }