From e3b5351b30e549f4ccb84709814091486de9987e Mon Sep 17 00:00:00 2001 From: Rich Date: Thu, 5 Feb 2015 03:52:57 +0000 Subject: [PATCH] Added code to support conversion to text of invalid referenced objects and invalid transitions Added command line switch NOUPDATERO to prevent updating referenced objects Added code to support conversion to text of invalid transitions --- .../Extension/AuditExt.cs | 1 + .../Extension/ContentExt.cs | 153 +++++++++++++++++- .../VEPROMS.CSLA.Library/Extension/ItemExt.cs | 75 ++++++++- .../Extension/ItemInsertExt.cs | 36 +++-- .../Extension/ROFSTExt.cs | 6 +- .../Extension/TransitionExt.cs | 120 ++++++++++++++ 6 files changed, 370 insertions(+), 21 deletions(-) diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/AuditExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/AuditExt.cs index 8ff68025..20d9d4a5 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/AuditExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/AuditExt.cs @@ -1594,6 +1594,7 @@ namespace VEPROMS.CSLA.Library tran.MyItemToID.UpdateTransitionText(); } } + tmp.UpdateROText(); using (Content cont = tmp.MyContent.Get()) { if (cont.ContentTransitionCount > 0) diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ContentExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ContentExt.cs index 1baae9a1..9b42790d 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ContentExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ContentExt.cs @@ -18,6 +18,10 @@ namespace VEPROMS.CSLA.Library } public void FixTransitionText(TransitionInfo tran) { + FixTransitionText(tran, false); + } + public void FixTransitionText(TransitionInfo tran, bool forceConvertToText) + { //string transText = tran.ResolvePathTo(); //string lookFor = string.Format(@"", tran.TranType, tran.TransitionID); ////string lookFor = string.Format(@"", tran.TranType, tran.TransitionID); @@ -29,6 +33,8 @@ namespace VEPROMS.CSLA.Library // Text = Text.Substring(0, g.Index) + transText + Text.Substring(g.Index + g.Length); //} string newvalue = tran.ResolvePathTo(); + if (forceConvertToText) + newvalue = "?"; string findLink = @""; MatchCollection ms = Regex.Matches(Text, findLink); //string lookFor = string.Format(@"", rousg.ROUsageID); @@ -38,7 +44,7 @@ namespace VEPROMS.CSLA.Library Match m = Regex.Match(mm.Value, lookFor, RegexOptions.Singleline); if (m != null && m.Groups.Count > 1) { - int myIndex = m.Groups[4].Index + mm.Index; + int myIndex = m.Groups[4].Index + mm.Index; int myLength = m.Groups[4].Length; if (m.Groups[3].Value != " ") { @@ -47,7 +53,14 @@ namespace VEPROMS.CSLA.Library } string gg = Text.Substring(myIndex, myLength); newvalue = newvalue.Replace("{", @"\{").Replace("}", @"\}"); - if (gg != newvalue) + if (gg != newvalue && newvalue == "?") + { + string rv = ConvertTransitionToText(tran, newvalue); + //Text = Text.Substring(0, myIndex - 14) + gg + Text.Substring(myIndex + myLength); + Annotation.MakeAnnotation(this.ContentItems[0].MyItem, ItemInfo.VolianCommentType, "", string.Format("Transition ({0}) converted to text", ItemInfo.ConvertToDisplayText(gg)), null); + break; + } + else if (gg != newvalue) { Text = Text.Substring(0, myIndex) + newvalue + Text.Substring(myIndex + myLength); break; // Text has been processed @@ -106,6 +119,120 @@ namespace VEPROMS.CSLA.Library } } } + public string ConvertTransitionToText(TransitionInfo tran, string value) + { + string retval = null; + string newvalue = value; + string findLink = @""; + MatchCollection ms = Regex.Matches(Text, findLink); + //string lookFor = string.Format(@"", rousg.ROUsageID); + //string lookFor = string.Format(@"^$", rousg.ROUsageID); + string lookFor = string.Format(@"^", tran.TranType, tran.TransitionID); + int lastIndex = 0; + string newText = Text; + foreach (Match mm in ms) + { + int offset = mm.Index; + Match m = Regex.Match(mm.Value, lookFor, RegexOptions.Singleline); + if (m != null && m.Groups.Count > 1) + { + string prefix = GetMyPrefix(mm.Index, lastIndex); + string suffix = GetMySuffix(mm.Index + mm.Length); + int myIndex = m.Groups[4].Index + mm.Index; + int myLength = m.Groups[4].Length; + if (m.Groups[3].Value != " ") + { + myIndex = m.Groups[3].Index + mm.Index; + myLength += m.Groups[3].Length; + } + string gg = newText.Substring(myIndex, myLength); + retval = gg; + gg = gg.Replace("{", @"\{").Replace("}", @"\}"); + string part1 = newText.Substring(0, mm.Index); + string part2 = gg; + string part3 = newText.Substring(mm.Index + mm.Length); + //modify part1 based on prefix + if (prefix == @"\v ") + part1 = part1.Substring(0, part1.Length - 3); + else + part1 = part1.Substring(0, part1.Length - 3) + " "; + //modify part3 based on suffix + if (suffix == @"\v0 ") + part3 = part3.Substring(4); + else + part3 = suffix.Replace(@"\v0", "") + part3.Substring(suffix.Length); + if (gg.Contains(@"\u8209?")) + { + Match mmm = Regex.Match(gg, @"(\\f[0-9]+)(\\u[0-9]{1,4}\?)(\\f[0-9]+ ?)"); + if (mmm == null) + newvalue = newvalue.Replace(@"\u8209?", "-"); + else + newvalue = newvalue.Replace(@"\u8209?", m.Groups[1].Value + @"\u8209?" + m.Groups[3].Value); + } + Text = part1 + part2 + part3; + break; // Text has been processed + } + lastIndex = mm.Index + mm.Length; + } + Console.WriteLine("Text: {0} NewText: {1}", Text, newText); + return retval; + } + public string ConvertTransitionToText(int tranID, int tranType, string value) + { + string retval = null; + string newvalue = value; + string findLink = @""; + MatchCollection ms = Regex.Matches(Text, findLink); + string lookFor = string.Format(@"^", tranType, tranID); + int lastIndex = 0; + string newText = Text; + foreach (Match mm in ms) + { + int offset = mm.Index; + Match m = Regex.Match(mm.Value, lookFor, RegexOptions.Singleline); + if (m != null && m.Groups.Count > 1) + { + string prefix = GetMyPrefix(mm.Index, lastIndex); + string suffix = GetMySuffix(mm.Index + mm.Length); + int myIndex = m.Groups[4].Index + mm.Index; + int myLength = m.Groups[4].Length; + if (m.Groups[3].Value != " ") + { + myIndex = m.Groups[3].Index + mm.Index; + myLength += m.Groups[3].Length; + } + string gg = newText.Substring(myIndex, myLength); + retval = gg; + gg = gg.Replace("{", @"\{").Replace("}", @"\}"); + string part1 = newText.Substring(0, mm.Index); + string part2 = gg; + string part3 = newText.Substring(mm.Index + mm.Length); + //modify part1 based on prefix + if (prefix == @"\v ") + part1 = part1.Substring(0, part1.Length - 3); + else + part1 = part1.Substring(0, part1.Length - 3) + " "; + //modify part3 based on suffix + if (suffix == @"\v0 ") + part3 = part3.Substring(4); + else + part3 = suffix.Replace(@"\v0", "") + part3.Substring(suffix.Length); + if (gg.Contains(@"\u8209?")) + { + Match mmm = Regex.Match(gg, @"(\\f[0-9]+)(\\u[0-9]{1,4}\?)(\\f[0-9]+ ?)"); + if (mmm == null) + newvalue = newvalue.Replace(@"\u8209?", "-"); + else + newvalue = newvalue.Replace(@"\u8209?", m.Groups[1].Value + @"\u8209?" + m.Groups[3].Value); + } + Text = part1 + part2 + part3; + break; // Text has been processed + } + lastIndex = mm.Index + mm.Length; + } + Console.WriteLine("Text: {0} NewText: {1}", Text, newText); + return retval; + } private string GetMySuffix(int start) { string txt = Text.Substring(start); @@ -159,6 +286,7 @@ namespace VEPROMS.CSLA.Library myLength += m.Groups[3].Length; } string gg = newText.Substring(myIndex, myLength); + retval = gg; gg = gg.Replace("{", @"\{").Replace("}", @"\}"); string part1 = newText.Substring(0, mm.Index); string part2 = gg; @@ -271,6 +399,12 @@ namespace VEPROMS.CSLA.Library public string FixContentText(RoUsageInfo rousg, string value, int rotype, ROFstInfo origROFstInfo,string fileNameOnly) // string newvalue) { string retval = null; + if (value == "?") + { + retval = this.ConvertROToText(rousg, value, rotype, origROFstInfo); + Annotation.MakeAnnotation(this.ContentItems[0].MyItem, ItemInfo.VolianCommentType, "", string.Format("RO value ({0}) converted to text", ItemInfo.ConvertToDisplayText(retval)), null); + return retval; + } string newvalue = value; newvalue = newvalue.Replace("{", @"\{").Replace("}", @"\}"); string findLink = @""; @@ -407,9 +541,12 @@ namespace VEPROMS.CSLA.Library if (id == ContentID) return true; return false; } - public void FixTransitionText(TransitionInfo tran, TransitionLookup tranLookup, ItemInfo ii) + public void FixTransitionText(TransitionInfo tran, TransitionLookup tranLookup, ItemInfo ii) + { + FixTransitionText(tran, tranLookup, ii, false); + } + public void FixTransitionText(TransitionInfo tran, TransitionLookup tranLookup, ItemInfo ii, bool forceConvertToText) { - if (ii.InList(4706)) Console.WriteLine("jcb"); //string transText = tran.ResolvePathTo(); //string lookFor = string.Format(@"", tran.TranType, tran.TransitionID); ////string lookFor = string.Format(@"", tran.TranType, tran.TransitionID); @@ -427,6 +564,8 @@ namespace VEPROMS.CSLA.Library newvalue = tran.ResolvePathTo(); else newvalue = tran.ResolvePathTo(tranLookup); + if (forceConvertToText) + newvalue = "?"; string findLink = @""; MatchCollection ms = Regex.Matches(Text, findLink); //string lookFor = string.Format(@"", rousg.ROUsageID); @@ -510,7 +649,11 @@ namespace VEPROMS.CSLA.Library } public void FixTransitionText(TransitionInfo tran, ItemInfo ii) { - FixTransitionText(tran, null, ii); + FixTransitionText(tran, ii, false); + } + public void FixTransitionText(TransitionInfo tran, ItemInfo ii, bool forceConvertToText) + { + FixTransitionText(tran, null, ii, forceConvertToText); //string transText = tran.ResolvePathTo(tranLookup); //string lookFor = string.Format(@"", tran.TranType, tran.TransitionID); ////string lookFor = string.Format(@"", tran.TranType, tran.TransitionID); diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs index 6e85b48d..4cda69d0 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs @@ -556,7 +556,9 @@ namespace VEPROMS.CSLA.Library } public static int TranCheckCount = 0; public static int TranFixCount = 0; - internal static void MyRefreshTransitions(ItemInfo itemInfo, IVEDrillDownReadOnly itemParent, SectionInfo sectionInfo, ProcedureInfo procInfo, DocVersionInfo docVersionInfo, TransitionLookup tranLookup) + internal static TransitionInfoList TransitionsToDisconnected; + internal static TransitionInfoList TransitionsToNonEditable; + internal static void MyRefreshTransitions(ItemInfo itemInfo, IVEDrillDownReadOnly itemParent, SectionInfo sectionInfo, ProcedureInfo procInfo, DocVersionInfo docVersionInfo, TransitionLookup tranLookup) { //TransitionInfoList til = TransitionInfoList.GetByFromID(itemInfo.ItemID); //Console.WriteLine("Procedure: {0}, transitions: {1}", (itemInfo as ProcedureInfo).DisplayNumber, til.Count); @@ -582,6 +584,15 @@ namespace VEPROMS.CSLA.Library foreach (TransitionInfo traninfo in itemInfo.MyContent.ContentTransitions) { TranCheckCount++; + if (IsTransitionToNonEditable(traninfo)) + { + TranFixCount++; + itemInfo.MyContent.FixTransitionText(traninfo, itemInfo, true); + Content content = Content.Get(itemInfo.MyContent.ContentID); + content.FixTransitionText(traninfo, true); + content.Save(); + return; + } string oldText = itemInfo.MyContent.Text; itemInfo.MyContent.FixTransitionText(traninfo, itemInfo); string newText = itemInfo.MyContent.Text; @@ -595,7 +606,25 @@ namespace VEPROMS.CSLA.Library } } } - public static void ResetROCounters() + //private static bool IsTransitionToDisconnected(TransitionInfo ti) + //{ + // foreach (TransitionInfo til in TransitionsToDisconnected) + // { + // if (ti.TransitionID == til.TransitionID) + // return true; + // } + // return false; + //} + private static bool IsTransitionToNonEditable(TransitionInfo ti) + { + foreach (TransitionInfo til in TransitionsToNonEditable) + { + if (ti.TransitionID == til.TransitionID) + return true; + } + return false; + } + public static void ResetROCounters() { ROCheckCount = 0; ROFixCount = 0; @@ -614,6 +643,38 @@ namespace VEPROMS.CSLA.Library return _VolianCommentType; } } + public void UpdateROText() + { + ROFstInfo rofstinfo = this.MyDocVersion.DocVersionAssociations[0].MyROFst; + ROFSTLookup lookup = rofstinfo.GetROFSTLookup(this.MyDocVersion); + lookup.MyDocVersionInfo = this.MyDocVersion; + if (this.MyContent.ContentRoUsageCount > 0) + { + foreach (RoUsageInfo rousage in this.MyContent.ContentRoUsages) + { + if (this.ActiveSection != null) + { + string oldText = this.MyContent.Text; + string roval = lookup.GetTranslatedRoValue(rousage.ROID, this.ActiveSection.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta); + ROFSTLookup.rochild roch = lookup.GetRoChild(rousage.ROID); + this.MyContent.FixContentText(rousage, roval, roch.type, rofstinfo, this); + string newText = this.MyContent.Text; + if (newText != oldText) + { + Content content = Content.Get(this.MyContent.ContentID); + if (roval == "?") + { + oldText = content.ConvertROToText(rousage, roval, roch.type, rofstinfo); + Annotation.MakeAnnotation(content.ContentItems[0].MyItem, VolianCommentType, "", string.Format("RO value ({0}) converted to text", ItemInfo.ConvertToDisplayText(oldText)), null); + } + else + content.FixContentText(rousage, roval, roch.type, rofstinfo); + content.Save(); + } + } + } + } + } internal static void MyRefreshReferenceObjects(ItemInfo itemInfo, IVEDrillDownReadOnly itemParent, SectionInfo sectionInfo, DocVersionInfo docVersionInfo) { if (itemInfo.MyContent.ContentPartCount > 0) @@ -642,7 +703,7 @@ namespace VEPROMS.CSLA.Library if (roval == "?") { oldText = content.ConvertROToText(rousage, roval, roch.type, rofstinfo); - //Annotation.MakeAnnotation(content.ContentItems[0].MyItem, VolianCommentType, "", string.Format("RO value ({0}) converted to text" + sameMsg, ItemInfo.ConvertToDisplayText(oldText)), null); + Annotation.MakeAnnotation(content.ContentItems[0].MyItem, VolianCommentType, "", string.Format("RO value ({0}) converted to text", ItemInfo.ConvertToDisplayText(oldText)), null); } else content.FixContentText(rousage, roval, roch.type, rofstinfo); @@ -5431,8 +5492,14 @@ namespace VEPROMS.CSLA.Library { return (Procedure)(_Editable = Procedure.Get(ItemID)); } - public static void RefreshTransitions(ProcedureInfo tmp) + public static void RefreshTransitions(ProcedureInfo tmp) + { + RefreshTransitions(tmp, null, null); + } + public static void RefreshTransitions(ProcedureInfo tmp, TransitionInfoList transitionToDisconnected, TransitionInfoList transitionsToNonEditable) { + TransitionsToDisconnected = transitionToDisconnected; + TransitionsToNonEditable = transitionsToNonEditable; TransitionLookup tranLookup = new TransitionLookup(0, tmp.ItemID, tmp.MyLookup); tranLookup.ApplicabilityUnit = tmp.MyDocVersion.DocVersionConfig.SelectedSlave; tranLookup.NewLookupNeeded += new TransitionLookupEvent(GetNewLookup); diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs index 019c6a6d..b5603163 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs @@ -298,6 +298,7 @@ namespace VEPROMS.CSLA.Library using (Item item = Get()) ItemInfo.Refresh(item); // Update all of the content records that have transitions that point to the Siblings or Sibling Children of the new item tmp.UpdateTransitionText(); + tmp.UpdateROText(); OnNewSiblingBefore(new ItemInfoInsertEventArgs(tmp, EAddpingPart.Before)); ((ItemInfo)ActiveParent).MyContent.RefreshContentParts(); return tmp; @@ -431,16 +432,16 @@ namespace VEPROMS.CSLA.Library StepConfig sc = ii.MyConfig as StepConfig; if (chgid != null && sc.Step_ChangeID != chgid) { - sc.Step_ChangeID = chgid; - using (Item itm = ii.Get()) - { - itm.MyContent.Config = sc.ToString(); - itm.MyContent.DTS = DateTime.Now; - itm.MyContent.UserID = Volian.Base.Library.VlnSettings.UserID; - itm.Save(); - } + sc.Step_ChangeID = chgid; + using (Item itm = ii.Get()) + { + itm.MyContent.Config = sc.ToString(); + itm.MyContent.DTS = DateTime.Now; + itm.MyContent.UserID = Volian.Base.Library.VlnSettings.UserID; + itm.Save(); } } + } // handle all of the children if (ii.Cautions != null) foreach (ItemInfo chldc in ii.Cautions) PasteSetChangeId(chldc, chgid); if (ii.Notes != null) foreach (ItemInfo chldn in ii.Notes) PasteSetChangeId(chldn, chgid); @@ -490,6 +491,7 @@ namespace VEPROMS.CSLA.Library ItemInfo tmp = CopyPasteItemInfoFetch(copyStartID, this.ItemID, type, type, EAddpingPart.Before); using (Item item = Get()) ItemInfo.Refresh(item); tmp.UpdateTransitionText(); + tmp.UpdateROText(); tmp.UpdatePastedStepTransitionText(); PasteSetChangeId(tmp, chgid); OnNewSiblingBefore(new ItemInfoInsertEventArgs(tmp, EAddpingPart.Before)); @@ -518,6 +520,7 @@ namespace VEPROMS.CSLA.Library // of any previous cautions or notes. if (tmp.IsCaution || tmp.IsNote) ResetOrdinal(); tmp.UpdateTransitionText(); + tmp.UpdateROText(); tmp.UpdatePastedStepTransitionText(); PasteSetChangeId(tmp, chgid); OnNewSiblingAfter(new ItemInfoInsertEventArgs(tmp, EAddpingPart.After)); @@ -609,6 +612,7 @@ namespace VEPROMS.CSLA.Library if (tmp.IsCaution || tmp.IsNote) ResetOrdinal(); // Update all of the content records that have transitions that point to the Siblings or Sibling Children of the new item tmp.UpdateTransitionText(); + tmp.UpdateROText(); OnNewSiblingAfter(new ItemInfoInsertEventArgs(tmp, EAddpingPart.After)); return tmp; } @@ -675,7 +679,12 @@ namespace VEPROMS.CSLA.Library oldContent = content; } if (oldContent == null) oldContent = content; - oldContent.FixTransitionText(tran); + //check to see if noneditable + bool forceConvertToText; + SectionConfig sc = tran.MyItemToID.ActiveSection.MyConfig as SectionConfig; + //SectionConfig sc = new SectionConfig(tran.MyItemToID.ActiveSection.MyConfig.ToString()); + forceConvertToText = (sc.SubSection_Edit == "N"); + oldContent.FixTransitionText(tran, forceConvertToText); //if (content.IsDirty) //{ // content.DTS = DateTime.Now; @@ -710,7 +719,12 @@ namespace VEPROMS.CSLA.Library { using (Content content = tran.MyContent.Get()) { - content.FixTransitionText(tran); + //check to see if noneditable + bool forceConvertToText; + SectionConfig sc = tran.MyItemToID.ActiveSection.MyConfig as SectionConfig; + //SectionConfig sc = new SectionConfig(tran.MyItemToID.ActiveSection.MyConfig.ToString()); + forceConvertToText = (sc.SubSection_Edit == "N"); + content.FixTransitionText(tran, forceConvertToText); if (content.IsDirty) content.Save(); else // Update ContentInfo objects to reflect the change in the transition @@ -737,6 +751,7 @@ namespace VEPROMS.CSLA.Library if (tmp.NextItem != null) using (Item item = tmp.NextItem.Get()) ItemInfo.Refresh(item); // Update all of the content records that have transitions that point to the Siblings or Sibling Children of the new item tmp.UpdateTransitionText(); + tmp.UpdateROText(); MyContent.RefreshContentParts(); OnNewChild(new ItemInfoInsertEventArgs(tmp, EAddpingPart.Child)); return tmp; @@ -1301,6 +1316,7 @@ namespace VEPROMS.CSLA.Library // of any previous cautions or notes. if (newItemInfo.IsCaution || newItemInfo.IsNote) newItemInfo.ResetOrdinal(); newItemInfo.UpdateTransitionText(); + newItemInfo.UpdateROText(); newItemInfo.UpdatePastedStepTransitionText(); // Add to tree if (newItemInfo.NextItemCount > 0) diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ROFSTExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ROFSTExt.cs index 9b50d294..7df7fd93 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ROFSTExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ROFSTExt.cs @@ -293,7 +293,8 @@ namespace VEPROMS.CSLA.Library { docver.DocVersionAssociations[0].MyROFst = rofst; docver.Save(); - UpdateROValuesText(origROFst, rofst, DocVersionInfo.Get(docver.VersionID)); + if (!Volian.Base.Library.VlnSettings.GetCommandFlag("NOUPDATERO")) + UpdateROValuesText(origROFst, rofst, DocVersionInfo.Get(docver.VersionID)); return rofst; } @@ -333,7 +334,8 @@ namespace VEPROMS.CSLA.Library } // Now update the usages: compare old to new rofsts and update usages accordingly, i.e. modified // values, deleted ros, etc. - UpdateROValuesText(origROFst, rofst, DocVersionInfo.Get(docver.VersionID)); + if (!Volian.Base.Library.VlnSettings.GetCommandFlag("NOUPDATERO")) + UpdateROValuesText(origROFst, rofst, DocVersionInfo.Get(docver.VersionID)); return rofst; } } diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs index 9e361e13..3d7ff308 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs @@ -468,6 +468,124 @@ namespace VEPROMS.CSLA.Library this.RaiseListChangedEvents = true; } #endregion + #region TransitionsToDisconnected + private class TransitionsToDisconnectedCriteria + { + public TransitionsToDisconnectedCriteria(string docVersionList) + { + _DocVersionList = docVersionList; + } + private string _DocVersionList; + public string DocVersionList + { + get { return _DocVersionList; } + set { _DocVersionList = value; } + } + } + public static TransitionInfoList GetTransitionsToDisconnected(string docVersionList) + { + try + { + TransitionInfoList tmp = DataPortal.Fetch(new TransitionsToDisconnectedCriteria(docVersionList)); + TransitionInfo.AddList(tmp); + tmp.AddEvents(); + return tmp; + } + catch (Exception ex) + { + throw new DbCslaException("Error on TransitionInfoList.GetTransitionsToDisconnected", ex); + } + } + private void DataPortal_Fetch(TransitionsToDisconnectedCriteria criteria) + { + this.RaiseListChangedEvents = false; + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] TransitionInfoList.DataPortal_FetchTransitionsToDisconnected", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "getTransitionsToDisconnected"; + cm.Parameters.AddWithValue("@DocVersionList", criteria.DocVersionList); + cm.CommandTimeout = Database.DefaultTimeout; + using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) + { + IsReadOnly = false; + while (dr.Read()) this.Add(new TransitionInfo(dr)); + IsReadOnly = true; + } + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("TransitionInfoList.DataPortal_FetchTransitionsToDisconnected", ex); + throw new DbCslaException("TransitionInfoList.DataPortal_Fetch", ex); + } + this.RaiseListChangedEvents = true; + } + #endregion + #region TransitionsToNonEditable + private class TransitionsToNonEditableCriteria + { + public TransitionsToNonEditableCriteria(string docVersionList) + { + _DocVersionList = docVersionList; + } + private string _DocVersionList; + public string DocVersionList + { + get { return _DocVersionList; } + set { _DocVersionList = value; } + } + } + public static TransitionInfoList GetTransitionsToNonEditable(string docVersionList) + { + try + { + TransitionInfoList tmp = DataPortal.Fetch(new TransitionsToNonEditableCriteria(docVersionList)); + TransitionInfo.AddList(tmp); + tmp.AddEvents(); + return tmp; + } + catch (Exception ex) + { + throw new DbCslaException("Error on TransitionInfoList.GetTransitionsToNonEditable", ex); + } + } + private void DataPortal_Fetch(TransitionsToNonEditableCriteria criteria) + { + this.RaiseListChangedEvents = false; + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] TransitionInfoList.DataPortal_FetchTransitionsToNonEditable", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "getTransitionsToNonEditable"; + cm.Parameters.AddWithValue("@DocVersionList", criteria.DocVersionList); + cm.CommandTimeout = Database.DefaultTimeout; + using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) + { + IsReadOnly = false; + while (dr.Read()) this.Add(new TransitionInfo(dr)); + IsReadOnly = true; + } + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("TransitionInfoList.DataPortal_FetchTransitionsToNonEditable", ex); + throw new DbCslaException("TransitionInfoList.DataPortal_Fetch", ex); + } + this.RaiseListChangedEvents = true; + } + #endregion } public class TransitionBuilder { @@ -672,6 +790,8 @@ namespace VEPROMS.CSLA.Library } if(_AppendMethods==null) SetupMethods(); + if (toItem.MyDocVersion == null) + return "?"; string retval = BuildString(tb); // Added for transitions to un-numbered steps if (retval == string.Empty)