Back to OIM Explorer

JobQueueInfo/VI.Tools.JobQueueInfo/DCJobErrors.cs

Decompiler Source FileJobQueueInfo.DCJobErrorsDecompiled Source

3 extracted method/event/call references in DCJobErrors.

Source: F:\Claude\.tmp\oim-decompiled-full\0788_One_Identity_Manager_JobQueueInfo.dll\VI.Tools.JobQueueInfo\DCJobErrors.cs

Source size: 53.839 characters

Interpretation

  • Decompiled source file. Use method/event registrations and call-site extraction to connect back to DialogMethod, QBMEvent, and API layers.

Relations

  • CallMethod: SetStartAt at line 1045
  • CallMethod: ResetOverlimit at line 1139
  • CallMethod: ResetFrozen at line 1171

Typed Edges

  • No typed edges extracted for this source.

References

  • No direct source references extracted.

Referenced By

  • No direct source references extracted.

C# source-derived context

Generated by pattern extraction from the decompiled C# source and decompile index. This is factual source evidence, not inferred behavior.

reads entity values writes entity values references DB/Dialog objects Job/process related markers

Summary: classes DCJobErrors; methods SelectJob, RefreshData, Dispose, OnHandleDestroyed, InitializeComponent, _LoadFormSettings; references ESet, JobChain, JobHistory, JobQueue; markers reads entity values, writes entity values, references DB/Dialog objects, Job/process related markers

Complete Source

