204 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			204 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Text;
 | |
| using System.Xml;
 | |
| using System.Xml.Serialization;
 | |
| using System.Xml.Schema;
 | |
| using System.IO;
 | |
| using VEPROMS.CSLA.Library;
 | |
| 
 | |
| namespace DataLoader
 | |
| {
 | |
| 	[XmlRoot("Proms2010Print")]
 | |
| 	//[Serializable()]
 | |
| 	public class ConversionRTBProblems
 | |
| 	{
 | |
| 		private RTBProblems _RTBProblems;
 | |
| 
 | |
| 		public RTBProblems RTBProblems
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				if (_RTBProblems == null) _RTBProblems = new RTBProblems();
 | |
| 				return _RTBProblems;
 | |
| 			}
 | |
| 			set { _RTBProblems = value; }
 | |
| 		}
 | |
| 		public void Save(string fileName)
 | |
| 		{
 | |
| 			XmlSerializer<ConversionRTBProblems>.WriteFile(this, fileName);
 | |
| 		}
 | |
| 		public static ConversionRTBProblems LoadProblems(string fileName)
 | |
| 		{
 | |
| 			return XmlSerializer<ConversionRTBProblems>.ReadFile(fileName);
 | |
| 		}
 | |
| 		public void Add(int itemID, int contentID, string originalRTF, string oldRTF, string stepRTF, string newRTF, string stepPath)
 | |
| 		{
 | |
| 			_RTBProblems.Add(itemID, contentID, originalRTF, oldRTF, stepRTF, newRTF, stepPath);
 | |
| 		}
 | |
| 		//public void Add(int itemID, int contentID, string originalRTF, string oldRTF, string stepRTF, string newRTF, string stepPath, ItemInfo iteminfo)
 | |
| 		//{
 | |
| 		//    _RTBProblems.Add(itemID, contentID, originalRTF, oldRTF, stepRTF, newRTF, stepPath, iteminfo);
 | |
| 		//}
 | |
| 	}
 | |
| 	public class RTBProblems : List<RTBProblem>
 | |
| 	{
 | |
| 		//public void Add(int itemID, int contentID, string originalRTF, string oldRTF, string stepRTF, string newRTF, string stepPath, ItemInfo iteminfo)
 | |
| 		public void Add(int itemID, int contentID, string originalRTF, string oldRTF, string stepRTF, string newRTF, string stepPath)
 | |
| 		{
 | |
| 			base.Add(new RTBProblem(itemID, contentID, originalRTF, oldRTF, stepRTF, newRTF, stepPath));
 | |
| 			//base.Add(new RTBProblem(itemID, contentID, originalRTF, oldRTF, stepRTF, newRTF, stepPath, iteminfo));
 | |
| 		}
 | |
| 	}
 | |
| 	public class RTBProblem
 | |
| 	{
 | |
| 		public RTBProblem()
 | |
| 		{
 | |
| 		}
 | |
| 		//public RTBProblem(int itemID, int contentID, string originalRTF, string oldRTF, string stepRTF, string newRTF, string stepPath, ItemInfo iteminfo)
 | |
| 		public RTBProblem(int itemID, int contentID, string originalRTF, string oldRTF, string stepRTF, string newRTF, string stepPath)
 | |
| 		{
 | |
| 			_ItemID = itemID;
 | |
| 			_ContentID = contentID;
 | |
| 			_OldRTF = oldRTF;
 | |
| 			_NewRTF = newRTF;
 | |
| 			_StepPath = stepPath;
 | |
| 			_OriginalRTF = originalRTF;
 | |
| 			_StepRtf = stepRTF;
 | |
| 			//_itemInfo = iteminfo;
 | |
| 		}
 | |
| 		private int _ItemID;
 | |
| 		[XmlAttribute("ItemID")]
 | |
| 		public int ItemID
 | |
| 		{
 | |
| 			get { return _ItemID; }
 | |
| 			set { _ItemID = value; }
 | |
| 		}
 | |
| 		private int _ContentID;
 | |
| 		[XmlAttribute("ContentID")]
 | |
| 		public int ContentID
 | |
| 		{
 | |
| 			get { return _ContentID; }
 | |
| 			set { _ContentID = value; }
 | |
| 		}
 | |
| 		private string _OriginalRTF;
 | |
| 		[XmlAttribute("OriginalRTF")]
 | |
| 		public string OriginalRTF
 | |
| 		{
 | |
| 			get { return _OriginalRTF; }
 | |
| 			set { _OriginalRTF = value; }
 | |
| 		}
 | |
| 		private string _OldRTF;
 | |
| 		[XmlAttribute("OldRTF")]
 | |
| 		public string OldRTF
 | |
| 		{
 | |
| 			get { return _OldRTF; }
 | |
| 			set { _OldRTF = value; }
 | |
| 		}
 | |
| 		private string _StepRtf;
 | |
| 		[XmlAttribute("StepRTF")]
 | |
| 		public string StepRtf
 | |
| 		{
 | |
| 			get { return _StepRtf; }
 | |
| 			set { _StepRtf = value; }
 | |
| 		}
 | |
| 		private string _NewRTF;
 | |
| 		[XmlAttribute("NewRTF")]
 | |
| 		public string NewRTF
 | |
| 		{
 | |
| 			get { return _NewRTF; }
 | |
| 			set { _NewRTF = value; }
 | |
| 		}
 | |
| 		private string _StepPath;
 | |
| 		[XmlAttribute("StepPath")]
 | |
| 		public string StepPath
 | |
| 		{
 | |
| 			get { return _StepPath; }
 | |
| 			set { _StepPath = value; }
 | |
| 		}
 | |
| 		private string _Comparison;
 | |
| 		[XmlIgnore]
 | |
| 		public string Comparison
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				if (_Comparison == null)
 | |
| 					_Comparison = GetComparison(_OldRTF, _NewRTF);
 | |
| 				return _Comparison;
 | |
| 			}
 | |
