LoadFileMetadataBuilder
using kCura.WinEDDS.Exporters;
using kCura.WinEDDS.LoadFileEntry;
using Relativity.Logging;
using System;
using System.Collections.Generic;
using System.Threading;
namespace Relativity.DataExchange.Export.VolumeManagerV2.Metadata.Natives
{
public class LoadFileMetadataBuilder
{
private readonly LoadFileHeader _loadFileHeader;
private readonly ILoadFileLine _loadFileLine;
private readonly ILog _logger;
public LoadFileMetadataBuilder(LoadFileHeader loadFileHeader, ILoadFileLine loadFileLine, ILog logger)
{
_loadFileHeader = loadFileHeader;
_loadFileLine = loadFileLine;
_logger = logger;
}
public IDictionary<int, ILoadFileEntry> AddLines(ObjectExportInfo[] artifacts, CancellationToken cancellationToken)
{
_logger.LogVerbose("Creating metadata for load file for current batch.", Array.Empty<object>());
IDictionary<int, ILoadFileEntry> dictionary = new Dictionary<int, ILoadFileEntry>();
_loadFileHeader.AddHeader(dictionary);
foreach (ObjectExportInfo objectExportInfo in artifacts) {
if (cancellationToken.IsCancellationRequested)
return new Dictionary<int, ILoadFileEntry>();
_logger.LogVerbose("Adding line for artifact {artifactId}.", new object[1] {
objectExportInfo.ArtifactID
});
ILoadFileEntry value = _loadFileLine.CreateLine(objectExportInfo);
dictionary.Add(objectExportInfo.ArtifactID, value);
}
_logger.LogVerbose("Metadata for load file for current batch created.", Array.Empty<object>());
return dictionary;
}
}
}