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

OriginalFileNameProvider

using Microsoft.VisualBasic.CompilerServices; using Relativity.DataExchange.Service; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Runtime.CompilerServices; namespace kCura.WinEDDS.Exporters { public class OriginalFileNameProvider { private const string _FILE_NAME_FIELD_COLUMN_NAME = "FileName"; private const string _FILE_NAME_FILE_TABLE_COLUMN_NAME = "Filename"; private readonly bool _isFileNameFieldPresent; private readonly IFieldLookupService _fieldLookupService; private readonly Action<string> _warningWriter; public OriginalFileNameProvider(bool isFileNameFieldPresent, IFieldLookupService fieldLookupService, Action<string> warningWriter) { _isFileNameFieldPresent = isFileNameFieldPresent; _fieldLookupService = fieldLookupService; _warningWriter = warningWriter; } public string GetOriginalFileName(object[] record, DataRowView nativeRow) { if (_isFileNameFieldPresent) { string text = (RuntimeHelpers.GetObjectValue(record[_fieldLookupService.GetOrdinalIndex("FileName")]) ?? string.Empty).ToString(); if (IsFileNameValid(text)) return text; _warningWriter("Filename column is not populated for this record and the filename from the file table will be used - " + nativeRow["Filename"].ToString()); } return nativeRow["Filename"].ToString(); } public static bool ExtendFieldRequestByFileNameIfNecessary(ViewFieldInfo[] exportableFields, IList<int> requestedFields) { if (requestedFields != null && exportableFields != null) { ViewFieldInfo viewFieldInfo = exportableFields.SingleOrDefault(IsFileNameField); if (viewFieldInfo == null) return false; if (!requestedFields.Contains(viewFieldInfo.AvfId)) requestedFields.Add(viewFieldInfo.AvfId); return true; } return false; } private static bool IsFileNameField(ViewFieldInfo field) { if (field.AvfColumnName.Equals("FileName")) return field.FieldType.Equals(FieldType.Varchar); return false; } private static bool IsFileNameValid(string fileName) { return Operators.CompareString(fileName, "", false) != 0; } } }