/// <summary> /// Returns the next record in the iteration. /// </summary> /// <returns></returns> private IRecord Next() { if (curFileReader == null || !curFileReader.MoveNext()) { NextFile(); } return(curFileReader == null ? null : curFileReader.Current); }
public bool MoveNext() { if (reader.MoveNext()) { currentRecord = Next(); return(currentRecord != null); } return(false); }
private IRecord Next() { if (_currentRecord != null) { IRecord tmp = _currentRecord; _currentRecord = null; return(tmp); } else if (_currentRecord == null) { if (_nextRecord != null) { _currentRecord = _nextRecord; CopyErrors(_currentErrors, _nextErrors); _nextRecord = null; } if (!_reader.MoveNext()) { return((_currentRecord != null) ? Next() : null); } try { _nextRecord = _reader.Current; } catch (Exception e) { if (_currentRecord != null) { String recCntlNum = _currentRecord.GetControlNumber(); throw new MarcException("Couldn't get next record after " + (recCntlNum != null ? recCntlNum : "") + " -- " + e.ToString()); } else { throw new MarcException("Marc record couldn't be read -- " + e.ToString()); } } while (RecordsMatch(_currentRecord, _nextRecord)) { _currentRecord = CombineRecords(_currentRecord, _nextRecord, _idsToMerge); MergeErrors(_currentErrors, _nextErrors); if (_reader.MoveNext()) { try { _nextRecord = _reader.Current; } catch (Exception e) { var recCntlNum = _currentRecord.GetControlNumber(); throw new MarcException("Couldn't get next record after " + (recCntlNum != null ? recCntlNum : "") + " -- " + e.ToString()); } } else { _nextRecord = null; } } return(Next()); } return(null); }