diff --git a/PROMS/DataLoader/TransitionFixer.cs b/PROMS/DataLoader/TransitionFixer.cs index 3627ec63..f6b9d40b 100644 --- a/PROMS/DataLoader/TransitionFixer.cs +++ b/PROMS/DataLoader/TransitionFixer.cs @@ -70,9 +70,16 @@ namespace DataLoader public TimeSpan Process(bool checkRTF) { DateTime tstart = DateTime.Now; + ContentInfo.StaticContentInfoChange += new StaticContentInfoEvent(ContentInfo_StaticContentInfoChange); ProcessTransitions(checkRTF); + ContentInfo.StaticContentInfoChange -= new StaticContentInfoEvent(ContentInfo_StaticContentInfoChange); return DateTime.Now - tstart; } + + void ContentInfo_StaticContentInfoChange(object sender, StaticContentInfoEventArgs args) + { + _MyLoader.AddInfo("Fixed Transition for {0}, changed from {1} to {2}", (sender as ContentInfo).ContentID, args.OldValue, args.NewValue); + } private void ProcessTransitions(bool checkRTF) { Status = "Getting List..."; @@ -102,11 +109,18 @@ namespace DataLoader { try { - using (Content c = item.MyContent.Get()) - { - c.FixTransitionText(tran); - c.Save(); - } + string oldtext = item.MyContent.Text; + item.MyContent.FixTransitionText(tran); + string newtext = item.MyContent.Text; + if (newtext != oldtext) + { + using (Content c = item.MyContent.Get()) + { + c.FixTransitionText(tran); + c.Save(); + + } + } if (item.NewTransToUnNumberedItem) { using (Item itm = item.Get()) diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ContentExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ContentExt.cs index f069cd52..3e731211 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ContentExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ContentExt.cs @@ -363,8 +363,35 @@ namespace VEPROMS.CSLA.Library return retval; } } + public delegate void StaticContentInfoEvent(object sender, StaticContentInfoEventArgs args); + public class StaticContentInfoEventArgs + { + string _OldValue; + public string OldValue + { + get { return _OldValue; } + set { _OldValue = value; } + } + string _NewValue; + public string NewValue + { + get { return _NewValue; } + set { _NewValue = value; } + } + public StaticContentInfoEventArgs(string oldValue, string newValue) + { + _OldValue = oldValue; + _NewValue = newValue; + } + } public partial class ContentInfo { + public static event StaticContentInfoEvent StaticContentInfoChange; + private static void OnStaticContentInfoChange(object sender, StaticContentInfoEventArgs args) + { + if (StaticContentInfoChange != null) + StaticContentInfoChange(sender, args); + } public string MyContentMessage = string.Empty; public string MyGridMessage = string.Empty; public bool InList(params int[] IDs) @@ -414,6 +441,7 @@ namespace VEPROMS.CSLA.Library if (gg != newvalue) { _Text = Text.Substring(0, myIndex) + newvalue + Text.Substring(myIndex + myLength); + OnStaticContentInfoChange(this, new StaticContentInfoEventArgs(gg, newvalue)); break; // Text has been processed } } diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs index fbe151ad..2a37cd93 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/TransitionExt.cs @@ -401,6 +401,11 @@ namespace VEPROMS.CSLA.Library public bool _UsedRangeAncestor; private string _Token; public bool SectNumWithStepNum; + private List _SectionsUsed = new List(); + public List SectionsUsed + { + get { return _SectionsUsed; } + } public string Token { get { return _Token; } @@ -660,7 +665,8 @@ namespace VEPROMS.CSLA.Library if (startIndex >= tb._TransFormat.Length) break; } if ((startIndex < tb._TransFormat.Length) && lastAdded) tb.Append(tb._TransFormat.Substring(startIndex, tb._TransFormat.Length - startIndex)); - return (tb.ToString()); + string myReturn = Regex.Replace(tb.ToString(), @"([~`.]*)\.([~`.]*)", "."); + return myReturn; } // TODO: For hlp: LowerCaseTranNumber - lower case substep numbers in transitions @@ -1079,7 +1085,10 @@ namespace VEPROMS.CSLA.Library tb.Append(")"); return true; } + if (tb.SectionsUsed.Contains(tb._ToItem.ItemID)) + return true; string retstr = TranGetSectionNumber(tb._ToItem); + tb.SectionsUsed.Add(tb._ToItem.ItemID); if (retstr != null && retstr != "") { int indx = retstr.IndexOf(' '); // 16 bit code only processes 1st occurance