/// <summary> /// Parses the given values assuming that they are in the same order as the column definitions. /// </summary> /// <param name="context">The metadata for the current record being processed.</param> /// <param name="values">The values to parse.</param> /// <returns>The parsed objects.</returns> internal object[] ParseValues(IRecoverableRecordContext context, string[] values) { object[] parsedValues = new object[ColumnDefinitions.PhysicalCount]; for (int columnIndex = 0, sourceIndex = 0, destinationIndex = 0; columnIndex != ColumnDefinitions.Count; ++columnIndex) { var definition = ColumnDefinitions[columnIndex]; if (definition is IMetadataColumn) { var columnContext = GetColumnContext(context, columnIndex, destinationIndex); var metadata = ParseWithContext(columnContext, null); parsedValues[destinationIndex] = metadata; ++destinationIndex; } else if (!definition.IsIgnored) { var rawValue = values[sourceIndex]; var parsedValue = ParseValue(context, columnIndex, destinationIndex, rawValue); parsedValues[destinationIndex] = parsedValue; ++sourceIndex; ++destinationIndex; } else { ++sourceIndex; } } return(parsedValues); }
/// <summary> /// Formats the given values assuming that they are in the same order as the column definitions. /// </summary> /// <param name="context">The metadata for the record currently being processed.</param> /// <param name="values">The values to format.</param> /// <returns>The formatted values.</returns> internal string[] FormatValues(IRecoverableRecordContext context, object[] values) { string[] formattedValues = new string[ColumnDefinitions.Count]; for (int columnIndex = 0, valueIndex = 0; columnIndex != ColumnDefinitions.Count; ++columnIndex) { IColumnDefinition definition = ColumnDefinitions[columnIndex]; if (definition is IMetadataColumn) { var columnContext = GetColumnContext(context, columnIndex, valueIndex); var formattedValue = FormatWithContext(columnContext, null); formattedValues[columnIndex] = formattedValue; ++valueIndex; } else if (!definition.IsIgnored) { var value = values[valueIndex]; var formattedValue = FormatValue(context, columnIndex, valueIndex, value); formattedValues[columnIndex] = formattedValue; ++valueIndex; } else { var formattedValue = FormatValue(context, columnIndex, -1, null); formattedValues[columnIndex] = formattedValue; } } return(formattedValues); }
private object ParseValue(IRecoverableRecordContext context, int columnIndex, int destinationIndex, string rawValue) { var isContextDisabled = context.ExecutionContext.Options.IsColumnContextDisabled; if (isContextDisabled) { var definition = ColumnDefinitions[columnIndex]; return(ParseWithoutContext(definition, destinationIndex, rawValue)); } else { var columnContext = GetColumnContext(context, columnIndex, destinationIndex); return(ParseWithContext(columnContext, rawValue)); } }
private string FormatValue(IRecoverableRecordContext context, int columnIndex, int valueIndex, object value) { var isContextDisabled = context.ExecutionContext.Options.IsColumnContextDisabled; if (isContextDisabled) { var definition = ColumnDefinitions[columnIndex]; return(FormatWithoutContext(definition, valueIndex, value)); } else { var columnContext = GetColumnContext(context, columnIndex, valueIndex); return(FormatWithContext(columnContext, value)); } }