Namespace Wolfgang.Etl.FixedWidth

Classes

EtlPipelineFixedWidthExtensions

Class-named fixed-width source factories and sink terminators for the fluent Wolfgang.Etl.Abstractions.EtlPipeline chain (issue #253). Source factories hang off Wolfgang.Etl.Abstractions.EtlPipeline so a pipeline reads EtlPipeline.Create().FixedWidthExtractor<Person>("people.txt"); sink terminators hang off Wolfgang.Etl.Abstractions.IEtlPipeline<T> so it ends … .FixedWidthLoader<Person>("out.txt").RunAsync().

FieldContext

Provides contextual information about a fixed-width field to a ValueConverter or ValueParser delegate.

FixedWidthBinaryExtractorOptions

Options for the Stream-based FixedWidthBinaryExtractor<TRecord> constructors.

FixedWidthBinaryExtractor<TRecord>

Reads a fixed-length binary record file (mainframe / COBOL, #21) and yields records of type TRecord. Unlike FixedWidthExtractor<TRecord>, records are not newline-delimited — each record is a fixed number of bytes (the sum of the ByteLength of every field), read directly from the stream, so packed-decimal and binary bytes that happen to be 0x0A/0x0D are never mistaken for record separators.

FixedWidthBinaryLoaderOptions

Options for the Stream-based FixedWidthBinaryLoader<TRecord> constructors.

FixedWidthBinaryLoader<TRecord>

Writes records of type TRecord to a fixed-length binary record stream (mainframe / COBOL, #21) — the write counterpart of FixedWidthBinaryExtractor<TRecord>. Each record is encoded to a fixed number of bytes (the field byte widths) and written back-to-back with no delimiters, encoding COMP-3 packed-decimal and COMP binary-integer fields alongside text.

FixedWidthConverter

Provides built-in value converter, header converter, and value parser functions for use with FixedWidthLoader<TRecord> and FixedWidthExtractor<TRecord>.

FixedWidthDataReaderOptions

Options for the Stream-based FixedWidthDataReader<TRecord> constructor.

FixedWidthDataReader<TRecord>

A forward-only, read-only IDataReader over a fixed-width text source, with the field layout taken from the [FixedWidthField] / [FixedWidthSkip] attributes on TRecord (#26). Serves each field's value directly from the parsed line — no TRecord instance is created per row — which is the optimal shape for SqlBulkCopy, Load(IDataReader), and other ADO.NET consumers that would otherwise discard a POCO per row.

FixedWidthError

A record that failed to parse during extraction — a "dead letter". When OnError is set, each failed line is reported as one of these instead of the exception aborting the run (provided Skip is configured to continue). Capture them for logging, a dead-letter queue, or post-run inspection (#29).

FixedWidthExtractorOptions<TRecord>

Configuration for a FixedWidthExtractor<TRecord>, supplied to its constructor. Carries every parsing setting that is independent of the input shape; the Stream constructors take the derived FixedWidthExtractorStreamOptions<TRecord>, which adds the byte-decoding Encoding a TextReader caller has already decided.

FixedWidthExtractorStreamOptions<TRecord>

Configuration for a FixedWidthExtractor<TRecord> constructed over a Stream: everything in FixedWidthExtractorOptions<TRecord> plus the Encoding used to decode the bytes. The TextReader constructors take the base record instead, because a reader has already decoded its bytes and an Encoding there would be settable but inert.

FixedWidthExtractor<TRecord>

Reads a fixed-width text file and yields records of type TRecord as an asynchronous stream.

FixedWidthFieldInfo

Read-only metadata for a single resolved column in a fixed-width record layout — either a mapped field or a skipped column — exposed by FixedWidthSchema (#22).

FixedWidthLoaderOptions

Configuration for a FixedWidthLoader<TRecord>, supplied to its constructor. Carries every formatting setting that is independent of the output shape; the Stream constructors take the derived FixedWidthLoaderStreamOptions, which adds the byte-encoding Encoding a TextWriter caller has already decided.

FixedWidthLoaderStreamOptions

Configuration for a FixedWidthLoader<TRecord> constructed over a Stream: everything in FixedWidthLoaderOptions plus the Encoding used to encode the bytes. The TextWriter constructors take the base record instead, because a writer already owns its encoding and an Encoding there would be settable but inert.

FixedWidthLoader<TRecord>

Writes records of type TRecord to a fixed-width text stream as an asynchronous operation.

FixedWidthMultiRecordExtractor

Reads a fixed-width file that interleaves multiple record types — for example a mainframe batch file with a header, detail, and trailer layout on different lines — and yields each line as the object it maps to (#19).

FixedWidthMultiRecordExtractorOptions

Options for the Stream-based FixedWidthMultiRecordExtractor constructors.

FixedWidthReport

A progress report for fixed-width extract and load operations. Extends Wolfgang.Etl.Abstractions.Report with additional diagnostic properties specific to fixed-width file processing.

FixedWidthReportOptions

The counts that make up a FixedWidthReport.

FixedWidthSchema

A read-only view over the resolved fixed-width field layout for a record type (#22). Exposes the field/skip columns, positions, widths, types, and formatting that FixedWidthExtractor<TRecord> / FixedWidthLoader<TRecord> derive from [FixedWidthField] / [FixedWidthSkip] attributes — useful for generating documentation, building validation tooling, or debugging a layout.

FixedWidthSchemaBuilder<T>

Builds a FixedWidthSchema for T from a fluent, type-safe code API instead of [FixedWidthField] / [FixedWidthSkip] attributes (#23). Use it when the record type is not yours to decorate, when you prefer configuration-as-code, or when the layout is built dynamically. The resulting schema is equivalent to one resolved from attributes — assign it to Schema / Schema to use it, or inspect it with Fields / ToDiagram().

FixedWidthTransformerOptions

Configuration for a FixedWidthTransformer<TSource, TDestination>, supplied to its constructor. The transformer has no settings of its own beyond the base-stage ones it inherits (ReportingInterval, MaximumItemCount, SkipItemCount, ErrorPolicy); the record exists so the transformer is configured the same way as every other stage (ADR-0009).

FixedWidthTransformer<TSource, TDestination>

Transforms a stream of TSource records into TDestination records in a single streaming pass (#14) — the middle stage of an extract → transform → load pipeline. Compose it between a FixedWidthExtractor<TRecord> reading one fixed-width layout and a FixedWidthLoader<TRecord> writing another to reformat a file (reorder, add/remove, or reformat fields).

ValidationResult

The result returned by a RecordValidator delegate: the ValidationAction to take for a parsed record and an optional human-readable reason (surfaced in debug logs).

Interfaces

IFixedWidthExtractorBuilder<T>

A fluent builder for a fixed-width extraction stage of a generic Wolfgang.Etl.Abstractions.EtlPipeline. Returned by the FixedWidthExtractor source factories in EtlPipelineFixedWidthExtensions.

IFixedWidthLoaderBuilder<T>

A fluent builder for a fixed-width loader that terminates a generic Wolfgang.Etl.Abstractions.EtlPipeline. Returned by the FixedWidthLoader sink terminators in EtlPipelineFixedWidthExtensions.

Delegates

FixedWidthValueParser

Converts a raw field value read from the file into the target property type. The text is a zero-copy slice of the source line — call ToString() only if you need a string.