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