Exemple #1
0
        public void read_from_flat_file_with_no_aliases()
        {
            var list = new List <FlatFileReaderTarget>();

            reader.ReadFile(new FlatFileRequest <FlatFileReaderTarget>()
            {
                Filename     = "flatfile.txt",
                Callback     = list.Add,
                Concatenator = "|",
                Finder       = data => new FlatFileReaderTarget()
                {
                    Name = data.Value("A").ToString()
                }
            });


            list.Count.ShouldEqual(3);


            list[0].A.ShouldEqual("a0");
            list[0].B.ShouldEqual("b0");
            list[0].C.ShouldEqual("c0");
            list[0].D.ShouldEqual("d0");
            list[0].Name.ShouldEqual("a0");
        }
Exemple #2
0
        public static EDIValidationResult ValidateEdi(string ediData, string ediFileName, string schemaFileName, string certFileDisplayName, string type, SpecCertFileType fileType,
                                                      IDocumentPlug documentPlug, out IFatpipeDocument fatpipeDocument)
        {
            Stopwatch sw = new Stopwatch();

            sw.Start();

            EDIValidationResult ediValidationResult = new EDIValidationResult()
            {
                FileName   = ediFileName,
                SchemaName = schemaFileName,
                SegmentValidationResults = new List <SegmentValidationResult>(),
                TransactionNumbers       = new List <string>(),
                DisplayName = certFileDisplayName,
                Type        = type,
            };

            fatpipeDocument = null;

            try
            {
                ediValidationResult.SegmentValidationResults.Clear();
                string endHeader = string.Empty;

                switch (fileType)
                {
                case SpecCertFileType.X12:
                    EDIReader ediReader = new EDIReader();
                    if (ediReader.Initialize(new MemoryStream(Encoding.UTF8.GetBytes(ediData)), null, documentPlug) == true)
                    {
                        try
                        {
                            IFatpipeDocument currentFatpipeDocument = null;
                            while ((currentFatpipeDocument = ediReader.GetNextTransactionSet()) != null)
                            {
                                if (string.IsNullOrWhiteSpace(ediValidationResult.BeautifiedOriginalPayload))
                                {
                                    ediValidationResult.BeautifiedOriginalPayload = currentFatpipeDocument.BeautifiedOriginalPayloadStartHeader;
                                    endHeader = currentFatpipeDocument.BeautifiedOriginalPayloadEndHeader;
                                }

                                ediValidationResult.BeautifiedOriginalPayload += currentFatpipeDocument.BeautifiedOriginalPayloadBody;
                                ediValidationResult.TransactionNumbers.Add(currentFatpipeDocument.TransactionNumber);

                                ediValidationResult.SegmentValidationResults.AddRange(ediReader.Errors.GetSegmentValidationResults());

                                fatpipeDocument = currentFatpipeDocument;
                            }

                            ediValidationResult.BeautifiedOriginalPayload += endHeader;
                        }
                        catch (EDIReaderException ediReaderException)
                        {
                            // Add whatever errors we accumulated
                            ediValidationResult.SegmentValidationResults.AddRange(ediReader.Errors.GetSegmentValidationResults());

                            ediValidationResult.SegmentValidationResults.Add(
                                new SegmentValidationResult()
                            {
                                Type           = ResultType.Error,
                                SequenceNumber = -1,
                                Name           = "N/A",
                                Description    = ediReaderException.Message,
                                StartIndex     = -1,
                                EndIndex       = -1,
                            });
                        }
                    }

                    //ediValidationResult.SegmentValidationResults.AddRange(ediReader.Errors.GetSegmentValidationResults());
                    break;

                case SpecCertFileType.FlatFile:
                    FlatFileReader flatFileReader = new FlatFileReader();
                    fatpipeDocument = flatFileReader.ReadFile(new MemoryStream(Encoding.UTF8.GetBytes(ediData)), documentPlug);

                    ediValidationResult.BeautifiedOriginalPayload = fatpipeDocument.BeautifiedOriginalPayloadBody;
                    ediValidationResult.SegmentValidationResults.AddRange(flatFileReader.Errors.GetSegmentValidationResults());
                    break;

                case SpecCertFileType.Xml:
                    XmlFileReader xmlFileReader = new XmlFileReader();
                    fatpipeDocument = xmlFileReader.ReadFile(new MemoryStream(Encoding.UTF8.GetBytes(ediData)), documentPlug);

                    ediValidationResult.BeautifiedOriginalPayload = fatpipeDocument.BeautifiedOriginalPayloadBody;
                    ediValidationResult.SegmentValidationResults.AddRange(xmlFileReader.Errors.GetSegmentValidationResults());
                    break;

                default:
                    ediValidationResult.SegmentValidationResults.Add(
                        new SegmentValidationResult()
                    {
                        Type           = ResultType.Error,
                        SequenceNumber = -1,
                        Name           = "N/A",
                        Description    = "Invalid cert file type (only EDI and FaltFile is supported)",         //ex.Message,
                        StartIndex     = -1,
                        EndIndex       = -1,
                    });
                    break;
                }
            }
            catch (Exception ex)
            {
                ediValidationResult.SegmentValidationResults.Add(
                    new SegmentValidationResult()
                {
                    Type           = ResultType.Error,
                    SequenceNumber = -1,
                    Name           = "N/A",
                    //Description = "Internal error occurred",//ex.Message,
                    Description = "Internal error occurred. " + ex.ToString(),
                    StartIndex  = -1,
                    EndIndex    = -1,
                });
            }

            sw.Stop();

            ediValidationResult.ExecutionTime = sw.Elapsed;

            return(ediValidationResult);
        }