Class S128ProductCatalogue
Strongly-typed projection of an S128Dataset as a catalogue of nautical products (S-128 Edition 2.0.0).
public sealed class S128ProductCatalogue
- Inheritance
-
S128ProductCatalogue
- Inherited Members
Remarks
S-128 datasets describe the nautical products produced by an agency. The typed model surfaces three product subclasses (S128ElectronicProduct, S128PhysicalProduct, S128Service) through a common S128CatalogueEntry base, plus dedicated typed records for producer, distributor, contact, and section-header metadata.
The headline value-add is supersedes resolution: every product
entry's Supersedes and
SupersededBy collections are
populated from the dataset's theReference xlinks whose
companion ProductMapping/categoryOfProductMapping classifies
as HigherPriorityAlternative
(S-128 § 12). All other mappings land in
RelatedProducts with their raw
category text preserved for forward compatibility.
Projection issues — unresolved xlinks, attribute parse failures — surface as ProjectionDiagnostic entries rather than exceptions. The projection only throws when the source dataset is fully empty (no features and no information types).
Properties
Contacts
Contact-details metadata records.
public IReadOnlyList<S128ContactDetails> Contacts { get; init; }
Property Value
DatasetIdentifier
The dataset identifier carried by the source GML Dataset element.
public string? DatasetIdentifier { get; init; }
Property Value
Distributors
Distributor metadata records.
public IReadOnlyList<S128DistributorInformation> Distributors { get; init; }
Property Value
Producers
Producer metadata records.
public IReadOnlyList<S128ProducerInformation> Producers { get; init; }
Property Value
ProductIdentifier
The S-128 product identifier (typically "S-128").
public string? ProductIdentifier { get; init; }
Property Value
Products
All catalogue product entries, polymorphic over the three product subclasses.
public required IReadOnlyList<S128CatalogueEntry> Products { get; init; }
Property Value
SectionHeaders
Catalogue section header records.
public IReadOnlyList<S128CatalogueSectionHeader> SectionHeaders { get; init; }
Property Value
Source
The originating feature-bag dataset.
public required S128Dataset Source { get; init; }
Property Value
Methods
From(S128Dataset, out IReadOnlyList<ProjectionDiagnostic>)
Projects a feature-bag S128Dataset into the typed data
model. Issues encountered during projection are reported via
diagnostics; the projection only throws for a
fully empty dataset (no features and no information types).
public static S128ProductCatalogue From(S128Dataset dataset, out IReadOnlyList<ProjectionDiagnostic> diagnostics)
Parameters
datasetS128DatasetThe source dataset.
diagnosticsIReadOnlyList<ProjectionDiagnostic>Out parameter receiving the projection diagnostics.
Returns
Exceptions
- InvalidOperationException
Thrown if
datasetcontains neither features nor information types.