LongTextRepositoryBuilder
using kCura.WinEDDS.Exporters;
using Relativity.DataExchange.Export.VolumeManagerV2.Metadata.Text;
using Relativity.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace Relativity.DataExchange.Export.VolumeManagerV2.Repository
{
public class LongTextRepositoryBuilder : IRepositoryBuilder
{
private readonly LongTextRepository _longTextRepository;
private readonly ILongTextBuilder _longTextPrecedenceBuilder;
private readonly ILongTextBuilder _longTextFieldBuilder;
private readonly ILongTextBuilder _longTextIproFullTextBuilder;
private readonly ILog _logger;
public LongTextRepositoryBuilder(ILongTextBuilder longTextPrecedenceBuilder, ILongTextBuilder longTextFieldBuilder, ILongTextBuilder longTextIproFullTextBuilder, LongTextRepository longTextRepository, ILog logger)
{
_longTextPrecedenceBuilder = longTextPrecedenceBuilder;
_longTextFieldBuilder = longTextFieldBuilder;
_longTextIproFullTextBuilder = longTextIproFullTextBuilder;
_longTextRepository = longTextRepository;
_logger = logger;
}
public void AddToRepository(ObjectExportInfo artifact, CancellationToken cancellationToken)
{
_logger.LogVerbose("Attempting to build LongText repository.", Array.Empty<object>());
List<LongText> list = new List<LongText>();
if (!cancellationToken.IsCancellationRequested) {
_logger.LogVerbose("Creating LongText entries for text precedence.", Array.Empty<object>());
IList<LongText> list2 = _longTextPrecedenceBuilder.CreateLongText(artifact, cancellationToken);
_logger.LogVerbose("{count} LongText entries created.", new object[1] {
list2.Count
});
AddDistinct(list2, list);
if (!cancellationToken.IsCancellationRequested) {
_logger.LogVerbose("Creating LongText entries for fields.", Array.Empty<object>());
IList<LongText> list3 = _longTextFieldBuilder.CreateLongText(artifact, cancellationToken);
_logger.LogVerbose("{count} LongText entries created.", new object[1] {
list3.Count
});
AddDistinct(list3, list);
if (!cancellationToken.IsCancellationRequested) {
_logger.LogVerbose("Creating LongText entries for missing Extracted Text.", Array.Empty<object>());
IList<LongText> list4 = _longTextIproFullTextBuilder.CreateLongText(artifact, cancellationToken);
_logger.LogVerbose("{count} LongText entries created.", new object[1] {
list4.Count
});
AddDistinct(list4, list);
_longTextRepository.Add(list);
}
}
}
}
private void AddDistinct(IList<LongText> longTexts, List<LongText> targetCollection)
{
foreach (LongText longText in longTexts) {
if (!targetCollection.Any(delegate(LongText x) {
if (x.ArtifactId == longText.ArtifactId)
return x.FieldArtifactId == longText.FieldArtifactId;
return false;
}))
targetCollection.Add(longText);
}
}
}
}