Exemplo n.º 1
0
        /// <summary>
        /// Gets field value from a data reader.
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <param name="index">The index.</param>
        /// <param name="row">The row.</param>
        /// <exception cref="ArgumentNullException">reader</exception>
        public override void GetFromReader(IDataReader reader, int index, IRow row)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            if (reader.IsDBNull(index))
            {
                _setValue(row, null);
            }
            else
            {
                DateTimeOffset dto;
                var            value = reader.GetValue(index);
                if (value is DateTime dt)
                {
                    dto = dt;
                }
                else if (value is DateTimeOffset dtofs)
                {
                    dto = dtofs;
                }
                else
                {
                    dto = DateTimeOffset.Parse(value.ToString());
                }

                _setValue(row, dto);
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 2
0
        public override void ValueFromJson(JsonReader reader, IRow row, JsonSerializer serializer)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            switch (reader.TokenType)
            {
            case JsonToken.Null:
            case JsonToken.Undefined:
                _setValue(row, null);
                break;

            case JsonToken.String:
                var val = reader.Value as string;
                if (val == "")
                {
                    _setValue(row, null);
                }
                else
                {
                    _setValue(row, Guid.Parse((string)reader.Value));
                }
                break;

            default:
                throw JsonUnexpectedToken(reader);
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Gets field value from a reader.
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <param name="index">The index.</param>
        /// <param name="row">The row.</param>
        /// <exception cref="ArgumentNullException">reader</exception>
        public override void GetFromReader(IDataReader reader, int index, IRow row)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            if (reader.IsDBNull(index))
            {
                _setValue(row, null);
            }
            else
            {
                byte[] a;

                if (reader.GetType().Name == "SqliteDataReader")
                {
                    a = (byte[])reader.GetValue(index);
                }
                else
                {
                    long available = reader.GetBytes(index, 0, null, 0, 0);
                    a = new byte[available];
                    if (a.Length > 0)
                    {
                        reader.GetBytes(index, 0, a, 0, a.Length);
                    }
                }

                _setValue(row, a);
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Deserializes this fields value from JSON
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <param name="row">The row.</param>
        /// <param name="serializer">The serializer.</param>
        /// <exception cref="ArgumentNullException">reader</exception>
        public override void ValueFromJson(JsonReader reader, IRow row, JsonSerializer serializer)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            switch (reader.TokenType)
            {
            case JsonToken.Null:
            case JsonToken.Undefined:
                _setValue(row, null);
                break;

            case JsonToken.String:
                if (typeof(TValue) == typeof(string))
                {
                    _setValue(row, serializer.Deserialize <TValue>(reader));
                }
                else
                {
                    _setValue(row, JSON.Parse <TValue>((string)reader.Value, includeNulls: serializer.NullValueHandling == NullValueHandling.Include));
                }
                break;

            default:
                _setValue(row, serializer.Deserialize <TValue>(reader));
                break;
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 5
0
        public override void ValueFromJson(JsonReader reader, IRow row, JsonSerializer serializer)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            switch (reader.TokenType)
            {
            case JsonToken.Null:
            case JsonToken.Undefined:
                _setValue(row, null);
                break;

            case JsonToken.String:
                _setValue(row, new MemoryStream(Convert.FromBase64String((string)reader.Value)));
                break;

            case JsonToken.Bytes:
                _setValue(row, new MemoryStream((byte[])reader.Value));
                break;

            default:
                throw JsonUnexpectedToken(reader);
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Gets field value from a data reader.
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <param name="index">The index.</param>
        /// <param name="row">The row.</param>
        /// <exception cref="ArgumentNullException">reader</exception>
        public override void GetFromReader(IDataReader reader, int index, IRow row)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            if (reader.IsDBNull(index))
            {
                _setValue(row, null);
            }
            else
            {
                var      value    = reader.GetValue(index);
                DateTime datetime = value is DateTimeOffset dto ?
                                    dto.DateTime : (value is DateTime dt ? dt : Convert.ToDateTime(value));
                if (DateTimeKind != System.DateTimeKind.Unspecified)
                {
                    datetime = DateTime.SpecifyKind(datetime, DateTimeKind);
                }
                _setValue(row, datetime);
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 7
0
        public override void ValueFromJson(JsonReader reader, IRow row, JsonSerializer serializer)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            switch (reader.TokenType)
            {
            case JsonToken.Null:
            case JsonToken.Undefined:
                _setValue(row, null);
                break;

            case JsonToken.String:
            case JsonToken.Integer:
            case JsonToken.Float:
            case JsonToken.Bytes:
                _setValue(row, (string)reader.Value);
                break;

            default:
                throw JsonUnexpectedToken(reader);
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Gets field value from a data reader.
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <param name="index">The index.</param>
        /// <param name="row">The row.</param>
        /// <exception cref="ArgumentNullException">reader</exception>
        public override void GetFromReader(IDataReader reader, int index, IRow row)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            if (reader.IsDBNull(index))
            {
                _setValue(row, null);
            }
            else
            {
                var      value = reader.GetValue(index);
                TimeSpan timeSpan;
                if (value is TimeSpan ts)
                {
                    timeSpan = ts;
                }
                else if (value is DateTime dt)
                {
                    timeSpan = dt.TimeOfDay;
                }
                else
                {
                    timeSpan = TimeSpan.Parse(value.ToString(), CultureInfo.InvariantCulture);
                }

                _setValue(row, timeSpan);
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 9
0
 /// <summary>
 /// Copies the specified source.
 /// </summary>
 /// <param name="source">The source.</param>
 /// <param name="target">The target.</param>
 public override void Copy(IRow source, IRow target)
 {
     _setValue(target, _getValue(source));
     if (target.TrackAssignments)
     {
         target.FieldAssignedValue(this);
     }
 }
Exemplo n.º 10
0
        public override void Copy(IRow source, IRow target)
        {
            var value = _getValue(source);

            if (value != null)
            {
                value = Clone(value);
            }

            _setValue(target, value);
            target.FieldAssignedValue(this);
        }
Exemplo n.º 11
0
        /// <summary>
        /// Deserializes this fields value from JSON
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <param name="row">The row.</param>
        /// <param name="serializer">The serializer.</param>
        /// <exception cref="ArgumentNullException">reader</exception>
        public override void ValueFromJson(JsonReader reader, IRow row, JsonSerializer serializer)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            switch (reader.TokenType)
            {
            case JsonToken.Null:
            case JsonToken.Undefined:
                _setValue(row, null);
                break;

            case JsonToken.Date:
                var      obj = reader.Value;
                DateTime value;
                if (obj is DateTime dt)
                {
                    value = dt;
                }
                else if (obj is DateTimeOffset dto)
                {
                    _setValue(row, ToDateTimeKind(dto));
                    break;
                }
                else
                {
                    value = Convert.ToDateTime(obj, CultureInfo.InvariantCulture);
                }

                _setValue(row, ToDateTimeKind(value));
                break;

            case JsonToken.String:
                var s = ((string)reader.Value).TrimToNull();
                if (s == null)
                {
                    _setValue(row, null);
                }
                else
                {
                    _setValue(row, ToDateTimeKind(Convert.ToDateTime(s, CultureInfo.InvariantCulture)));
                }
                break;

            default:
                throw JsonUnexpectedToken(reader);
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 12
0
        /// <summary>
        /// Deserializes this fields value from JSON
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <param name="row">The row.</param>
        /// <param name="serializer">The serializer.</param>
        /// <exception cref="ArgumentNullException">reader</exception>
        public override void ValueFromJson(JsonReader reader, IRow row, JsonSerializer serializer)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            int v;

            switch (reader.TokenType)
            {
            case JsonToken.Null:
            case JsonToken.Undefined:
                _setValue(row, null);
                break;

            case JsonToken.Integer:
            case JsonToken.Float:
            case JsonToken.Boolean:
                v = Convert.ToInt32(reader.Value, CultureInfo.InvariantCulture);
                if (EnumType == null)
                {
                    _setValue(row, v);
                }
                else
                {
                    _setValue(row, (int)ConvertEnumFromInt(EnumType, v));
                }
                break;

            case JsonToken.String:
                string s = ((string)reader.Value).TrimToNull();
                if (s == null)
                {
                    _setValue(row, null);
                }
                else if (EnumType == null)
                {
                    _setValue(row, Convert.ToInt32(s, CultureInfo.InvariantCulture));
                }
                else
                {
                    _setValue(row, (int)ConvertEnumFromString(EnumType, s));
                }
                break;

            default:
                throw JsonUnexpectedToken(reader);
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 13
0
        /// <summary>
        /// Sets the value of this field in specified row as object.
        /// </summary>
        /// <param name="row">The row.</param>
        /// <param name="value">The value.</param>
        public override void AsObject(IRow row, object value)
        {
            if (value == null)
            {
                _setValue(row, null);
            }
            else
            {
                _setValue(row, (TimeSpan)value);
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 14
0
 public TValue this[IRow row]
 {
     get
     {
         CheckUnassignedRead(row);
         return(_getValue(row));
     }
     set
     {
         _setValue(row, value);
         row.FieldAssignedValue(this);
     }
 }
Exemplo n.º 15
0
        /// <summary>
        /// Sets the value of this field in specified row as object.
        /// </summary>
        /// <param name="row">The row.</param>
        /// <param name="value">The value.</param>
        public override void AsObject(IRow row, object value)
        {
            if (value == null)
            {
                _setValue(row, null);
            }
            else
            {
                _setValue(row, ToDateTimeKind((DateTime)value));
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 16
0
        public override void GetFromReader(IDataReader reader, int index, IRow row)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            if (reader.IsDBNull(index))
            {
                _setValue(row, null);
            }
            else
            {
                _setValue(row, reader.GetValue(index));
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 17
0
        /// <summary>
        /// Gets field value from a data reader.
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <param name="index">The index.</param>
        /// <param name="row">The row.</param>
        /// <exception cref="ArgumentNullException">reader</exception>
        public override void GetFromReader(IDataReader reader, int index, IRow row)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            if (reader.IsDBNull(index))
            {
                _setValue(row, null);
            }
            else
            {
                _setValue(row, Convert.ToInt64(reader.GetValue(index), CultureInfo.InvariantCulture));
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 18
0
        /// <summary>
        /// Gets field value from a data reader.
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <param name="index">The index.</param>
        /// <param name="row">The row.</param>
        /// <exception cref="ArgumentNullException">reader</exception>
        public override void GetFromReader(IDataReader reader, int index, IRow row)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            if (reader.IsDBNull(index))
            {
                _setValue(row, null);
            }
            else
            {
                _setValue(row, JsonConvert.DeserializeObject <TValue>(reader.GetString(index), Settings ?? JsonSettings.Strict));
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 19
0
        /// <summary>
        /// Gets or sets the value of this field with the specified row.
        /// </summary>
        /// <param name="row">The row.</param>
        /// <returns></returns>
        public new TEnum? this[IRow row]
        {
            get
            {
                CheckUnassignedRead(row);
                var value = _getValue(row);
                if (value == null)
                {
                    return(null);
                }

                return((TEnum)(object)value);
            }
            set
            {
                int?v = value == null ? (int?)null : Convert.ToInt32(value);
                _setValue(row, v);
                row.FieldAssignedValue(this);
            }
        }
Exemplo n.º 20
0
        /// <summary>
        /// Sets the value of this field in specified row as object.
        /// </summary>
        /// <param name="row">The row.</param>
        /// <param name="value">The value.</param>
        /// <exception cref="InvalidCastException">Invalid cast exception while trying to set the value of {Name} field on {row.GetType().Name} as object.</exception>
        public override void AsObject(IRow row, object value)
        {
            if (value == null)
            {
                _setValue(row, null);
            }
            else
            {
                try
                {
                    _setValue(row, (TValue)value);
                }
                catch (InvalidCastException ex)
                {
                    throw new InvalidCastException($"Invalid cast exception while trying to set the value of {Name} field on {row.GetType().Name} as object.", ex);
                }
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 21
0
 /// <summary>
 /// Gets or sets the value of this field with the specified row.
 /// </summary>
 /// <param name="row">The row.</param>
 public new DateTime? this[IRow row]
 {
     get
     {
         CheckUnassignedRead(row);
         return(_getValue(row));
     }
     set
     {
         if (value != null)
         {
             _setValue(row, ToDateTimeKind(value.Value));
         }
         else
         {
             _setValue(row, value);
         }
         row.FieldAssignedValue(this);
     }
 }
Exemplo n.º 22
0
        public override void ValueFromJson(JsonReader reader, IRow row, JsonSerializer serializer)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            switch (reader.TokenType)
            {
            case JsonToken.Null:
            case JsonToken.Undefined:
                _setValue(row, null);
                break;

            default:
                _setValue(row, ValueFromJson(reader, serializer));
                break;
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 23
0
        /// <summary>
        /// Gets field value from a data reader.
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <param name="index">The index.</param>
        /// <param name="row">The row.</param>
        /// <exception cref="ArgumentNullException">reader</exception>
        public override void GetFromReader(IDataReader reader, int index, IRow row)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            var value = reader.GetValue(index);

            if (value is DBNull)
            {
                _setValue(row, null);
            }
            else if (value is decimal d)
            {
                _setValue(row, d);
            }
            else
            {
                _setValue(row, Convert.ToDecimal(value, CultureInfo.InvariantCulture));
            }

            row.FieldAssignedValue(this);
        }
Exemplo n.º 24
0
 public override void Copy(IRow source, IRow target)
 {
     _setValue(target, _getValue(source));
     target.FieldAssignedValue(this);
 }
Exemplo n.º 25
0
 public override void AsObject(IRow row, object value)
 {
     _setValue(row, (TValue)value);
     row.FieldAssignedValue(this);
 }