ColumnsFactory
using kCura.WinEDDS;
using Relativity.DataExchange.Logger;
using Relativity.DataExchange.Service;
using Relativity.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Relativity.DataExchange.Export.VolumeManagerV2.Settings
{
public class ColumnsFactory : IColumnsFactory
{
private readonly ILog _logger;
public ColumnsFactory(ILog logger)
{
_logger = logger;
}
public kCura.WinEDDS.ViewFieldInfo[] CreateColumns(ExportFile exportSettings)
{
_logger.LogVerbose("Creating column list for export.", Array.Empty<object>());
kCura.WinEDDS.ViewFieldInfo[] selectedViewFields = exportSettings.SelectedViewFields;
kCura.WinEDDS.ViewFieldInfo[] textFields = exportSettings.SelectedTextFields;
if (textFields == null || textFields.Length == 0) {
_logger.LogVerbose("No long text fields selected. Continuing with provided column list.", Array.Empty<object>());
return selectedViewFields.ToArray();
}
List<kCura.WinEDDS.ViewFieldInfo> list = selectedViewFields.ToList();
kCura.WinEDDS.ViewFieldInfo[] source = selectedViewFields.Where(delegate(kCura.WinEDDS.ViewFieldInfo x) {
if (x.FieldType != FieldType.Text)
return x.FieldType == FieldType.OffTableText;
return true;
}).ToArray();
if (textFields.Length == 1 && source.Any((kCura.WinEDDS.ViewFieldInfo x) => x.Equals(textFields.First()))) {
kCura.WinEDDS.ViewFieldInfo viewFieldInfo = source.FirstOrDefault((kCura.WinEDDS.ViewFieldInfo x) => x.Equals(textFields.First()));
if (viewFieldInfo != null) {
int num = list.IndexOf(viewFieldInfo);
_logger.LogVerbose("Found field {fieldToReplace} at index {index} to replace with long text field {longTextField}.", new object[3] {
viewFieldInfo.AvfColumnName.Secure(),
num,
textFields.First().AvfColumnName.Secure()
});
list[num] = new CoalescedTextViewField(textFields.First(), true);
} else {
_logger.LogVerbose("Adding missing CoalescedTextViewField for selected long text field {field}.", new object[1] {
textFields.First().AvfColumnName.Secure()
});
list.Add(new CoalescedTextViewField(textFields.First(), false));
}
} else {
_logger.LogVerbose("Adding missing CoalescedTextViewField for selected long text field {field}.", new object[1] {
textFields.First().AvfColumnName.Secure()
});
list.Add(new CoalescedTextViewField(textFields.First(), false));
}
return list.ToArray();
}
}
}