/// <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)); }
/// <inheritdoc /> public virtual void CopyFrom(IReadOnlyLogEntry logEntry) { var overlappingColumns = logEntry.Columns.Intersect(Columns); foreach (var column in overlappingColumns) { SetValue(column, logEntry.GetValue(column)); } }
/// <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()); }
/// <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); }
public void CopyFrom(int destinationIndex, IReadOnlyLogEntry logEntry) { _data[destinationIndex] = logEntry.GetValue(_column); }
public void Insert(int index, IReadOnlyLogEntry logEntry) { var value = logEntry.GetValue(_column); _data.Insert(index, value); }