From 26ad9239f26425ecaf4adaadc74ba9b526adc01e Mon Sep 17 00:00:00 2001 From: Rich Date: Wed, 24 May 2017 12:59:28 +0000 Subject: [PATCH] Added frmVEPROMS parameter to the constructor so that SessionPing can be disabled. Added frmVEPROMS parameter to the constructor so that SessionPing can be disabled. Disabled SessionPing when Importing a Procedure Set, Added frmVEPROMS parameter to the constructor so that SessionPing can be disabled. Added logic to disable SessionPing. --- .../dlgApproveProcedure.cs | 31 +++++++-- .../VEPROMS User Interface/dlgExportImport.cs | 65 +++++++++++++------ PROMS/VEPROMS User Interface/frmVEPROMS.cs | 33 +++++++--- 3 files changed, 93 insertions(+), 36 deletions(-) diff --git a/PROMS/VEPROMS User Interface/dlgApproveProcedure.cs b/PROMS/VEPROMS User Interface/dlgApproveProcedure.cs index 59afaea8..70d6d063 100644 --- a/PROMS/VEPROMS User Interface/dlgApproveProcedure.cs +++ b/PROMS/VEPROMS User Interface/dlgApproveProcedure.cs @@ -49,11 +49,19 @@ namespace VEPROMS _MyApproval.MySessionInfo = _MySessionInfo; } } - private ApprovalInfo _MyApproval = new ApprovalInfo(); + private ApprovalInfo _MyApproval; private bool _CheckForMore = false; private DocVersionInfo _MyDocVersion; - public dlgApproveProcedure(DocVersionInfo myDocVersion) + frmVEPROMS _MyFrmVEPROMS = null; + public frmVEPROMS MyFrmVEPROMS { + get { return _MyFrmVEPROMS; } + set { _MyFrmVEPROMS = value; } + } + public dlgApproveProcedure(DocVersionInfo myDocVersion, frmVEPROMS myFrmVEPROMS) + { + MyFrmVEPROMS = myFrmVEPROMS;// Save frmVEPROMS for Import to shutoff SessionPing + _MyApproval = new ApprovalInfo(myFrmVEPROMS);// Save frmVEPROMS for Import to shutoff SessionPing ApplicabilityIndex = myDocVersion.DocVersionConfig.SelectedSlave; this.ConsistencyPrintRequest += new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest); _MyDocVersion = myDocVersion; @@ -214,8 +222,10 @@ namespace VEPROMS else return tmpProcedures[GetDisplayNumberOnly(key)]; } - public dlgApproveProcedure(DocVersionInfo myDocVersion, bool selectSome) + public dlgApproveProcedure(DocVersionInfo myDocVersion, bool selectSome, frmVEPROMS myFrmVEPROMS) { + MyFrmVEPROMS = myFrmVEPROMS;// Save frmVEPROMS for Import to shutoff SessionPing + _MyApproval = new ApprovalInfo(myFrmVEPROMS);// Save frmVEPROMS for Import to shutoff SessionPing this.ConsistencyPrintRequest += new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest); _MyDocVersion = myDocVersion; InitializeComponent(); @@ -227,8 +237,10 @@ namespace VEPROMS pnlSelect.SendToBack(); this.Width = pnlSelect.Width + this.Width - this.ClientSize.Width; ; } - public dlgApproveProcedure(ProcedureInfo myProcedure) + public dlgApproveProcedure(ProcedureInfo myProcedure, frmVEPROMS myFrmVEPROMS) { + MyFrmVEPROMS = myFrmVEPROMS;// Save frmVEPROMS for Import to shutoff SessionPing + _MyApproval = new ApprovalInfo(myFrmVEPROMS);// Save frmVEPROMS for Import to shutoff SessionPing this.ConsistencyPrintRequest += new DisplayConsistencyReportEvent(dlgApproveProcedure_ConsistencyPrintRequest); _MyDocVersion = myProcedure.MyDocVersion; InitializeComponent(); @@ -732,6 +744,12 @@ namespace VEPROMS public delegate void ApprovalStatusChangeEvent(ApprovalInfo sender, ApprovalMessageArgs e); public class ApprovalInfo { + frmVEPROMS _MyFrmVEPROMS = null; + public frmVEPROMS MyFrmVEPROMS + { + get { return _MyFrmVEPROMS; } + set { _MyFrmVEPROMS = value; } + } public event ApprovalStatusChangeEvent StatusUpdated; public void OnStatusUpdated(ApprovalInfo sender, ApprovalMessageArgs e) { @@ -804,8 +822,9 @@ namespace VEPROMS get { return _MyProcedures; } //set { _MyProcedures = value; } } - public ApprovalInfo() + public ApprovalInfo(frmVEPROMS myFrmVEPROMS) { + MyFrmVEPROMS = myFrmVEPROMS;// Save frmVEPROMS for Import to shutoff SessionPing _MyProcedures = new List(); } private static string FormatRev(Match m) @@ -1164,7 +1183,7 @@ namespace VEPROMS pi.MyDocVersion.DocVersionConfig.SelectedSlave = 0; if (si.IsApproved == 1) { - dlgExportImport dlg = new dlgExportImport("Export", pi); // "true tell export to convert ROs and Transitions to text + dlgExportImport dlg = new dlgExportImport("Export", pi, MyFrmVEPROMS); // "true tell export to convert ROs and Transitions to text dlg.DocReplace = frm.DocReplace; // this tells approval to prepare an export file with resolved transitions and ROs, word sections are saved with resolved ROs during approval PDF creation and saved in DocReplace System.Xml.XmlDocument xd = new System.Xml.XmlDocument(); dlg.ExportItem(xd, pi, "procedure"); diff --git a/PROMS/VEPROMS User Interface/dlgExportImport.cs b/PROMS/VEPROMS User Interface/dlgExportImport.cs index 2545a4ff..47650a37 100644 --- a/PROMS/VEPROMS User Interface/dlgExportImport.cs +++ b/PROMS/VEPROMS User Interface/dlgExportImport.cs @@ -19,6 +19,12 @@ namespace VEPROMS #region Log4Net private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); #endregion + frmVEPROMS _MyFrmVEPROMS = null;// Save frmVEPROMS for Import to shutoff SessionPing + public frmVEPROMS MyFrmVEPROMS + { + get { return _MyFrmVEPROMS; } + set { _MyFrmVEPROMS = value; } + } private bool _ConvertROsToTextDuringImport = false; private bool _ConvertROsAndTransitionsToText = false; // set to true when Approval creates an Export file @@ -59,22 +65,25 @@ namespace VEPROMS xa.InnerText = value; return xa; } - public dlgExportImport(string mode, FolderInfo folderInfo) + public dlgExportImport(string mode, FolderInfo folderInfo, frmVEPROMS myFrmVEPROMS) { + MyFrmVEPROMS = myFrmVEPROMS;// Save frmVEPROMS for Import to shutoff SessionPing _MyMode = mode; MyFolder = folderInfo; InitializeComponent(); this.Text = mode + " Dialog for " + folderInfo.Name; } - public dlgExportImport(string mode, DocVersionInfo docVersionInfo) - { + public dlgExportImport(string mode, DocVersionInfo docVersionInfo, frmVEPROMS myFrmVEPROMS) + { + MyFrmVEPROMS = myFrmVEPROMS;// Save frmVEPROMS for Import to shutoff SessionPing _MyMode = mode; MyDocVersion = docVersionInfo; InitializeComponent(); this.Text = mode + " Dialog for " + docVersionInfo.Name + " of " + docVersionInfo.MyFolder.Name; } - public dlgExportImport(string mode, ProcedureInfo procedureInfo) - { + public dlgExportImport(string mode, ProcedureInfo procedureInfo, frmVEPROMS myFrmVEPROMS) + { + MyFrmVEPROMS = myFrmVEPROMS;// Save frmVEPROMS for Import to shutoff SessionPing _MyMode = mode; MyProcedure = procedureInfo; InitializeComponent(); @@ -218,9 +227,11 @@ namespace VEPROMS if (MyFolder != null) // import a folder - a .expx file { TurnChangeManagerOff.Execute(); + MyFrmVEPROMS.DisablePing = true;// Turn-off SessionPing TryToLoadImportDataDocument();// Added Try Catch Error Handling to assure that the Change Manager is tuned-on MyDocVersion = null; isImported = true; + MyFrmVEPROMS.DisablePing = false;// Turn-on SessionPing TurnChangeManagerOn.Execute(); } if (MyDocVersion != null) // import a procedure - a .pxml file @@ -3013,23 +3024,37 @@ namespace VEPROMS { XmlNode image = nd.SelectSingleNode("image"); int imageid = int.Parse(image.Attributes.GetNamedItem("imageid").InnerText); - ROImage roimage = ROImage.Get(imageid); - string config; - DateTime dts; - string userid; - if (roimage == null) + using (ROImage roimage = ROImage.GetJustROImage(imageid))//Dispose when done { - string filename = image.Attributes.GetNamedItem("filename").InnerText; - byte[] content = Convert.FromBase64String(image.Attributes.GetNamedItem("content").InnerText); - config = image.Attributes.GetNamedItem("config").InnerText; - dts = DateTime.Parse(image.Attributes.GetNamedItem("dts").InnerText); - userid = image.Attributes.GetNamedItem("userid").InnerText; - roimage = ROImage.MakeROImage(MyRODb, filename, content, config, dts, userid); + string config; + DateTime dts; + string userid; + if (roimage == null) + { + string filename = image.Attributes.GetNamedItem("filename").InnerText; + byte[] content = Convert.FromBase64String(image.Attributes.GetNamedItem("content").InnerText); + config = image.Attributes.GetNamedItem("config").InnerText; + dts = DateTime.Parse(image.Attributes.GetNamedItem("dts").InnerText); + userid = image.Attributes.GetNamedItem("userid").InnerText; + // Dispose when done + using (ROImage roimage1 = ROImage.MakeROImage(MyRODb, filename, content, config, dts, userid)) + { + config = nd.Attributes.GetNamedItem("config").InnerText; + dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); + userid = nd.Attributes.GetNamedItem("userid").InnerText; + // Dispose when done + using(Figure fig = Figure.MakeFigure(rofst, roimage, config, dts, userid)){;} + } + } + else + { + config = nd.Attributes.GetNamedItem("config").InnerText; + dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); + userid = nd.Attributes.GetNamedItem("userid").InnerText; + // Dispose when done + using(Figure fig = Figure.MakeFigure(rofst, roimage, config, dts, userid)){;} + } } - config = nd.Attributes.GetNamedItem("config").InnerText; - dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); - userid = nd.Attributes.GetNamedItem("userid").InnerText; - Figure fig = Figure.MakeFigure(rofst, roimage, config, dts, userid); } } diff --git a/PROMS/VEPROMS User Interface/frmVEPROMS.cs b/PROMS/VEPROMS User Interface/frmVEPROMS.cs index 1814c465..b1a12ccb 100644 --- a/PROMS/VEPROMS User Interface/frmVEPROMS.cs +++ b/PROMS/VEPROMS User Interface/frmVEPROMS.cs @@ -521,7 +521,7 @@ namespace VEPROMS else { int ownerid = MySessionInfo.CheckOutItem(fi.FolderID, CheckOutType.Session); - dlgExportImport dlg = new dlgExportImport(args.Index == 0 ? "Export" : "Import", fi); + dlgExportImport dlg = new dlgExportImport(args.Index == 0 ? "Export" : "Import", fi, this);//Added frmVEPROMS Parameter dlg.ShowDialog(this); MySessionInfo.CheckInItem(ownerid); if (args.Index == 1 && dlg.MyNewFolder != null) @@ -546,7 +546,7 @@ namespace VEPROMS return; } int ownerid = MySessionInfo.CheckOutItem(dvi.VersionID, CheckOutType.DocVersion); - dlgExportImport dlg = new dlgExportImport("Import", dvi); + dlgExportImport dlg = new dlgExportImport("Import", dvi, this);//Added frmVEPROMS Parameter dlg.MyNewProcedure = null; dlg.ExternalTransitionItem = null; dlg.ShowDialog(this); @@ -568,7 +568,7 @@ namespace VEPROMS else { int ownerid = MySessionInfo.CheckOutItem(pi.ItemID, CheckOutType.Procedure); - dlgExportImport dlg = new dlgExportImport("Export", pi); + dlgExportImport dlg = new dlgExportImport("Export", pi, this);//Added frmVEPROMS Parameter dlg.ShowDialog(this); MySessionInfo.CheckInItem(ownerid); } @@ -717,7 +717,7 @@ namespace VEPROMS } int ownerid = MySessionInfo.CheckOutItem(dvi.VersionID, CheckOutType.DocVersion); dvi.DocVersionConfig.SelectedSlave = args.UnitIndex; - dlgApproveProcedure dlg = new dlgApproveProcedure(dvi, true); + dlgApproveProcedure dlg = new dlgApproveProcedure(dvi, true, this);//Added frmVEPROMS Parameter dlg.MySessionInfo = MySessionInfo; dlg.ShowDialog(this); displayHistory.RefreshList(); @@ -738,7 +738,7 @@ namespace VEPROMS } int ownerid = MySessionInfo.CheckOutItem(dvi.VersionID, CheckOutType.DocVersion); dvi.DocVersionConfig.SelectedSlave = args.UnitIndex; - dlgApproveProcedure dlg = new dlgApproveProcedure(dvi); + dlgApproveProcedure dlg = new dlgApproveProcedure(dvi,this);//Added frmVEPROMS Parameter dlg.MySessionInfo = MySessionInfo; dlg.ShowDialog(this); displayHistory.RefreshList(); @@ -814,7 +814,7 @@ namespace VEPROMS return; } int ownerid = MySessionInfo.CheckOutItem(pi.ItemID, 0); - dlgApproveProcedure dlg = new dlgApproveProcedure(pi); + dlgApproveProcedure dlg = new dlgApproveProcedure(pi,this);//Added frmVEPROMS Parameter dlg.MySessionInfo = MySessionInfo; dlg.ShowDialog(this); displayHistory.RefreshList(); @@ -1193,14 +1193,27 @@ namespace VEPROMS { get { return _MyCloseTabList; } } + private bool _DisablePing = false; + public bool DisablePing + { + get { return _DisablePing; } + set + { + _DisablePing = value; + //_MyLog.WarnFormat("DisableSessionPing = {0}", value); + } + } private void PingSession(Object obj) { MySemaphore.WaitOne(); - List myList = MySessionInfo.PingSession(); - foreach (DisplayTabItem dti in tc.MyBar.Items) + if (!DisablePing)// If Ping is disabled don't do ping - This was causing a deadlock during import { - if (!myList.Contains(dti.OwnerID)) - MyCloseTabList.PushDTI(dti); + List myList = MySessionInfo.PingSession(); + foreach (DisplayTabItem dti in tc.MyBar.Items) + { + if (!myList.Contains(dti.OwnerID)) + MyCloseTabList.PushDTI(dti); + } } MySemaphore.Release(); }