Summer.Batch.Extra.Sort.SortTasklet.BuildSorter C# (CSharp) Method

BuildSorter() private method

Builds the sorter.
private BuildSorter ( ) : Sorter
return Sorter
        private Sorter<byte[]> BuildSorter()
        {
            Logger.Debug("Building sorter");
            var sorter = new Sorter<byte[]>();

            var formatterParser = new FormatterParser { Encoding = Encoding };

            sorter.InputFiles = Input.Select(r => r.GetFileInfo()).ToList();
            if (Output.Count == 1)
            {
                var outputFiles = new List<IOutputFile<byte[]>>();
                var outputFile = new LegacyOutputFile { Output = Output[0].GetFileInfo() };
                if (!string.IsNullOrWhiteSpace(Outrec))
                {
                    outputFile.Formatter = formatterParser.GetFormatter(Outrec);
                }
                outputFiles.Add(outputFile);
                sorter.OutputFiles = outputFiles;
            }
            if (Output.Count > 1)
            {
                var outfilParser = new OutfilParser { Encoding = Encoding, SortEncoding = SortEncoding };
                var outputFiles = outfilParser.GetOutputFiles(Outfils);
                if (Output.Count != outputFiles.Count)
                {
                    throw new SortException("The number of output files must match the number of outfil configurations.");
                }
                for (var i = 0; i < Output.Count; i++)
                {
                    outputFiles[i].Output = Output[i].GetFileInfo();
                }
                sorter.OutputFiles = outputFiles;
            }

            if (RecordLength > 0 || Separator == null)
            {
                sorter.RecordAccessorFactory = new BlockAccessorFactory { RecordLength = RecordLength };
            }
            else
            {
                sorter.RecordAccessorFactory = new SeparatorAccessorFactory { Separator = Encoding.GetBytes(Separator) };
            }

            if (!string.IsNullOrWhiteSpace(SortCard))
            {
                var comparerParser = new ComparerParser { Encoding = Encoding, SortEncoding = SortEncoding };
                sorter.Comparer = comparerParser.GetComparer(SortCard);
            }
            if (!string.IsNullOrWhiteSpace(Include) || !string.IsNullOrWhiteSpace(Omit))
            {
                var filterParser = new FilterParser { Encoding = Encoding, SortEncoding = SortEncoding };
                sorter.Filter = filterParser.GetFilter(Include, Omit);
            }
            if (SkipDuplicates)
            {
                sorter.Sum = new SkipSum<byte[]>();
            }
            if (!string.IsNullOrWhiteSpace(Sum))
            {
                var sumParser = new SumParser { Encoding = Encoding };
                sorter.Sum = sumParser.GetSum(Sum);
            }
            if (!string.IsNullOrWhiteSpace(Inrec))
            {
                sorter.InputFormatter = formatterParser.GetFormatter(Inrec);
            }

            if (MaxInMemorySize > 0)
            {
                sorter.MaxInMemorySize = MaxInMemorySize;
            }

            sorter.HeaderSize = HeaderSize;

            return sorter;
        }
    }