BatchInitialization
using kCura.WinEDDS.Exporters;
using Relativity.DataExchange.Export.VolumeManagerV2.Directories;
using Relativity.DataExchange.Export.VolumeManagerV2.Repository;
using Relativity.Logging;
using System;
using System.Collections.Generic;
using System.Threading;
namespace Relativity.DataExchange.Export.VolumeManagerV2.Batches
{
public class BatchInitialization : IBatchInitialization
{
private readonly IList<IRepositoryBuilder> _repositoryBuilders;
private readonly IDirectoryManager _directoryManager;
private readonly ILog _logger;
public BatchInitialization(IList<IRepositoryBuilder> repositoryBuilders, IDirectoryManager directoryManager, ILog logger)
{
_repositoryBuilders = repositoryBuilders;
_directoryManager = directoryManager;
_logger = logger;
}
public void PrepareBatch(ObjectExportInfo[] artifacts, VolumePredictions[] volumePredictions, CancellationToken cancellationToken)
{
_logger.LogDebug("Preparing batch sequentially", Array.Empty<object>());
for (int i = 0; i < artifacts.Length; i++) {
if (cancellationToken.IsCancellationRequested)
break;
_directoryManager.MoveNext(volumePredictions[i]);
_logger.LogVerbose("Adding artifact {artifactId} to repositories.", new object[1] {
artifacts[i].ArtifactID
});
PrepareArtifact(artifacts[i], cancellationToken);
}
}
private void PrepareArtifact(ObjectExportInfo artifact, CancellationToken cancellationToken)
{
foreach (IRepositoryBuilder repositoryBuilder in _repositoryBuilders) {
_logger.LogVerbose("Adding artifact {artifactId} to repository {type}.", new object[2] {
artifact.ArtifactID,
repositoryBuilder.GetType().ToString()
});
repositoryBuilder.AddToRepository(artifact, cancellationToken);
}
}
}
}