public static FileProcessorDefinition20 CreateFileProcessorDefinition(InputDefinitionFile20 inputDefinitionFile_20)
        {
            var aggregateManager    = new AggregateManager();
            var processorDefinition = new FileProcessorDefinition20();

            InitializeFileProcessorDefinition(processorDefinition, inputDefinitionFile_20, aggregateManager);
            processorDefinition.DataRowProcessorDefinitions = LoadRowProcessorDefinitions(inputDefinitionFile_20.Datas, aggregateManager);

            processorDefinition.KeyField      = inputDefinitionFile_20.Datas.KeyField;
            processorDefinition.DataTypeField = inputDefinitionFile_20.Datas.DataTypeField;
            ResolveDataTypeField(processorDefinition);


            var fieldProcessorDefinitionsInDataRows = processorDefinition.DataRowProcessorDefinitions.SelectMany(a => a.Value.RowProcessorDefinition.FieldProcessorDefinitions);

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

            return(processorDefinition);
        }
        private static void InitializeFileProcessorDefinition(
            FileProcessorDefinition fileProcessorDefinition,
            InputDefinitionFile.Models.InputDefinitionFile inputDefinitionFile,
            AggregateManager aggregateManager)
        {
            fileProcessorDefinition.CreateRowJsonEnabled          = inputDefinitionFile.CreateRowJsonEnabled;
            fileProcessorDefinition.HeaderRowProcessorDefinition  = LoadRowProcessorDefinition(inputDefinitionFile.Header, aggregateManager);
            fileProcessorDefinition.TrailerRowProcessorDefinition = LoadRowProcessorDefinition(inputDefinitionFile.Trailer, aggregateManager);

            InitializeRules(fileProcessorDefinition.HeaderRowProcessorDefinition.FieldProcessorDefinitions.SelectMany(a => a.Rules), aggregateManager.GetAggregates());
        }
        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);
        }