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

LoadFileReader

using kCura.EDDS.WebAPI.DocumentManagerBase; using kCura.WinEDDS.Api; using Microsoft.VisualBasic.CompilerServices; using Relativity.DataExchange; using Relativity.DataExchange.Data; using Relativity.DataExchange.Io; using Relativity.DataExchange.Service; using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Globalization; using System.IO; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading; namespace kCura.WinEDDS { public class LoadFileReader : DelimitedFileImporter2, IArtifactReader { [Serializable] [CompilerGenerated] internal sealed class _Closure$__ { public static readonly _Closure$__ $I; public static Func<string, bool> $I79-0; public static Func<string, string> $I79-1; static _Closure$__() { $I = new _Closure$__(); } internal bool _Lambda$__79-0(string item) { return Operators.CompareString(item.Trim(), string.Empty, false) != 0; } internal string _Lambda$__79-1(string item) { return item.Trim(); } } public const int MAXIMUM_COLUMN_NAME_LENGTH = 500; protected string[] _columnHeaders; protected string _filePathColumn; protected int _filePathColumnIndex; protected bool _firstLineContainsColumnNames; protected DocumentField[] _docFields; protected char[] _multiValueSeparator; protected int _folderID; protected int _caseSystemID; protected int _caseArtifactID; protected bool _uploadFiles; protected LoadFileFieldMap _fieldMap; protected bool _createFolderStructure; protected string _destinationFolder; protected bool _fullTextColumnMapsToFileLocation; protected Encoding _sourceFileEncoding; protected Encoding _extractedTextFileEncoding; protected string _extractedTextFileEncodingName; protected int _artifactTypeID; protected Hashtable MulticodeMatrix; protected string _hierarchicalMultiValueFieldDelmiter; protected HybridDictionary _previewCodeCount; protected long _startLineNumber; protected int _keyFieldID; [CompilerGenerated] [AccessedThroughProperty("_loadFilePreProcessor")] private LoadFilePreProcessor __loadFilePreProcessor; private long _recordCount; private DateTime _genericTimestamp; private bool _trackErrorsInFieldValues; protected ExecutionSource _executionSource; private string _currentIdentifier; private Func<string> _correlationIdFunc; protected readonly LoadFile _settings; private readonly LoadFileFieldMap.LoadFileFieldMapItem _identifierFieldMapItem; [CompilerGenerated] private IArtifactReader.OnIoWarningEventHandler OnIoWarningEvent; [CompilerGenerated] private IArtifactReader.StatusMessageEventHandler StatusMessageEvent; [CompilerGenerated] private IArtifactReader.FieldMappedEventHandler FieldMappedEvent; [CompilerGenerated] private IArtifactReader.DataSourcePrepEventHandler DataSourcePrepEvent; private virtual LoadFilePreProcessor _loadFilePreProcessor { [CompilerGenerated] get { return __loadFilePreProcessor; } [MethodImpl(MethodImplOptions.Synchronized)] [CompilerGenerated] set { LoadFilePreProcessor.OnEventEventHandler obj = _loadFilePreProcessor_OnEvent; LoadFilePreProcessor _loadFilePreProcessor = __loadFilePreProcessor; if (_loadFilePreProcessor != null) _loadFilePreProcessor.OnEvent -= obj; __loadFilePreProcessor = value; _loadFilePreProcessor = __loadFilePreProcessor; if (_loadFilePreProcessor != null) _loadFilePreProcessor.OnEvent += obj; } } public bool HasMoreRecords { get { EnsureReader(); return !HasReachedEof; } } public int CurrentLineNumber1 => base.CurrentLineNumber; public long SizeInBytes { get { EnsureReader(); return base.Reader.BaseStream.Length; } } public long BytesProcessed => base.Reader.BaseStream.Position; public event IArtifactReader.OnIoWarningEventHandler OnIoWarning { [CompilerGenerated] add { IArtifactReader.OnIoWarningEventHandler onIoWarningEventHandler = OnIoWarningEvent; IArtifactReader.OnIoWarningEventHandler onIoWarningEventHandler2; do { onIoWarningEventHandler2 = onIoWarningEventHandler; IArtifactReader.OnIoWarningEventHandler value2 = (IArtifactReader.OnIoWarningEventHandler)Delegate.Combine(onIoWarningEventHandler2, value); onIoWarningEventHandler = Interlocked.CompareExchange(ref OnIoWarningEvent, value2, onIoWarningEventHandler2); } while ((object)onIoWarningEventHandler != onIoWarningEventHandler2); } [CompilerGenerated] remove { IArtifactReader.OnIoWarningEventHandler onIoWarningEventHandler = OnIoWarningEvent; IArtifactReader.OnIoWarningEventHandler onIoWarningEventHandler2; do { onIoWarningEventHandler2 = onIoWarningEventHandler; IArtifactReader.OnIoWarningEventHandler value2 = (IArtifactReader.OnIoWarningEventHandler)Delegate.Remove(onIoWarningEventHandler2, value); onIoWarningEventHandler = Interlocked.CompareExchange(ref OnIoWarningEvent, value2, onIoWarningEventHandler2); } while ((object)onIoWarningEventHandler != onIoWarningEventHandler2); } } public event IArtifactReader.StatusMessageEventHandler StatusMessage { [CompilerGenerated] add { IArtifactReader.StatusMessageEventHandler statusMessageEventHandler = StatusMessageEvent; IArtifactReader.StatusMessageEventHandler statusMessageEventHandler2; do { statusMessageEventHandler2 = statusMessageEventHandler; IArtifactReader.StatusMessageEventHandler value2 = (IArtifactReader.StatusMessageEventHandler)Delegate.Combine(statusMessageEventHandler2, value); statusMessageEventHandler = Interlocked.CompareExchange(ref StatusMessageEvent, value2, statusMessageEventHandler2); } while ((object)statusMessageEventHandler != statusMessageEventHandler2); } [CompilerGenerated] remove { IArtifactReader.StatusMessageEventHandler statusMessageEventHandler = StatusMessageEvent; IArtifactReader.StatusMessageEventHandler statusMessageEventHandler2; do { statusMessageEventHandler2 = statusMessageEventHandler; IArtifactReader.StatusMessageEventHandler value2 = (IArtifactReader.StatusMessageEventHandler)Delegate.Remove(statusMessageEventHandler2, value); statusMessageEventHandler = Interlocked.CompareExchange(ref StatusMessageEvent, value2, statusMessageEventHandler2); } while ((object)statusMessageEventHandler != statusMessageEventHandler2); } } public event IArtifactReader.FieldMappedEventHandler FieldMapped { [CompilerGenerated] add { IArtifactReader.FieldMappedEventHandler fieldMappedEventHandler = FieldMappedEvent; IArtifactReader.FieldMappedEventHandler fieldMappedEventHandler2; do { fieldMappedEventHandler2 = fieldMappedEventHandler; IArtifactReader.FieldMappedEventHandler value2 = (IArtifactReader.FieldMappedEventHandler)Delegate.Combine(fieldMappedEventHandler2, value); fieldMappedEventHandler = Interlocked.CompareExchange(ref FieldMappedEvent, value2, fieldMappedEventHandler2); } while ((object)fieldMappedEventHandler != fieldMappedEventHandler2); } [CompilerGenerated] remove { IArtifactReader.FieldMappedEventHandler fieldMappedEventHandler = FieldMappedEvent; IArtifactReader.FieldMappedEventHandler fieldMappedEventHandler2; do { fieldMappedEventHandler2 = fieldMappedEventHandler; IArtifactReader.FieldMappedEventHandler value2 = (IArtifactReader.FieldMappedEventHandler)Delegate.Remove(fieldMappedEventHandler2, value); fieldMappedEventHandler = Interlocked.CompareExchange(ref FieldMappedEvent, value2, fieldMappedEventHandler2); } while ((object)fieldMappedEventHandler != fieldMappedEventHandler2); } } public event IArtifactReader.DataSourcePrepEventHandler DataSourcePrep { [CompilerGenerated] add { IArtifactReader.DataSourcePrepEventHandler dataSourcePrepEventHandler = DataSourcePrepEvent; IArtifactReader.DataSourcePrepEventHandler dataSourcePrepEventHandler2; do { dataSourcePrepEventHandler2 = dataSourcePrepEventHandler; IArtifactReader.DataSourcePrepEventHandler value2 = (IArtifactReader.DataSourcePrepEventHandler)Delegate.Combine(dataSourcePrepEventHandler2, value); dataSourcePrepEventHandler = Interlocked.CompareExchange(ref DataSourcePrepEvent, value2, dataSourcePrepEventHandler2); } while ((object)dataSourcePrepEventHandler != dataSourcePrepEventHandler2); } [CompilerGenerated] remove { IArtifactReader.DataSourcePrepEventHandler dataSourcePrepEventHandler = DataSourcePrepEvent; IArtifactReader.DataSourcePrepEventHandler dataSourcePrepEventHandler2; do { dataSourcePrepEventHandler2 = dataSourcePrepEventHandler; IArtifactReader.DataSourcePrepEventHandler value2 = (IArtifactReader.DataSourcePrepEventHandler)Delegate.Remove(dataSourcePrepEventHandler2, value); dataSourcePrepEventHandler = Interlocked.CompareExchange(ref DataSourcePrepEvent, value2, dataSourcePrepEventHandler2); } while ((object)dataSourcePrepEventHandler != dataSourcePrepEventHandler2); } } public LoadFileReader(LoadFile args, bool trackErrorsAsFieldValues, Func<string> correlationIdFunc, ExecutionSource executionSource = ExecutionSource.Unknown) : base(args.RecordDelimiter, args.QuoteDelimiter, args.NewlineDelimiter, true) { _previewCodeCount = new HybridDictionary(); _recordCount = -1; _settings = args; _identifierFieldMapItem = args.FieldMap.Identifier; _trackErrorsInFieldValues = trackErrorsAsFieldValues; _docFields = args.FieldMap.DocumentFields; _filePathColumn = args.NativeFilePathColumn; _firstLineContainsColumnNames = args.FirstLineContainsHeaders; _fieldMap = args.FieldMap; _keyFieldID = args.IdentityFieldId; _multiValueSeparator = args.MultiRecordDelimiter.ToString().ToCharArray(); _folderID = args.DestinationFolderID; _caseSystemID = args.CaseInfo.RootArtifactID; _caseArtifactID = args.CaseInfo.ArtifactID; _uploadFiles = args.LoadNativeFiles; _createFolderStructure = args.CreateFolderStructure; _destinationFolder = args.FolderStructureContainedInColumn; _fullTextColumnMapsToFileLocation = args.FullTextColumnContainsFileLocation; _sourceFileEncoding = args.SourceFileEncoding; _extractedTextFileEncoding = args.ExtractedTextFileEncoding; _extractedTextFileEncodingName = args.ExtractedTextFileEncodingName; _artifactTypeID = args.ArtifactTypeID; _hierarchicalMultiValueFieldDelmiter = Conversions.ToString(args.HierarchicalValueDelimiter); _previewCodeCount = args.PreviewCodeCount; _startLineNumber = args.StartLineNumber; _executionSource = executionSource; _correlationIdFunc = correlationIdFunc; MulticodeMatrix = new Hashtable(); if (_keyFieldID > 0 && Operators.CompareString(args.OverwriteDestination.ToLower(), ((Enum)1).ToString().ToLower(), false) != 0) _keyFieldID = -1; if (_keyFieldID == -1) { DocumentField[] docFields = _docFields; int num = 0; DocumentField documentField; while (true) { if (num >= docFields.Length) return; documentField = docFields[num]; if (documentField.FieldCategory == global::Relativity.DataExchange.Service.FieldCategory.Identifier) break; num = checked(num + 1); } _keyFieldID = documentField.FieldID; } } protected void EnsureReader() { if (base.Reader == null) { if (_sourceFileEncoding == null) _sourceFileEncoding = Encoding.Default; base.Reader = new StreamReader(_settings.FilePath, _sourceFileEncoding, true); } } private void SetFieldValue(ArtifactField field, string value, int column) { try { switch (field.Type) { case global::Relativity.DataExchange.Service.FieldType.Boolean: field.Value = GetNullableBoolean(value.Trim(), column); break; case global::Relativity.DataExchange.Service.FieldType.Integer: field.Value = GetNullableInteger(value.Trim(), column); break; case global::Relativity.DataExchange.Service.FieldType.Decimal: case global::Relativity.DataExchange.Service.FieldType.Currency: field.Value = GetNullableDecimal(value.Trim(), column); break; case global::Relativity.DataExchange.Service.FieldType.Date: field.Value = GetNullableDateTime(value.Trim(), column); break; case global::Relativity.DataExchange.Service.FieldType.Code: case global::Relativity.DataExchange.Service.FieldType.File: case global::Relativity.DataExchange.Service.FieldType.Object: case global::Relativity.DataExchange.Service.FieldType.User: field.Value = value.Trim(); if (Operators.CompareString(field.Value.ToString(), string.Empty, false) == 0) field.Value = null; break; case global::Relativity.DataExchange.Service.FieldType.MultiCode: case global::Relativity.DataExchange.Service.FieldType.Objects: field.Value = GetStringArrayFromDelimitedFieldValue(value, _settings.MultiRecordDelimiter); break; case global::Relativity.DataExchange.Service.FieldType.Varchar: field.Value = NullableTypesHelper.ToEmptyStringOrValue(GetNullableFixedString(value, column, field.TextLength, field.DisplayName)); break; case global::Relativity.DataExchange.Service.FieldType.Text: case global::Relativity.DataExchange.Service.FieldType.OffTableText: if (_settings.FullTextColumnContainsFileLocation) field.Value = value; else field.Value = value.Replace(Conversions.ToString(base.NewlineProxy), "\r\n"); break; default: throw new Exception("Unsupported field type '" + field.Type.ToString() + "'"); } } catch (ImporterException ex) { ProjectData.SetProjectError(ex); ImporterException value2 = ex; if (!_trackErrorsInFieldValues) throw; field.Value = value2; ProjectData.ClearProjectError(); } } private string ToDelimetedLine(string[] values) { StringBuilder stringBuilder = new StringBuilder(); foreach (string str in values) { stringBuilder.Append(Conversions.ToString(base.Bound) + str + Conversions.ToString(base.Bound) + Conversions.ToString(base.Delimiter)); } stringBuilder.Remove(checked(stringBuilder.Length - 1), 1); return stringBuilder.ToString(); } private unsafe void _loadFilePreProcessor_OnEvent(LoadFilePreProcessor.EventArgs e) { checked { switch (e.Type) { case LoadFilePreProcessor.EventType.Cancel: break; case LoadFilePreProcessor.EventType.Begin: _genericTimestamp = DateTime.Now; DataSourcePrepEvent?.Invoke(new DataSourcePrepEventArgs(DataSourcePrepEventArgs.EventType.Open, 0, 0, e.TotalBytes, _genericTimestamp, DateTime.Now)); break; case LoadFilePreProcessor.EventType.Progress: DataSourcePrepEvent?.Invoke(new DataSourcePrepEventArgs(DataSourcePrepEventArgs.EventType.ReadEvent, e.BytesRead, e.TotalBytes, e.StepSize, _genericTimestamp, DateTime.Now)); break; case LoadFilePreProcessor.EventType.Complete: { _recordCount = e.NewlinesRead; DataSourcePrepEvent?.Invoke(new DataSourcePrepEventArgs(DataSourcePrepEventArgs.EventType.ReadEvent, e.TotalBytes, e.TotalBytes, e.StepSize, _genericTimestamp, DateTime.Now)); string filePath = _settings.FilePath; _columnHeaders = GetColumnNames(_settings); base.Reader = new StreamReader(filePath, _sourceFileEncoding); if (_firstLineContainsColumnNames) { _columnHeaders = GetLine(); ref long recordCount; *(ref recordCount = ref _recordCount) = recordCount - 1; } if (_filePathColumn != null) { int num = _filePathColumn.LastIndexOf('(') + 1; int num2 = _filePathColumn.LastIndexOf(')'); _filePathColumnIndex = int.Parse(_filePathColumn.Substring(num, num2 - num)) - 1; } else _filePathColumnIndex = -1; break; } } } } public override void PublishWarningMessage(IoWarningEventArgs e) { if (e.Exception == null) OnIoWarningEvent?.Invoke(new IoWarningEventArgs(e.Message, e.CurrentLineNumber)); else OnIoWarningEvent?.Invoke(new IoWarningEventArgs(e.WaitTime, e.Exception, e.CurrentLineNumber)); } public string[] GetColumnNames(object args) { if (_columnHeaders == null) { string filePath = ((LoadFile)args).FilePath; EnsureReader(); string[] line = GetLine(500); base.Reader.BaseStream.Seek(0, SeekOrigin.Begin); ResetLineCounter(); base.Reader.Close(); base.Reader = null; _columnHeaders = line; } return _columnHeaders; } string[] IArtifactReader.GetColumnNames(object args) { return this.GetColumnNames(args); } public void ValidateColumnNames(Action<string> invalidNameAction) { } void IArtifactReader.ValidateColumnNames(Action<string> invalidNameAction) { this.ValidateColumnNames(invalidNameAction); } public string SourceIdentifierValue() { return _currentIdentifier ?? string.Empty; } string IArtifactReader.SourceIdentifierValue() { return this.SourceIdentifierValue(); } public void AdvanceRecord() { AdvanceLine(); } void IArtifactReader.AdvanceRecord() { this.AdvanceRecord(); } public void Close1() { Close(); } void IArtifactReader.Close() { this.Close1(); } public void Halt() { if (_loadFilePreProcessor != null) _loadFilePreProcessor.StopCounting(); } void IArtifactReader.Halt() { this.Halt(); } protected override decimal? ParseNullableDecimal(string value) { if (_executionSource != ExecutionSource.Rdc) return NullableTypesHelper.ToNullableDecimal(value, NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite | NumberStyles.AllowLeadingSign | NumberStyles.AllowTrailingSign | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands | NumberStyles.AllowCurrencySymbol); return NullableTypesHelper.ToNullableDecimalUsingCurrentCulture(value, NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite | NumberStyles.AllowLeadingSign | NumberStyles.AllowTrailingSign | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands | NumberStyles.AllowCurrencySymbol); } public void OnFatalErrorState() { base.Context.RetryOptions = RetryOptions.None; } void IArtifactReader.OnFatalErrorState() { this.OnFatalErrorState(); } public long? CountRecords() { _loadFilePreProcessor = new LoadFilePreProcessor(_settings, _trackErrorsInFieldValues, _correlationIdFunc); _loadFilePreProcessor.CountLines(); return _recordCount; } long? IArtifactReader.CountRecords() { return this.CountRecords(); } public string ManageErrorRecords(string errorMessageFileLocation, string prePushErrorLineNumbersFileName) { StatusMessageEvent?.Invoke("Generating error line file."); GenericCsvReader2 genericCsvReader = new GenericCsvReader2(errorMessageFileLocation, Encoding.Default, true); base.Reader = new StreamReader(_settings.FilePath, _sourceFileEncoding, true); ResetLineCounter(); StreamReader streamReader = (Operators.CompareString(prePushErrorLineNumbersFileName, "", false) != 0) ? new StreamReader(prePushErrorLineNumbersFileName, Encoding.Default) : new StreamReader(TempFileBuilder.GetTempFileName("rel-errors"), Encoding.Default); string tempFileName = TempFileBuilder.GetTempFileName("rel-errors"); StreamWriter streamWriter = new StreamWriter(tempFileName, false, _sourceFileEncoding); if (_settings.FirstLineContainsHeaders) streamWriter.WriteLine(ToDelimetedLine(GetLine())); int num = (Operators.CompareString(prePushErrorLineNumbersFileName, "", false) != 0) ? int.Parse(streamReader.ReadLine()) : 2147483647; int num2; if (!genericCsvReader.Eof) { string[] array = genericCsvReader.ReadLine(); if (Operators.CompareString(array[3], "client", false) == 0) { while (array != null && Operators.CompareString(array[3], "client", false) == 0) { array = genericCsvReader.ReadLine(); } num2 = ((array != null) ? int.Parse(array[0]) : 2147483647); } else num2 = int.Parse(array[0]); } else num2 = 2147483647; string[] values = null; bool flag = (byte)(1 & ((base.Reader.Peek() != -1) ? 1 : 0)) != 0; while (flag) { if (base.CurrentLineNumber < Math.Min(num, num2)) { if (base.Reader.Peek() == -1) flag = false; else values = GetLine(); } else { streamWriter.WriteLine(ToDelimetedLine(values)); if (base.CurrentLineNumber == num) num = ((streamReader.Peek() != -1) ? int.Parse(streamReader.ReadLine()) : 2147483647); if (base.CurrentLineNumber == num2) { if (genericCsvReader.Eof) num2 = 2147483647; else { string[] array2 = genericCsvReader.ReadLine(); while (array2 != null && Operators.CompareString(array2[3], "client", false) == 0) { array2 = genericCsvReader.ReadLine(); } num2 = ((array2 != null) ? int.Parse(array2[0]) : 2147483647); } } } flag = ((!genericCsvReader.Eof | (streamReader.Peek() != -1) | (base.CurrentLineNumber <= Math.Min(num, num2))) & flag); } streamWriter.Close(); genericCsvReader.Close(); streamReader.Close(); StatusMessageEvent?.Invoke("Error line file generation complete."); return tempFileName; } string IArtifactReader.ManageErrorRecords(string errorMessageFileLocation, string prePushErrorLineNumbersFileName) { return this.ManageErrorRecords(errorMessageFileLocation, prePushErrorLineNumbersFileName); } public ArtifactFieldCollection ReadArtifact() { _currentIdentifier = string.Empty; ArtifactFieldCollection artifactFieldCollection = new ArtifactFieldCollection(); string[] line = GetLine(); if (line.Length != _columnHeaders.Length) throw new LoadFileBase.ColumnCountMismatchException(base.CurrentLineNumber, _columnHeaders.Length, line.Length); if (_identifierFieldMapItem != null) { ArtifactField artifactField = ParseFieldValueAndAddToCollection(artifactFieldCollection, line, _identifierFieldMapItem); _currentIdentifier = artifactField.ValueAsString; } IEnumerator enumerator = default(IEnumerator); try { enumerator = _settings.FieldMap.GetEnumerator(); while (enumerator.MoveNext()) { LoadFileFieldMap.LoadFileFieldMapItem loadFileFieldMapItem = (LoadFileFieldMap.LoadFileFieldMapItem)enumerator.Current; if (loadFileFieldMapItem.DocumentField != null && loadFileFieldMapItem.DocumentField.FieldCategory != global::Relativity.DataExchange.Service.FieldCategory.Identifier) ParseFieldValueAndAddToCollection(artifactFieldCollection, line, loadFileFieldMapItem); } } finally { if (enumerator is IDisposable) (enumerator as IDisposable).Dispose(); } checked { if (_settings.LoadNativeFiles && _settings.NativeFilePathColumn != null && Operators.CompareString(_settings.NativeFilePathColumn, string.Empty, false) != 0 && artifactFieldCollection.FileField == null) { int num = int.Parse(_settings.NativeFilePathColumn.Substring(_settings.NativeFilePathColumn.LastIndexOf("(")).Trim("()".ToCharArray())); ArtifactField artifactField2 = new ArtifactField(new DocumentField("File", -1, 9, 10, null, null, null, true, kCura.EDDS.WebAPI.DocumentManagerBase.ImportBehaviorChoice.LeaveBlankValuesUnchanged, false)); artifactField2.Value = line[num - 1]; artifactFieldCollection.Add(artifactField2); } if (_settings.CreateFolderStructure && _settings.FolderStructureContainedInColumn != null && Operators.CompareString(_settings.FolderStructureContainedInColumn, string.Empty, false) != 0) { int num2 = int.Parse(_settings.FolderStructureContainedInColumn.Substring(_settings.FolderStructureContainedInColumn.LastIndexOf("(")).Trim("()".ToCharArray())); ArtifactField artifactField3 = new ArtifactField(new DocumentField("Parent", -2, 10, 11, null, null, null, true, kCura.EDDS.WebAPI.DocumentManagerBase.ImportBehaviorChoice.LeaveBlankValuesUnchanged, false)); artifactField3.Value = line[num2 - 1]; artifactFieldCollection.Add(artifactField3); } return artifactFieldCollection; } } ArtifactFieldCollection IArtifactReader.ReadArtifact() { return this.ReadArtifact(); } public override object ReadFile(string path) { throw new Exception("Not Implemented"); } private ArtifactField ParseFieldValueAndAddToCollection(ArtifactFieldCollection collection, string[] line, LoadFileFieldMap.LoadFileFieldMapItem mapItem) { ArtifactField artifactField = new ArtifactField(mapItem.DocumentField); if (mapItem.NativeFileColumnIndex < 0 || mapItem.NativeFileColumnIndex > checked(line.Length - 1)) SetFieldValue(artifactField, string.Empty, mapItem.NativeFileColumnIndex); else SetFieldValue(artifactField, line[mapItem.NativeFileColumnIndex], mapItem.NativeFileColumnIndex); collection.Add(artifactField); return artifactField; } public static string[] GetStringArrayFromDelimitedFieldValue(object value, char delimiter) { string text = NullableTypesHelper.DBNullString(RuntimeHelpers.GetObjectValue(value)); List<string> list = new List<string>(); if (!string.IsNullOrWhiteSpace(text)) list.AddRange(text.Split(new char[1] { delimiter }).Where((_Closure$__.$I79-0 != null) ? _Closure$__.$I79-0 : (_Closure$__.$I79-0 = ((string item) => Operators.CompareString(item.Trim(), string.Empty, false) != 0))).Select((_Closure$__.$I79-1 != null) ? _Closure$__.$I79-1 : (_Closure$__.$I79-1 = ((string item) => item.Trim())))); return list.ToArray(); } } }