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