示例#1
0
        /// <inheritdoc />
        public T GetValue <T>(IColumnDescriptor <T> column)
        {
            if (!_columns.Contains(column))
            {
                throw new NoSuchColumnException(column);
            }

            return(_logEntry.GetValue(column));
        }
            public T GetValue <T>(IColumnDescriptor <T> column)
            {
                if (Equals(column, Core.Columns.Timestamp))
                {
                    return((T)(object)_timestamp);
                }

                if (Equals(column, Core.Columns.LogLevel))
                {
                    return((T)(object)_logLevel);
                }

                return(_inner.GetValue(column));
            }
示例#3
0
        /// <inheritdoc />
        public virtual void CopyFrom(IReadOnlyLogEntry logEntry)
        {
            var overlappingColumns = logEntry.Columns.Intersect(Columns);

            foreach (var column in overlappingColumns)
            {
                SetValue(column, logEntry.GetValue(column));
            }
        }
示例#4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="logEntry"></param>
        /// <returns></returns>
        public static string ToString(IReadOnlyLogEntry logEntry)
        {
            var buffer  = new StringBuilder();
            var columns = logEntry.Columns;

            for (int i = 0; i < columns.Count; ++i)
            {
                if (i != 0)
                {
                    buffer.Append(", ");
                }

                var column = columns[i];
                var value  = logEntry.GetValue(column);
                buffer.AppendFormat(CultureInfo.InvariantCulture, "{0}: {1}", column.Id, value);
            }

            return(buffer.ToString());
        }
示例#5
0
        /// <summary>
        ///    Compares the two log entries and returns true if they are equal, false other wise.
        /// </summary>
        /// <remarks>
        ///    Two log entries are equal if they have the same columns and the same value their respective columns
        /// </remarks>
        /// <param name="lhs"></param>
        /// <param name="rhs"></param>
        /// <returns></returns>
        public static bool Equals(IReadOnlyLogEntry lhs, IReadOnlyLogEntry rhs)
        {
            if (ReferenceEquals(lhs, rhs))
            {
                return(true);
            }

            if (ReferenceEquals(lhs, null))
            {
                return(false);
            }

            if (ReferenceEquals(rhs, null))
            {
                return(false);
            }

            var columns = new HashSet <IColumnDescriptor>(lhs.Columns);

            foreach (var column in rhs.Columns)
            {
                if (!columns.Remove(column))
                {
                    return(false);
                }

                var rhsValue = rhs.GetValue(column);
                var lhsValue = lhs.GetValue(column);
                if (!Equals(lhsValue, rhsValue))
                {
                    return(false);
                }
            }

            if (columns.Count > 0)
            {
                return(false);
            }

            return(true);
        }
示例#6
0
 public void CopyFrom(int destinationIndex, IReadOnlyLogEntry logEntry)
 {
     _data[destinationIndex] = logEntry.GetValue(_column);
 }
示例#7
0
            public void Insert(int index, IReadOnlyLogEntry logEntry)
            {
                var value = logEntry.GetValue(_column);

                _data.Insert(index, value);
            }