void OnDatumReplaced(int xsDatum, IDatum datum) { bool wasIncluded = m_mapper.Accepted(xsDatum); if (wasIncluded) { int xdItem = m_mapper.FromSourceIndex(xsDatum); m_mapper.OnSourceItemReplaced(xsDatum, datum); if (m_mapper.Filter(datum)) { DatumReplaced?.Invoke(xdItem, datum); } else { DatumDeleted?.Invoke(xdItem); } } else { m_mapper.OnSourceItemReplaced(xsDatum, datum); if (m_mapper.Filter(datum)) { int xdItem = m_mapper.FromSourceIndex(xsDatum); DatumInserted?.Invoke(xdItem, datum); } } }
private void Source_DatumReplaced(int srcIndex, IDatum datum) { using (Lock()) { bool wasIncluded = m_mapper.IsSelected(srcIndex); if (wasIncluded) { int ndx = m_mapper.FromSourceIndex(srcIndex); m_mapper.OnSourceItemReplaced(srcIndex, datum); if (m_mapper.Filter(datum)) { DatumReplaced?.Invoke(ndx, datum); } else { DatumDeleted?.Invoke(ndx); } } else { m_mapper.OnSourceItemReplaced(srcIndex, datum); if (m_mapper.Filter(datum)) { int ndx = m_mapper.FromSourceIndex(srcIndex); DatumInserted?.Invoke(ndx, datum); } } } }
public void Delete(int ndx) { Assert(IsConnected); Assert(ndx < RowCount); Assert(0 <= ndx); lock (m_rwLock) { int ndxFrame = RowIndexToFrameIndex(ndx); if (m_header.FirstDeletedFrameIndex != NULL_INDEX) { m_writer.Position = 0; m_writer.Write(m_header.FirstDeletedFrameIndex); long framePos = GetFramePosition(ndxFrame); WriteFrame(framePos); } m_header.FirstDeletedFrameIndex = ndxFrame; int pos = m_recycledData.BinarySearch(ndxFrame); Assert(pos < 0); m_recycledData.Insert(~pos, ndxFrame); m_header.LastWriteTime = DateTime.Now; DatumDeleted?.Invoke(ndx); } }
void Source_DatumReplaced(int srcIndex, IDataRow datum) { Assert(datum != null); bool wasIncluded = m_mapper.Accepted(srcIndex); if (wasIncluded) { int ndx = m_mapper.FromSourceIndex(srcIndex); m_mapper.OnSourceItemReplaced(srcIndex, datum); if (m_mapper.Filter(datum)) { DatumReplaced?.Invoke(ndx, datum); } else { DatumDeleted?.Invoke(ndx); } } else { m_mapper.OnSourceItemReplaced(srcIndex, datum); if (m_mapper.Filter(datum)) { int ndx = m_mapper.FromSourceIndex(srcIndex); DatumInserted?.Invoke(ndx, datum); } } }
void DataProvider_DatumDeleted(int ndx) { IDatum datum = null; lock (m_cache) { int i = 0; while (i < m_cache.Count) { int index = m_cache[i].Item1; if (ndx < index) { IDatum d = m_cache[i].Item2; m_cache[i] = Tuple.Create(index - 1, d); ++i; } else if (index == ndx) { datum = m_cache[i].Item2; m_cache.RemoveAt(i); } } } Debug.Assert(datum != null); T key = m_selector(datum); lock (m_ndxTable) { m_ndxTable[key].Remove(ndx); //adjust indices foreach (List <int> lst in m_ndxTable.Values) { for (int i = 0; i < lst.Count; i++) { if (ndx < lst[i]) { --lst[i]; } } } } DatumDeleted?.Invoke(datum); }
void OnDatumDeleted(int xsDatum) { if (m_mapper.Accepted(xsDatum)) { int xdItem = m_mapper.FromSourceIndex(xsDatum); m_mapper.OnSourceItemDeleted(xsDatum); DatumDeleted?.Invoke(xdItem); } else { m_mapper.OnSourceItemDeleted(xsDatum); } }
private void DataProvider_DatumDeleted(int ndx) { using (Lock()) { IDatum datum = null; int i = 0; while (i < m_cache.Count) { int index = m_cache[i].Item1; if (ndx < index) { IDatum d = m_cache[i].Item2; m_cache[i] = Tuple.Create(index - 1, d); ++i; } else if (index == ndx) { datum = m_cache[i].Item2; m_cache.RemoveAt(i); } } Assert(datum != null); T key = m_selector(datum); m_dataIndices[key].Remove(ndx); //adjust indices foreach (List <int> lst in m_dataIndices.Values) { for (int k = 0; k < lst.Count; ++k) { if (ndx < lst[k]) { --lst[k]; } } } DatumDeleted?.Invoke(datum); } }
public void Delete(int ndxItem) { Assert(IsConnected); Assert(ndxItem < Count); DatumDeleting?.Invoke(ndxItem); if (ndxItem < m_dpCountries.Count) { m_dpCountries.Delete(ndxItem); } else { m_impCountries.RemoveAt(ndxItem - m_dpCountries.Count); } DatumDeleted?.Invoke(ndxItem); }
public void Delete(int ndx) { Assert(IsConnected); Assert(ndx >= 0 && ndx < Count); lock (m_table) { DatumDeleting?.Invoke(ndx); m_table.Delete(ndx); if (AutoFlush) { m_table.Flush(); } DatumDeleted?.Invoke(ndx); } }
private void Source_DatumDeleted(int ndx) { Assert(m_cache.ContainsKey(ndx)); Monitor.Enter(m_lock); IDatum datum = m_cache[ndx]; m_cache.Remove(ndx); m_ndxTable.Remove(datum.ID); var keys = from kv in m_ndxTable where kv.Value > ndx select kv.Key; keys.ToList().ForEach(k => -- m_ndxTable[k]); Monitor.Exit(m_lock); DatumDeleted?.Invoke(datum); }
void DataProvider_DatumDeleted(int ndxDatum) { Debug.Assert(m_cache != null && m_cache.ContainsKey(ndxDatum)); IDataRow row; lock (m_ndxTable) { row = m_cache[ndxDatum]; m_cache.Remove(ndxDatum); m_ndxTable.Remove(row.ID); var keys = from kv in m_ndxTable where kv.Value > ndxDatum select kv.Key; keys.ToList().ForEach(k => -- m_ndxTable[k]); } DatumDeleted?.Invoke(row); }
void OnRowDeleted(int ndx) { DatumDeleted?.Invoke(ndx); }
void Table_DatumDeleted(int ndx) => DatumDeleted?.Invoke(ndx);