FileRepositoryBuilder
using kCura.WinEDDS.Exporters;
using Relativity.DataExchange.Export.VolumeManagerV2.Directories;
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 FileRepositoryBuilder : IRepositoryBuilder
{
private readonly FileRequestRepository _fileRepository;
private readonly ILabelManagerForArtifact _labelManagerForArtifact;
private readonly IExportRequestBuilder _fileExportRequestBuilder;
private readonly ILog _logger;
public FileRepositoryBuilder(FileRequestRepository fileRepository, ILabelManagerForArtifact labelManagerForArtifact, IExportRequestBuilder fileExportRequestBuilder, ILog logger)
{
_fileRepository = fileRepository;
_labelManagerForArtifact = labelManagerForArtifact;
_fileExportRequestBuilder = fileExportRequestBuilder;
_logger = logger;
}
public void AddToRepository(ObjectExportInfo artifact, CancellationToken cancellationToken)
{
_logger.LogVerbose("Adding artifact {artifactId} to repository.", new object[1] {
artifact.ArtifactID
});
artifact.DestinationVolume = _labelManagerForArtifact.GetVolumeLabel(artifact.ArtifactID);
_logger.LogVerbose("Current volume set to {volume}.", new object[1] {
artifact.DestinationVolume
});
IList<ExportRequest> list = _fileExportRequestBuilder.Create(artifact, cancellationToken);
_logger.LogVerbose("{count} export request for the file found.", new object[1] {
list.Count
});
FileRequest<ObjectExportInfo> file = new FileRequest<ObjectExportInfo>(artifact) {
ExportRequest = list.FirstOrDefault(),
TransferCompleted = (list.Count == 0)
};
_fileRepository.Add(file);
}
}
}