FilePathProvider
using kCura.WinEDDS;
using Relativity.DataExchange.Io;
using Relativity.DataExchange.Logger;
using Relativity.Logging;
using System.IO;
namespace Relativity.DataExchange.Export.VolumeManagerV2.Directories
{
public abstract class FilePathProvider : IFilePathProvider
{
private readonly ExportFile _exportSettings;
private readonly IDirectory _directoryHelper;
private readonly ILog _logger;
protected ILabelManagerForArtifact LabelManagerForArtifact { get; }
protected FilePathProvider(ILabelManagerForArtifact labelManagerForArtifact, ExportFile exportSettings, IDirectory directoryHelper, ILog logger)
{
LabelManagerForArtifact = labelManagerForArtifact;
_exportSettings = exportSettings;
_directoryHelper = directoryHelper;
_logger = logger;
}
public string GetPathForFile(string fileName, int objectExportInfoArtifactId)
{
string volumeLabel = LabelManagerForArtifact.GetVolumeLabel(objectExportInfoArtifactId);
string subdirectoryLabel = GetSubdirectoryLabel(objectExportInfoArtifactId);
string text = Path.Combine(_exportSettings.FolderPath, volumeLabel, subdirectoryLabel);
if (!_directoryHelper.Exists(text)) {
_logger.LogInformation("Creating directory {directory}.", new object[1] {
text.Secure()
});
_directoryHelper.CreateDirectory(text);
}
return Path.Combine(text, fileName);
}
protected abstract string GetSubdirectoryLabel(int objectExportInfoArtifactId);
}
}