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

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