B2016-037: Cut text with referenced objects removes text (actually ‘cleans’ any content text that has ‘<NewID>’ in it

This commit is contained in:
Kathy Ruffing 2016-03-02 13:36:55 +00:00
parent 4dfddeecb4
commit d874371f44
2 changed files with 30 additions and 4 deletions

View File

@ -14,6 +14,12 @@ namespace VEPROMS.CSLA.Library
{ {
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
#region Properties #region Properties
private bool _setDTS = true; // Added for when data is cleaned so that DTS/UserID are not reset (for B2016-037 fix)
public bool SetDTS
{
get { return _setDTS; }
set { _setDTS = value; }
}
private E_FieldToEdit _FieldToEdit; private E_FieldToEdit _FieldToEdit;
public E_FieldToEdit FieldToEdit public E_FieldToEdit FieldToEdit
{ {
@ -62,8 +68,11 @@ namespace VEPROMS.CSLA.Library
case E_FieldToEdit.StepText: case E_FieldToEdit.StepText:
case E_FieldToEdit.Text: case E_FieldToEdit.Text:
_MyItem.MyContent.Text = value; _MyItem.MyContent.Text = value;
if (SetDTS)
{
_MyItem.MyContent.UserID = Volian.Base.Library.VlnSettings.UserID; _MyItem.MyContent.UserID = Volian.Base.Library.VlnSettings.UserID;
_MyItem.MyContent.DTS = DateTime.Now; _MyItem.MyContent.DTS = DateTime.Now;
}
break; break;
case E_FieldToEdit.Number: case E_FieldToEdit.Number:
_MyItem.MyContent.Number = value; _MyItem.MyContent.Number = value;
@ -183,6 +192,11 @@ namespace VEPROMS.CSLA.Library
StartText = text; StartText = text;
ProfileTimer.Pop(profileDepth); ProfileTimer.Pop(profileDepth);
} }
public void CleanUpNewIDs()
{
Save(InfoText);
}
private static ItemInfo _MyStaticItemInfo = null; // Used to report errors private static ItemInfo _MyStaticItemInfo = null; // Used to report errors
private string ReplaceLinesWithUnicode(string text) private string ReplaceLinesWithUnicode(string text)
{ {
@ -979,7 +993,9 @@ namespace VEPROMS.CSLA.Library
displayLinkElement l_dte = (displayLinkElement)dte; displayLinkElement l_dte = (displayLinkElement)dte;
if (odte.Link == l_dte.Link) if (odte.Link == l_dte.Link)
{ {
found = true; // (B2016-037): The following line was added so that if a 'NewID' is found in the data it gets resolved
// even if the links in original vs modified text are same (they both have 'NewID', i.e. an incompletely inserted transition - bad data)
if (!odte.Link.Contains("<NewID>")) found = true;
break; break;
} }
} }
@ -1000,7 +1016,7 @@ namespace VEPROMS.CSLA.Library
} }
l_dte.Link = l_dte.Link.Replace("<NewID>", string.Format("<CROUSGID={0}>", rousg.ROUsageID)); l_dte.Link = l_dte.Link.Replace("<NewID>", string.Format("<CROUSGID={0}>", rousg.ROUsageID));
l_dte.TextAndLink = l_dte.TextAndLink.Replace("<NewID>", string.Format("<CROUSGID={0}>", rousg.ROUsageID)); l_dte.TextAndLink = l_dte.TextAndLink.Replace("<NewID>", string.Format("<CROUSGID={0}>", rousg.ROUsageID));
break; //break; // this break was causing only the first new ro's 'NewID' to get resolved. (found during fix of B2016-037)
} }
else if (dte.Type == E_TextElementType.TransitionRange || dte.Type == E_TextElementType.Transition) else if (dte.Type == E_TextElementType.TransitionRange || dte.Type == E_TextElementType.Transition)
{ {

View File

@ -2722,6 +2722,16 @@ namespace Volian.Controls.Library
TabFont = itemInfo.MyTab.MyFont.WindowsFont; TabFont = itemInfo.MyTab.MyFont.WindowsFont;
break; break;
case 2: // Steps case 2: // Steps
// Fix for B2016-037: there were '<NewID>'s in saved content text. This was caused by a bug in code that
// did not resolve these correctly if there was more than 1 in the text. So if, when loading the text, this
// is found, resolve them:
if (itemInfo.MyContent.Text.Contains("<NewID>"))
{
DisplayText vlntxt = new DisplayText(itemInfo, E_EditPrintMode.Edit, E_ViewMode.Edit, false, E_FieldToEdit.StepText, true, null, null, false);
vlntxt.SetDTS = false;
vlntxt.CleanUpNewIDs();
vlntxt = null;
}
ContentFont = myStepPanel.StepFont;//lblTab.Font = myStepPanel.StepFont; ContentFont = myStepPanel.StepFont;//lblTab.Font = myStepPanel.StepFont;
if (itemInfo.MyTab != null ) TabFont = itemInfo.MyTab.MyFont.WindowsFont; if (itemInfo.MyTab != null ) TabFont = itemInfo.MyTab.MyFont.WindowsFont;
MyStepData = itemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList[ContentType % 10000]; MyStepData = itemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList[ContentType % 10000];