private void AddWriters(Node node, NodeReader reader, BufferTree tree, QueueIndex queue) { if (node.Index.Count > 0) { FieldWriter writer = new FieldWriter(node) { BufferIndex = node.Index.ToArray(), NamePart = this.GetNamePart(node, queue, tree), Queue = queue, }; reader.Writers.Add(writer); tree.Fields.Add(writer); if (queue != null && queue.Type == RelationQueueType.Cached) { CacheWriter cacheWriter = new CacheWriter(node) { BufferIndex = writer.BufferIndex.First(), CacheIndex = queue.Cache.Count, Queue = queue, }; queue.Cache.Add(cacheWriter); } } if (node.Item != null || node.Metadata.HasFlag(RelationMetadataFlags.List | RelationMetadataFlags.Recursive)) { QueueIndex prevQueue = tree.Queues.LastOrDefault()?.Index; QueueIndex nextQueue = this.CreateIndex(node, tree); QueueWriter writer = new QueueWriter(node) { NamePart = this.GetNamePart(node.Item ?? node, queue, tree), Queue = queue, Next = nextQueue, }; if ((node.Item ?? node).Metadata.HasFlag(RelationMetadataFlags.Recursive)) { nextQueue.Type = RelationQueueType.Recursive; } else if (prevQueue != null && !prevQueue.List.Identity.Equals(nextQueue.List.Owner.Parent?.Identity)) { nextQueue.Type = RelationQueueType.Cached; } else if (prevQueue != null && prevQueue.Type == RelationQueueType.Cached) { nextQueue.Type = RelationQueueType.Cached; } reader.Writers.Add(writer); if (node.Item != null) { this.CreateQueue(node.Item, tree, nextQueue); } } }
public void FieldWriter() { FieldWriter writer = new FieldWriter(this.output.Language.CastTo <BaseLanguage>()); writer.Write(new FieldTemplate(null, "test", Code.Type("type")), this.output); Assert.AreEqual("private type test;", this.output.ToString()); }
public void CheckDateTime() { MemoryStream buffer = new MemoryStream(); IFieldWriter writer = new FieldWriter(buffer); IFieldReader reader = new FieldReader(buffer); DateTime referenceTime = DateTime.Now; //we convert to UTC during serialization, we want local time. buffer.Position = 0; writer.Write(referenceTime); Assert.AreEqual(12, buffer.Position); writer.Write(referenceTime.AddTicks(1)); Assert.AreEqual(16, buffer.Position); writer.Write(referenceTime.AddMilliseconds(50)); Assert.AreEqual(22, buffer.Position); writer.Write(referenceTime.AddHours(1)); Assert.AreEqual(31, buffer.Position); writer.Write(referenceTime.AddDays(1)); Assert.AreEqual(40, buffer.Position); buffer.Position = 0; Assert.AreEqual(referenceTime, reader.ReadDateTime()); Assert.AreEqual(referenceTime.AddTicks(1), reader.ReadDateTime()); Assert.AreEqual(referenceTime.AddMilliseconds(50), reader.ReadDateTime()); Assert.AreEqual(referenceTime.AddHours(1), reader.ReadDateTime()); Assert.AreEqual(referenceTime.AddDays(1), reader.ReadDateTime()); }
public void CheckUInt64Array() { MemoryStream buffer = new MemoryStream(); IFieldWriter writer = new FieldWriter(buffer); IFieldReader reader = new FieldReader(buffer); UInt64[] array1 = new UInt64[] {}; UInt64[] array2 = new UInt64[] { 1 }; UInt64[] array3 = new UInt64[] { 0, 0, 0, 0, 0, 0 }; UInt64[] array4 = new UInt64[] { 0, 1, 2, 3, 4, 5 }; UInt64[] array5 = new UInt64[] { 0, 1, 1, 2, 2, 2 }; UInt64[] array6 = new UInt64[] { 0, 1, 1, 2, 2, 2, 3 }; writer.Write(array1); writer.Write(array2); writer.Write(array3); writer.Write(array4); writer.Write(array5); writer.Write(array6); buffer.Position = 0; array1.CompareArray(reader.ReadUInt64Array()); array2.CompareArray(reader.ReadUInt64Array()); array3.CompareArray(reader.ReadUInt64Array()); array4.CompareArray(reader.ReadUInt64Array()); array5.CompareArray(reader.ReadUInt64Array()); array6.CompareArray(reader.ReadUInt64Array()); }
// static sbyte n_ByteValueExact (IntPtr jnienv, IntPtr native__this) // { // var __this = global::Java.Lang.Object.GetObject<Android.Icu.Math.BigDecimal> (jnienv, native__this, JniHandleOwnership.DoNotTransfer); // return __this.ByteValueExact (); // } public MethodCallback(GenBase type, Method method, CodeGenerationOptions options, string propertyName, bool isFormatted) { this.type = type; this.method = method; property_name = propertyName; is_formatted = isFormatted; opt = options; delegate_field = new MethodCallbackDelegateField(method, options); delegate_getter = new GetDelegateHandlerMethod(method, options); Name = "n_" + method.Name + method.IDSignature; ReturnType = new TypeReferenceWriter(method.RetVal.NativeType); IsStatic = true; IsPrivate = method.IsInterfaceDefaultMethod; if (!string.IsNullOrWhiteSpace(method.Deprecated)) { Attributes.Add(new ObsoleteAttr()); } SourceWriterExtensions.AddSupportedOSPlatform(Attributes, method, opt); Parameters.Add(new MethodParameterWriter("jnienv", TypeReferenceWriter.IntPtr)); Parameters.Add(new MethodParameterWriter("native__this", TypeReferenceWriter.IntPtr)); foreach (var p in method.Parameters) { Parameters.Add(new MethodParameterWriter(options.GetSafeIdentifier(p.UnsafeNativeName), new TypeReferenceWriter(p.NativeType))); } }
public void CheckBoolArray() { MemoryStream buffer = new MemoryStream(); IFieldWriter writer = new FieldWriter(buffer); IFieldReader reader = new FieldReader(buffer); bool[][] list = new bool[][] { new bool[0], new bool[1], new bool[2], new bool[31], new bool[32], new bool[33], new bool[63], new bool[64], new bool[65], new bool[127], new bool[128], new bool[129] }; Random rand = new Random(0); int bitCount = 0; for (int i = 0; i < list.Length; i++) { bool[] current = list[i]; bitCount += current.Length; for (int j = 0; j < current.Length; j++) { current[j] = rand.NextDouble() >= 0.5; } writer.Write(current); } Assert.AreEqual(675, bitCount); Assert.AreEqual(buffer.Length, buffer.Position); buffer.Position = 0; for (int i = 0; i < list.Length; i++) { bool[] current = list[i]; bool[] actual = reader.ReadBoolArray(); CompareArray(current, actual); } Assert.AreEqual(buffer.Length, buffer.Position); }
public void CheckDoubleArray() { MemoryStream buffer = new MemoryStream(); IFieldWriter writer = new FieldWriter(buffer); IFieldReader reader = new FieldReader(buffer); Double[] array1 = new Double[] {}; Double[] array2 = new Double[] { 1 }; Double[] array3 = new Double[] { 0, 0, 0, 0, 0, 0 }; Double[] array4 = new Double[] { 0, 1, 2, 3, 4, 5 }; Double[] array5 = new Double[] { 0, 1, 1, 2, 2, 2 }; Double[] array6 = new Double[] { 0, 1, 1, 2, 2, 2, 3 }; writer.Write(array1); writer.Write(array2); writer.Write(array3); writer.Write(array4); writer.Write(array5); writer.Write(array6); buffer.Position = 0; CompareArray(array1, reader.ReadDoubleArray()); CompareArray(array2, reader.ReadDoubleArray()); CompareArray(array3, reader.ReadDoubleArray()); CompareArray(array4, reader.ReadDoubleArray()); CompareArray(array5, reader.ReadDoubleArray()); CompareArray(array6, reader.ReadDoubleArray()); }
public void CheckDateTime() { MemoryStream buffer = new MemoryStream(); IFieldWriter writer = new FieldWriter(buffer); IFieldReader reader = new FieldReader(buffer); var referenceTime = new DateTime(1973, 6, 25, 8, 30, 12, DateTimeKind.Utc); //UTC to ensure tests are portable buffer.Position = 0; writer.Write(referenceTime); Assert.AreEqual(11, buffer.Position, "Serialized value isn't the expected length. Position is: {1}, expected {0}.\r\nSerialized Value: {2}", buffer.Position, 11, buffer.ToArray().ToDisplayString()); writer.Write(referenceTime.AddTicks(1)); Assert.AreEqual(14, buffer.Position); writer.Write(referenceTime.AddMilliseconds(50)); Assert.AreEqual(19, buffer.Position); writer.Write(referenceTime.AddHours(1)); Assert.AreEqual(27, buffer.Position); writer.Write(referenceTime.AddDays(1)); Assert.AreEqual(35, buffer.Position); buffer.Position = 0; Assert.AreEqual(referenceTime, reader.ReadDateTime()); Assert.AreEqual(referenceTime.AddTicks(1), reader.ReadDateTime()); Assert.AreEqual(referenceTime.AddMilliseconds(50), reader.ReadDateTime()); Assert.AreEqual(referenceTime.AddHours(1), reader.ReadDateTime()); Assert.AreEqual(referenceTime.AddDays(1), reader.ReadDateTime()); }
public void CheckString() { IFieldWriter writer = new FieldWriter(); writer.Write((string)null); Assert.AreEqual(2, writer.Position, "Expected position "); writer.Write(""); Assert.AreEqual(3, writer.Position, "Expected position "); writer.Write(" "); Assert.AreEqual(5, writer.Position, "Expected position "); writer.Write("Hello"); Assert.AreEqual(11, writer.Position, "Expected position "); writer.Write("Hello"); Assert.AreEqual(17, writer.Position, "Expected position "); writer.Write("Hi"); Assert.AreEqual(20, writer.Position, "Expected position "); IFieldReader reader = new FieldReader(writer.ToArray()); Assert.AreEqual(null, reader.ReadString(), "Expected string "); Assert.AreEqual("", reader.ReadString(), "Expected string "); Assert.AreEqual(" ", reader.ReadString(), "Expected string "); Assert.AreEqual("Hello", reader.ReadString(), "Expected string "); Assert.AreEqual("Hello", reader.ReadString(), "Expected string2 "); Assert.AreEqual("Hi", reader.ReadString(), "Expected string "); }
private static void WriteLenovoAsn(TSDESADV asn, FieldWriter writer) { writer.WL("MessageReferenceNumber_01", asn.UNH.MessageReferenceNumber_01); foreach (var dtm in asn.DTM) { writer.WL(MapLenovoDate.TryGetValue(dtm.DATETIMEPERIOD_01.Datetimeperiodqualifier_01, out var d) ? d : dtm.DATETIMEPERIOD_01.Datetimeperiodqualifier_01 + " search here http://www.stylusstudio.com/edifact/D97A/2380.htm" , dtm.DATETIMEPERIOD_01.Datetimeperiod_02); } foreach (var rff in asn.RFFLoop) { writer.WL( MapLenovoRff.TryGetValue(rff.RFF.REFERENCE_01.Referencequalifier_01, out var rffn) ? rffn : rff.RFF.REFERENCE_01.Referencequalifier_01 + " search here http://www.stylusstudio.com/edifact/D97A/1153.htm" , rff.RFF.REFERENCE_01.Referencenumber_02); } foreach (var nad in asn.NADLoop) { writer.WL(MapLenovoParty.TryGetValue(nad.NAD.Partyqualifier_01, out var d) ? d : nad.NAD.Partyqualifier_01 + " search here http://www.stylusstudio.com/edifact/D97A/2380.htm" , nad.NAD.PARTYNAME_04.Partyname_01); } foreach (var csp in asn.CPSLoop) { foreach (var pac in csp.PACLoop) { foreach (var pci in pac.PCILoop) { writer.WL("MARKS & LABELS", pci.PCI.MARKSLABELS_02.Shippingmarks_01); } } writer.WL("------ lines -----", ""); foreach (var lin in csp.LINLoop) { writer.WL("Lineitemnumber_01", lin.LIN.Lineitemnumber_01); writer.WL("item type", lin.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01); foreach (var qty in lin.QTY) { writer.WL("despatch quantity", qty.QUANTITYDETAILS_01.Quantity_02); } foreach (var loc in lin.LOCLoop) { writer.WL("LOCATION IDENTIFICATION/place location", loc.LOC.LOCATIONIDENTIFICATION_02.Placelocation_04); } foreach (var pci in lin.PCILoop) { if (pci.PCI.MARKSLABELS_02 != null) { writer.WL("MARKS & LABELS", pci.PCI.MARKSLABELS_02.Shippingmarks_01); } } } } }
private long DateTimeOffsetSerializedLength() { MemoryStream buffer = new MemoryStream(); IFieldWriter writer = new FieldWriter(buffer); buffer.Position = 0; writer.Write(DateTimeOffset.Now); return(buffer.Position); }
public void FieldDefaultValue() { FieldTemplate template = new FieldTemplate(null, "test", Code.Type("type")); template.DefaultValue = Code.String("default"); FieldWriter writer = new FieldWriter(this.output.Language.CastTo <BaseLanguage>()); writer.Write(template, this.output); Assert.AreEqual("private type test = \"default\";", this.output.ToString()); }
public FluentWriter NewField(string value, Action<FieldWriter> func) { if (func == null) { _builder.Append(value ?? string.Empty); return this; } var fieldWriter = new FieldWriter(this, _builder, value); func(fieldWriter); fieldWriter.Close(); return this; }
private static void CheckDouble(double expectedValue, int expectedSize) { IFieldWriter writer = new FieldWriter(); writer.Write(expectedValue); IFieldReader reader = new FieldReader(writer.ToArray()); double actualValue = reader.ReadDouble(); Assert.AreEqual(expectedValue, actualValue, "Expected deserialized value "); Assert.AreEqual(expectedSize, writer.Position, "Unexpected size for {0} ", expectedValue); }
public void TestProtocolVersion1() { // Test with protocol version 1.0 var writer = new FieldWriter(new MemoryStream(), new UniqueStringList(), 1, 0); /* * These first few writes are identical to TestStringCompressionDisabled */ // Test that a null string takes only one byte writer.Write((string)null); Assert.AreEqual(1, writer.Position, "Expected position "); // Test that an empty string takes 2 bytes writer.Write(""); Assert.AreEqual(3, writer.Position, "Expected position "); // Test that passing a single character string takes 3 bytes writer.Write(" "); Assert.AreEqual(6, writer.Position, "Expected position "); // Test that passing a two character string takes 4 bytes writer.Write("Hi"); Assert.AreEqual(10, writer.Position, "Expected position "); // Test that 5 characters takes 7 bytes writer.Write("Hello"); Assert.AreEqual(17, writer.Position, "Expected position "); /* * Now, let's try some repeated strings */ // Test that a second occurence should only take 1 byte with compression enabled writer.Write("Hello"); Assert.AreEqual(18, writer.Position, "Expected position "); writer.Write("Hi"); Assert.AreEqual(19, writer.Position, "Expected position "); // Verify that the strings read back are the same as those written IFieldReader reader = new FieldReader(new MemoryStream(writer.ToArray()), new UniqueStringList(), 1, 0); Assert.AreEqual(null, reader.ReadString()); Assert.AreEqual("", reader.ReadString()); Assert.AreEqual(" ", reader.ReadString()); Assert.AreEqual("Hi", reader.ReadString()); Assert.AreEqual("Hello", reader.ReadString()); Assert.AreEqual("Hello", reader.ReadString()); Assert.AreEqual("Hi", reader.ReadString()); }
public FluentWriter NewField(string value, Action <FieldWriter> func) { if (func == null) { _builder.Append(value ?? string.Empty); return(this); } var fieldWriter = new FieldWriter(this, _builder, value); func(fieldWriter); fieldWriter.Close(); return(this); }
private static void CheckUInt64(ulong expectedValue, int expectedSize) { IFieldWriter writer = new FieldWriter(); writer.Write(expectedValue); IFieldReader reader = new FieldReader(writer.ToArray()); ulong actualValue = reader.ReadUInt64(); Assert.AreEqual(expectedValue, actualValue, "Expected deserialized value "); if (expectedSize > 0) { Assert.AreEqual(expectedSize, writer.Position, "Unexpected size for {0} ", expectedValue); } }
private static void CheckInt32(int expectedValue, int expectedSize) { IFieldWriter writer = new FieldWriter(new MemoryStream()); writer.Write(expectedValue); IFieldReader reader = new FieldReader(writer.ToArray()); int actualValue = reader.ReadInt32(); Assert.AreEqual(expectedValue, actualValue, "Expected deserialized value "); if (expectedSize > 0) { Assert.AreEqual(expectedSize, writer.Position, "Unexpected size for {0} ", expectedValue); } }
public void Basics() { var field = new FieldWriter { Name = "MyField", IsPublic = true, Type = TypeReferenceWriter.IntPtr }; var sw = new StringWriter(); var writer = new CodeWriter(sw); field.Write(writer); var expected = @"public IntPtr MyField; "; Assert.AreEqual(expected, sw.ToString()); }
public void CheckGuid() { MemoryStream buffer = new MemoryStream(); IFieldWriter writer = new FieldWriter(buffer); IFieldReader reader = new FieldReader(buffer); foreach (Guid expected in new Guid[] { Guid.Empty, Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid() }) { buffer.Position = 0; writer.Write(expected); buffer.Position = 0; Guid actual = reader.ReadGuid(); Assert.AreEqual(expected, actual); } }
public void TestProtocolVersion2() { // Test with protocol version 2.0 var writer = new FieldWriter(new MemoryStream(), new UniqueStringList(), 2, 0); // Test that a null string takes only one byte writer.Write((string)null); Assert.AreEqual(2, writer.Position, "Expected position "); // Test that an empty string takes 2 bytes writer.Write(""); Assert.AreEqual(3, writer.Position, "Expected position "); // Test that passing a single character string takes 2 bytes writer.Write(" "); Assert.AreEqual(5, writer.Position, "Expected position "); // Test that passing a two character string takes 3 bytes writer.Write("Hi"); Assert.AreEqual(8, writer.Position, "Expected position "); // Test that 5 characters takes 6 bytes writer.Write("Hello"); Assert.AreEqual(14, writer.Position, "Expected position "); // Test that a second occurence still takes 6 bytes writer.Write("Hello"); Assert.AreEqual(20, writer.Position, "Expected position "); // Likewise, a second occurence of an earlier string still takes a much space writer.Write("Hi"); Assert.AreEqual(23, writer.Position, "Expected position "); // Verify that the strings read back are the same as those written IFieldReader reader = new FieldReader(new MemoryStream(writer.ToArray()), null, 2, 0); Assert.AreEqual(null, reader.ReadString()); Assert.AreEqual("", reader.ReadString()); Assert.AreEqual(" ", reader.ReadString()); Assert.AreEqual("Hi", reader.ReadString()); Assert.AreEqual("Hello", reader.ReadString()); Assert.AreEqual("Hello", reader.ReadString()); Assert.AreEqual("Hi", reader.ReadString()); }
public void CheckTimeSpan() { MemoryStream buffer = new MemoryStream(); IFieldWriter writer = new FieldWriter(buffer); IFieldReader reader = new FieldReader(buffer); foreach (ulong value in new UInt64[] { 0x0, 0x1, 0x9999, 0xffff, 0xffffffff, 0xffffffffffff, 0xffffffffffffffff, 0x7fffffffffffffff, 0x9999999999999999 }) { buffer.Position = 0; TimeSpan expected = new TimeSpan((long)value); writer.Write(expected); buffer.Position = 0; TimeSpan actual = reader.ReadTimeSpan(); Assert.AreEqual(expected, actual); } }
private static void WriteLenovoOrder(TSORDERS order, FieldWriter writer) { writer.WL("MessageReferenceNumber_01", order.UNH.MessageReferenceNumber_01); foreach (var dtm in order.DTM) { writer.WL(MapLenovoDate.TryGetValue(dtm.DATETIMEPERIOD_01.Datetimeperiodqualifier_01, out var d) ? d : dtm.DATETIMEPERIOD_01.Datetimeperiodqualifier_01 + " search here http://www.stylusstudio.com/edifact/D97A/2380.htm" , dtm.DATETIMEPERIOD_01.Datetimeperiod_02); } writer.WL(" ", ""); if (order.FTX != null) { foreach (var ftx in order.FTX) { writer.WL("delivery instruction", ftx.TEXTLITERAL_04.Freetext_01); } } writer.WL(" ", ""); foreach (var rff in order.RFFLoop) { writer.WL( MapLenovoRff.TryGetValue(rff.RFF.REFERENCE_01.Referencequalifier_01, out var rffn) ? rffn : rff.RFF.REFERENCE_01.Referencequalifier_01 + " search here http://www.stylusstudio.com/edifact/D97A/1153.htm" , rff.RFF.REFERENCE_01.Referencenumber_02); } writer.WL(" ", ""); foreach (var nad in order.NADLoop) { writer.WL(MapLenovoParty.TryGetValue(nad.NAD.Partyqualifier_01, out var d) ? d : nad.NAD.Partyqualifier_01 + " search here http://www.stylusstudio.com/edifact/D97A/2380.htm" , nad.NAD.PARTYIDENTIFICATIONDETAILS_02?.Partyididentification_01); writer.WL("Nameandaddressline_01", nad.NAD.NAMEANDADDRESS_03?.Nameandaddressline_01); writer.WL("Nameandaddressline_02", nad.NAD.NAMEANDADDRESS_03?.Nameandaddressline_02); writer.WL("Nameandaddressline_03", nad.NAD.NAMEANDADDRESS_03?.Nameandaddressline_03); writer.WL("Streetandnumberpobox_01", nad.NAD.STREET_05?.Streetandnumberpobox_01); writer.WL("Streetandnumberpobox_02", nad.NAD.STREET_05?.Streetandnumberpobox_02); writer.WL("Streetandnumberpobox_03", nad.NAD.STREET_05?.Streetandnumberpobox_03); writer.WL("Cityname_06", nad.NAD.Cityname_06); writer.WL("Postcodeidentification_08", nad.NAD.Postcodeidentification_08); writer.WL("Countrycoded_09", nad.NAD.Countrycoded_09); writer.WL(" ", ""); } foreach (var tdt in order.TDTLoop) { writer.WL("Carrieridentification_01", tdt.TDT.CARRIER_05?.Carrieridentification_01); writer.WL("Carriername_04", tdt.TDT.CARRIER_05?.Carriername_04); writer.WL("Idofmeansoftransportidentification_01", tdt.TDT.TRANSPORTIDENTIFICATION_08?.Idofmeansoftransportidentification_01); } writer.WL("------ lines -----", ""); foreach (var lin in order.LINLoop) { writer.WL("Lineitemnumber_01", lin.LIN.Lineitemnumber_01); writer.WL("item type", lin.LIN.ITEMNUMBERIDENTIFICATION_03.Itemnumber_01); foreach (var qty in lin.QTY) { writer.WL("despatch quantity", qty.QUANTITYDETAILS_01.Quantity_02); } foreach (var loc in lin.LOCLoop) { writer.WL("Storage Location", loc.LOC.LOCATIONIDENTIFICATION_02.Placelocation_04); } if (lin.GIN != null) { foreach (var gin in lin.GIN) { writer.WL("serial number", gin.IDENTITYNUMBERRANGE_02.Identitynumber_01); } } if (lin.GIR != null) { foreach (var gir in lin.GIR) { writer.WL("package", gir.IDENTIFICATIONNUMBER_02.Identitynumber_01); } } writer.WL(" ", ""); } }
//----------------------------------------------------------------------------------------------------------------------------------------------------- internal void AddWriter(FieldWriter writer) { m_Writers.Add(writer); }
public FieldWriter NewField() { var field = new FieldWriter(this, _builder, string.Empty); return field; }
static void Main(string[] args) { var root = @"C:\work\dev\edi"; var dddd = LenovoCatalogClient.GetChangedLenovoMaterials().Result; return; // InventoryRecoSender.SendInventoryForReceivings(Path.Combine(root, @"sample\lenovo\to_respond")).Wait(); // return; // X12214Writer.Write214(Path.Combine(root, "lw_sample\\214.txt")); // write goods received /* DespatchAdviceWriter.WriteEdiFactAsnResponse( * Path.Combine(root, @"sample\lenovo\to_respond"), * Path.Combine(Path.Combine(root, @"sample\lenovo\response"))) * .Wait(); * * return;*/ //translate edi fact // EdiFactTranslator.TranslateEdiFact(Path.Combine(root, @"sample\lenovo"), // Path.Combine(root, @"sample\lenovo\translated")); /* X12Translator.TranslateX12(Path.Combine(root, @"lw_sample"), * Path.Combine(root, @"lw_sample\translated"), * Assembly.GetAssembly(typeof(TS856)));*/ // write wm asn // var asn = new AsnWriter(); // asn.WriteAsn(Path.Combine(root, Guid.NewGuid().ToString("D"))); #region wm ack /* * var settings = new AckSettings * { * AckHandler = (s, a) => * { * var tsTa1 = a.Message as TSTA1; * var ts997 = a.Message as TS997; * * // ts997.AK1.FunctionalIdentifierCode_01 = "A"; * ts997.AK9.FunctionalGroupAcknowledgeCode_01 = "A"; * ts997.AK9.NumberofAcceptedTransactionSets_04 = ts997.AK9.NumberofReceivedTransactionSets_03; * foreach (var aa in ts997.AK2Loop1) * { * aa.AK5.TransactionSetAcknowledgmentCode_01 = "A"; * aa.AK3Loop1 = null; * } * if (tsTa1 != null) * { * // a.Message is TA1 * } * * if (ts997 != null) * { * // Inspect the acknowledgment * var ackCode = ts997.AK9.FunctionalGroupAcknowledgeCode_01; * * var ack = AckBuilders.BuildAck(a.InterchangeHeader, a.GroupHeader, ts997, AckVersion.X12_997); * Debug.Write(ack); * } * }, * MessageHandler = (s, a) => * { * if (!a.ErrorContext.HasErrors) * { * // do something with the message a.Message * Debug.WriteLine("Message {0} with control number {1} is valid.", a.ErrorContext.Name, a.ErrorContext.ControlNumber); * } * * a.ErrorContext.Errors.Clear(); * a.ErrorContext.HasErrors = false; * }, * AckVersion = AckVersion.X12_997, * // Turn off AK2 for valid messages to reduce size * GenerateForValidMessages = false * }; * * * //TL_6637eb02-75b4-4b3a-9f32-5b2e7059d920.edi * var edi = File.OpenRead(@"C:\work\dev\edi\TL_42e0c5bf-ac84-441c-b9ca-0ccbe6170880.edi"); * using (var ackMan = new EdiFabric.Plugins.Acknowledgments.X12.AckMan(settings)) * { * using (var ediReader = new X12Reader(edi, mc => * { * // return Assembly.GetAssembly(typeof(EdiFabric.Templates.EdifactD96A.ADR)); * return Assembly.GetAssembly(typeof(EdiFabric.Templates.X12004010.AAA)); * })) * { * while (ediReader.Read()) * ackMan.Publish(ediReader.Item); * } * } * return;*/ #endregion #region wm staff using (var output = File.CreateText(Path.Combine(root, "stores.txt"))) { //*.edi Dictionary <string, Loop_N1_816_2> ids = new Dictionary <string, Loop_N1_816_2>(); foreach (var file in Directory.EnumerateFiles(root, "00000*").Select(f => new FileInfo(f)) .OrderBy(f => f.Name == "000005_X12_005010_816_OUT-7.011390366.523604" ? new DateTime() : f.CreationTimeUtc)) { // using (EdifactReader reader = new EdifactReader(new FileStream(Path.Combine(root, file), FileMode.Open), using (X12Reader reader = new X12Reader( new FileStream(Path.Combine(root, file.Name), FileMode.Open), mc => { // return Assembly.GetAssembly(typeof(EdiFabric.Templates.EdifactD96A.ADR)); return(Assembly.GetExecutingAssembly()); })) { var ediItems = reader.ReadToEnd().ToList(); if (ediItems.Any(i => i is EdiFabric.Core.Model.Edi.ErrorContexts.ReaderErrorContext)) { Console.WriteLine(file + " " + ediItems.First(i => i is EdiFabric.Core.Model.Edi.ErrorContexts.ReaderErrorContext)); } foreach (var ediItem in ediItems.Where(i => i is EdiFabric.Templates.X12005010.TS816) .Cast <EdiFabric.Templates.X12005010.TS816>()) { foreach (var h in ediItem.HLLoop) { /*WL("id", h.Id.ToString()); * WL("HierarchicalChildCode_04", h.HL.HierarchicalChildCode_04); * WL("HierarchicalIDNumber_01", h.HL.HierarchicalIDNumber_01); * WL("HierarchicalLevelCode_03", h.HL.HierarchicalLevelCode_03); * WL("HierarchicalParentIDNumber_02", h.HL.HierarchicalParentIDNumber_02); * */ foreach (var n in h.N1Loop) { /* WL("EntityIdentifierCode_01", n.N1.EntityIdentifierCode_01); * WL("Id", n.N1.Id.ToString()); * WL("IdentificationCodeQualifier_03", n.N1.IdentificationCodeQualifier_03); * WL("IdentificationCode_04", n.N1.IdentificationCode_04);*/ if (!ids.ContainsKey(n.N1.IdentificationCode_04)) { ids.Add(n.N1.IdentificationCode_04, n); } else { ids[n.N1.IdentificationCode_04] = n; } /* WL("Name_02", n.N1.Name_02); * * if (n.N3 != null) * { * foreach (var n3 in n.N3) * { * WL("AddressInformation_01", n3.AddressInformation_01); * WL("AddressInformation_02", n3.AddressInformation_02); * } * } * * WL("CityName_01", n.N4.CityName_01); * WL("CountryCode_04", n.N4.CountryCode_04); * WL("PostalCode_03", n.N4.PostalCode_03); * * * if (n.REF != null) * { * foreach (var r in n.REF) * { * * WL("ref:Description_03", r.Description_03); * WL("ref:ReferenceIdentificationQualifier_01", r.ReferenceIdentificationQualifier_01); * WL("ref:ReferenceIdentification_02", r.ReferenceIdentification_02); * if (r.ReferenceIdentifier_04 != null) * { * WL("ref:" + r.ReferenceIdentifier_04.ReferenceIdentificationQualifier_01, * r.ReferenceIdentifier_04.ReferenceIdentification_02); * WL("ref:" + r.ReferenceIdentifier_04.ReferenceIdentificationQualifier_03, * r.ReferenceIdentifier_04.ReferenceIdentification_04); * WL("ref:" + r.ReferenceIdentifier_04.ReferenceIdentificationQualifier_05, * r.ReferenceIdentifier_04.ReferenceIdentification_06); * } * * } * } * * if (n.PER != null) * { * foreach (var per in n.PER) * { * WL("communication:ContactFunctionCode_01", per.ContactFunctionCode_01); * WL("communication:ContactFunctionCode_01", per.ContactInquiryReference_09); * WL("communication:Name_02", per.Name_02); * WL("communication:" + per.CommunicationNumberQualifier_03, * per.CommunicationNumber_04); * WL("communication:" + per.CommunicationNumberQualifier_05, * per.CommunicationNumber_06); * WL("communication:" + per.CommunicationNumberQualifier_07, * per.CommunicationNumber_08); * * } * } * } * * WL("------ hl ------", "");*/ } } } } } /* WT( * "INSERT INTO table (IdentificationCode, StoreNumber, Phone, CountryCode, StateCode, CityName, PostalCode, AddressLine1, AddressLine2, AddressLine3, StoreName)", true); * WT("VALUES"); * foreach (var id in ids) * { * var n = id.Value; * var sn = n.REF?.FirstOrDefault(r => r.ReferenceIdentificationQualifier_01 == "ST") * ?.ReferenceIdentification_02; * if (sn == null || n.N3 == null) * continue; * WT("('" + n.N1.IdentificationCode_04 + "',"); * WT("'" + sn + "',"); * WT("'" + n.PER?.FirstOrDefault(r => r.CommunicationNumberQualifier_03 == "TE")?.CommunicationNumber_04 + "',"); * // WT("'" + n.N3.First().AddressInformation_01 + "',"); * WT("'" + n.N4.CountryCode_04 + "',"); * WT("'" + n.N4.StateorProvinceCode_02 + "',"); * WT("'" + n.N4.CityName_01 + "',"); * WT("'" + n.N4.PostalCode_03 + "',"); * WT("'" + n.N3.First().AddressInformation_01 + "',"); * WT(string.IsNullOrEmpty(n.N3.First().AddressInformation_02) ? "null," : * "'" + n.N3.First().AddressInformation_02 + "',"); * WT("null,"); * WT("'" + n.N1.Name_02 + "'),", true); * * * } * return;*/ foreach (var file1 in Directory.EnumerateFiles(root, "*RECONGROUP-925485US00-20200609114554603_519865969")) { // using (EdifactReader reader = new EdifactReader(new FileStream(Path.Combine(root, file), FileMode.Open), using (X12Reader reader = new X12Reader(new FileStream(Path.Combine(root, file1), FileMode.Open), mc => { // return Assembly.GetAssembly(typeof(EdiFabric.Templates.EdifactD96A.ADR)); return(Assembly.GetAssembly(typeof(EdiFabric.Templates.X12005010.AAA))); })) { var ediItems = reader.ReadToEnd().ToList(); if (ediItems.Any(i => i is EdiFabric.Core.Model.Edi.ErrorContexts.ReaderErrorContext)) { Console.WriteLine(file1 + " " + ediItems.First(i => i is EdiFabric.Core.Model.Edi.ErrorContexts.ReaderErrorContext)); } using (var fr = new FieldWriter(File.CreateText(@"c:\temp\wm_orders.csv"))) { fr.WT("PO#"); fr.WT("date purchased"); fr.WT("additional dates"); fr.WT("monetary amount"); fr.WT("store"); fr.WT("line#"); fr.WT("item#"); fr.WT("upc"); fr.WT("model"); fr.WT("color"); fr.WT("upc"); fr.WT("Qty"); fr.WT("UnitPrice"); fr.WT("other", true); foreach (var ediItem in ediItems.Where(i => i is EdiFabric.Templates.X12005010.TS850)) { var po = (EdiFabric.Templates.X12005010.TS850)ediItem; var storeDict = new Dictionary <string, List <(PO1 PO1, string qty)> >(); foreach (var line in po.PO1Loop) { foreach (var sdq in line.SDQ) { //WL("IdentificationCodeQualifier_02", sdq.IdentificationCodeQualifier_02); WL1(MapLocation(ids, sdq.IdentificationCode_03), line.PO1, sdq.Quantity_04, storeDict); WL1(MapLocation(ids, sdq.IdentificationCode_05), line.PO1, sdq.Quantity_06, storeDict); WL1(MapLocation(ids, sdq.IdentificationCode_07), line.PO1, sdq.Quantity_08, storeDict); WL1(MapLocation(ids, sdq.IdentificationCode_09), line.PO1, sdq.Quantity_10, storeDict); WL1(MapLocation(ids, sdq.IdentificationCode_11), line.PO1, sdq.Quantity_12, storeDict); WL1(MapLocation(ids, sdq.IdentificationCode_13), line.PO1, sdq.Quantity_14, storeDict); WL1(MapLocation(ids, sdq.IdentificationCode_15), line.PO1, sdq.Quantity_16, storeDict); WL1(MapLocation(ids, sdq.IdentificationCode_17), line.PO1, sdq.Quantity_18, storeDict); WL1(MapLocation(ids, sdq.IdentificationCode_19), line.PO1, sdq.Quantity_20, storeDict); WL1(MapLocation(ids, sdq.IdentificationCode_21), line.PO1, sdq.Quantity_22, storeDict); } } foreach (var store in storeDict) { foreach (var line in store.Value) { fr.WT(po.BEG.PurchaseOrderNumber_03); fr.WT(po.BEG.Date_05); fr.WT(string.Join("; ", po.DTM.Select(d => ParseDateType(d.DateTimeQualifier_01) + " " + d.Date_02 + " " + d.Time_03))); fr.WT(po.CTTLoop.AMT.MonetaryAmount_02); fr.WT(store.Key); fr.WT(line.PO1.AssignedIdentification_01); fr.WT(line.PO1.ProductServiceID_07); fr.WT("'" + line.PO1.ProductServiceID_09); fr.WT(line.PO1.ProductServiceID_11); fr.WT(line.PO1.ProductServiceID_13); fr.WT("'" + line.PO1.ProductServiceID_23); fr.WT(line.qty); fr.WT(line.PO1.UnitPrice_04); fr.WT(string.Join(";", po.REF.Select(r => MapRef(r.ReferenceIdentificationQualifier_01) + " = " + r.ReferenceIdentification_02 )), true); } } /* foreach (var n1 in po.N1Loop) * { * WL("EntityIdentifierCode_01", n1.N1.EntityIdentifierCode_01); * WL("Name_02", n1.N1.Name_02); * }*/ } } } } } #endregion }
private static void WriteLowesAsn(TS856 asn, FieldWriter writer) { }
public FieldWriter NewField() { var field = new FieldWriter(this, _builder, string.Empty); return(field); }
public static void TranslateX12(string ediSourcePath, string translatedFolderPath, Assembly templateAssembly, string fileNameFilter = null, bool withAcknowlegment = false) { var settings = new AckSettings { AckHandler = (s, a) => { var tsTa1 = a.Message as TSTA1; var ts997 = a.Message as TS997; // ts997.AK1.FunctionalIdentifierCode_01 = "A"; ts997.AK9.FunctionalGroupAcknowledgeCode_01 = "A"; ts997.AK9.NumberofAcceptedTransactionSets_04 = ts997.AK9.NumberofReceivedTransactionSets_03; foreach (var aa in ts997.AK2Loop1) { aa.AK5.TransactionSetAcknowledgmentCode_01 = "A"; aa.AK3Loop1 = null; } if (tsTa1 != null) { // a.Message is TA1 } if (ts997 != null) { // Inspect the acknowledgment var ackCode = ts997.AK9.FunctionalGroupAcknowledgeCode_01; var ack = AckBuilders.BuildAck(a.InterchangeHeader, a.GroupHeader, ts997, AckVersion.X12_997); Debug.Write(ack); } }, MessageHandler = (s, a) => { if (!a.ErrorContext.HasErrors) { // do something with the message a.Message Debug.WriteLine("Message {0} with control number {1} is valid.", a.ErrorContext.Name, a.ErrorContext.ControlNumber); } a.ErrorContext.Errors.Clear(); a.ErrorContext.HasErrors = false; }, AckVersion = AckVersion.X12_997, // Turn off AK2 for valid messages to reduce size GenerateForValidMessages = false }; foreach (var fileName in Directory.EnumerateFiles(ediSourcePath, fileNameFilter ?? "*")) { var ackMan = withAcknowlegment ? new EdiFabric.Plugins.Acknowledgments.X12.AckMan(settings) : null; try { using (X12Reader reader = new X12Reader(new FileStream(fileName, FileMode.Open), mc => { // return Assembly.GetAssembly(typeof(EdiFabric.Templates.EdifactD96A.ADR)); return(templateAssembly); })) { var ediItems = reader.ReadToEnd().ToList(); Console.WriteLine(Path.GetFileName(fileName)); foreach (var ediItem in ediItems) { if (withAcknowlegment) { ackMan.Publish(ediItem); } var resultFileName = Path.Combine(translatedFolderPath, Path.GetFileNameWithoutExtension(fileName) + ".txt"); if (ediItem is TS856) { var asn = (TS856)ediItem; using (var writer = new FieldWriter(File.CreateText(resultFileName))) { WriteLowesAsn(asn, writer); } } } } } finally { ackMan?.Dispose(); } } }
public static void TranslateEdiFact(string ediSourcePath, string translatedFolderPath, string fileNameFilter = null, bool withAcknowlegment = false) { var settings = new EdiFabric.Plugins.Acknowledgments.Edifact.Model.AckSettings { AckHandler = (s, a) => { var contrl = a.Message as EdiFabric.Core.Model.Edi.Edifact.TSCONTRL; // ts997.AK1.FunctionalIdentifierCode_01 = "A"; /* ts997.AK9.FunctionalGroupAcknowriter.WLedgeCode_01 = "A"; * ts997.AK9.NumberofAcceptedTransactionSets_04 = ts997.AK9.NumberofReceivedTransactionSets_03; * foreach (var aa in ts997.AK2Loop1) * { * aa.AK5.TransactionSetAcknowriter.WLedgmentCode_01 = "A"; * aa.AK3Loop1 = null; * }*/ if (contrl != null && a.AckType == AckType.Functional) { // Inspect the acknowriter.WLedgment var ackCode = contrl.UCI.Actioncoded_04; var ack = AckBuilders.BuildAck(a.InterchangeHeader, a.GroupHeader, contrl); using (var file = File.CreateText(Path.Combine(translatedFolderPath, Guid.NewGuid().ToString().Replace("-", "").ToLower() + ".txt"))) { file.Write(ack); } } }, MessageHandler = (s, a) => { if (!a.ErrorContext.HasErrors) { // do something with the message a.Message Debug.WriteLine("Message {0} with control number {1} is valid.", a.ErrorContext.Name, a.ErrorContext.ControlNumber); } a.ErrorContext.Errors.Clear(); a.ErrorContext.HasErrors = false; }, //AckVersion = AckVersion.X12_997, // Turn off AK2 for valid messages to reduce size GenerateForValidMessages = false }; foreach (var fileName in Directory.EnumerateFiles(ediSourcePath, fileNameFilter ?? "*")) { var ackMan = withAcknowlegment ? new EdiFabric.Plugins.Acknowledgments.Edifact.AckMan(settings) : null; try { using (EdifactReader reader = new EdifactReader(new FileStream(fileName, FileMode.Open))) { var ediItems = reader.ReadToEnd().ToList(); Console.WriteLine(Path.GetFileName(fileName)); foreach (var ediItem in ediItems) { /* *.Where(i => * !(i is EdiFabric.Core.Model.Edi.Edifact.UNB) && * !(i is EdiFabric.Core.Model.Edi.Edifact.UNG) && * !(i is EdiFabric.Core.Model.Edi.Edifact.UNE) && * !(i is EdiFabric.Core.Model.Edi.Edifact.UNZ) * ) */ if (withAcknowlegment) { ackMan.Publish(ediItem); } var resultFileName = Path.Combine(translatedFolderPath, Path.GetFileNameWithoutExtension(fileName) + ".txt"); if (ediItem is TSDESADV) { var asn = (TSDESADV)ediItem; using (var writer = new FieldWriter(File.CreateText(resultFileName))) { WriteLenovoAsn(asn, writer); } } if (ediItem is TSORDERS) { var order = (TSORDERS)ediItem; using (var writer = new FieldWriter(File.CreateText(resultFileName))) { WriteLenovoOrder(order, writer); } } } } } finally { ackMan?.Dispose(); } } }