public void Initialize()
        {
            _fileDataSource = TestHelpers.CreateFileDataSource <ParserContext10>("test-file-data.10.csv", false);

            _textDecoder = new TextDecoder {
                Pattern = @"*.", FailValidationResult = ValidationResultType.Critical
            };
            _fileProcessorDefinition = new FileProcessorDefinition10
            {
                HeaderRowProcessorDefinition = new RowProcessorDefinition
                {
                    FieldProcessorDefinitions = new FieldProcessorDefinition[] { },
                },
                DataRowProcessorDefinition = new RowProcessorDefinition
                {
                    FieldProcessorDefinitions = new FieldProcessorDefinition[]
                    {
                        new FieldProcessorDefinition {
                            Decoder = _textDecoder, FieldName = "FieldA", Description = "Field A"
                        },
                        new FieldProcessorDefinition {
                            Decoder = _textDecoder, FieldName = "FieldB", Description = "Field B"
                        },
                        new FieldProcessorDefinition {
                            Decoder = _textDecoder, FieldName = "FieldC", Description = "Field C"
                        }
                    }
                },
                TrailerRowProcessorDefinition = new RowProcessorDefinition
                {
                    FieldProcessorDefinitions = new FieldProcessorDefinition[] { }
                }
            };
        }
        private static void ValidateProcessorDefinition(FileProcessorDefinition10 processorDefinition)
        {
            if (processorDefinition is null)
            {
                throw new ArgumentNullException(nameof(processorDefinition));
            }

            ParsedDataProcessorHelper.ValidateRowProcessorDefinition("Header", processorDefinition.HeaderRowProcessorDefinition);
            ParsedDataProcessorHelper.ValidateRowProcessorDefinition("Data", processorDefinition.DataRowProcessorDefinition);
            ParsedDataProcessorHelper.ValidateRowProcessorDefinition("Trailer", processorDefinition.TrailerRowProcessorDefinition);
        }
        public ParsedDataProcessor10(IDataSource <ParserContext10> source, FileProcessorDefinition10 fileProcessorDefinition)
            : base(source,
                   fileProcessorDefinition.HeaderRowProcessorDefinition.FieldProcessorDefinitions.Length > 0,
                   fileProcessorDefinition.TrailerRowProcessorDefinition.FieldProcessorDefinitions.Length > 0)
        {
            ValidateProcessorDefinition(fileProcessorDefinition);

            _fileProcessorDefinition = fileProcessorDefinition;

            _source.BeforeProcessRow += SourceBeforeProcessRow;
            _source.AfterProcessRow  += SourceAfterProcessRow;
            _source.ProcessField     += SourceProcessField;
        }
        public static FileProcessorDefinition10 CreateFileProcessorDefinition(InputDefinitionFile10 inputDefinitionFile_10)
        {
            var aggregateManager    = new AggregateManager();
            var processorDefinition = new FileProcessorDefinition10();

            InitializeFileProcessorDefinition(processorDefinition, inputDefinitionFile_10, aggregateManager);
            processorDefinition.DataRowProcessorDefinition = LoadRowProcessorDefinition(inputDefinitionFile_10.Data, aggregateManager);

            InitializeRules(processorDefinition.DataRowProcessorDefinition.FieldProcessorDefinitions.SelectMany(a => a.Rules), aggregateManager.GetAggregates());
            InitializeRules(processorDefinition.TrailerRowProcessorDefinition.FieldProcessorDefinitions.SelectMany(a => a.Rules), aggregateManager.GetAggregates());

            return(processorDefinition);
        }