C#1.690 lines
1using System;2using System.Collections;3using System.Collections.Generic;4using System.Collections.ObjectModel;5using System.ComponentModel;6using System.Data;7using System.Drawing;8using System.Runtime.CompilerServices;9using System.Threading;10using System.Windows.Forms;11using VI.Base;12using VI.CommonDialogs;13using VI.Controls;14using VI.Controls.Base;15using VI.DB;16using VI.DB.Entities;17using VI.DB.Filters;18using VI.DB.Sync;19using VI.FormBase;20using VI.FormBase.CommandCenter;21using VI.FormBase.Help;22using VI.FormBase.Threading;23using VI.UI.Base.Images;2425namespace VI.Tools.JobQueueInfo;2627internal class DCJobErrors : DCBase28{29	private ColumnHeader columnHeader1;3031	private ContextMenuStrip cmPopup;3233	private ToolStripMenuItem mnuPopup_ConfigColumns;3435	private ToolStripMenuItem mnuPopup_Monitor;3637	private Timer tmrMonitor;3839	private IContainer components;4041	private TreeListNode _tlnMonitor;4243	private TreeListControl tlcJobErrors;4445	private ToolStripMenuItem mnuPopup_Defrost;4647	private ToolStripMenuItem mnuPopup_ContinueSuccess;4849	private ToolStripMenuItem mnuPopup_ContinueError;5051	private string _filter = string.Empty;5253	private UserFilter _userFilter;5455	private ToolStripMenuItem mnuPopup_ShowError;5657	private CommandCenter viCC;5859	private Command cmdShowError;6061	private readonly AsynchronousQueue<TreeListNode> _objectNodes;6263	[CompilerGenerated]64	private EventHandler m_ProcessUpdated;6566	[CompilerGenerated]67	private EventHandler m_FilterChanged;6869	[DefaultValue(null)]70	[DesignerSerializationVisibility(/*Could not decode attribute arguments.*/)]71	public UserFilter Filter72	{73		get74		{75			return _userFilter;76		}77		set78		{79			_userFilter = value;80			_filter = frmMain.GetWhereClause(_userFilter);81			_InsertRootJob();82			EventHandler obj = this.FilterChanged;83			if (obj != null)84			{85				obj.Invoke((object)this, EventArgs.Empty);86			}87		}88	}8990	public event EventHandler ProcessUpdated91	{92		[CompilerGenerated]93		add94		{95			//IL_0010: Unknown result type (might be due to invalid IL or missing references)96			//IL_0016: Expected O, but got Unknown97			EventHandler val = this.m_ProcessUpdated;98			EventHandler val2;99			do100			{101				val2 = val;102				EventHandler val3 = (EventHandler)System.Delegate.Combine((System.Delegate)(object)val2, (System.Delegate)(object)value);103				val = Interlocked.CompareExchange<EventHandler>(ref this.m_ProcessUpdated, val3, val2);104			}105			while (val != val2);106		}107		[CompilerGenerated]108		remove109		{110			//IL_0010: Unknown result type (might be due to invalid IL or missing references)111			//IL_0016: Expected O, but got Unknown112			EventHandler val = this.m_ProcessUpdated;113			EventHandler val2;114			do115			{116				val2 = val;117				EventHandler val3 = (EventHandler)System.Delegate.Remove((System.Delegate)(object)val2, (System.Delegate)(object)value);118				val = Interlocked.CompareExchange<EventHandler>(ref this.m_ProcessUpdated, val3, val2);119			}120			while (val != val2);121		}122	}123124	public event EventHandler FilterChanged125	{126		[CompilerGenerated]127		add128		{129			//IL_0010: Unknown result type (might be due to invalid IL or missing references)130			//IL_0016: Expected O, but got Unknown131			EventHandler val = this.m_FilterChanged;132			EventHandler val2;133			do134			{135				val2 = val;136				EventHandler val3 = (EventHandler)System.Delegate.Combine((System.Delegate)(object)val2, (System.Delegate)(object)value);137				val = Interlocked.CompareExchange<EventHandler>(ref this.m_FilterChanged, val3, val2);138			}139			while (val != val2);140		}141		[CompilerGenerated]142		remove143		{144			//IL_0010: Unknown result type (might be due to invalid IL or missing references)145			//IL_0016: Expected O, but got Unknown146			EventHandler val = this.m_FilterChanged;147			EventHandler val2;148			do149			{150				val2 = val;151				EventHandler val3 = (EventHandler)System.Delegate.Remove((System.Delegate)(object)val2, (System.Delegate)(object)value);152				val = Interlocked.CompareExchange<EventHandler>(ref this.m_FilterChanged, val3, val2);153			}154			while (val != val2);155		}156	}157158	public DCJobErrors()159	{160		//IL_0050: Unknown result type (might be due to invalid IL or missing references)161		//IL_005a: Expected O, but got Unknown162		//IL_0066: Unknown result type (might be due to invalid IL or missing references)163		//IL_0070: Expected O, but got Unknown164		InitializeComponent();165		_TranslateForm();166		_objectNodes = new AsynchronousQueue<TreeListNode>("ObjekteNameQueue");167		_objectNodes.ProcessEntry += ObjectNodesProcessEntry;168		clsMain.Instance.ConnectionChanged += new EventHandler(clsMain_ConnectionChanged);169		clsMain.Instance.LayoutChanged += new EventHandler(clsMain_LayoutChanged);170		tlcJobErrors.ImageList = StockImageList.Small;171	}172173	public new void SelectJob(string strUID_Job)174	{175		if (((Dictionary<string, JobBase>)base.Jobs).ContainsKey(strUID_Job))176		{177			clsMain.Instance.CurrentJob = base.Jobs[strUID_Job];178		}179	}180181	public void RefreshData(TreeListNode tlNode)182	{183		if (tlNode != null)184		{185			_RefreshNode(tlNode);186		}187		else188		{189			_InsertRootJob();190		}191	}192193	protected override void Dispose(bool disposing)194	{195		//IL_0039: Unknown result type (might be due to invalid IL or missing references)196		//IL_0043: Expected O, but got Unknown197		//IL_004f: Unknown result type (might be due to invalid IL or missing references)198		//IL_0059: Expected O, but got Unknown199		_objectNodes.ProcessEntry -= ObjectNodesProcessEntry;200		_objectNodes.Clear();201		_objectNodes.Dispose();202		clsMain.Instance.ConnectionChanged -= new EventHandler(clsMain_ConnectionChanged);203		clsMain.Instance.LayoutChanged -= new EventHandler(clsMain_LayoutChanged);204		if (disposing && components != null)205		{206			((System.IDisposable)components).Dispose();207		}208		((ContainerControl)this).Dispose(disposing);209	}210211	protected override void OnHandleDestroyed(EventArgs e)212	{213		_SaveFormSettings();214		((Control)this).OnHandleDestroyed(e);215	}216217	private void InitializeComponent()218	{219		//IL_0001: Unknown result type (might be due to invalid IL or missing references)220		//IL_000b: Expected O, but got Unknown221		//IL_000c: Unknown result type (might be due to invalid IL or missing references)222		//IL_0016: Expected O, but got Unknown223		//IL_001d: Unknown result type (might be due to invalid IL or missing references)224		//IL_0027: Expected O, but got Unknown225		//IL_0028: Unknown result type (might be due to invalid IL or missing references)226		//IL_0032: Expected O, but got Unknown227		//IL_0033: Unknown result type (might be due to invalid IL or missing references)228		//IL_003d: Expected O, but got Unknown229		//IL_003e: Unknown result type (might be due to invalid IL or missing references)230		//IL_0048: Expected O, but got Unknown231		//IL_0049: Unknown result type (might be due to invalid IL or missing references)232		//IL_0053: Expected O, but got Unknown233		//IL_0054: Unknown result type (might be due to invalid IL or missing references)234		//IL_005e: Expected O, but got Unknown235		//IL_005f: Unknown result type (might be due to invalid IL or missing references)236		//IL_0069: Expected O, but got Unknown237		//IL_0070: Unknown result type (might be due to invalid IL or missing references)238		//IL_007a: Expected O, but got Unknown239		//IL_0134: Unknown result type (might be due to invalid IL or missing references)240		//IL_014b: Unknown result type (might be due to invalid IL or missing references)241		//IL_0155: Expected O, but got Unknown242		//IL_0172: Unknown result type (might be due to invalid IL or missing references)243		//IL_0199: Unknown result type (might be due to invalid IL or missing references)244		//IL_01a3: Expected O, but got Unknown245		//IL_01c0: Unknown result type (might be due to invalid IL or missing references)246		//IL_01e7: Unknown result type (might be due to invalid IL or missing references)247		//IL_01f1: Expected O, but got Unknown248		//IL_020e: Unknown result type (might be due to invalid IL or missing references)249		//IL_0235: Unknown result type (might be due to invalid IL or missing references)250		//IL_023f: Expected O, but got Unknown251		//IL_025c: Unknown result type (might be due to invalid IL or missing references)252		//IL_0283: Unknown result type (might be due to invalid IL or missing references)253		//IL_028d: Expected O, but got Unknown254		//IL_02aa: Unknown result type (might be due to invalid IL or missing references)255		//IL_02d1: Unknown result type (might be due to invalid IL or missing references)256		//IL_02db: Expected O, but got Unknown257		//IL_030f: Unknown result type (might be due to invalid IL or missing references)258		//IL_0346: Unknown result type (might be due to invalid IL or missing references)259		//IL_0350: Expected O, but got Unknown260		//IL_0374: Unknown result type (might be due to invalid IL or missing references)261		//IL_03af: Unknown result type (might be due to invalid IL or missing references)262		//IL_03c0: Unknown result type (might be due to invalid IL or missing references)263		//IL_03e1: Unknown result type (might be due to invalid IL or missing references)264		//IL_0413: Unknown result type (might be due to invalid IL or missing references)265		//IL_0423: Unknown result type (might be due to invalid IL or missing references)266		//IL_0474: Unknown result type (might be due to invalid IL or missing references)267		//IL_047e: Expected O, but got Unknown268		//IL_048b: Unknown result type (might be due to invalid IL or missing references)269		//IL_0495: Expected O, but got Unknown270		//IL_04fc: Unknown result type (might be due to invalid IL or missing references)271		//IL_0506: Expected O, but got Unknown272		//IL_0514: Unknown result type (might be due to invalid IL or missing references)273		//IL_053c: Unknown result type (might be due to invalid IL or missing references)274		//IL_0551: Unknown result type (might be due to invalid IL or missing references)275		//IL_0563: Unknown result type (might be due to invalid IL or missing references)276		//IL_056d: Expected O, but got Unknown277		components = (IContainer)new Container();278		columnHeader1 = new ColumnHeader();279		cmPopup = new ContextMenuStrip(components);280		mnuPopup_ConfigColumns = new ToolStripMenuItem();281		mnuPopup_Monitor = new ToolStripMenuItem();282		mnuPopup_Defrost = new ToolStripMenuItem();283		mnuPopup_ContinueSuccess = new ToolStripMenuItem();284		mnuPopup_ContinueError = new ToolStripMenuItem();285		mnuPopup_ShowError = new ToolStripMenuItem();286		tmrMonitor = new Timer(components);287		tlcJobErrors = new TreeListControl();288		viCC = new CommandCenter(components);289		cmdShowError = new Command(components);290		((Control)cmPopup).SuspendLayout();291		((Control)this).SuspendLayout();292		columnHeader1.Width = 180;293		((ToolStrip)cmPopup).Items.AddRange((ToolStripItem[])(object)new ToolStripItem[6]294		{295			(ToolStripItem)mnuPopup_ConfigColumns,296			(ToolStripItem)mnuPopup_Monitor,297			(ToolStripItem)mnuPopup_Defrost,298			(ToolStripItem)mnuPopup_ContinueSuccess,299			(ToolStripItem)mnuPopup_ContinueError,300			(ToolStripItem)mnuPopup_ShowError301		});302		((Control)cmPopup).Name = "cmPopup";303		((Control)cmPopup).Size = new Size(187, 136);304		((ToolStripDropDown)cmPopup).Opening += new CancelEventHandler(cmPopup_Opening);305		((ToolStripItem)mnuPopup_ConfigColumns).Name = "mnuPopup_ConfigColumns";306		((ToolStripItem)mnuPopup_ConfigColumns).Size = new Size(186, 22);307		((ToolStripItem)mnuPopup_ConfigColumns).Text = "~Configure Columns";308		((ToolStripItem)mnuPopup_ConfigColumns).Click += new EventHandler(menuConfigColumns_Click);309		((ToolStripItem)mnuPopup_Monitor).Name = "mnuPopup_Monitor";310		((ToolStripItem)mnuPopup_Monitor).Size = new Size(186, 22);311		((ToolStripItem)mnuPopup_Monitor).Text = "~Monitor JobChain";312		((ToolStripItem)mnuPopup_Monitor).Click += new EventHandler(mnuPopup_Monitor_Click);313		((ToolStripItem)mnuPopup_Defrost).Name = "mnuPopup_Defrost";314		((ToolStripItem)mnuPopup_Defrost).Size = new Size(186, 22);315		((ToolStripItem)mnuPopup_Defrost).Text = "~Defrost Job";316		((ToolStripItem)mnuPopup_Defrost).Click += new EventHandler(mnuPopup_ReactivateJob_Click);317		((ToolStripItem)mnuPopup_ContinueSuccess).Name = "mnuPopup_ContinueSuccess";318		((ToolStripItem)mnuPopup_ContinueSuccess).Size = new Size(186, 22);319		((ToolStripItem)mnuPopup_ContinueSuccess).Text = "~ContinueSuccess";320		((ToolStripItem)mnuPopup_ContinueSuccess).Click += new EventHandler(mnuPopup_Continue);321		((ToolStripItem)mnuPopup_ContinueError).Name = "mnuPopup_ContinueError";322		((ToolStripItem)mnuPopup_ContinueError).Size = new Size(186, 22);323		((ToolStripItem)mnuPopup_ContinueError).Text = "~ContinueError";324		((ToolStripItem)mnuPopup_ContinueError).Click += new EventHandler(mnuPopup_Continue);325		viCC.SetCommand((Component)(object)mnuPopup_ShowError, cmdShowError);326		((ToolStripItem)mnuPopup_ShowError).Name = "mnuPopup_ShowError";327		((ToolStripItem)mnuPopup_ShowError).Size = new Size(186, 22);328		((ToolStripItem)mnuPopup_ShowError).Text = "~ShowError";329		tmrMonitor.Interval = 2000;330		tmrMonitor.Tick += new EventHandler(tmrMonitor_Tick);331		tlcJobErrors.Appearance = new TreeListControlAppearance(paintDisabledNodesImageDisabled: true);332		tlcJobErrors.AutoExpandLimit = 50;333		((Control)tlcJobErrors).BackColor = SystemColors.Window;334		((Control)tlcJobErrors).ContextMenuStrip = cmPopup;335		((Control)tlcJobErrors).Dock = (DockStyle)5;336		tlcJobErrors.HideSelection = false;337		((Control)tlcJobErrors).Location = new Point(1, 1);338		((Control)tlcJobErrors).Margin = new Padding(0);339		tlcJobErrors.Name = "tlcJobErrors";340		tlcJobErrors.ScrollPadding = new Padding(0);341		tlcJobErrors.SelectionMode = SelectionMode.Multi;342		tlcJobErrors.ShowRootLines = false;343		((Control)tlcJobErrors).Size = new Size(494, 372);344		tlcJobErrors.SubTextColor = Color.Blue;345		((Control)tlcJobErrors).TabIndex = 1;346		tlcJobErrors.SelectedNodeChanged += tlcJobErrors_SelectedNodeChanged;347		tlcJobErrors.NodeExpanding += tlcJobErrors_NodeExpanding;348		((Control)tlcJobErrors).KeyDown += new KeyEventHandler(tlcJobErrors_KeyDown);349		((Control)tlcJobErrors).KeyUp += new KeyEventHandler(tlcJobErrors_KeyUp);350		viCC.Commands.AddRange(new Command[1] { cmdShowError });351		viCC.ImageList = null;352		viCC.ShowTextOnToolBar = false;353		viCC.Tag = null;354		viCC.ExecuteCommand += viCC_ExecuteCommand;355		viCC.CommandsUpdating += new EventHandler(viCC_CommandsUpdating);356		cmdShowError.Properties = MappingProperties.Enabled | MappingProperties.Checked | MappingProperties.Visible;357		((Control)this).BackColor = SystemColors.ControlDark;358		((Control)this).Controls.Add((Control)(object)tlcJobErrors);359		((Control)this).Name = "DCJobErrors";360		((Control)this).Padding = new Padding(1);361		((Control)this).Size = new Size(496, 374);362		((Control)this).KeyUp += new KeyEventHandler(tlcJobErrors_KeyUp);363		((Control)cmPopup).ResumeLayout(false);364		((Control)this).ResumeLayout(false);365	}366367	private void _LoadFormSettings()368	{369		base.Columns.Load(((Control)this).Name);370		TreeListHelper.InitializeTreeColumns(tlcJobErrors, base.Columns);371	}372373	private void _SaveFormSettings()374	{375		if (tlcJobErrors.Columns.Count > 0)376		{377			base.Columns.TreeColumn.Width = tlcJobErrors.Columns[0].EffectiveWidth;378			for (int i = 1; i < tlcJobErrors.Columns.Count; i++)379			{380				((Collection<Column>)(object)base.Columns)[i - 1].Width = tlcJobErrors.Columns[i].EffectiveWidth;381			}382			base.Columns.Save(((Control)this).Name);383		}384	}385386	private void _ClearTree()387	{388		try389		{390			tlcJobErrors.BeginUpdate();391			tlcJobErrors.Nodes.Clear();392		}393		finally394		{395			tlcJobErrors.EndUpdate();396		}397	}398399	private void _InsertRootJob()400	{401		//IL_00e9: Unknown result type (might be due to invalid IL or missing references)402		//IL_00ef: Invalid comparison between Unknown and I4403		if (clsMain.Instance.ConnectData == null)404		{405			return;406		}407		try408		{409			Cursor.Current = Cursors.WaitCursor;410			_objectNodes.Clear();411			((Dictionary<string, JobBase>)base.Jobs).Clear();412			tlcJobErrors.BeginUpdate();413			tlcJobErrors.Nodes.Clear();414			_tlnMonitor = null;415			TreeListNode treeListNode = tlcJobErrors.Nodes.Add(LanguageManager.Instance["frmJobErrors_ColumnTree"], 192);416			treeListNode.SetData(new NodeData(NodeType.Root, "", ""));417			treeListNode.ShowExpansionIndicator = false;418			_InsertBasisObjects(treeListNode);419			treeListNode.Expand(inclSubNodes: false);420			tlcJobErrors.SelectedNode = treeListNode;421		}422		catch (System.Exception ex)423		{424			ExceptionDialog.Show(((ContainerControl)this).ParentForm, ex);425			if (!string.IsNullOrEmpty(_filter) && (int)MessageBox.Show(LanguageManager.Instance["ResetFilter_Question"], LanguageManager.Instance["%Globals.QIM_ProductNameFull%"], (MessageBoxButtons)4, (MessageBoxIcon)48) == 6)426			{427				Filter = null;428			}429		}430		finally431		{432			tlcJobErrors.EndUpdate();433			Cursor.Current = Cursors.Default;434		}435	}436437	private void _InsertBasisObjects(TreeListNode tlnRoot)438	{439		SqlExecutor sqlExecutor = clsMain.Instance.ConnectData.Connection.CreateSqlExecutor(clsMain.Instance.ConnectData.PublicKey);440		ISqlFormatter sqlFormatter = clsMain.Instance.ConnectData.Connection.SqlFormatter;441		string text = sqlFormatter.Comparison("IsRootJob", true, ValType.Bool);442		if (!string.IsNullOrEmpty(_filter))443		{444			text = sqlFormatter.AndRelation(text, $"UID_Tree in ( select UID_Tree from JobQueue where {_filter} )");445		}446		string sqlStatement = "select coalesce(BasisObjectKey, '<null>'), Count(*) from JobQueue  where " + text + "  group by coalesce(BasisObjectKey, '<null>')  order by coalesce(BasisObjectKey, '<null>') asc";447		IDataReader val = (IDataReader)(object)new CachedDataReader(sqlExecutor.SqlExecute(sqlStatement));448		try449		{450			while (val.Read())451			{452				string text2 = ((IDataRecord)val).GetString(0);453				TreeListNode treeListNode;454				if (string.IsNullOrEmpty(text2) || string.Equals(text2, "<null>"))455				{456					treeListNode = tlnRoot.Nodes.Add(LanguageManager.Instance["frmJobChains_NoBasisObjectKey"], 147);457					text2 = null;458				}459				else460				{461					DbObjectKey dbObjectKey = new DbObjectKey(text2);462					treeListNode = tlnRoot.Nodes.Add(dbObjectKey.Tablename, 147);463				}464				treeListNode.SetData(new NodeData(NodeType.Object, text2, ""));465				treeListNode.UseSubItems = false;466				treeListNode.ShowExpansionIndicator = true;467				_objectNodes.Add(treeListNode);468			}469		}470		finally471		{472			((System.IDisposable)val)?.Dispose();473		}474		if (!tlnRoot.HasChildren && !string.IsNullOrEmpty(_filter))475		{476			TreeListNode treeListNode = tlnRoot.Nodes.Add(LanguageManager.Instance["NoResultForFilter"], 106);477			treeListNode.SetData(new NodeData(NodeType.Root, "", ""));478			treeListNode.ShowExpansionIndicator = false;479			treeListNode.UseSubItems = false;480		}481	}482483	private void _InsertObjectChains(TreeListNode tlnBasisObject)484	{485		NodeData data = tlnBasisObject.GetData();486		int num = 0;487		SqlExecutor sqlExecutor = clsMain.Instance.ConnectData.Connection.CreateSqlExecutor(clsMain.Instance.ConnectData.PublicKey);488		ISqlFormatter sqlFormatter = clsMain.Instance.ConnectData.Connection.SqlFormatter;489		string data2 = data.Data1;490		string systemIdentifier = clsMain.Instance.ConnectData.Connection.SystemIdentifier;491		string sqlStatement;492		if (!(systemIdentifier == "MSSQL"))493		{494			if (!(systemIdentifier == "ORACLE"))495			{496				if (!(systemIdentifier == "SQLite"))497				{498					throw new System.Exception($"Unknown DB-System '{clsMain.Instance.ConnectData.Connection.SystemIdentifier}' in frmJobChains._InsertJobChain");499				}500				sqlStatement = string.Concat(new string[5]501				{502					" select * from    (       select xdateinserted as xdateinserted, UID_Tree as tree, UID_Job as job         from ",503					clsMain.Instance.QueueName,504					"        where ",505					sqlFormatter.UidComparison("BasisObjectKey", data2),506					"          and IsRootJob = 1    )  where 1=1 "507				});508			}509			else510			{511				sqlStatement = string.Concat(new string[6]512				{513					" select * from    (       select xdateinserted as xdateinserted, UID_Tree as tree, UID_Job as job         from ",514					clsMain.Instance.QueueName,515					"        where ",516					sqlFormatter.UidComparison("BasisObjectKey", data2),517					"          and IsRootJob = 1    )  where 1=1 ",518					clsMain.Instance.ResultLimit.rlRowNum519				});520			}521		}522		else523		{524			sqlStatement = string.Concat(new string[10]525			{526				"select ",527				clsMain.Instance.ResultLimit.rlTop,528				" xdateinserted as xdateinserted, UID_Tree as tree, UID_Job as job from ",529				clsMain.Instance.QueueName,530				" ",531				sqlExecutor.Connection.SqlStrings["ReadPastOption"],532				" where ",533				sqlFormatter.UidComparison("BasisObjectKey", data2),534				"  and IsRootJob = 1 order by XDateInserted ",535				clsMain.Instance.ResultLimit.rlOrder536			});537		}538		try539		{540			tlcJobErrors.BeginUpdate();541			Cursor.Current = Cursors.WaitCursor;542			tlnBasisObject.Nodes.Clear();543			IDataReader val = (IDataReader)(object)new CachedDataReader(sqlExecutor.SqlExecute(sqlStatement));544			try545			{546				while (val.Read())547				{548					string caption = ((IDataRecord)val).GetDateTime(0).ToString();549					TreeListNode treeListNode = tlnBasisObject.Nodes.Add(caption, 82);550					treeListNode.SetData(new NodeData(NodeType.JobChain, ((IDataRecord)val).GetString(1), ((IDataRecord)val).GetString(2))551					{552						Job = new JobChain(((IDataRecord)val).GetString(1), val)553					});554					treeListNode.ShowExpansionIndicator = true;555					num++;556				}557			}558			finally559			{560				((System.IDisposable)val)?.Dispose();561			}562		}563		catch (System.Exception ex)564		{565			ExceptionDialog.Show(((ContainerControl)this).ParentForm, ex);566		}567		finally568		{569			tlcJobErrors.EndUpdate();570			Cursor.Current = Cursors.Default;571		}572	}573574	private void _InsertObjectHistory(TreeListNode tlnBasisObject)575	{576		NodeData data = tlnBasisObject.GetData();577		int num = 0;578		SqlExecutor sqlExecutor = clsMain.Instance.ConnectData.Connection.CreateSqlExecutor(clsMain.Instance.ConnectData.PublicKey);579		ISqlFormatter sqlFormatter = clsMain.Instance.ConnectData.Connection.SqlFormatter;580		string data2 = data.Data1;581		string systemIdentifier = clsMain.Instance.ConnectData.Connection.SystemIdentifier;582		string sqlStatement;583		if (!(systemIdentifier == "MSSQL"))584		{585			if (!(systemIdentifier == "ORACLE"))586			{587				if (!(systemIdentifier == "SQLite"))588				{589					throw new System.Exception($"Unknown DB-System '{clsMain.Instance.ConnectData.Connection.SystemIdentifier}' in frmJobChains._InsertJobChain");590				}591				sqlStatement = " select * from    (       select xdateinserted as xdateinserted, UID_Tree as tree, UID_Job as job         from JobHistory        where " + sqlFormatter.UidComparison("BasisObjectKey", data2) + "          and IsRootJob = 1    )  where 1=1 ";592			}593			else594			{595				sqlStatement = " select * from    (       select xdateinserted as xdateinserted, UID_Tree as tree, UID_Job as job         from JobHistory        where " + sqlFormatter.UidComparison("BasisObjectKey", data2) + "          and IsRootJob = 1    )  where 1=1 " + clsMain.Instance.ResultLimit.rlRowNum;596			}597		}598		else599		{600			sqlStatement = string.Concat(new string[6]601			{602				"select ",603				clsMain.Instance.ResultLimit.rlTop,604				" xdateinserted as xdateinserted, UID_Tree as tree, UID_Job as job from JobHistory where ",605				sqlFormatter.UidComparison("BasisObjectKey", data2),606				"  and IsRootJob = 1 order by XDateInserted ",607				clsMain.Instance.ResultLimit.rlOrder608			});609		}610		try611		{612			tlcJobErrors.BeginUpdate();613			Cursor.Current = Cursors.WaitCursor;614			IDataReader val = (IDataReader)(object)new CachedDataReader(sqlExecutor.SqlExecute(sqlStatement));615			try616			{617				while (val.Read())618				{619					string caption = ((IDataRecord)val).GetDateTime(0).ToString();620					TreeListNode treeListNode = tlnBasisObject.Nodes.Add(caption, 104);621					NodeData tag = new NodeData(NodeType.HistoryJobChain, ((IDataRecord)val).GetString(1), ((IDataRecord)val).GetString(2))622					{623						Job = new JobChain(((IDataRecord)val).GetString(1), val)624					};625					treeListNode.Tag = tag;626					treeListNode.ShowExpansionIndicator = true;627					num++;628				}629			}630			finally631			{632				((System.IDisposable)val)?.Dispose();633			}634		}635		catch (System.Exception ex)636		{637			ExceptionDialog.Show(((ContainerControl)this).ParentForm, ex);638		}639		finally640		{641			tlnBasisObject.Nodes.Sort((IComparer)(object)new TreeListNodeComparerCaption());642			tlcJobErrors.EndUpdate();643			Cursor.Current = Cursors.Default;644		}645	}646647	private void _DisableJobMonitoring()648	{649		if (_tlnMonitor != null)650		{651			_tlnMonitor.ImageIndex = 82;652			tmrMonitor.Stop();653			_tlnMonitor = null;654		}655	}656657	private void _InsertQueueJobs(TreeListNode tlnJobChain, bool update)658	{659		NodeData data = tlnJobChain.GetData();660		int num = 0;661		JobQueue jobQueue = new JobQueue("");662		SqlExecutor sqlExecutor = clsMain.Instance.ConnectData.Connection.CreateSqlExecutor(clsMain.Instance.ConnectData.PublicKey);663		ISqlFormatter sqlFormatter = sqlExecutor.Connection.SqlFormatter;664		global::_003C_003Ey__InlineArray4<object> buffer = default(global::_003C_003Ey__InlineArray4<object>);665		global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 0) = jobQueue.SQLColumns;666		global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 1) = clsMain.Instance.QueueName;667		global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 2) = sqlExecutor.Connection.SqlStrings["NoLockOption"];668		global::_003CPrivateImplementationDetails_003E.InlineArrayElementRef<global::_003C_003Ey__InlineArray4<object>, object>(ref buffer, 3) = sqlFormatter.UidComparison("UID_Tree", data.Data1);669		string sqlStatement = string.Format("select {0} from {1} {2} where {3}", global::_003CPrivateImplementationDetails_003E.InlineArrayAsReadOnlySpan<global::_003C_003Ey__InlineArray4<object>, object>(in buffer, 4));670		try671		{672			tlcJobErrors.BeginUpdate();673			Cursor.Current = Cursors.WaitCursor;674			if (!update)675			{676				tlnJobChain.Nodes.Clear();677			}678			IDataReader val = (IDataReader)(object)new CachedDataReader(sqlExecutor.SqlExecute(sqlStatement));679			try680			{681				while (val.Read())682				{683					string text = ((IDataRecord)val).GetString(0);684					jobQueue = new JobQueue(text, (IDataRecord)(object)val, null);685					if (((Dictionary<string, JobBase>)base.Jobs).ContainsKey(text))686					{687						base.Jobs[text] = jobQueue;688					}689					else690					{691						base.Jobs.Add(jobQueue);692					}693					num++;694				}695				if (num == 0 && update)696				{697					_DisableJobMonitoring();698					_RemoveChainFromTree(tlnJobChain);699				}700			}701			finally702			{703				((System.IDisposable)val)?.Dispose();704			}705			if (update)706			{707				_RefreshJobsOfTree(tlnJobChain);708			}709			else710			{711				_InsertQueueJobsOfTree(tlnJobChain);712			}713			_ParseTreeProcess(tlnJobChain);714		}715		catch (System.Exception ex)716		{717			ExceptionDialog.Show(((ContainerControl)this).ParentForm, ex);718		}719		finally720		{721			tlcJobErrors.EndUpdate();722			Cursor.Current = Cursors.Default;723		}724	}725726	private void _InsertQueueJobsOfTree(TreeListNode tlnJobChain)727	{728		NodeData data = tlnJobChain.GetData();729		JobBase jobBase = default(JobBase);730		if (((Dictionary<string, JobBase>)base.Jobs).TryGetValue(data.Data2, ref jobBase))731		{732			_InsertQueueJobsOfTreeSub(tlnJobChain, jobBase as JobQueue, success: true);733		}734	}735736	private void _InsertQueueJobsOfTreeSub(TreeListNode tlnParent, JobQueue job, bool success)737	{738		//IL_0055: Unknown result type (might be due to invalid IL or missing references)739		if (job != null)740		{741			NodeData nData = new NodeData742			{743				Type = NodeType.Job,744				Data1 = job.GetValue("UID_Job"),745				Job = job746			};747			TreeListNode treeListNode = tlnParent.Nodes.Add(job.GetValue("TaskName"), 109);748			treeListNode.SetData(nData);749			treeListNode.ForeColor = job.StateColor;750			treeListNode.Icon = ServerStateUI.GetStateIcon(job);751			TreeListHelper.InsertTreeColumns(treeListNode, base.Columns, job);752			string text = job.GetValue("UID_JobSuccess").String;753			JobBase jobBase = default(JobBase);754			if (!string.IsNullOrEmpty(text) && ((Dictionary<string, JobBase>)base.Jobs).TryGetValue(text, ref jobBase))755			{756				_InsertQueueJobsOfTreeSub(treeListNode, jobBase as JobQueue, success: true);757			}758			text = job.GetValue("UID_JobError").String;759			JobBase jobBase2 = default(JobBase);760			if (!string.IsNullOrEmpty(text) && ((Dictionary<string, JobBase>)base.Jobs).TryGetValue(text, ref jobBase2))761			{762				_InsertQueueJobsOfTreeSub(treeListNode, jobBase2 as JobQueue, success: false);763			}764		}765	}766767	private void _InsertHistoryJobs(TreeListNode tlnJobChain, bool update)768	{769		NodeData data = tlnJobChain.GetData();770		int num = 0;771		JobHistory jobHistory = new JobHistory("");772		SqlExecutor sqlExecutor = clsMain.Instance.ConnectData.Connection.CreateSqlExecutor(clsMain.Instance.ConnectData.PublicKey);773		ISqlFormatter sqlFormatter = sqlExecutor.Connection.SqlFormatter;774		string sqlStatement = string.Format("select {0} from JobHistory where {1}", (object)jobHistory.SQLColumns, (object)sqlFormatter.UidComparison("UID_Tree", data.Data1));775		try776		{777			tlcJobErrors.BeginUpdate();778			Cursor.Current = Cursors.WaitCursor;779			if (!update)780			{781				tlnJobChain.Nodes.Clear();782			}783			IDataReader val = (IDataReader)(object)new CachedDataReader(sqlExecutor.SqlExecute(sqlStatement));784			try785			{786				while (val.Read())787				{788					string text = ((IDataRecord)val).GetString(0);789					jobHistory = new JobHistory(text, val);790					base.Jobs[text] = jobHistory;791					num++;792				}793				if (num == 0)794				{795					_RemoveChainFromTree(tlnJobChain);796				}797			}798			finally799			{800				((System.IDisposable)val)?.Dispose();801			}802			_InsertHistoryJobsOfTree(tlnJobChain);803		}804		catch (System.Exception ex)805		{806			ExceptionDialog.Show(((ContainerControl)this).ParentForm, ex);807		}808		finally809		{810			tlcJobErrors.EndUpdate();811			Cursor.Current = Cursors.Default;812		}813	}814815	private void _InsertHistoryJobsOfTree(TreeListNode tlnJobChain)816	{817		NodeData data = tlnJobChain.GetData();818		JobBase jobBase = default(JobBase);819		if (((Dictionary<string, JobBase>)base.Jobs).TryGetValue(data.Data2, ref jobBase))820		{821			_InsertHistoryJobsOfTreeSub(tlnJobChain, jobBase as JobHistory, success: true);822		}823	}824825	private void _InsertHistoryJobsOfTreeSub(TreeListNode tlnParent, JobHistory job, bool success)826	{827		//IL_0056: Unknown result type (might be due to invalid IL or missing references)828		if (job != null)829		{830			NodeData nData = new NodeData831			{832				Type = NodeType.HistoryJob,833				Data1 = job.GetValue("UID_Job"),834				Job = job835			};836			TreeListNode treeListNode = tlnParent.Nodes.Add(job.GetValue("TaskName"), 109);837			treeListNode.SetData(nData);838			treeListNode.ForeColor = job.StateColor;839			TreeListHelper.InsertTreeColumns(treeListNode, base.Columns, job);840			bool flag = (bool)DbVal.ConvertTo(job.GetValue("WasError"), ValType.Bool);841			string text = job.GetValue("UID_JobSuccess").String;842			JobBase jobBase = default(JobBase);843			if (!string.IsNullOrEmpty(text) && !flag && ((Dictionary<string, JobBase>)base.Jobs).TryGetValue(text, ref jobBase))844			{845				_InsertHistoryJobsOfTreeSub(treeListNode, jobBase as JobHistory, success: true);846			}847			text = job.GetValue("UID_JobError").String;848			JobBase jobBase2 = default(JobBase);849			if (!string.IsNullOrEmpty(text) && flag && ((Dictionary<string, JobBase>)base.Jobs).TryGetValue(text, ref jobBase2))850			{851				_InsertHistoryJobsOfTreeSub(treeListNode, jobBase2 as JobHistory, success: false);852			}853		}854	}855856	private void _RefreshNode(TreeListNode node)857	{858		if (node == null)859		{860			return;861		}862		try863		{864			switch (node.GetData().Type)865			{866			case NodeType.Root:867				_InsertRootJob();868				break;869			case NodeType.Object:870				_InsertObjectChains(node);871				_InsertObjectHistory(node);872				break;873			case NodeType.JobChain:874				_InsertQueueJobs(node, update: true);875				break;876			case NodeType.Job:877				_InsertQueueJobs(_GetChainRoot(node), update: true);878				break;879			}880			if (this.ProcessUpdated != null)881			{882				this.ProcessUpdated.Invoke((object)this, EventArgs.Empty);883			}884		}885		catch (System.Exception ex)886		{887			ExceptionDialog.Show(((ContainerControl)this).ParentForm, ex);888		}889	}890891	private void _ParseTreeProcess(TreeListNode tlnJobChain)892	{893		if (tlnJobChain.Nodes.Count == 1)894		{895			_ParseTreeProcess_Sub(tlnJobChain.Nodes[0]);896		}897	}898899	private int _ParseTreeProcess_Sub(TreeListNode tlnJob)900	{901		int num = _ParseTreeProcess_NodeState(tlnJob);902		if (tlnJob.Nodes.Count == 2)903		{904			int num2 = _ParseTreeProcess_Sub(tlnJob.Nodes[0]);905			int num3 = _ParseTreeProcess_Sub(tlnJob.Nodes[1]);906			if (num2 != num3)907			{908				if (num2 > num3)909				{910					_ParseTreeProcess_Disable(tlnJob.Nodes[1]);911				}912				else913				{914					_ParseTreeProcess_Disable(tlnJob.Nodes[0]);915				}916			}917			num = Math.Max(num, Math.Max(num2, num3));918		}919		else if (tlnJob.Nodes.Count == 1)920		{921			num = Math.Max(num, _ParseTreeProcess_Sub(tlnJob.Nodes[0]));922		}923		return num;924	}925926	private void _ParseTreeProcess_Disable(TreeListNode tlnJob)927	{928		//IL_0031: Unknown result type (might be due to invalid IL or missing references)929		System.Collections.Generic.IEnumerator<TreeListNode> enumerator = tlnJob.Nodes.GetEnumerator();930		try931		{932			while (((System.Collections.IEnumerator)enumerator).MoveNext())933			{934				TreeListNode current = enumerator.Current;935				_ParseTreeProcess_Disable(current);936			}937		}938		finally939		{940			((System.IDisposable)enumerator)?.Dispose();941		}942		tlnJob.ForeColor = Color.Gray;943	}944945	private static int _ParseTreeProcess_NodeState(TreeListNode tlnJob)946	{947		NodeData data = tlnJob.GetData();948		int result = 0;949		if (data != null)950		{951			string text = (data.Job as JobQueue).GetValue("Ready2Exe").String.ToUpperInvariant();952			if (!(text == "TRUE"))953			{954				if (!(text == "PROCESSING"))955				{956					if (text == "FINISHED")957					{958						result = 3;959					}960				}961				else962				{963					result = 2;964				}965			}966			else967			{968				result = 1;969			}970		}971		return result;972	}973974	private void _DeleteJobChain(TreeListNode node)975	{976		SqlExecutor sqlExecutor = null;977		TreeListNode selectedNode = null;978		if (node == null || string.Compare(clsMain.Instance.ConnectData.Connection.Database.Data.GetValue("CustomerNumber").String, "12208") == 0)979		{980			return;981		}982		try983		{984			Cursor.Current = Cursors.WaitCursor;985			tlcJobErrors.BeginUpdate();986			TreeListNode treeListNode = _GetChainRoot(node);987			selectedNode = treeListNode.NextSibling;988			NodeData data = treeListNode.GetData();989			sqlExecutor = clsMain.Instance.ConnectData.Connection.CreateSqlExecutor(clsMain.Instance.ConnectData.PublicKey);990			ISqlFormatter sqlFormatter = sqlExecutor.Connection.SqlFormatter;991			switch (data.Type)992			{993			case NodeType.JobChain:994			{995				string sqlStatement = string.Format("delete from {0} where {1}", (object)clsMain.Instance.QueueName, (object)sqlFormatter.UidComparison("UID_Tree", data.Data1));996				using (Transaction transaction2 = new Transaction(clsMain.Instance.ConnectData.Connection))997				{998					sqlExecutor.SqlExecuteNonQuery(sqlStatement);999					transaction2.Commit();1000				}1001				treeListNode.ParentNode.Nodes.Remove(treeListNode);1002				break;1003			}1004			case NodeType.JobChains:1005			{1006				string sqlStatement = string.Format("delete from {0} where {1}", (object)clsMain.Instance.QueueName, (object)sqlFormatter.Comparison("JobChainName", data.Data1, ValType.String));1007				using (Transaction transaction = new Transaction(clsMain.Instance.ConnectData.Connection))1008				{1009					sqlExecutor.SqlExecuteNonQuery(sqlStatement);1010					transaction.Commit();1011				}1012				treeListNode.ParentNode.Nodes.Remove(treeListNode);1013				break;1014			}1015			}1016		}1017		catch (System.Exception ex)1018		{1019			ExceptionDialog.Show(((ContainerControl)this).ParentForm, ex);1020		}1021		finally1022		{1023			tlcJobErrors.EndUpdate();1024			Cursor.Current = Cursors.Default;1025			tlcJobErrors.SelectedNode = selectedNode;1026		}1027	}10281029	private void _SetJobStartTime(TreeListNode node)1030	{1031		if (node == null)1032		{1033			return;1034		}1035		try1036		{1037			Cursor.Current = Cursors.WaitCursor;1038			tlcJobErrors.BeginUpdate();1039			NodeData data = node.GetData();1040			if (data.Type == NodeType.Job)1041			{1042				ISingleDbObject singleDbObject = clsMain.Instance.ConnectData.Connection.CreateSingle("JobQueue");1043				singleDbObject.PutValue("UID_Job", data.Data1);1044				singleDbObject.Load();1045				singleDbObject.Custom.CallMethod("SetStartAt", DbVal.DefaultValue(ValType.Date));1046				singleDbObject.Save();1047				_RefreshNode(node);1048			}1049		}1050		catch (System.Exception ex)1051		{1052			ExceptionDialog.Show(((ContainerControl)this).ParentForm, ex);1053		}1054		finally1055		{1056			tlcJobErrors.EndUpdate();1057			Cursor.Current = Cursors.Default;1058		}1059	}10601061	private void _SetJobPriority(TreeListNode node)1062	{1063		if (node == null)1064		{1065			return;1066		}1067		try1068		{1069			Cursor.Current = Cursors.WaitCursor;1070			tlcJobErrors.BeginUpdate();1071			NodeData data = node.GetData();1072			if (data.Type == NodeType.Job)1073			{1074				SqlExecutor sqlExecutor = (sqlExecutor = clsMain.Instance.ConnectData.Connection.CreateSqlExecutor(clsMain.Instance.ConnectData.PublicKey));1075				ISqlFormatter sqlFormatter = sqlExecutor.Connection.SqlFormatter;1076				string sqlStatement = string.Format("update {0} set Priority = Priority + 1 where {1}", (object)clsMain.Instance.QueueName, (object)sqlFormatter.UidComparison("UID_Job", data.Data1));1077				using (Transaction transaction = new Transaction(clsMain.Instance.ConnectData.Connection))1078				{1079					sqlExecutor.SqlExecuteNonQuery(sqlStatement);1080					transaction.Commit();1081				}1082				_RefreshNode(node);1083			}1084		}1085		catch (System.Exception ex)1086		{1087			ExceptionDialog.Show(((ContainerControl)this).ParentForm, ex);1088		}1089		finally1090		{1091			tlcJobErrors.EndUpdate();1092			Cursor.Current = Cursors.Default;1093		}1094	}10951096	private void _SetJobDefrost(TreeListNode node)1097	{1098		if (node == null)1099		{1100			return;1101		}1102		try1103		{1104			Cursor.Current = Cursors.WaitCursor;1105			tlcJobErrors.BeginUpdate();1106			NodeData data = node.GetData();1107			if (Job_ResetFrozen(data))1108			{1109				_RefreshNode(node);1110			}1111		}1112		catch (System.Exception ex)1113		{1114			ExceptionDialog.Show(((ContainerControl)this).ParentForm, ex);1115		}1116		finally1117		{1118			tlcJobErrors.EndUpdate();1119			Cursor.Current = Cursors.Default;1120		}1121	}11221123	private void _SetJobOverLimit(TreeListNode node)1124	{1125		if (node == null)1126		{1127			return;1128		}1129		try1130		{1131			Cursor.Current = Cursors.WaitCursor;1132			tlcJobErrors.BeginUpdate();1133			NodeData data = node.GetData();1134			if (data.Type == NodeType.Job && data.Job.IsState("OVERLIMIT"))1135			{1136				ISingleDbObject singleDbObject = clsMain.Instance.ConnectData.Connection.CreateSingle("JobQueue");1137				singleDbObject["UID_Job"].NewValue = data.Data1;1138				singleDbObject.Load();1139				singleDbObject.Custom.CallMethod("ResetOverlimit");1140				singleDbObject.Save();1141				_RefreshNode(node);1142			}1143		}1144		catch (System.Exception ex)1145		{1146			ExceptionDialog.Show(((ContainerControl)this).ParentForm, ex);1147		}1148		finally1149		{1150			tlcJobErrors.EndUpdate();1151			Cursor.Current = Cursors.Default;1152		}1153	}11541155	private void _SetJobContinue(TreeListNode node, bool bSuccess)1156	{1157		if (node == null)1158		{1159			return;1160		}1161		try1162		{1163			Cursor.Current = Cursors.WaitCursor;1164			tlcJobErrors.BeginUpdate();1165			NodeData data = node.GetData();1166			if (data.Type == NodeType.Job && data.Job.IsState("FROZEN"))1167			{1168				ISingleDbObject singleDbObject = clsMain.Instance.ConnectData.Connection.CreateSingle("JobQueue");1169				singleDbObject["UID_Job"].NewValue = data.Data1;1170				singleDbObject.Load();1171				singleDbObject.Custom.CallMethod("ResetFrozen", bSuccess);1172				_RefreshNode(node);1173			}1174		}1175		catch (System.Exception ex)1176		{1177			ExceptionDialog.Show(((ContainerControl)this).ParentForm, ex);1178		}1179		finally1180		{1181			tlcJobErrors.EndUpdate();1182			Cursor.Current = Cursors.Default;1183		}1184	}11851186	private TreeListNode _GetChainRoot(TreeListNode node)1187	{1188		if (node == null)1189		{1190			return null;1191		}1192		if (node.GetData().Type == NodeType.Job)1193		{1194			return _GetChainRoot(node.ParentNode);1195		}1196		return node;1197	}11981199	private void _RefreshJobsOfTree(TreeListNode tlnJobChain)1200	{1201		if (tlnJobChain.Nodes.Count > 0)1202		{1203			NodeData data = tlnJobChain.GetData();1204			JobQueue job = base.Jobs[data.Data2] as JobQueue;1205			_RefreshJobsOfTree(tlnJobChain.Nodes[0], job);1206		}1207	}12081209	private void _RefreshJobsOfTree(TreeListNode tlnJob, JobQueue job)1210	{1211		//IL_0017: Unknown result type (might be due to invalid IL or missing references)1212		NodeData data = tlnJob.GetData();1213		int num = 0;1214		TreeListHelper.InsertTreeColumns(tlnJob, base.Columns, job);1215		tlnJob.ForeColor = job.StateColor;1216		data.Job = job;1217		if (job.HasJobSuccess)1218		{1219			JobQueue job2 = base.Jobs[job.GetValue("UID_JobSuccess").String] as JobQueue;1220			_RefreshJobsOfTree(tlnJob.Nodes[num], job2);1221			num++;1222		}1223		if (job.HasJobError)1224		{1225			JobQueue job3 = base.Jobs[job.GetValue("UID_JobError").String] as JobQueue;1226			_RefreshJobsOfTree(tlnJob.Nodes[num], job3);1227		}1228	}12291230	private void _RemoveChainFromTree(TreeListNode tlnJobChain)1231	{1232		TreeListNode treeListNode = null;1233		try1234		{1235			tlcJobErrors.BeginUpdate();1236			treeListNode = tlnJobChain.NextSibling;1237			tlnJobChain.ParentNode.Nodes.Remove(tlnJobChain);1238		}1239		finally1240		{1241			if (treeListNode == null && tlcJobErrors.Nodes.Count > 0)1242			{1243				treeListNode = tlcJobErrors.Nodes[0];1244			}1245			tlcJobErrors.SelectedNode = treeListNode;1246			tlcJobErrors.EndUpdate();1247		}1248	}12491250	private void _ConfigureColumns()1251	{1252		//IL_0018: Unknown result type (might be due to invalid IL or missing references)1253		//IL_001e: Invalid comparison between Unknown and I41254		frmConfigureColumns frmConfigureColumns2 = new frmConfigureColumns(new JobQueue(""));1255		try1256		{1257			if ((int)frmConfigureColumns2.ConfigureColumns((IWin32Window)(object)this, base.Columns) == 1)1258			{1259				TreeListHelper.InitializeTreeColumns(tlcJobErrors, base.Columns);1260				_InsertRootJob();1261			}1262		}1263		finally1264		{1265			((System.IDisposable)frmConfigureColumns2)?.Dispose();1266		}1267	}12681269	private void menuConfigColumns_Click(object sender, EventArgs e)1270	{1271		_ConfigureColumns();1272	}12731274	private void _TranslateForm()1275	{1276		LanguageManager instance = LanguageManager.Instance;1277		((Control)this).Text = instance["frmJobChains_Caption"];1278		base.Columns.TreeColumn.Display = instance["frmJobChains_ColumnTree"];1279		((ToolStripItem)mnuPopup_ConfigColumns).Text = instance["frmJobChains_PopUp_ConfigureColumns"];1280		((ToolStripItem)mnuPopup_Monitor).Text = instance["frmJobChains_PopUp_MonitorJobChain"];1281		((ToolStripItem)mnuPopup_Defrost).Text = instance["frmJobChains_PopUp_Defrost"];1282		((ToolStripItem)mnuPopup_ContinueSuccess).Text = instance["frmJobChains_PopUp_ContinueSuccess"];1283		((ToolStripItem)mnuPopup_ContinueError).Text = instance["frmJobChains_PopUp_ContinueError"];1284		((ToolStripItem)mnuPopup_ShowError).Text = instance["frmJobChains_PopUp_ShowError"];1285	}12861287	private void cmPopup_Opening(object sender, EventArgs e)1288	{1289		_GetSelectNode();1290		IConnection connection = clsMain.Instance?.ConnectData?.Connection;1291		int num;1292		if (connection != null && connection.User != null)1293		{1294			num = ((!connection.User.IsReadOnly) ? 1 : 0);1295			if (num == 0)1296			{1297				goto IL_0068;1298			}1299		}1300		else1301		{1302			num = 1;1303		}1304		if (!IsAnySelectedJob(tlcJobErrors, "FROZEN"))1305		{1306			goto IL_0068;1307		}1308		int num2 = (IsAllowed(connection, "JobQueue_Frozen") ? 1 : 0);1309		goto IL_0069;1310		IL_0068:1311		num2 = 0;1312		goto IL_0069;1313		IL_0069:1314		bool flag = (byte)num2 != 0;1315		bool flag2 = num != 0 && IsAnySelectedJob(tlcJobErrors, "OVERLIMIT") && IsAllowed(connection, "JobQueue_Frozen");1316		((ToolStripItem)mnuPopup_Defrost).Enabled = flag || flag2;1317		((ToolStripItem)mnuPopup_ContinueSuccess).Visible = flag;1318		((ToolStripItem)mnuPopup_ContinueError).Visible = flag;1319		viCC.UpdateCommands();1320	}13211322	private void tmrMonitor_Tick(object sender, EventArgs e)1323	{1324		if (!((Component)this).DesignMode)1325		{1326			if (_tlnMonitor == null)1327			{1328				tmrMonitor.Stop();1329				return;1330			}1331			tmrMonitor.Stop();1332			_RefreshNode(_tlnMonitor);1333			tmrMonitor.Start();1334		}1335	}13361337	private void mnuPopup_Monitor_Click(object sender, EventArgs e)1338	{1339		if (tlcJobErrors.SelectedNode != null)1340		{1341			_tlnMonitor = _GetChainRoot(tlcJobErrors.SelectedNode);1342			_tlnMonitor.ImageIndex = 208;1343			tmrMonitor.Start();1344			((Control)tlcJobErrors).Invalidate();1345		}1346	}13471348	private void mnuPopup_ReactivateJob_Click(object sender, EventArgs e)1349	{1350		try1351		{1352			if (tlcJobErrors.SelectedNodes.Count > 20)1353			{1354				BusyDialog.MainText = "Update JobState";1355				BusyDialog.DetailText = "";1356				BusyDialog.Show();1357			}1358			foreach (TreeListNode selectedNode in tlcJobErrors.SelectedNodes)1359			{1360				NodeData data = selectedNode.GetData();1361				if (data != null)1362				{1363					if (data.Type == NodeType.Job && data.Job.IsState("FROZEN"))1364					{1365						_SetJobDefrost(selectedNode);1366					}1367					else1368					{1369						_SetJobOverLimit(selectedNode);1370					}1371				}1372			}1373		}1374		finally1375		{1376			BusyDialog.Hide();1377		}1378	}13791380	private void mnuPopup_Continue(object sender, EventArgs e)1381	{1382		//IL_0032: Unknown result type (might be due to invalid IL or missing references)1383		//IL_0038: Expected O, but got Unknown1384		try1385		{1386			if (tlcJobErrors.SelectedNodes.Count > 20)1387			{1388				BusyDialog.MainText = "Update JobState";1389				BusyDialog.DetailText = "";1390				BusyDialog.Show();1391			}1392			ArrayList val = new ArrayList();1393			foreach (TreeListNode selectedNode in tlcJobErrors.SelectedNodes)1394			{1395				val.Add((object)selectedNode);1396			}1397			foreach (TreeListNode item in val)1398			{1399				_SetJobContinue(item, sender == mnuPopup_ContinueSuccess);1400			}1401		}1402		finally1403		{1404			BusyDialog.Hide();1405		}1406	}14071408	private void tlcJobErrors_KeyUp(object sender, KeyEventArgs e)1409	{1410		//IL_0001: Unknown result type (might be due to invalid IL or missing references)1411		//IL_0006: Unknown result type (might be due to invalid IL or missing references)1412		//IL_0007: Unknown result type (might be due to invalid IL or missing references)1413		//IL_000a: Invalid comparison between Unknown and I41414		//IL_000c: Unknown result type (might be due to invalid IL or missing references)1415		//IL_000f: Invalid comparison between Unknown and I41416		Keys keyCode = e.KeyCode;1417		if ((int)keyCode != 112)1418		{1419			if ((int)keyCode == 116)1420			{1421				if (tlcJobErrors.SelectedNode != null)1422				{1423					_RefreshNode(tlcJobErrors.SelectedNode);1424				}1425				else1426				{1427					_InsertRootJob();1428				}1429				e.Handled = true;1430			}1431		}1432		else1433		{1434			HelpMgr.Instance.ShowHelp("Help\\JobQueueInfo\\Basisobjekte", showNoHelpInfo: true);1435		}1436	}14371438	private void tlcJobErrors_KeyDown(object sender, KeyEventArgs e)1439	{1440		//IL_0055: Unknown result type (might be due to invalid IL or missing references)1441		//IL_005a: Unknown result type (might be due to invalid IL or missing references)1442		//IL_005b: Unknown result type (might be due to invalid IL or missing references)1443		//IL_005e: Invalid comparison between Unknown and I41444		//IL_0060: Unknown result type (might be due to invalid IL or missing references)1445		//IL_0063: Invalid comparison between Unknown and I41446		//IL_0065: Unknown result type (might be due to invalid IL or missing references)1447		//IL_0068: Invalid comparison between Unknown and I41448		if (!e.Control || tlcJobErrors.SelectedNode == null)1449		{1450			return;1451		}1452		IConnection connection = clsMain.Instance?.ConnectData?.Connection;1453		if (connection != null && connection.User != null && connection.User.IsReadOnly)1454		{1455			return;1456		}1457		try1458		{1459			Keys keyCode = e.KeyCode;1460			if ((int)keyCode != 68)1461			{1462				if ((int)keyCode != 80)1463				{1464					if ((int)keyCode != 83)1465					{1466						return;1467					}1468					foreach (TreeListNode selectedNode in tlcJobErrors.SelectedNodes)1469					{1470						_SetJobStartTime(selectedNode);1471					}1472					e.Handled = true;1473					return;1474				}1475				foreach (TreeListNode selectedNode2 in tlcJobErrors.SelectedNodes)1476				{1477					_SetJobPriority(selectedNode2);1478				}1479				e.Handled = true;1480			}1481			else1482			{1483				_DeleteJobChain(tlcJobErrors.SelectedNode);1484				e.Handled = true;1485			}1486		}1487		catch (System.Exception exception)1488		{1489			ExceptionMgr.Instance.HandleException(exception, this);1490		}1491	}14921493	public void viReset()1494	{1495		_ClearTree();1496	}14971498	public void viActivate()1499	{1500		_InsertRootJob();1501	}15021503	private void tlcJobErrors_NodeExpanding(object sender, TreeListEventArgs args)1504	{1505		switch (args.Node.GetData().Type)1506		{1507		case NodeType.Object:1508			_InsertObjectChains(args.Node);1509			_InsertObjectHistory(args.Node);1510			break;1511		case NodeType.JobChain:1512			_InsertQueueJobs(args.Node, update: false);1513			break;1514		case NodeType.HistoryJobChain:1515			_InsertHistoryJobs(args.Node, update: false);1516			break;1517		}1518	}15191520	private void tlcJobErrors_SelectedNodeChanged(object sender, TreeListEventArgs args)1521	{1522		if (args.Node != null)1523		{1524			NodeData data = args.Node.GetData();1525			if (data.Type == NodeType.Job)1526			{1527				clsMain.Instance.CurrentJob = base.Jobs[data.Data1] as JobQueue;1528			}1529			else if (data.Type == NodeType.HistoryJob)1530			{1531				clsMain.Instance.CurrentJob = base.Jobs[data.Data1] as JobHistory;1532			}1533			else if (data.Type == NodeType.JobChain)1534			{1535				_InsertQueueJobs(args.Node, args.Node.HasChildren);1536				clsMain.Instance.CurrentJob = data.Job;1537			}1538			else1539			{1540				clsMain.Instance.CurrentJob = null;1541			}1542		}1543		else1544		{1545			clsMain.Instance.CurrentJob = null;1546		}1547		if (_tlnMonitor != _GetChainRoot(args.Node))1548		{1549			_DisableJobMonitoring();1550		}1551	}15521553	private void clsMain_ConnectionChanged(object sender, EventArgs e)1554	{1555		if (clsMain.Instance.ConnectData != null && ((Control)this).Parent != null)1556		{1557			_LoadFormSettings();1558			if (((Control)this).IsHandleCreated)1559			{1560				_InsertRootJob();1561			}1562		}1563		else1564		{1565			_DisableJobMonitoring();1566			_ClearTree();1567		}1568	}15691570	private void clsMain_LayoutChanged(object sender, EventArgs e)1571	{1572		_LoadFormSettings();1573	}15741575	private string _GetSelectNodeState()1576	{1577		if (tlcJobErrors.SelectedNode != null)1578		{1579			NodeData data = tlcJobErrors.SelectedNode.GetData();1580			((ToolStripItem)mnuPopup_Monitor).Enabled = data.Type == NodeType.Job || data.Type == NodeType.JobChain;1581			if (data.Type == NodeType.Job)1582			{1583				return (base.Jobs[data.Data1] as JobQueue).GetValue("Ready2Exe").String.ToUpperInvariant();1584			}1585		}1586		return "";1587	}15881589	private JobQueue _GetSelectNode()1590	{1591		if (tlcJobErrors.SelectedNode != null)1592		{1593			NodeData data = tlcJobErrors.SelectedNode.GetData();1594			((ToolStripItem)mnuPopup_Monitor).Enabled = data.Type == NodeType.Job || data.Type == NodeType.JobChain;1595			if (data.Type == NodeType.Job)1596			{1597				return base.Jobs[data.Data1] as JobQueue;1598			}1599		}1600		return null;1601	}16021603	private void ObjectNodesProcessEntry(object sender, EntryEventArgs<TreeListNode> e)1604	{1605		if (clsMain.Instance.ConnectData == null || !((Control)this).IsHandleCreated)1606		{1607			return;1608		}1609		TreeListNode entry = e.Entry;1610		NodeData data = entry.GetData();1611		string value = "";1612		try1613		{1614			if (string.IsNullOrEmpty(data.Data1))1615			{1616				return;1617			}1618			Query query = Query.From(new DbObjectKey(data.Data1)).SelectDisplays();1619			IEntityCollection collection = clsMain.Instance.ConnectData.Connection.Session.Source().GetCollection(query);1620			if (((System.Collections.Generic.IReadOnlyCollection<IEntity>)collection).Count > 0)1621			{1622				value = ((System.Collections.Generic.IReadOnlyList<IEntity>)collection)[0].Display;1623			}1624		}1625		catch1626		{1627			value = "";1628		}1629		((Control)this).Invoke((System.Delegate)new SetStringEventHandler(_SetObjectText), new object[2]1630		{1631			entry,1632			new StringEventArgs(value)1633		});1634	}16351636	private void _SetObjectText(object sender, StringEventArgs e)1637	{1638		TreeListNode obj = (TreeListNode)sender;1639		obj.SubText = e.Value;1640		obj.Invalidate(inclSubItems: true);1641	}16421643	internal override void Activated()1644	{1645		base.Activated();1646		if (((Control)this).IsHandleCreated && tlcJobErrors.Nodes.Count == 0)1647		{1648			((Control)this).BeginInvoke((System.Delegate)(object)new Action<object, EventArgs>(clsMain_ConnectionChanged), new object[2]1649			{1650				this,1651				EventArgs.Empty1652			});1653		}1654	}16551656	private void viCC_CommandsUpdating(object sender, EventArgs e)1657	{1658		try1659		{1660			_ = LanguageManager.Instance;1661			JobQueue jobQueue = _GetSelectNode();1662			bool flag = jobQueue != null;1663			cmdShowError.Visible = flag && jobQueue.GetValue<string>("ErrorMessages").Length > 0;1664		}1665		catch (System.Exception exception)1666		{1667			ExceptionMgr.Instance.HandleException(exception, this);1668		}1669	}16701671	private void viCC_ExecuteCommand(object sender, CommandEventArgs e)1672	{1673		try1674		{1675			if (e.Command == cmdShowError)1676			{1677				base.ShowErrorMessages(tlcJobErrors.SelectedNode);1678			}1679		}1680		catch (System.Exception exception)1681		{1682			ExceptionMgr.Instance.HandleException(exception, this);1683		}1684		finally1685		{1686			viCC.UpdateCommands();1687		}1688	}1689}1690