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

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); } } } }