Пример #1
0
 public abstract void WriteCsvHeader(CsvWriter writer, Type objectType, CsvSerializerContext serializer, CsvHeaderNamingContext naming);
Пример #2
0
 public abstract object ReadCsv(CsvReader reader, Type objectType, CsvSerializerContext serializer, CsvHeaderNamingContext naming);
 protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref TimestampsDiff result)
 {
     throw new NotSupportedException();
 }
 protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
 {
     writer.WriteField(naming.Get(nameof(TimestampsDiff.Count)));
     writer.WriteField(naming.Get(nameof(TimestampsDiff.Duration)));
     writer.WriteField(naming.Get(nameof(TimestampsDiff.NewDuration)));
     writer.WriteField(naming.Get(nameof(TimestampsDiff.StartOffset)));
     writer.WriteField(naming.Get(nameof(TimestampsDiff.EndOffset)));
     writer.WriteField(naming.Get(nameof(TimestampsDiff.DurationChange)));
 }
Пример #5
0
 protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
 {
     writer.WriteField(naming.Get(nameof(MultipleValues.Id)));
     writer.WriteField(naming.Get(nameof(MultipleValues.Name)));
 }
 protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
 {
     writer.WriteField(naming.Get(nameof(EyeValidationPointResult.Accuracy)));
     writer.WriteField(naming.Get(nameof(EyeValidationPointResult.PrecisionSD)));
     writer.WriteField(naming.Get(nameof(EyeValidationPointResult.PrecisionRMS)));
     writer.WriteField(naming.Get(nameof(EyeValidationPointResult.ValidRatio)));
     writer.WriteField(naming.Get(nameof(EyeValidationPointResult.Distance)));
     writer.WriteField(naming.Get(nameof(EyeValidationPointResult.PupilDiameter)));
 }
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref CompositeStruct result)
        {
            int    id;
            double duration;

            if (
                reader.TryGetField <int>(naming.Get(nameof(CompositeStruct.Id)), out id) &&
                reader.TryGetField <double>(naming.Get(nameof(CompositeStruct.Duration)), out duration)
                )
            {
                result = new CompositeStruct()
                {
                    Id       = id,
                    Duration = duration
                };

                return(true);
            }

            return(false);
        }
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref GazeData result)
        {
            ITimestampedData timestampedData;
            EyeData          leftEye;
            EyeData          rightEye;

            if (
                TryGetMember <ITimestampedData>(reader, serializer, naming, out timestampedData) &&
                TryGetMember <EyeData>(reader, serializer, naming, "Left", out leftEye) &&
                TryGetMember <EyeData>(reader, serializer, naming, "Right", out rightEye)
                )
            {
                result = new GazeData(leftEye, rightEye, timestampedData.Timestamp);
                return(true);
            }

            return(false);
        }
Пример #9
0
 protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
 {
     serializer.WriteHeader <CompositeStruct?>(writer, naming, nameof(SingleNullableStructValue.Value));
 }
Пример #10
0
        public void ReadCsv_CompositeObject_RecordsWithNullValues()
        {
            var serializer = new CsvSerializerContext()
            {
                ThrowOnFailedDeserialize = false
            };
            var converter = new CompositeObjectCsvConverter();

            serializer.Converters.Add(converter);
            serializer.Converters.Add(new SingleIntValueCsvConverter());
            serializer.Converters.Add(new CompositeValueCsvConverter());

            string[] csv = new string[] {
                "Single,CompositeId,CompositeName,Double",    // header
                "15,1,,52.1",                                 // first record
                ",2,Strawberry,-15.2",                        // second record
                "0,,,0",                                      // third record
                ",,,",                                        // fourth null record
                ""                                            // empty line after the last record
            };

            List <CompositeObject> result = new List <CompositeObject>();

            using (var source = new StringReader(String.Join(Environment.NewLine, csv)))
                using (var reader = new CsvReader(source, serializer.Configuration))
                {
                    var naming = new CsvHeaderNamingContext();

                    if (reader.Read())
                    {
                        converter.ReadCsvHeader(reader, serializer);
                    }

                    while (reader.Read())
                    {
                        result.Add((CompositeObject)converter.ReadCsv(reader, typeof(CompositeObject), serializer, naming));
                    }
                }

            Assert.AreEqual(4, result.Count);

            Assert.IsNotNull(result[0]);
            Assert.IsNotNull(result[0].Single);
            Assert.AreEqual(15, result[0].Single.Value);
            Assert.IsNotNull(result[0].Composite);
            Assert.AreEqual(1, result[0].Composite.Id);
            Assert.AreEqual(String.Empty, result[0].Composite.Name);
            Assert.AreEqual(52.1, result[0].Double);

            Assert.IsNotNull(result[1]);
            Assert.IsNull(result[1].Single);
            Assert.IsNotNull(result[1].Composite);
            Assert.AreEqual(2, result[1].Composite.Id);
            Assert.AreEqual("Strawberry", result[1].Composite.Name);
            Assert.AreEqual(-15.2, result[1].Double);

            Assert.IsNotNull(result[2]);
            Assert.IsNotNull(result[2].Single);
            Assert.AreEqual(0, result[2].Single.Value);
            Assert.IsNull(result[2].Composite);
            Assert.AreEqual(0, result[2].Double);

            Assert.IsNull(result[3]);
        }
