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

DataReaderImporter

using kCura.EDDS.WebAPI.BulkImportManagerBase; using kCura.EDDS.WebAPI.DocumentManagerBase; using kCura.WinEDDS.Api; using Microsoft.VisualBasic.CompilerServices; using Relativity.DataExchange; using Relativity.DataExchange.Io; using Relativity.DataExchange.Process; using Relativity.Logging; using System; using System.Collections.Generic; using System.Data; using System.Runtime.CompilerServices; using System.Threading; namespace kCura.WinEDDS.ImportExtension { public class DataReaderImporter : BulkLoadFileImporter { private IDataReader _sourceReader; [CompilerGenerated] private string _OnBehalfOfUserToken; private string _temporaryLocalDirectory; public string OnBehalfOfUserToken { get; set; } public string TemporaryLocalDirectory { get { return _temporaryLocalDirectory; } set { _temporaryLocalDirectory = value; } } public IDataReader SourceData => _sourceReader; public string DestinationFolder { get { return _destinationFolder; } set { _destinationFolder = value; } } public DataReaderImporter(DataReaderLoadFile loadFile, ProcessContext context, IIoReporter ioReporterInstance, ILog logger, string bulkLoadFileFieldDelimiter, CancellationTokenSource tokenSource, Func<string> correlationIdFunc, IRunningContext runningContext = null) : this(loadFile, context, ioReporterInstance, logger, bulkLoadFileFieldDelimiter, null, tokenSource, true, correlationIdFunc, runningContext) { } public DataReaderImporter(DataReaderLoadFile loadFile, ProcessContext context, IIoReporter ioReporterInstance, ILog logger, string bulkLoadFileFieldDelimiter, string temporaryLocalDirectory, CancellationTokenSource tokenSource, bool initializeArtifactReader, Func<string> correlationIdFunc, IRunningContext runningContext = null) : base(loadFile, context, ioReporterInstance, logger, 0, true, true, Guid.NewGuid(), true, bulkLoadFileFieldDelimiter, tokenSource, correlationIdFunc, runningContext) { base.OIFileIdColumnName = loadFile.OIFileIdColumnName; base.OIFileIdMapped = loadFile.OIFileIdMapped; base.OIFileTypeColumnName = loadFile.OIFileTypeColumnName; base.FileSizeMapped = loadFile.FileSizeMapped; base.FileSizeColumn = loadFile.FileSizeColumn; base.FileNameColumn = loadFile.FileNameColumn; base.SupportedByViewerColumn = loadFile.SupportedByViewerColumn; if (temporaryLocalDirectory != null) TemporaryLocalDirectory = temporaryLocalDirectory; } public virtual void Initialize() { if (_artifactReader == null) InitializeArtifactReader(); } public override void OnSettingsObjectCreate(NativeLoadInfo settings) { settings.OnBehalfOfUserToken = OnBehalfOfUserToken; } protected override IArtifactReader GetArtifactReader() { ArtifactFieldCollection artifactFieldCollection = new ArtifactFieldCollection(); DataReaderLoadFile dataReaderLoadFile = (DataReaderLoadFile)_settings; _sourceReader = dataReaderLoadFile.DataReader; base.LinkDataGridRecords = !string.IsNullOrEmpty(dataReaderLoadFile.DataGridIDColumn); List<string> list = new List<string>(); checked { int num = _sourceReader.FieldCount - 1; for (int i = 0; i <= num; i++) { list.Add(_sourceReader.GetName(i).ToLower()); } Dictionary<string, string> dictionary = new Dictionary<string, string>(); int num2 = 0; Field[] array = base.get_AllFields(_settings.ArtifactTypeID); foreach (Field field in array) { field.Value = null; field.FieldCategory = unchecked((kCura.EDDS.WebAPI.DocumentManagerBase.FieldCategory)field.FieldCategoryID); field.DisplayName = field.DisplayName.ToLower(); artifactFieldCollection.Add(new ArtifactField(field)); try { string text = field.DisplayName.ToLower(); string name = text; if (dictionary.ContainsKey(field.DisplayName)) name = dictionary[text]; if (list.Contains(field.DisplayName.ToLower()) || dictionary.ContainsKey(field.DisplayName)) { _sourceReader.GetOrdinal(name); if (_settings.FolderStructureContainedInColumn == null) _settings.FieldMap.Add(new LoadFileFieldMap.LoadFileFieldMapItem(new DocumentField(field.DisplayName, field.ArtifactID, field.FieldTypeID, field.FieldCategoryID, field.CodeTypeID, field.MaxLength, field.AssociativeArtifactTypeID, field.UseUnicodeEncoding, field.ImportBehavior, field.EnableDataGrid), num2)); else if (Operators.CompareString(Right: (_settings.FolderStructureContainedInColumn != null) ? _settings.FolderStructureContainedInColumn.ToLower() : string.Empty, Left: field.DisplayName, TextCompare: false) != 0) { _settings.FieldMap.Add(new LoadFileFieldMap.LoadFileFieldMapItem(new DocumentField(field.DisplayName, field.ArtifactID, field.FieldTypeID, field.FieldCategoryID, field.CodeTypeID, field.MaxLength, field.AssociativeArtifactTypeID, field.UseUnicodeEncoding, field.ImportBehavior, field.EnableDataGrid), num2)); } } } catch (IndexOutOfRangeException ex) { ProjectData.SetProjectError(ex); IndexOutOfRangeException ex2 = ex; ProjectData.ClearProjectError(); } num2++; } FileSettings fileSettings = new FileSettings { IDColumnName = base.OIFileIdColumnName, OIFileIdMapped = base.OIFileIdMapped, TypeColumnName = base.OIFileTypeColumnName, FileSizeColumn = base.FileSizeColumn, FileSizeMapped = base.FileSizeMapped, FileNameColumn = base.FileNameColumn, SupportedByViewerColumn = base.SupportedByViewerColumn }; DataReaderReaderInitializationArgs args = new DataReaderReaderInitializationArgs(artifactFieldCollection, _settings.ArtifactTypeID) { TemporaryLocalDirectory = TemporaryLocalDirectory }; return new DataReaderReader(args, _settings, _sourceReader, fileSettings); } } } }