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