Пример #11
0
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref SingleNullableStructValue result)
        {
            CompositeStruct?value;

            if (TryGetMember <CompositeStruct?>(reader, serializer, naming, nameof(SingleNullableStructValue.Value), out value))
            {
                result = new SingleNullableStructValue()
                {
                    Value = value
                };

                return(true);
            }

            return(false);
        }
 protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
 {
     writer.WriteField(naming.Get(_timestampFieldName));
 }
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref ITimestampedData result)
        {
            DateTimeOffset timestamp;

            if (reader.TryGetField <DateTimeOffset>(naming.Get(_timestampFieldName), out timestamp))
            {
                result = new TimestampedData(timestamp);
                return(true);
            }

            return(false);
        }
Пример #14
0
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref SingleNullableIntValue result)
        {
            int?value;

            if (reader.TryGetField <int?>(naming.GetDefault(nameof(SingleNullableIntValue.Value)), out value))
            {
                result = new SingleNullableIntValue()
                {
                    Value = value
                };

                return(true);
            }

            return(false);
        }
 protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
 {
     writer.WriteField(naming.Get(nameof(CompositeStruct.Id)));
     writer.WriteField(naming.Get(nameof(CompositeStruct.Duration)));
 }
Пример #16
0
 protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
 {
     writer.WriteField(naming.GetDefault(nameof(SingleNullableIntValue.Value)));
 }
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref EyeValidationPointResult result)
        {
            double?accuracy;
            double?precisionSD;
            double?precisionRMS;
            double validRatio;
            double?distance;
            double?pupilDiameter;

            if (
                reader.TryGetField <double?>(naming.Get(nameof(EyeValidationPointResult.Accuracy)), out accuracy) &&
                reader.TryGetField <double?>(naming.Get(nameof(EyeValidationPointResult.PrecisionSD)), out precisionSD) &&
                reader.TryGetField <double?>(naming.Get(nameof(EyeValidationPointResult.PrecisionRMS)), out precisionRMS) &&
                reader.TryGetField <double>(naming.Get(nameof(EyeValidationPointResult.ValidRatio)), out validRatio) &&
                reader.TryGetField <double?>(naming.Get(nameof(EyeValidationPointResult.Distance)), out distance) &&
                reader.TryGetField <double?>(naming.Get(nameof(EyeValidationPointResult.PupilDiameter)), out pupilDiameter)
                )
            {
                result = new EyeValidationPointResult
                         (
                    accuracy,
                    precisionSD,
                    precisionRMS,
                    validRatio,
                    distance,
                    pupilDiameter
                         );
                return(true);
            }

            return(false);
        }
        protected override void WriteHeader(CsvWriter writer, CsvSerializerContext serializer, CsvHeaderNamingContext naming)
        {
            serializer.WriteHeader <ITimestampedData>(writer, naming);

            serializer.WriteHeader <EyeData>(writer, naming, "Left");
            serializer.WriteHeader <EyeData>(writer, naming, "Right");
        }
Пример #19
0
        protected override bool TryRead(CsvReader reader, CsvSerializerContext serializer, CsvHeaderNamingContext naming, ref MultipleValues result)
        {
            int    id;
            string name;

            if (reader.TryGetField <int>(naming.Get(nameof(MultipleValues.Id)), out id) &&
                reader.TryGetField <string>(naming.Get(nameof(MultipleValues.Name)), out name))
            {
                result = new MultipleValues()
                {
                    Id   = id,
                    Name = name
                };
                return(true);
            }

            return(false);
        }