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

LongTextHelper

public class LongTextHelper
using kCura.WinEDDS; using kCura.WinEDDS.Exporters; using Relativity.DataExchange.Export.VolumeManagerV2.Repository; using Relativity.DataExchange.Service; using System; using System.Linq; using System.Text; namespace Relativity.DataExchange.Export.VolumeManagerV2.Metadata.Text { public class LongTextHelper { private const int _MISSING_EXTRACTED_TEXT_FIELD_ID = -1; private readonly ExportFile _exportSettings; private readonly IFieldService _fieldService; private readonly LongTextRepository _longTextRepository; public const string EXTRACTED_TEXT_COLUMN_NAME = "ExtractedText"; public LongTextHelper(ExportFile exportSettings, IFieldService fieldService, LongTextRepository longTextRepository) { _fieldService = fieldService; _longTextRepository = longTextRepository; _exportSettings = exportSettings; } public bool IsLongTextField(kCura.WinEDDS.ViewFieldInfo fieldInfo) { return IsLongTextField(fieldInfo.FieldType); } public bool IsLongTextField(FieldType fieldType) { if (fieldType != FieldType.Text) return fieldType == FieldType.OffTableText; return true; } public string GetTextFromField(ObjectExportInfo artifact, string fieldName) { object obj = artifact.Metadata[_fieldService.GetOrdinalIndex(fieldName)]; if (obj is byte[]) obj = Encoding.Unicode.GetString((byte[])obj); if (obj != null) return obj.ToString(); return string.Empty; } public bool IsTextTooLong(string text) { return text == "#KCURA99DF2F0FEB88420388879F1282A55760#"; } public bool IsTextTooLong(ObjectExportInfo artifact, string fieldName) { string textFromField = GetTextFromField(artifact, fieldName); return IsTextTooLong(textFromField); } public bool IsExtractedTextMissing() { return _fieldService.GetOrdinalIndex("ExtractedText") >= _fieldService.GetColumns().Length; } public int GetFieldArtifactId(string fieldName) { if (fieldName == "ExtractedText" && IsExtractedTextMissing()) { LoadFileType.FileFormat? logFileFormat = _exportSettings.LogFileFormat; LoadFileType.FileFormat fileFormat = LoadFileType.FileFormat.IPRO_FullText; if ((logFileFormat.GetValueOrDefault() == fileFormat) & logFileFormat.HasValue) return -1; throw new ArgumentException("Field " + fieldName + " not found."); } int ordinalIndex = _fieldService.GetOrdinalIndex(fieldName); return _fieldService.GetColumns()[ordinalIndex].FieldArtifactId; } public bool IsTextPrecedenceSet() { if (_exportSettings.SelectedTextFields == null || _exportSettings.SelectedTextFields.Length == 0) return false; return _exportSettings.SelectedTextFields.Any((kCura.WinEDDS.ViewFieldInfo x) => x != null); } public kCura.WinEDDS.ViewFieldInfo GetTextPrecedenceField(ObjectExportInfo artifact) { if (_exportSettings.SelectedTextFields != null) { int fieldArtifactId = (int)artifact.Metadata[_fieldService.GetOrdinalIndex("KCURA FULL TEXT SOURCE")]; return _exportSettings.SelectedTextFields.FirstOrDefault((kCura.WinEDDS.ViewFieldInfo x) => x.FieldArtifactId == fieldArtifactId); } return null; } public kCura.WinEDDS.ViewFieldInfo GetTextPrecedenceTrueField(ObjectExportInfo artifact, kCura.WinEDDS.ViewFieldInfo field) { if (field == null || field.AvfColumnName == "Text Precedence") return GetTextPrecedenceField(artifact); return field; } public string GetLongTextFileLocation(ObjectExportInfo artifact, int fieldArtifactId) { return _longTextRepository.GetTextFileLocation(artifact.ArtifactID, fieldArtifactId); } public Encoding GetLongTextFieldFileEncoding(kCura.WinEDDS.ViewFieldInfo field) { if (field.IsUnicodeEnabled) return Encoding.Unicode; return Encoding.Default; } } }