FieldFileNamePartProvider
using FileNaming.CustomFileNaming;
using kCura.WinEDDS.Exporters;
using kCura.WinEDDS.Helpers;
using Microsoft.VisualBasic.CompilerServices;
using Relativity.DataExchange.Io;
using Relativity.DataExchange.Service;
using System;
using System.Collections.Concurrent;
using System.Linq;
using System.Runtime.CompilerServices;
namespace kCura.WinEDDS.FileNaming.CustomFileNaming
{
public class FieldFileNamePartProvider : FileNamePartProvider<FieldDescriptorPart>
{
[CompilerGenerated]
internal sealed class _Closure$__6-0
{
public FieldDescriptorPart $VB$Local_descriptorPart;
internal bool _Lambda$__0(ViewFieldInfo item)
{
return item.FieldArtifactId == $VB$Local_descriptorPart.Value;
}
}
private readonly ConcurrentDictionary<int, ViewFieldInfo> _cache;
public FieldFileNamePartProvider()
{
_cache = new ConcurrentDictionary<int, ViewFieldInfo>();
}
public override string GetPartName(FieldDescriptorPart descriptorPart, ObjectExportInfo exportObject)
{
ExtendedObjectExportInfo extendedObjectExportInfo = exportObject as ExtendedObjectExportInfo;
ViewFieldInfo viewField = GetViewField(descriptorPart, extendedObjectExportInfo);
string fieldValueText = FieldValueHelper.ConvertToString(RuntimeHelpers.GetObjectValue(extendedObjectExportInfo.GetFieldValue(viewField.AvfColumnName)), viewField, ' ');
string properPartNameBasedOnFieldType = GetProperPartNameBasedOnFieldType(viewField, fieldValueText);
return FileSystem.Instance.Path.ConvertIllegalCharactersInFilename(properPartNameBasedOnFieldType);
}
private string GetProperPartNameBasedOnFieldType(ViewFieldInfo viewFieldInfo, string fieldValueText)
{
switch (viewFieldInfo.FieldType) {
case FieldType.Boolean:
return GetYesNoFieldValue(viewFieldInfo, fieldValueText);
case FieldType.Varchar:
return CleanUpFieldValueFromObjectTags(fieldValueText);
default:
return fieldValueText;
}
}
private string GetYesNoFieldValue(ViewFieldInfo viewFieldInfo, string fieldValue)
{
if (Operators.CompareString(fieldValue, "True", false) != 0)
return "";
return viewFieldInfo.DisplayName;
}
private string CleanUpFieldValueFromObjectTags(string fieldValue)
{
return fieldValue.Replace("<object/>", "");
}
private ViewFieldInfo GetViewField(FieldDescriptorPart descriptorPart, ExtendedObjectExportInfo exportObject)
{
if (!_cache.ContainsKey(descriptorPart.Value)) {
ViewFieldInfo viewFieldInfo = exportObject.SelectedNativeFileNameViewFields.ToList().Find((ViewFieldInfo item) => item.FieldArtifactId == descriptorPart.Value);
if (viewFieldInfo == null)
throw new ArgumentOutOfRangeException($"""{descriptorPart.Value}""");
_cache[descriptorPart.Value] = viewFieldInfo;
}
return _cache[descriptorPart.Value];
}
}
}