ImageRepositoryBuilder
using kCura.WinEDDS.Exporters;
using Relativity.DataExchange.Export.VolumeManagerV2.Download;
using Relativity.Logging;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace Relativity.DataExchange.Export.VolumeManagerV2.Repository
{
public class ImageRepositoryBuilder : IRepositoryBuilder
{
private readonly IExportRequestBuilder _imageExportRequestBuilder;
private readonly ImageRepository _imageRepository;
private readonly ILog _logger;
public ImageRepositoryBuilder(ImageRepository imageRepository, IExportRequestBuilder imageExportRequestBuilder, ILog logger)
{
_imageExportRequestBuilder = imageExportRequestBuilder;
_logger = logger;
_imageRepository = imageRepository;
}
public void AddToRepository(ObjectExportInfo artifact, CancellationToken cancellationToken)
{
_logger.LogVerbose("Adding {count} images to repository for artifact {artifactId}.", new object[2] {
artifact.Images.Count,
artifact.ArtifactID
});
IList<ExportRequest> list = _imageExportRequestBuilder.Create(artifact, cancellationToken);
_logger.LogVerbose("{count} export request for images found.", new object[1] {
list.Count
});
IList<ImageRequest> list2 = new List<ImageRequest>();
foreach (ImageExportInfo item2 in artifact.Images.Cast<ImageExportInfo>()) {
ExportRequest exportRequest = list.FirstOrDefault((ExportRequest x) => x.DestinationLocation == item2.TempLocation);
_logger.LogVerbose("For image {batesNumber} export request has been found: {result}.", new object[2] {
item2.BatesNumber,
exportRequest != null
});
ImageRequest item = new ImageRequest(item2) {
ExportRequest = exportRequest,
TransferCompleted = (exportRequest == null)
};
list2.Add(item);
}
_imageRepository.Add(list2);
}
}
}