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

LoadFileWriter

public class LoadFileWriter
using kCura.WinEDDS.Exporters; using kCura.WinEDDS.LoadFileEntry; using Relativity.Logging; using System; using System.Collections.Generic; using System.IO; using System.Threading; namespace Relativity.DataExchange.Export.VolumeManagerV2.Metadata.Writers { public class LoadFileWriter { private readonly ILog _logger; public LoadFileWriter(ILog logger) { _logger = logger; } public void Write(StreamWriter streamWriter, IDictionary<int, ILoadFileEntry> linesToWrite, IEnumerator<ObjectExportInfo> artifacts, CancellationToken cancellationToken) { if (linesToWrite == null || linesToWrite.Count == 0) _logger.LogVerbose("No lines to write to load file - skipping.", Array.Empty<object>()); else { _logger.LogVerbose("Writing to load file with retry policy.", Array.Empty<object>()); WriteHeaderIfNeeded(streamWriter, linesToWrite); WriteArtifacts(streamWriter, linesToWrite, artifacts, cancellationToken); } } private void WriteHeaderIfNeeded(StreamWriter streamWriter, IDictionary<int, ILoadFileEntry> linesToWrite) { if (linesToWrite.TryGetValue(-1, out ILoadFileEntry value)) { _logger.LogVerbose("Writing header to load file.", Array.Empty<object>()); value?.Write(ref streamWriter); } } private void WriteArtifacts(StreamWriter streamWriter, IDictionary<int, ILoadFileEntry> linesToWrite, IEnumerator<ObjectExportInfo> artifacts, CancellationToken cancellationToken) { while (artifacts.MoveNext() && !cancellationToken.IsCancellationRequested) { if (linesToWrite.TryGetValue(artifacts.Current.ArtifactID, out ILoadFileEntry value)) { _logger.LogVerbose("Writing entry to load file for artifact {artifactId}.", new object[1] { artifacts.Current.ArtifactID }); value?.Write(ref streamWriter); } } } } }