ImageLoadFileMetadataBuilder
using kCura.WinEDDS.Exporters;
using Relativity.DataExchange.Export.VolumeManagerV2.Metadata.Writers;
using Relativity.Logging;
using System;
using System.Threading;
namespace Relativity.DataExchange.Export.VolumeManagerV2.Metadata.Images
{
public class ImageLoadFileMetadataBuilder : IImageLoadFileMetadataBuilder
{
private readonly IImageLoadFileMetadataForArtifactBuilder _forArtifactBuilder;
private readonly IImageLoadFileMetadataForArtifactBuilder _unsuccessfulRollupForArtifactBuilder;
private readonly IRetryableStreamWriter _writer;
private readonly ILog _logger;
public ImageLoadFileMetadataBuilder(IImageLoadFileMetadataForArtifactBuilder forArtifactBuilder, IImageLoadFileMetadataForArtifactBuilder unsuccessfulRollupForArtifactBuilder, IRetryableStreamWriter writer, ILog logger)
{
_forArtifactBuilder = forArtifactBuilder;
_unsuccessfulRollupForArtifactBuilder = unsuccessfulRollupForArtifactBuilder;
_logger = logger;
_writer = writer;
}
public void CreateLoadFileEntries(ObjectExportInfo[] artifacts, CancellationToken cancellationToken)
{
_logger.LogVerbose("Creating metadata for image load file for current batch.", Array.Empty<object>());
_writer.InitializeFile(cancellationToken);
foreach (ObjectExportInfo objectExportInfo in artifacts) {
if (cancellationToken.IsCancellationRequested)
return;
_logger.LogVerbose("Creating image load file entry for artifact {artifactId}.", new object[1] {
objectExportInfo.ArtifactID
});
if (objectExportInfo.Images.Count > 0) {
ImageExportInfo imageExportInfo = (ImageExportInfo)objectExportInfo.Images[0];
if (imageExportInfo.SuccessfulRollup) {
_logger.LogVerbose("Rollup successful for image {batesNumber}. Continuing with default metadata builder.", new object[1] {
imageExportInfo.BatesNumber
});
_forArtifactBuilder.WriteLoadFileEntry(objectExportInfo, _writer, cancellationToken);
} else {
_logger.LogVerbose("Rollup unsuccessful for image {batesNumber}. Continuing with metadata builder for unsuccessful rollup.", new object[1] {
imageExportInfo.BatesNumber
});
_unsuccessfulRollupForArtifactBuilder.WriteLoadFileEntry(objectExportInfo, _writer, cancellationToken);
}
} else
_logger.LogVerbose("No images for artifact {artifactId}.", new object[1] {
objectExportInfo.ArtifactID
});
}
_logger.LogVerbose("Successfully create metadata for images.", Array.Empty<object>());
}
}
}