public void DoneRecordUpdate(Meta.Message source, string filter) { // Закончили обрабатывать запись. // Хорошее место для сохранения накопленных данных куда-то. // В демо-примере - просто печать в консоль. ProcessRecord(); // Здесь также следует сбросить собранные значения первичных ключей, // чтобы подготовиться к получению значений для следующей записи. _keys.Clear(); _currentRecord = null; }
public virtual bool InitRecordUpdate(Meta.Message source, string filter) { //Log("InitRecordUpdate Name=" + source.Name); // Начало обработки записи. // Здесь нужно произвести поиск по ключам // и вернуть true, если запись не найдена (т.е. новая) if (_keys.Count == 0) { // SetKeyValue() ни разу не был вызван - // данная таблица не имеет первичных ключей. // Все записи будут считаться новыми, хранить // их будем по порядковому номеру. _currentRecord = new CTableRecrd(); _records.Add(_records.Count.ToString(), _currentRecord); return(true); } else { // У таблицы есть первичные ключи - // ищем и храним записи по их значению. var b = new StringBuilder(); foreach (DictionaryEntry e in _keys) { b.Append(e.Key.ToString()) .Append('='); if (e.Value != null) { b.Append(e.Value.ToString()); } // else b.Append(';'); } var s = b.ToString(); if (_records.TryGetValue(s, out _currentRecord)) { // Запись найдена return(false); } // Запись по ключу не найдена - создадим новую _currentRecord = new CTableRecrd(); _records.Add(s, _currentRecord); return(true); } }
public override bool InitRecordUpdate(Meta.Message source, string filter) { if (source.IsOrderbook) { // Для таблиц типа "orderbook" - специальная обработка. // Запись всегда будет новой, добавим ее в "стакан" if (_orderbook != null) { _currentRecord = new CTableRecrd(); _orderbook.Add(_currentRecord); } return(true); } return(false); }