ImageRepository
using Relativity.DataExchange.Export.VolumeManagerV2.Download;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Relativity.DataExchange.Export.VolumeManagerV2.Repository
{
public class ImageRepository : IClearable
{
private List<ImageRequest> _images;
private readonly object _syncLock = new object();
public ImageRepository()
{
_images = new List<ImageRequest>();
}
public void Add(IList<ImageRequest> images)
{
lock (_syncLock) {
_images.AddRange(images);
}
}
public ImageRequest GetImage(int artifactId, string batesNumber)
{
lock (_syncLock) {
return _images.FirstOrDefault(delegate(ImageRequest x) {
if (x.Artifact.ArtifactID == artifactId)
return string.Compare(x.Artifact.BatesNumber, batesNumber, StringComparison.OrdinalIgnoreCase) == 0;
return false;
});
}
}
public IList<ImageRequest> GetImagesByTargetFile(string targetFile)
{
lock (_syncLock) {
string trimmedTargetFile = (targetFile != null) ? targetFile.TrimEnd(Array.Empty<char>()) : string.Empty;
return _images.Where(delegate(ImageRequest x) {
if (x.ExportRequest?.DestinationLocation != null)
return string.Compare(x.ExportRequest.DestinationLocation.TrimEnd(Array.Empty<char>()), trimmedTargetFile, StringComparison.OrdinalIgnoreCase) == 0;
return false;
}).ToList();
}
}
public IList<ImageRequest> GetArtifactImages(int artifactId)
{
lock (_syncLock) {
return (from x in _images
where x.Artifact.ArtifactID == artifactId
select x).ToList();
}
}
public IList<ImageRequest> GetImages()
{
lock (_syncLock) {
return _images;
}
}
public IEnumerable<ExportRequest> GetExportRequests()
{
lock (_syncLock) {
return from x in _images
where !x.TransferCompleted
select x.ExportRequest;
}
}
public bool AnyRequestForLocation(string destinationLocation)
{
if (string.IsNullOrWhiteSpace(destinationLocation))
return false;
lock (_syncLock) {
return GetExportRequests().Any((ExportRequest x) => string.Compare(x.DestinationLocation, destinationLocation, StringComparison.OrdinalIgnoreCase) == 0);
}
}
public void Clear()
{
lock (_syncLock) {
_images = new List<ImageRequest>();
}
}
}
}