<PackageReference Include="Relativity.Server.Import.SDK" Version="2.9.2" />

ImageExportRequestBuilder

using Castle.Core; using kCura.WinEDDS.Exporters; using Relativity.DataExchange.Export.VolumeManagerV2.Directories; using Relativity.DataExchange.Export.VolumeManagerV2.Statistics; using Relativity.DataExchange.Logger; using Relativity.Logging; using System.Collections.Generic; using System.Linq; using System.Threading; namespace Relativity.DataExchange.Export.VolumeManagerV2.Download { public class ImageExportRequestBuilder : IExportRequestBuilder { private readonly IFilePathProvider _filePathProvider; private readonly IExportFileValidator _validator; private readonly IFileProcessingStatistics _fileProcessingStatistics; private readonly ILog _logger; public ImageExportRequestBuilder(ImageFilePathProvider filePathProvider, IExportFileValidator validator, ILog logger, IFileProcessingStatistics fileProcessingStatistics) : this((IFilePathProvider)filePathProvider, validator, logger, fileProcessingStatistics) { } [DoNotSelect] public ImageExportRequestBuilder(IFilePathProvider filePathProvider, IExportFileValidator validator, ILog logger, IFileProcessingStatistics fileProcessingStatistics) { _filePathProvider = filePathProvider; _validator = validator; _logger = logger; _fileProcessingStatistics = fileProcessingStatistics; } public IList<ExportRequest> Create(ObjectExportInfo artifact, CancellationToken cancellationToken) { List<ExportRequest> list = new List<ExportRequest>(); _logger.LogVerbose("Creating image files ExportRequests for artifact {artifactId}.", new object[1] { artifact.ArtifactID }); foreach (ImageExportInfo item in artifact.Images.Cast<ImageExportInfo>()) { if (cancellationToken.IsCancellationRequested) return Enumerable.Empty<ExportRequest>().ToList(); if (TryCreate(artifact, item, out ExportRequest exportRequest)) list.Add(exportRequest); } return list; } private bool TryCreate(ObjectExportInfo artifact, ImageExportInfo image, out ExportRequest exportRequest) { if (string.IsNullOrWhiteSpace(image.FileGuid)) { _logger.LogInformation("Image {imageId} has no GUID so assuming there is nothing to download.", new object[1] { image.ArtifactID }); exportRequest = null; return false; } _logger.LogVerbose("Creating image file ExportRequest for image {image}.", new object[1] { image.FileName.Secure() }); string text = image.TempLocation = GetExportDestinationLocation(artifact, image); string warningUserMessage = "Overwriting image for " + image.BatesNumber + "."; if (!_validator.CanExport(text, warningUserMessage)) { _logger.LogVerbose("File {file} already exists - updating statistics.", new object[1] { text.Secure() }); _fileProcessingStatistics.UpdateStatisticsForFile(text); exportRequest = null; return false; } _logger.LogVerbose("Image file will be export to {destinationLocation}.", new object[1] { text.Secure() }); exportRequest = PhysicalFileExportRequest.CreateRequestForImage(image, text); return true; } private string GetExportDestinationLocation(ObjectExportInfo artifact, ImageExportInfo image) { string fileName = image.FileName; return _filePathProvider.GetPathForFile(fileName, artifact.ArtifactID); } } }