DataReaderReader
using kCura.EDDS.WebAPI.DocumentManagerBase;
using kCura.WinEDDS.Api;
using kCura.WinEDDS.Exceptions;
using Microsoft.VisualBasic.CompilerServices;
using Relativity.DataExchange;
using Relativity.DataExchange.Io;
using Relativity.DataExchange.Service;
using System;
using System.Data;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization.Formatters.Binary;
using System.Threading;
namespace kCura.WinEDDS.ImportExtension
{
public class DataReaderReader : IArtifactReader
{
private const string _KCURAMARKERFILENAME = "kcuramarkerfilename";
private IDataReader _reader;
private readonly FileSettings _FileSettings;
private LoadFile _loadFileSettings;
protected long _currentLineNumber;
private long _size;
private string[] _columnNames;
private ArtifactFieldCollection _allFields;
private string _tempLocalDirectory;
private bool? _markerNameIsMapped;
private int _identifierFieldIndex;
private string _lastSourceIdentifier;
private int _fileSettingsFileNameColumnIndex;
private int _fileSettingsFileSizeColumnIndex;
private int _fileSettingsTypeColumnNameIndex;
private int _fileSettingsIDColumnNameIndex;
private int _fileSupportedByViewerColumnNameIndex;
[CompilerGenerated]
private IArtifactReader.StatusMessageEventHandler StatusMessageEvent;
[CompilerGenerated]
private IArtifactReader.FieldMappedEventHandler FieldMappedEvent;
[CompilerGenerated]
private IArtifactReader.DataSourcePrepEventHandler DataSourcePrepEvent;
[CompilerGenerated]
private IArtifactReader.OnIoWarningEventHandler OnIoWarningEvent;
public string TemporaryLocalDirectory {
get {
return _tempLocalDirectory;
}
set {
_tempLocalDirectory = value;
}
}
public long BytesProcessed {
get {
checked {
if (SizeInBytes >= 1 && !_reader.IsClosed)
return (long)Math.Round(unchecked((double)_currentLineNumber / 1 * (double)SizeInBytes));
return 0;
}
}
}
public int CurrentLineNumber => checked((int)_currentLineNumber);
public bool HasMoreRecords => !_reader.IsClosed;
public long SizeInBytes {
get {
if (_size == -1) {
MemoryStream memoryStream = new MemoryStream();
new BinaryFormatter().Serialize(memoryStream, _reader);
_size = memoryStream.Length;
memoryStream.Close();
}
return _size;
}
}
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 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 DataReaderReader(DataReaderReaderInitializationArgs args, LoadFile fieldMap, IDataReader reader)
: this(args, fieldMap, reader, new FileSettings {
OIFileIdMapped = false,
FileSizeMapped = false,
FileNameColumn = null
})
{
}
public DataReaderReader(DataReaderReaderInitializationArgs args, LoadFile fieldMap, IDataReader reader, FileSettings fileSettings)
{
_currentLineNumber = 0;
_size = -1;
_reader = reader;
if (fileSettings == null)
fileSettings = new FileSettings {
FileNameColumn = null,
FileSizeColumn = null,
FileSizeMapped = false,
IDColumnName = null,
OIFileIdMapped = false,
TypeColumnName = null
};
_FileSettings = fileSettings;
_reader.ThrowIfNull("_reader");
if (_reader.IsClosed || _reader.FieldCount == 0)
throw new ArgumentException("The reader is closed or empty");
_loadFileSettings = fieldMap;
_allFields = args.AllFields;
if (args.TemporaryLocalDirectory == null)
_tempLocalDirectory = Path.GetTempPath() + "FlexMigrationFiles\\";
else
_tempLocalDirectory = args.TemporaryLocalDirectory;
checked {
if (fieldMap != null) {
int num = reader.FieldCount - 1;
for (int i = 0; i <= num; i++) {
if (reader.GetName(i).Equals(fieldMap.SelectedIdentifierField.FieldName, StringComparison.CurrentCultureIgnoreCase)) {
_identifierFieldIndex = i;
break;
}
}
} else
_identifierFieldIndex = -1;
_fileSettingsFileNameColumnIndex = -1;
_fileSettingsFileSizeColumnIndex = -1;
_fileSettingsTypeColumnNameIndex = -1;
_fileSettingsIDColumnNameIndex = -1;
_fileSupportedByViewerColumnNameIndex = -1;
}
}
public string SourceIdentifierValue()
{
return _lastSourceIdentifier;
}
string IArtifactReader.SourceIdentifierValue()
{
return this.SourceIdentifierValue();
}
public unsafe void AdvanceRecord()
{
try {
if (!_reader.Read())
_reader.Close();
} finally {
ref long currentLineNumber;
*(ref currentLineNumber = ref _currentLineNumber) = checked(currentLineNumber + 1);
}
}
void IArtifactReader.AdvanceRecord()
{
this.AdvanceRecord();
}
public long? CountRecords()
{
return (!_reader.IsClosed) ? null : new long?(CurrentLineNumber);
}
long? IArtifactReader.CountRecords()
{
return this.CountRecords();
}
public string[] GetColumnNames(object args)
{
if (_columnNames == null)
_columnNames = (from fieldIndex in Enumerable.Range(0, _reader.FieldCount)
select _reader.GetName(fieldIndex)).ToArray();
return _columnNames;
}
string[] IArtifactReader.GetColumnNames(object args)
{
return this.GetColumnNames(args);
}
public void ValidateColumnNames(Action<string> invalidNameAction)
{
foreach (string item in from columnName in GetColumnNames(null)
where _allFields[columnName.ToLower()] == null
select columnName) {
invalidNameAction(item);
}
}
void IArtifactReader.ValidateColumnNames(Action<string> invalidNameAction)
{
this.ValidateColumnNames(invalidNameAction);
}
private bool DoesFilenameMarkerFieldExistInIDataReader()
{
if (!_markerNameIsMapped.HasValue)
try {
_reader.GetOrdinal("kcuramarkerfilename");
_markerNameIsMapped = true;
} catch (IndexOutOfRangeException ex) {
ProjectData.SetProjectError(ex);
IndexOutOfRangeException ex2 = ex;
_markerNameIsMapped = false;
ProjectData.ClearProjectError();
} catch (ArgumentException ex3) {
ProjectData.SetProjectError(ex3);
ArgumentException ex4 = ex3;
_markerNameIsMapped = false;
ProjectData.ClearProjectError();
}
return _markerNameIsMapped.Value;
}
private string nameWithoutIndex(string nameWithIndex)
{
if (nameWithIndex != null) {
int num = nameWithIndex.LastIndexOf('(');
if (num < 0)
return nameWithIndex;
return nameWithIndex.Substring(0, num);
}
return null;
}
public ArtifactFieldCollection ReadArtifact()
{
try {
return ReadArtifactData();
} catch (Exception ex) {
ProjectData.SetProjectError(ex);
Exception ex2 = ex;
throw;
} finally {
AdvanceRecord();
}
}
ArtifactFieldCollection IArtifactReader.ReadArtifact()
{
return this.ReadArtifact();
}
private ArtifactFieldCollection ReadArtifactData()
{
ArtifactFieldCollection artifactFieldCollectionWithBasicFields = GetArtifactFieldCollectionWithBasicFields();
string right = nameWithoutIndex(_loadFileSettings.FolderStructureContainedInColumn);
if (_identifierFieldIndex > -1)
_lastSourceIdentifier = _reader[_identifierFieldIndex].ToString();
checked {
int num = _reader.FieldCount - 1;
for (int i = 0; i <= num; i++) {
ArtifactField artifactField = _allFields[_reader.GetName(i).ToLower()];
if (artifactField != null && Operators.CompareString(artifactField.DisplayName, right, false) != 0) {
ArtifactField field = artifactField.Copy();
SetFieldValueInvoker(i, field, artifactField.DisplayName);
artifactFieldCollectionWithBasicFields.Add(field);
}
}
if (_loadFileSettings.ArtifactTypeID == 10 && _loadFileSettings.LoadNativeFiles && _loadFileSettings.NativeFilePathColumn != null && Operators.CompareString(_loadFileSettings.NativeFilePathColumn, string.Empty, false) != 0) {
int num2 = int.Parse(_loadFileSettings.NativeFilePathColumn.Substring(_loadFileSettings.NativeFilePathColumn.LastIndexOf("(")).Trim("()".ToCharArray()));
string name = _reader.GetName(num2 - 1);
ArtifactField field2 = new ArtifactField(new DocumentField(name, -1, 9, 10, 0, 0, 0, true, kCura.EDDS.WebAPI.DocumentManagerBase.ImportBehaviorChoice.LeaveBlankValuesUnchanged, false));
SetFieldValueInvoker(num2 - 1, field2, name);
artifactFieldCollectionWithBasicFields.Add(field2);
}
if (_loadFileSettings.DataGridIDColumn != null && Operators.CompareString(_loadFileSettings.DataGridIDColumn, string.Empty, false) != 0) {
int num3 = int.Parse(_loadFileSettings.DataGridIDColumn.Substring(_loadFileSettings.DataGridIDColumn.LastIndexOf("(")).Trim("()".ToCharArray()));
string name2 = _reader.GetName(num3 - 1);
ArtifactField field3 = new ArtifactField(new Field {
ArtifactID = -3,
DisplayName = "DataGridID"
});
SetFieldValueInvoker(num3 - 1, field3, name2);
artifactFieldCollectionWithBasicFields.Add(field3);
}
if (_loadFileSettings.CopyFilesToDocumentRepository) {
if (!Directory.Exists(_tempLocalDirectory))
Directory.CreateDirectory(_tempLocalDirectory);
if (DoesFilenameMarkerFieldExistInIDataReader()) {
foreach (ArtifactField item in artifactFieldCollectionWithBasicFields) {
if (item.Type == global::Relativity.DataExchange.Service.FieldType.File && Operators.CompareString(item.ValueAsString, string.Empty, false) != 0 && System.IO.File.Exists(item.ValueAsString)) {
string text;
try {
string path = _reader["kcuramarkerfilename"].ToString();
text = Path.Combine(_tempLocalDirectory, path);
} catch (Exception ex) {
ProjectData.SetProjectError(ex);
Exception ex2 = ex;
text = Path.Combine(_tempLocalDirectory, Path.GetFileName(item.ValueAsString));
ProjectData.ClearProjectError();
}
if (System.IO.File.Exists(text))
try {
FileSystem.Instance.File.Delete(text);
} catch (Exception ex3) {
ProjectData.SetProjectError(ex3);
Exception ex4 = ex3;
System.IO.File.SetAttributes(text, FileAttributes.Normal);
FileSystem.Instance.File.Delete(text);
ProjectData.ClearProjectError();
}
System.IO.File.Copy(item.ValueAsString, text);
System.IO.File.SetAttributes(text, FileAttributes.Normal);
item.Value = text;
break;
}
}
}
}
if (_loadFileSettings.CreateFolderStructure && _loadFileSettings.FolderStructureContainedInColumn != null && Operators.CompareString(_loadFileSettings.FolderStructureContainedInColumn, string.Empty, false) != 0) {
int num4 = int.Parse(_loadFileSettings.FolderStructureContainedInColumn.Substring(_loadFileSettings.FolderStructureContainedInColumn.LastIndexOf("(")).Trim("()".ToCharArray()));
string name3 = _reader.GetName(num4 - 1);
ArtifactField field4 = new ArtifactField(name3, -2, global::Relativity.DataExchange.Service.FieldType.Object, global::Relativity.DataExchange.Service.FieldCategory.ParentArtifact, 0, 255, 0, false);
SetFieldValueInvoker(num4 - 1, field4, name3);
artifactFieldCollectionWithBasicFields.Add(field4);
}
if (CurrentLineNumber == 0)
DisplayFieldMap(_reader, artifactFieldCollectionWithBasicFields);
return artifactFieldCollectionWithBasicFields;
}
}
private ArtifactFieldCollection GetArtifactFieldCollectionWithBasicFields()
{
FileTypeInfo fileTypeIdInfo = GetFileTypeIdInfo();
long? fileSizeData = GetFileSizeData();
return InjectableArtifactFieldCollection.CreateFieldCollection(GetFileNameData(), fileTypeIdInfo, fileSizeData);
}
private string GetFileNameData()
{
string text = null;
checked {
if (!string.IsNullOrEmpty(_FileSettings.FileNameColumn)) {
if (_fileSettingsFileNameColumnIndex == -1) {
int num = _reader.FieldCount - 1;
for (int i = 0; i <= num; i++) {
if (Operators.CompareString(_reader.GetName(i), _FileSettings.FileNameColumn, false) == 0) {
object objectValue = RuntimeHelpers.GetObjectValue(_reader.GetValue(i));
if (objectValue != null)
text = objectValue.ToString();
_fileSettingsFileNameColumnIndex = i;
break;
}
}
} else if (Operators.CompareString(_reader.GetName(_fileSettingsFileNameColumnIndex), _FileSettings.FileNameColumn, false) == 0) {
object objectValue2 = RuntimeHelpers.GetObjectValue(_reader.GetValue(_fileSettingsFileNameColumnIndex));
if (objectValue2 != null)
text = objectValue2.ToString();
}
}
if (string.IsNullOrEmpty(text))
return null;
return text;
}
}
private long? GetFileSizeData()
{
checked {
long? result;
if (!_FileSettings.FileSizeMapped)
result = null;
else {
long? result2 = null;
if (_fileSettingsFileSizeColumnIndex == -1) {
int num = _reader.FieldCount - 1;
for (int i = 0; i <= num; i++) {
if (Operators.CompareString(_reader.GetName(i), _FileSettings.FileSizeColumn, false) == 0) {
long result3 = -1;
long.TryParse(Convert.ToString(RuntimeHelpers.GetObjectValue(_reader.GetValue(i))), out result3);
result2 = result3;
_fileSettingsFileSizeColumnIndex = i;
break;
}
}
} else if (Operators.CompareString(_reader.GetName(_fileSettingsFileSizeColumnIndex), _FileSettings.FileSizeColumn, false) == 0) {
long result4 = -1;
long.TryParse(Convert.ToString(RuntimeHelpers.GetObjectValue(_reader.GetValue(_fileSettingsFileSizeColumnIndex))), out result4);
result2 = result4;
}
if (result2.HasValue)
return result2;
result = null;
}
return result;
}
}
private bool? GetSupportedByViewerData()
{
checked {
bool? result;
if (string.IsNullOrEmpty(_FileSettings.SupportedByViewerColumn))
result = null;
else {
bool? result2 = null;
if (_fileSupportedByViewerColumnNameIndex == -1) {
int num = _reader.FieldCount - 1;
for (int i = 0; i <= num; i++) {
if (Operators.CompareString(_reader.GetName(i), _FileSettings.SupportedByViewerColumn, false) == 0) {
bool result3 = false;
bool.TryParse(Convert.ToString(RuntimeHelpers.GetObjectValue(_reader.GetValue(i))), out result3);
result2 = result3;
_fileSupportedByViewerColumnNameIndex = i;
break;
}
}
} else if (Operators.CompareString(_reader.GetName(_fileSupportedByViewerColumnNameIndex), _FileSettings.SupportedByViewerColumn, false) == 0) {
bool result4 = false;
bool.TryParse(_reader.GetValue(_fileSupportedByViewerColumnNameIndex).ToString(), out result4);
result2 = result4;
}
if (result2.HasValue)
return result2;
result = null;
}
return result;
}
}
private FileTypeInfo GetFileTypeIdInfo()
{
checked {
if (_FileSettings.OIFileIdMapped) {
string text = "";
int id = default(int);
if ((_fileSettingsTypeColumnNameIndex == -1) | (_fileSettingsIDColumnNameIndex == -1)) {
int num = _reader.FieldCount - 1;
for (int i = 0; i <= num; i++) {
if (Operators.CompareString(_reader.GetName(i), _FileSettings.TypeColumnName, false) == 0) {
text = Convert.ToString(RuntimeHelpers.GetObjectValue(_reader.GetValue(i)));
_fileSettingsTypeColumnNameIndex = i;
} else if (Operators.CompareString(_reader.GetName(i), _FileSettings.IDColumnName, false) == 0) {
int result = -1;
int.TryParse(_reader.GetValue(i).ToString(), out result);
id = result;
_fileSettingsIDColumnNameIndex = i;
}
}
} else if (Operators.CompareString(_reader.GetName(_fileSettingsTypeColumnNameIndex), _FileSettings.TypeColumnName, false) == 0) {
text = _reader.GetValue(_fileSettingsTypeColumnNameIndex).ToString();
} else if (Operators.CompareString(_reader.GetName(_fileSettingsIDColumnNameIndex), _FileSettings.IDColumnName, false) == 0) {
int result2 = -1;
int.TryParse(_reader.GetValue(_fileSettingsIDColumnNameIndex).ToString(), out result2);
id = result2;
}
if (!string.IsNullOrEmpty(text)) {
bool? nullable = null;
if (string.IsNullOrEmpty(_FileSettings.IDColumnName))
nullable = GetSupportedByViewerData();
if (nullable.HasValue)
return new ExtendedFileTypeInfo(text, nullable.Value);
return new FileTypeInfo(id, text);
}
return null;
}
return null;
}
}
protected void SetFieldValueInvoker(int idx, ArtifactField field, string displayName)
{
try {
SetFieldValue(field, RuntimeHelpers.GetObjectValue(_reader[idx]));
} catch (Exception ex) {
ProjectData.SetProjectError(ex);
Exception ex2 = ex;
throw new FieldValueImportException(ex2, checked(_currentLineNumber + 1), displayName, ex2.Message);
}
}
private void DisplayFieldMap(IDataReader sourceData, ArtifactFieldCollection destination)
{
string str = "\r\n" + "----------" + "\r\n" + "Field Mapping:" + "\r\n";
string format = "Source field [{0}] --> Destination field [{1}]" + "\r\n";
checked {
int num = sourceData.FieldCount - 1;
for (int i = 0; i <= num; i++) {
ArtifactField artifactField = destination[_reader.GetName(i).ToLower()];
if (artifactField == null) {
if (_loadFileSettings.CopyFilesToDocumentRepository & (Operators.CompareString(_reader.GetName(i).ToLower(), "kcuramarkerfilename".ToLower(), false) == 0)) {
str += string.Format(format, _reader.GetName(i).ToLower(), "*Filename*");
FieldMappedEvent?.Invoke(_reader.GetName(i), "*Filename*");
} else if (_loadFileSettings.NativeFilePathColumn != null && Operators.CompareString(_reader.GetName(i).ToLower(), nameWithoutIndex(_loadFileSettings.NativeFilePathColumn.ToLower()), false) == 0) {
str += string.Format(format, _reader.GetName(i).ToLower(), "*NativeFilePath*");
FieldMappedEvent?.Invoke(_reader.GetName(i), "*NativeFilePath*");
} else {
str += string.Format(format, _reader.GetName(i).ToLower(), "NOT MAPPED (Target field not found)");
FieldMappedEvent?.Invoke(_reader.GetName(i), "NOT MAPPED (Target field not found)");
}
} else {
str += string.Format(format, _reader.GetName(i).ToLower(), artifactField.DisplayName.ToLower());
FieldMappedEvent?.Invoke(_reader.GetName(i), artifactField.DisplayName);
}
}
str = str + "----------" + "\r\n";
StatusMessageEvent?.Invoke(str);
}
}
private bool NonTextField(global::Relativity.DataExchange.Service.FieldType fieldType)
{
if ((uint)(fieldType - 1) > 2 && (uint)(fieldType - 6) > 1)
return false;
return true;
}
protected void SetFieldValue(ArtifactField field, object value)
{
if (value == null)
field.Value = null;
else if ((value is string) & NonTextField(field.Type)) {
string value2 = Conversions.ToString(value);
SetNativeFieldFromTextValue(field, value2);
} else {
SetNativeFieldValue(field, RuntimeHelpers.GetObjectValue(value));
}
}
private void SetNativeFieldFromTextValue(ArtifactField field, string value)
{
if (value.Trim().Length != 0) {
switch (field.Type) {
case global::Relativity.DataExchange.Service.FieldType.Boolean:
field.Value = NullableTypesHelper.GetNullableBoolean(value);
break;
case global::Relativity.DataExchange.Service.FieldType.Decimal:
case global::Relativity.DataExchange.Service.FieldType.Currency:
field.Value = NullableTypesHelper.ToNullableDecimal(value.Trim(), NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite | NumberStyles.AllowLeadingSign | NumberStyles.AllowTrailingSign | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands | NumberStyles.AllowCurrencySymbol);
break;
case global::Relativity.DataExchange.Service.FieldType.Date:
field.Value = NullableTypesHelper.GetNullableDateTime(value);
break;
case global::Relativity.DataExchange.Service.FieldType.Integer:
field.Value = NullableTypesHelper.ToNullableInt32(value.Replace(",", ""));
break;
default:
throw new ArgumentException("Unsupported field type '" + field.Type.ToString() + "'");
}
} else
field.Value = null;
}
private void SetNativeFieldValue(ArtifactField field, object value)
{
switch (field.Type) {
case global::Relativity.DataExchange.Service.FieldType.Boolean:
field.Value = NullableTypesHelper.DBNullConvertToNullable<bool>(RuntimeHelpers.GetObjectValue(value));
break;
case global::Relativity.DataExchange.Service.FieldType.Code:
field.Value = NullableTypesHelper.DBNullString(RuntimeHelpers.GetObjectValue(value));
break;
case global::Relativity.DataExchange.Service.FieldType.Text:
case global::Relativity.DataExchange.Service.FieldType.OffTableText:
if (value is Stream)
field.Value = RuntimeHelpers.GetObjectValue(value);
else
field.Value = NullableTypesHelper.DBNullString(RuntimeHelpers.GetObjectValue(value));
break;
case global::Relativity.DataExchange.Service.FieldType.User:
field.Value = NullableTypesHelper.DBNullString(RuntimeHelpers.GetObjectValue(value));
break;
case global::Relativity.DataExchange.Service.FieldType.Varchar:
field.Value = NullableTypesHelper.DBNullString(RuntimeHelpers.GetObjectValue(value));
break;
case global::Relativity.DataExchange.Service.FieldType.Object:
field.Value = NullableTypesHelper.DBNullString(RuntimeHelpers.GetObjectValue(value));
break;
case global::Relativity.DataExchange.Service.FieldType.Decimal:
case global::Relativity.DataExchange.Service.FieldType.Currency:
field.Value = NullableTypesHelper.DBNullConvertToNullable<decimal>(RuntimeHelpers.GetObjectValue(value));
break;
case global::Relativity.DataExchange.Service.FieldType.Date:
field.Value = NullableTypesHelper.DBNullConvertToNullable<DateTime>(RuntimeHelpers.GetObjectValue(value));
break;
case global::Relativity.DataExchange.Service.FieldType.File:
field.Value = NullableTypesHelper.DBNullString(RuntimeHelpers.GetObjectValue(value));
break;
case global::Relativity.DataExchange.Service.FieldType.Integer:
field.Value = NullableTypesHelper.DBNullConvertToNullable<int>(RuntimeHelpers.GetObjectValue(value));
break;
case global::Relativity.DataExchange.Service.FieldType.MultiCode:
case global::Relativity.DataExchange.Service.FieldType.Objects:
field.Value = LoadFileReader.GetStringArrayFromDelimitedFieldValue(RuntimeHelpers.GetObjectValue(value), _loadFileSettings.MultiRecordDelimiter);
break;
default:
throw new ArgumentException("Unsupported field type '" + field.Type.ToString() + "'");
}
}
public void Halt()
{
}
void IArtifactReader.Halt()
{
this.Halt();
}
public void Close()
{
while (!_reader.IsClosed) {
AdvanceRecord();
}
}
void IArtifactReader.Close()
{
this.Close();
}
public string ManageErrorRecords(string errorMessageFileLocation, string prePushErrorLineNumbersFileName)
{
return (_reader as IArtifactReader)?.ManageErrorRecords(errorMessageFileLocation, prePushErrorLineNumbersFileName);
}
string IArtifactReader.ManageErrorRecords(string errorMessageFileLocation, string prePushErrorLineNumbersFileName)
{
return this.ManageErrorRecords(errorMessageFileLocation, prePushErrorLineNumbersFileName);
}
public void OnFatalErrorState()
{
}
void IArtifactReader.OnFatalErrorState()
{
this.OnFatalErrorState();
}
[CompilerGenerated]
private string _Lambda$__29-0(int fieldIndex)
{
return _reader.GetName(fieldIndex);
}
[CompilerGenerated]
private bool _Lambda$__30-0(string columnName)
{
return _allFields[columnName.ToLower()] == null;
}
}
}