/// <summary> /// Initializes a new instance of the <see cref="EdifactGroup{T}"/> class. /// </summary> /// <param name="header">The group header.</param> public EdifactGroup(S_UNG header) : base(header, (ung, i) => new S_UNE { D_0060_1 = i.ToString(), D_0048_2 = ung.D_0048_5 }, Separators.DefaultEdifact()) { }
/// <summary> /// Initializes a new instance of the <see cref="EdifactInterchange"/> class. /// </summary> /// <param name="header">The interchange header.</param> public EdifactInterchange(S_UNB header) : base(header, (unb, i) => new S_UNZ { D_0036_1 = i.ToString(), D_0020_2 = unb.D_0020_5 }, Separators.DefaultEdifact()) { if (header == null) { throw new Exception("UNB header is null."); } }
internal override bool TryReadControl(string segmentName, out string probed, out Separators separators) { probed = ""; separators = null; try { if (segmentName == "UNB") { probed = segmentName + StreamReader.Read(6); if (IsUnb(probed, Separators.DefaultEdifact().DataElement, Separators.DefaultEdifact().ComponentDataElement)) { separators = Separators.DefaultEdifact(); return(true); } } if (segmentName == "UNA") { var una = StreamReader.Read(6); probed = segmentName + una; var unaChars = una.ToArray(); var componentDataElement = unaChars[0]; var dataElement = unaChars[1]; char?escape = unaChars[3]; var repetitionDataElement = Separators.DefaultEdifact().RepetitionDataElement; var segment = unaChars[5]; var tmp = StreamReader.Read(9, Trims); probed += tmp; if (IsUnb(tmp, dataElement, componentDataElement)) { separators = new Separators(segment, componentDataElement, dataElement, repetitionDataElement, escape); probed = tmp; return(true); } } } catch { // ignored } return(false); }
public void TestGenerateWithNonDefaultSeparators() { // ARRANGE const string sample = "EdiFabric.Tests.Edi.Edifact_INVOIC_D00A.txt"; const string expectedResult = "EdiFabric.Tests.Edi.Edifact_INVOIC_D00A_NonDefaultSeparators.txt"; var interchange = TestHelper.GenerateEdifact <M_INVOIC>(sample); var defaultSeparators = Separators.DefaultEdifact(); var newSeparators = new Separators(defaultSeparators.Segment, defaultSeparators.ComponentDataElement, '|', defaultSeparators.RepetitionDataElement, defaultSeparators.Escape); // ACT var ediSegments = interchange.GenerateEdi(newSeparators); // ASSERT Assert.AreEqual(TestHelper.AsString(expectedResult), TestHelper.AsString(ediSegments, Environment.NewLine)); }
/// <summary> /// Generates a collection of EDI segments from the header, the items and the trailer. /// Automatically generates an UNA segment if the separators are not the default. /// </summary> /// <param name="separators">The EDI separators.</param> /// <returns>The collection of EDI segments.</returns> public override IEnumerable <string> GenerateEdi(Separators separators = null) { var result = new List <string>(); var currentSeparators = separators ?? Separators.DefaultEdifact(); if (separators != null) { result.Add(separators.ToUna()); } result.AddRange(ToEdi(Header, currentSeparators)); foreach (var item in Items) { result.AddRange(item.GenerateEdi(currentSeparators)); } result.AddRange(ToEdi(Trailer, currentSeparators)); return(result); }