BatchValidatorFactory
using Castle.Windsor;
using kCura.WinEDDS;
using Relativity.Logging;
using System;
using System.Collections.Generic;
namespace Relativity.DataExchange.Export.VolumeManagerV2.Batches
{
public class BatchValidatorFactory
{
private readonly ILog _logger;
public BatchValidatorFactory(ILog logger)
{
_logger = logger;
}
public IBatchValidator Create(ExportFile exportSettings, IExportConfig exportConfig, IWindsorContainer container)
{
_logger.LogVerbose("Creating BatchValidator.", Array.Empty<object>());
List<IBatchValidator> list = new List<IBatchValidator>();
if (exportSettings.ExportFullTextAsFile)
AddValidator<LongTextBatchValidator>(list, container);
if (exportSettings.ExportNative && exportSettings.VolumeInfo.CopyNativeFilesFromRepository)
AddValidator<NativeFileBatchValidator>(list, container);
if (exportSettings.ExportPdf && exportSettings.VolumeInfo.CopyPdfFilesFromRepository)
AddValidator<PdfFileBatchValidator>(list, container);
if (exportSettings.ExportImages && exportSettings.VolumeInfo.CopyImageFilesFromRepository)
AddValidator<ImageFileBatchValidator>(list, container);
if (exportSettings.ExportImages)
AddValidator<ImageLoadFileBatchValidator>(list, container);
if (exportSettings.ExportNative || exportSettings.ExportPdf)
AddValidator<LoadFileBatchValidator>(list, container);
return new BatchValidator(list, _logger);
}
private void AddValidator<T>(List<IBatchValidator> batchValidators, IWindsorContainer container) where T : IBatchValidator
{
_logger.LogVerbose("Adding {validator}.", new object[1] {
"T"
});
batchValidators.Add((IBatchValidator)(object)container.Resolve<T>());
}
}
}