public List<object> NextRecord()
{
List<object> result = new List<object>();
if (_readRecords == 0 && _fileFormat.HeaderSize > 0)
{
_stream.Seek(_fileFormat.HeaderSize + _fileFormat.NewLineSize, SeekOrigin.Begin);
}
if (_hasRdw)
{
_stream.Seek(RdwSize, SeekOrigin.Current);
}
_readRecords++;
try
{
var recordFormat = RetrieveRecordFormat(result);
result.AddRange(ReadFields(recordFormat));
}
catch (EndOfFileException)
{
return null;
}
if (_fileFormat.NewLineSize > 0)
{
_stream.Seek(_fileFormat.NewLineSize, SeekOrigin.Current);
}
if (Logger.IsTraceEnabled)
{
//NOTE : WARNING - THIS MIGHT EXPOSE SENSITIVE INFORMATION TO THE VIEW --
//PLEASE PROCEED WITH CAUTION WHEN SETTING LOG LEVEL TO DEBUG.
Logger.Trace("Reading record #{0} ( | is field sep., [] are collection delimiters ) =\n {1}", _readRecords,
_fileFormat.DiscriminatorSize > 0
? ObjectUtils.Dump(result.GetRange(1, result.Count - 1))
: ObjectUtils.Dump(result));
}
return result;
}