Exemplo n.º 1
0
 private static void ExportOneInstance <T, V>(IFileWriter writer, IMultiRecordMapper <T, V> recordMapper)
     where V : class, new()
 {
     if (null != recordMapper.SignatureRecordMapper)
     {
         recordMapper.SignatureRecordMapper.Value = recordMapper.Value;
         recordMapper.SignatureRecordMapper.Export(writer);
     }
     foreach (var m in recordMapper.RecordMappers)
     {
         m.Target = recordMapper.Value;
         m.Export(writer);
     }
 }
Exemplo n.º 2
0
        public static void Export <T, V>(this IMultiRecordMapper <T, V> recordMapper, IFileWriter writer)
            where V : class, new()
        {
            IEnumerable <V> vEnumerable = recordMapper.EnumerableOfV;

            if (null == vEnumerable)
            {
                recordMapper.Value = recordMapper.GetObject();
                if (null != recordMapper.Value)
                {
                    ExportOneInstance(writer, recordMapper);
                }
            }
            else
            {
                foreach (V v in vEnumerable)
                {
                    recordMapper.Value = v;
                    ExportOneInstance(writer, recordMapper);
                }
            }
        }
Exemplo n.º 3
0
        public static ExtractStatus Import <T, V>(this IMultiRecordMapper <T, V> recordMapper, IFileReader reader)
            where V : class, new()
        {
            ExtractStatus r     = ExtractStatus.Failed;
            int           count = 0;

            do
            {
                V v = null;
                if (null == recordMapper.SignatureRecordMapper)
                {
                    v = new V();
                    r = ExtractStatus.Success;
                }
                else
                {
                    recordMapper.SignatureRecordMapper.Target = recordMapper.Target;
                    recordMapper.SignatureRecordMapper.Value  = null;
                    r = recordMapper.SignatureRecordMapper.Import(reader);
                    v = recordMapper.SignatureRecordMapper.Value;

                    if (r == ExtractStatus.Success && v == null || r == ExtractStatus.Failed)
                    {
                        if (count >= recordMapper.MinOccurrence &&
                            (recordMapper.MaxOccurrence == 0 || count <= recordMapper.MaxOccurrence))
                        {
                            r = ExtractStatus.Success;
                        }
                        else
                        {
                            r         = ExtractStatus.Failed;
                            r.Message = String.Format(LessMessage, count, recordMapper.ToString(), recordMapper.MinOccurrence);
                        }
                        return(r);
                    }
                    else if (r == ExtractStatus.SkipTheRest)
                    {
                        break;
                    }
                }

                if (r == ExtractStatus.Success)
                {
                    ++count;
                    recordMapper.Value = v;
                    recordMapper.SetProperty();
                    if (null != recordMapper.RecordMappers)
                    {
                        foreach (var m in recordMapper.RecordMappers)
                        {
                            m.Target = v;
                            r        = m.Import(reader);
                            if (r != ExtractStatus.Success)
                            {
                                break;
                            }
                        }
                    }
                }
            } while (recordMapper.MaxOccurrence == 0 || count < recordMapper.MaxOccurrence);

            return(r);
        }