| 		}
 | |
| 		private string _StripRTF;
 | |
| 		[XmlIgnore]
 | |
| 		public string StripRTF
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				if (_StripRTF == null)
 | |
| 					_StripRTF = GetStrip(_StepRtf);
 | |
| 				return _StripRTF;
 | |
| 			}
 | |
| 			set { _StripRTF = value; }
 | |
| 		}
 | |
| 
 | |
| 		//private ItemInfo _itemInfo;
 | |
| 		//[XmlIgnore]
 | |
| 		//public ItemInfo ItemInfo
 | |
| 		//{
 | |
| 		//    get { return _itemInfo; }
 | |
| 		//    set { _itemInfo = value; }
 | |
| 		//}
 | |
| 
 | |
| 		private string GetStrip(string _StepRtf)
 | |
| 		{
 | |
| 			string rttval = DisplayText.StaticStripRtfCommands(_StepRtf);
 | |
| 			//string rttval = Volian.Controls.Library.DisplayText.StaticStripRtfCommands(_StepRtf, _itemInfo);
 | |
| 			//return rttval.Replace(@"\u8209?", "-");
 | |
| 			return rttval;
 | |
| 		}
 | |
| 		private string GetComparison(string str1, string str2)
 | |
| 		{
 | |
| 			if (str1 == str2) return str1;
 | |
| 			int endMatch = 0;
 | |
| 			int l1 = str1.Length;
 | |
| 			int l2 = str2.Length;
 | |
| 			int min = l1 > l2 ? l2 : l1;
 | |
| 			int startMatch = min;
 | |
| 			for (int i = 0; i < min; i++)
 | |
| 				if (str1[i] != str2[i])
 | |
| 				{
 | |
| 					startMatch = i;
 | |
| 					break;
 | |
| 				}
 | |
| 			min = min - startMatch;
 | |
| 			endMatch = min;
 | |
| 			for (int i = 1; i < min; i++)
 | |
| 				if (str1[l1 - i] != str2[l2 - i])
 | |
| 				{
 | |
| 					endMatch = i - 1;
 | |
| 					break;
 | |
| 				}
 | |
| 			string prefix = str1.Substring(0, startMatch);
 | |
| 			string part1 = str1.Substring(startMatch, l1 - (startMatch + endMatch));
 | |
| 			string part2 = str2.Substring(startMatch, l2 - (startMatch + endMatch));
 | |
| 			string suffix = str1.Substring(l1 - endMatch, endMatch);
 | |
| 			return prefix + "\r\n<<<" + part1 + "|||" + part2 + ">>>\r\n" + suffix;
 | |
| 		}
 | |
| 		private ItemInfo _MyItem;
 | |
| 		[XmlIgnore]
 | |
| 		public ItemInfo MyItem
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				if (_MyItem == null)
 | |
| 					_MyItem = ItemInfo.Get(_ItemID);
 | |
| 				return _MyItem;
 | |
| 			}
 | |
| 		}
 | |
| 		public override string ToString()
 | |
| 		{
 | |
| 			return MyItem.ToString();
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| }
 |