PreviewLoadFileProcess
using Relativity.DataExchange;
using Relativity.DataExchange.Io;
using Relativity.DataExchange.Logger;
using Relativity.DataExchange.Process;
using Relativity.Logging;
using System;
using System.Collections;
using System.Runtime.CompilerServices;
namespace kCura.WinEDDS
{
public class PreviewLoadFileProcess : ProcessBase2
{
public LoadFile LoadFile;
[CompilerGenerated]
[AccessedThroughProperty("_loadFilePreviewer")]
private LoadFilePreviewer __loadFilePreviewer;
[CompilerGenerated]
[AccessedThroughProperty("_IoReporterContext")]
private IoReporterContext __IoReporterContext;
private bool _errorsOnly;
private int _timeZoneOffset;
private int _formType;
private DateTime StartTime;
[CompilerGenerated]
[AccessedThroughProperty("_valueThrower")]
private ValueThrower __valueThrower;
public Hashtable ReturnValueCollection;
public Guid ReturnValueKey;
private readonly Func<string> _correlationIdFunc;
protected virtual LoadFilePreviewer _loadFilePreviewer {
[CompilerGenerated]
get {
return __loadFilePreviewer;
}
[MethodImpl(MethodImplOptions.Synchronized)]
[CompilerGenerated]
set {
LoadFilePreviewer.OnEventEventHandler obj = _loadFilePreviewer_OnEvent;
LoadFilePreviewer _loadFilePreviewer = __loadFilePreviewer;
if (_loadFilePreviewer != null)
_loadFilePreviewer.OnEvent -= obj;
__loadFilePreviewer = value;
_loadFilePreviewer = __loadFilePreviewer;
if (_loadFilePreviewer != null)
_loadFilePreviewer.OnEvent += obj;
}
}
protected virtual IoReporterContext _IoReporterContext {
[CompilerGenerated]
get {
return __IoReporterContext;
}
[MethodImpl(MethodImplOptions.Synchronized)]
[CompilerGenerated]
set {
EventHandler<IoWarningEventArgs> value2 = _loadFileImporter_IoErrorEvent;
IoReporterContext _IoReporterContext = __IoReporterContext;
if (_IoReporterContext != null)
_IoReporterContext.IoWarningEvent -= value2;
__IoReporterContext = value;
_IoReporterContext = __IoReporterContext;
if (_IoReporterContext != null)
_IoReporterContext.IoWarningEvent += value2;
}
}
[field: AccessedThroughProperty("_valueThrower")]
private virtual ValueThrower _valueThrower {
get;
[MethodImpl(MethodImplOptions.Synchronized)]
set;
}
public int TimeZoneOffset {
get {
return _timeZoneOffset;
}
set {
_timeZoneOffset = value;
}
}
public bool ErrorsOnly {
get {
return _errorsOnly;
}
set {
_errorsOnly = value;
}
}
public ValueThrower Thrower {
get {
return _valueThrower;
}
set {
_valueThrower = value;
}
}
[Obsolete("This constructor is marked for deprecation. Please use the constructor that requires a logger instance.")]
public PreviewLoadFileProcess(int formType, Func<string> correlationIdFunc)
: this(formType, RelativityLogger.Instance, correlationIdFunc)
{
}
public PreviewLoadFileProcess(int formType, ILog logger, Func<string> correlationIdFunc)
: base(logger)
{
_formType = formType;
_correlationIdFunc = correlationIdFunc;
}
protected override void OnExecute()
{
_IoReporterContext = new IoReporterContext(base.FileSystem, base.AppSettings, new WaitAndRetryPolicy(base.AppSettings));
IIoReporter reporter = CreateIoReporter(_IoReporterContext);
_loadFilePreviewer = new LoadFilePreviewer(LoadFile, reporter, base.Logger, _timeZoneOffset, _errorsOnly, true, base.CancellationTokenSource, _correlationIdFunc, base.Context);
_valueThrower.ThrowValue(new object[2] {
_loadFilePreviewer.ReadFile(LoadFile.FilePath, _formType),
_errorsOnly
});
base.Context.PublishProcessCompleted(true);
}
private void _loadFilePreviewer_OnEvent(LoadFilePreviewer.EventArgs e)
{
lock (base.Context) {
string totalBytesDisplay = FileSizeHelper.ConvertBytesNumberToDisplayString(e.TotalBytes);
string processedBytesDisplay = FileSizeHelper.ConvertBytesNumberToDisplayString(e.BytesRead);
switch (e.Type) {
case LoadFilePreviewer.EventType.Begin:
StartTime = DateTime.Now;
break;
case LoadFilePreviewer.EventType.Complete:
if (e.BytesRead == -1)
base.Context.PublishProgressInBytes(e.TotalBytes, e.TotalBytes, StartTime, DateTime.Now, base.ProcessId, $"""{base.AppSettings.PreviewThreshold}""", base.AppSettings.PreviewThreshold.ToString());
else
base.Context.PublishProgressInBytes(e.TotalBytes, e.TotalBytes, StartTime, DateTime.Now, base.ProcessId, totalBytesDisplay, processedBytesDisplay);
break;
case LoadFilePreviewer.EventType.Progress:
base.Context.PublishProgressInBytes(e.TotalBytes, e.BytesRead, StartTime, DateTime.Now, base.ProcessId, totalBytesDisplay, processedBytesDisplay);
base.Context.PublishStatusEvent(string.Empty, "Preparing file for preview");
break;
}
}
}
private void _loadFileImporter_IoErrorEvent(object sender, IoWarningEventArgs e)
{
lock (base.Context) {
base.Context.PublishWarningEvent(checked(e.CurrentLineNumber + 1).ToString(), e.Message);
}
}
}
}