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

RepositoryPathManager

Represents a class object to manage paths within a given repository.
using System; using System.IO; namespace Relativity.DataExchange.Service { internal class RepositoryPathManager { public const int MinVolumeSize = 500; private readonly int maxVolumeSize; private string currentSubDirectory; private string lastSubdirectory; private int currentFileNumber; public string CurrentDestinationDirectory => currentSubDirectory; public int MaxVolumeSize => maxVolumeSize; public RepositoryPathManager(int maximumVolumeSize) { currentSubDirectory = GetNewSubdirectory(); lastSubdirectory = string.Copy(currentSubDirectory); maxVolumeSize = Math.Max(500, maximumVolumeSize); } public static string GetNewSubDirectory(string path) { return Path.Combine(path, GetNewSubdirectory()) + "\\"; } public void Rollback() { if (currentFileNumber == 1) { currentFileNumber = maxVolumeSize; currentSubDirectory = string.Copy(lastSubdirectory); } else currentFileNumber--; } public string GetNextDestinationDirectory(string repositoryPath) { currentFileNumber++; if (currentFileNumber > maxVolumeSize) { currentFileNumber = 1; lastSubdirectory = string.Copy(currentSubDirectory); currentSubDirectory = GetNewSubdirectory(); } return Path.Combine(repositoryPath, currentSubDirectory) + "\\"; } private static string GetNewSubdirectory() { return "RV_" + Guid.NewGuid().ToString(); } } }