public FundingLineCsvGenerator(IFundingLineCsvTransformServiceLocator transformServiceLocator,
                                       IPublishedFundingPredicateBuilder predicateBuilder,
                                       IBlobClient blobClient,
                                       IFileSystemAccess fileSystemAccess,
                                       IFileSystemCacheSettings fileSystemCacheSettings,
                                       IFundingLineCsvBatchProcessorServiceLocator batchProcessorServiceLocator,
                                       IPublishingResiliencePolicies policies,
                                       IJobManagement jobManagement,
                                       ILogger logger) : base(jobManagement, logger)
        {
            Guard.ArgumentNotNull(logger, nameof(logger));
            Guard.ArgumentNotNull(blobClient, nameof(blobClient));
            Guard.ArgumentNotNull(transformServiceLocator, nameof(transformServiceLocator));
            Guard.ArgumentNotNull(predicateBuilder, nameof(predicateBuilder));
            Guard.ArgumentNotNull(fileSystemAccess, nameof(fileSystemAccess));
            Guard.ArgumentNotNull(fileSystemCacheSettings, nameof(fileSystemCacheSettings));
            Guard.ArgumentNotNull(policies?.BlobClient, nameof(policies.BlobClient));
            Guard.ArgumentNotNull(batchProcessorServiceLocator, nameof(batchProcessorServiceLocator));

            _logger = logger;
            _batchProcessorServiceLocator = batchProcessorServiceLocator;
            _blobClient = blobClient;
            _transformServiceLocator = transformServiceLocator;
            _fileSystemAccess        = fileSystemAccess;
            _fileSystemCacheSettings = fileSystemCacheSettings;
            _blobClientPolicy        = policies.BlobClient;
        }
        public PublishedProviderCsvBatchProcessor(IPublishedFundingRepository publishedFunding,
                                                  IPublishedFundingPredicateBuilder predicateBuilder,
                                                  IPublishingResiliencePolicies resiliencePolicies,
                                                  IFileSystemAccess fileSystemAccess,
                                                  ICsvUtils csvUtils) : base(fileSystemAccess, csvUtils)
        {
            Guard.ArgumentNotNull(publishedFunding, nameof(publishedFunding));
            Guard.ArgumentNotNull(predicateBuilder, nameof(predicateBuilder));
            Guard.ArgumentNotNull(resiliencePolicies?.PublishedFundingRepository, nameof(resiliencePolicies.PublishedFundingRepository));

            _publishedFunding           = publishedFunding;
            _predicateBuilder           = predicateBuilder;
            _publishedFundingRepository = resiliencePolicies.PublishedFundingRepository;
        }