public static ExtractStatus Import <T, V>(this ISingleRecordMapper <T, V> recordMapper, IFileReader reader) where V : class, new() { ExtractStatus r; int count = 0; do { try { reader.Next(); recordMapper.Value = null; r = recordMapper.Extract(reader); if (r == ExtractStatus.Success) { ++count; recordMapper.SetProperty(); } else { if (r == ExtractStatus.ValueMismatched) { reader.Previous(); if (count >= recordMapper.MinOccurrence) { r = ExtractStatus.Success; } else { r = ExtractStatus.Failed; r.Message = String.Format(LessMessage, count, recordMapper.ToString(), recordMapper.MinOccurrence); } } break; } } catch (EndOfStreamException) { if (count >= recordMapper.MinOccurrence) { r = ExtractStatus.EndOfFile; break; } else { r = ExtractStatus.Failed; r.Message = String.Format(LessMessage, count, recordMapper.ToString(), recordMapper.MinOccurrence); } } catch (Exception exc) { throw new Exception(string.Format("Error at line {0} : {1}", reader.LineNo, exc.ToString())); } } while (recordMapper.MaxOccurrence == 0 || count < recordMapper.MaxOccurrence); return(r); }
public static void Export <T, V>(this ISingleRecordMapper <T, V> recordMapper, IFileWriter writer) where V : class, new() { IEnumerable <V> vEnumerable = recordMapper.EnumerableOfV; if (null != vEnumerable) { foreach (V v in vEnumerable) { recordMapper.Value = v; recordMapper.Insert(writer); } } else { if (null == recordMapper.Value) { recordMapper.Value = recordMapper.GetObject(); } recordMapper.Insert(writer); } }