302 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			302 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.ComponentModel;
 | |
| using System.Data;
 | |
| using System.Drawing;
 | |
| using System.Text;
 | |
| using System.Windows.Forms;
 | |
| using VEPROMS.CSLA.Library;
 | |
| 
 | |
| namespace TestFullLoad
 | |
| {
 | |
| 	public partial class frmLoadAtOnce : Form
 | |
| 	{
 | |
| 		public frmLoadAtOnce()
 | |
| 		{
 | |
| 			InitializeComponent();
 | |
| 		}
 | |
| 		private ItemInfoList _Procedures;
 | |
| 		private bool _IsMultiUnit = false;
 | |
| 		private void frmLoadAtOnce_Load(object sender, EventArgs e)
 | |
| 		{
 | |
| 			LoadSettings();
 | |
| 			// Set these events after loading settings - otherwise the settings will be updated to the defaults
 | |
| 			Move+=new EventHandler(frmLoadAtOnce_Move);
 | |
| 			Resize+=new EventHandler(frmLoadAtOnce_Resize);
 | |
| 			try
 | |
| 			{
 | |
| 				DocVersionInfo docVersion = GetDocVersionWithContent();
 | |
| 				if (docVersion.MultiUnitCount > 1)
 | |
| 				{
 | |
| 					foreach (string s in docVersion.UnitNames)
 | |
| 						cbUnits.Items.Add(s.Trim());
 | |
| 					cbUnits.SelectedIndex = 0;
 | |
| 					cbUnits.Enabled = true;
 | |
| 					_IsMultiUnit = true;
 | |
| 				}
 | |
| 				_Procedures = docVersion.Procedures;
 | |
| 				lbProcedures.DataSource = _Procedures;
 | |
| 				lbProcedures.SelectedIndex = -1;
 | |
| 				lbProcedures.SelectedValueChanged+=new EventHandler(lbProcedures_SelectedValueChanged);
 | |
| 			}
 | |
| 			catch (Exception ex)
 | |
| 			{
 | |
| 				Console.WriteLine("ex - {0}", ex);
 | |
| 			}
 | |
| 		}
 | |
| 		private void LoadSettings()
 | |
| 		{
 | |
| 			if (GetPropertyString("Location") != "")
 | |
| 				this.Location = Properties.Settings.Default.Location;
 | |
| 			if ((Properties.Settings.Default["Size"] ?? "") != "")
 | |
| 				this.Size = Properties.Settings.Default.Size;
 | |
| 			this.WindowState = Properties.Settings.Default.WindowState;
 | |
| 			Database.ConnectionName = "VEPROMS_BODINE_DEBUG";
 | |
| 			if (Properties.Settings.Default.LastDatabase != string.Empty)
 | |
| 			{
 | |
| 				if (MessageBox.Show(string.Format("use database {0}?", Properties.Settings.Default.LastDatabase), "use database", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
 | |
| 					Database.SelectedDatabase = Properties.Settings.Default.LastDatabase;
 | |
| 			}
 | |
| 			Properties.Settings.Default.LastDatabase = Database.SelectedDatabase;
 | |
| 			Properties.Settings.Default.Save();
 | |
| 		}
 | |
| 		private string GetPropertyString(string propertyName)
 | |
| 		{
 | |
| 			object prop = Properties.Settings.Default[propertyName];
 | |
| 			return prop == null ? "" : prop.ToString();
 | |
| 		}
 | |
| 		private DocVersionInfo GetDocVersionWithContent()
 | |
| 		{
 | |
| 			DocVersionInfoList dvList = DocVersionInfoList.Get();
 | |
| 			foreach (DocVersionInfo docVersion in dvList)
 | |
| 				if (docVersion.Procedures != null)
 | |
| 					if (docVersion.Procedures[0].ItemID != 0)
 | |
| 						return docVersion;
 | |
| 			return null;
 | |
| 		}
 | |
| 		private int WalkThroughChildren(ItemInfo itemInfo)
 | |
| 		{
 | |
| 			Console.WriteLine(itemInfo.ItemID);
 | |
| 			if (itemInfo.ItemID == 284)
 | |
| 				Console.WriteLine("stop or spot");
 | |
| 			int retval = 0;
 | |
| 			// Look at siblings and look at children
 | |
| 			if (itemInfo != null)
 | |
| 			{
 | |
| 				if (itemInfo.MyContent.ContentPartCount > 0)
 | |
| 				{
 | |
| 					foreach (PartInfo pi in itemInfo.MyContent.ContentParts)
 | |
| 					{
 | |
| 						foreach (ItemInfo ii in pi.MyItems)
 | |
| 						{
 | |
| 							//retval += WalkThroughSiblings(ii);
 | |
| 							retval++;
 | |
| 							retval += WalkThroughChildren(ii);
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 			return retval;
 | |
| 		}
 | |
| 		private string ChildList(ItemInfo itm, int level)
 | |
| 		{
 | |
| 			StringBuilder retval = new StringBuilder();
 | |
| 			// Look at siblings and look at children
 | |
| 			//if (itm.MyContent.ContentPartCount > 0 && itm.ItemID != 4078 && itm.ItemID != 4192 && itm.ItemID != 4194 &&
 | |
| 			//  itm.ItemID != 4330 && itm.ItemID != 4452)
 | |
| 				if (itm.MyContent.ContentPartCount > 0 )
 | |
| 				{
 | |
| 				//retval.Append(string.Format("\r\n{0}(", "".PadLeft(level, '\t')));
 | |
| 					retval.Append(ShowItem(itm));
 | |
| 				foreach (PartInfo pi in itm.MyContent.ContentParts)
 | |
| 				{
 | |
| 					retval.Append(string.Format("\r\n{0}({1} ", "".PadLeft(level + 1, '\t'), Enum.GetName(typeof(E_FromTypes), pi.FromType)));
 | |
| 					foreach (ItemInfo ii in pi.MyItems)
 | |
| 					{
 | |
| 						//retval += WalkThroughSiblings(ii);
 | |
| 						if (retval.ToString().EndsWith(")"))
 | |
| 							retval.Append(string.Format("\r\n{0}", "".PadLeft(level + 2, '\t')));
 | |
| 						retval.Append(ChildList(ii, level + 1));
 | |
| 					}
 | |
| 					retval.Append(string.Format(")", "".PadLeft(level, '\t')));
 | |
| 				}
 | |
| 				//retval.Append(string.Format("\r\n{0})", "".PadLeft(level, '\t')));
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				retval.Append(ShowItem(itm));
 | |
| 			}
 | |
| 			return retval.ToString();
 | |
| 		}
 | |
| 		private string ShowItem(ItemInfo itm)
 | |
| 		{
 | |
| 			return string.Format("{0}{1} ", itm.ItemID, ActiveSection(itm));
 | |
| 			//return string.Format("{0}{1} ", itm.ItemID, ActiveParent(itm));
 | |
| 		}
 | |
| 		private string ActiveParent(ItemInfo itm)
 | |
| 		{
 | |
| 			if (itm == null || itm.MyActiveParent == null) return string.Empty;
 | |
| 			return string.Format("({0})", itm.MyActiveParent);
 | |
| 		}
 | |
| 		private string ActiveSection(ItemInfo itm)
 | |
| 		{
 | |
| 			if (itm == null  || itm.MyActiveSection == null) return "";
 | |
| 			return string.Format("({0})", itm.MyActiveSection);
 | |
| 		}
 | |
| 		//private int WalkThroughSiblings(ItemInfo itemInfo)
 | |
| 		//{
 | |
| 		//  int retval = 0;
 | |
| 		//  if (itemInfo.NextItemCount > 0)
 | |
| 		//  {
 | |
| 		//    foreach (ItemInfo itm in itemInfo.NextItems)
 | |
| 		//    {
 | |
| 		//      retval++;
 | |
| 		//      retval += WalkThroughChildren(itm);
 | |
| 		//    }
 | |
| 		//  }
 | |
| 		//  return retval;
 | |
| 		//}
 | |
| 		private void lbProcedures_SelectedValueChanged(object sender, EventArgs e)
 | |
| 		{
 | |
| 			ItemInfo itemInfo = lbProcedures.SelectedValue as ItemInfo;
 | |
| 			if (itemInfo != null)
 | |
| 			{
 | |
| 				LoadEntireProcedure(itemInfo.ItemID);
 | |
| 				pg.SelectedObject = MyItemInfo;
 | |
| 			}
 | |
| 		}
 | |
| 		private ItemInfo _MyItemInfo;
 | |
| 		public ItemInfo MyItemInfo
 | |
| 		{
 | |
| 			get { return _MyItemInfo; }
 | |
| 			set { _MyItemInfo = value; }
 | |
| 		}
 | |
| 		private int LoadEntireProcedure(int itemID)
 | |
| 		{
 | |
| 			DateTime dtStart = DateTime.Now;// Record the start time 
 | |
| 			MyItemInfo = GetItem(itemID);// Load an item
 | |
| 			DateTime dtLoad = DateTime.Now;// Record the time to this point
 | |
| 			int cnt = WalkThroughChildren(MyItemInfo);// Scan the item counting it's nodes
 | |
| 			DateTime dtEnd = DateTime.Now; // Record the end time
 | |
| 			RecordResults(dtStart,dtLoad,dtEnd,cnt);// Place results on Status Line
 | |
| 			//pg.SelectedObject = itemInfo; // Set the propertygrid to point to the loaded object
 | |
| 			return cnt;
 | |
| 		}
 | |
| 		private ItemInfo GetItem(int itemID)
 | |
| 		{
 | |
| 			switch (cbType.Text as string)
 | |
| 			{
 | |
| 				case("One at a time")://
 | |
| 					return ItemInfo.Get(itemID);
 | |
| 				case ("CSLA - All at Once - Spin Through Children")://
 | |
| 					return ItemInfo.GetItemAndChildren2(itemID);
 | |
| 				case ("SQL - All at Once - Query")://
 | |
| 					if (_IsMultiUnit)
 | |
| 						return ProcedureInfo.GetItemAndChildrenByUnit(itemID, 0, cbUnits.SelectedIndex + 1);
 | |
| 					else
 | |
| 						return ItemInfo.GetItemAndChildren(itemID, 0);
 | |
| 				default:
 | |
| 					return null;
 | |
| 			}
 | |
| 		}
 | |
| 		private TimeSpan _TsLoad;
 | |
| 		private TimeSpan _TsWalk;
 | |
| 		private TimeSpan _TsTotal;
 | |
| 		private int _Count;
 | |
| 		private void ResetResults()
 | |
| 		{
 | |
| 			_TsLoad = _TsWalk = _TsTotal = new TimeSpan(0);
 | |
| 			_Count = 0;
 | |
| 		}
 | |
| 		private void RecordResults(DateTime dtStart, DateTime dtLoad, DateTime dtEnd, int count)
 | |
| 		{
 | |
| 			TimeSpan tsLoad = dtLoad - dtStart;
 | |
| 			TimeSpan tsWalk = dtEnd - dtLoad;
 | |
| 			TimeSpan tsTotal = dtEnd - dtStart;
 | |
| 			_TsLoad += tsLoad;
 | |
| 			_TsWalk += tsWalk;
 | |
| 			_TsTotal += tsTotal;
 | |
| 			_Count += count;
 | |
| 			tsslStatus.Text = string.Format("Load {0}, Check {1}, Total {2}, Items {3}",
 | |
| 				tsLoad.TotalSeconds, tsWalk.TotalSeconds, tsTotal.TotalSeconds, count);
 | |
| 			//Application.DoEvents();
 | |
| 			//Console.WriteLine("{0}\t{1}\t{2}\t{3}", tsLoad.TotalSeconds,tsWalk.TotalSeconds,tsTotal.TotalSeconds, cnt);
 | |
| 		}
 | |
| 		private void DisplaySummary()
 | |
| 		{
 | |
| 			tsslStatus.Text = string.Format("Load {0}, Check {1}, Total {2}, Items {3}",
 | |
| 				_TsLoad.TotalSeconds, _TsWalk.TotalSeconds, _TsTotal.TotalSeconds, _Count);
 | |
| 			Console.WriteLine("{0},{1},{2},{3}",
 | |
| 				_TsLoad.TotalSeconds, _TsWalk.TotalSeconds, _TsTotal.TotalSeconds, _Count);
 | |
| 		}
 | |
| 		private string _MyTitle;
 | |
| 		public string MyTitle
 | |
| 		{
 | |
| 			get { return _MyTitle; }
 | |
| 			set 
 | |
| 			{
 | |
| 				if (_MyTitle == value) return;
 | |
| 				_MyTitle = value;
 | |
| 				Console.WriteLine(MyTitle);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		private void btnRunAll_Click(object sender, EventArgs e)
 | |
| 		{
 | |
| 			Cursor tmp = this.Cursor;
 | |
| 			this.Cursor = Cursors.WaitCursor;
 | |
| 			//DateTime dtStart = DateTime.Now;
 | |
| 			MyTitle = cbType.Text;
 | |
| 			ResetResults();
 | |
| 			int cnt = 0;
 | |
| 			foreach(ItemInfo itemInfo in _Procedures)
 | |
| 				cnt += LoadEntireProcedure(itemInfo.ItemID);
 | |
| 			//DateTime dtEnd = DateTime.Now;
 | |
| 			//tsslStatus.Text = string.Format("Total {0} Count {1}",
 | |
| 			//	TimeSpan.FromTicks(dtEnd.Ticks - dtStart.Ticks).TotalSeconds,cnt);
 | |
| 			DisplaySummary();
 | |
| 			this.Cursor = tmp;
 | |
| 		}
 | |
| 		private void btnRunOne_Click(object sender, EventArgs e)
 | |
| 		{
 | |
| 			// Run the Gets for 
 | |
| 			int itemID = int.Parse(tbItemID.Text);
 | |
| 			//for(int i=1;i<5;i++)
 | |
| 			//  ShowItem(ItemInfo.GetItemAndChildren(itemID, 0), string.Format("XX All at Once Query({0})",i));
 | |
| 			//ShowItem(ItemInfo.Get(itemID),"One at a time");
 | |
| 			//ShowItem(ItemInfo.GetItemAndChildren2(itemID),"All at Once");
 | |
| 			ShowItem(ItemInfo.GetItemAndChildren(itemID, 0), "XX All at Once Query");
 | |
| 		}
 | |
| 		private void ShowItem(ItemInfo itemInfo, string title)
 | |
| 		{
 | |
| 			Console.WriteLine("{0}\r\n{1}", title, ChildList(itemInfo, 0));
 | |
| 		}
 | |
| 		private void frmLoadAtOnce_FormClosing(object sender, FormClosingEventArgs e)
 | |
| 		{
 | |
| 			SaveSettings();
 | |
| 		}
 | |
| 		private void SaveSettings()
 | |
| 		{
 | |
| 			Properties.Settings.Default.LastDatabase = Database.SelectedDatabase;
 | |
| 			Properties.Settings.Default.WindowState = this.WindowState;
 | |
| 			Properties.Settings.Default.Save();
 | |
| 		}
 | |
| 		private void frmLoadAtOnce_Move(object sender, EventArgs e)
 | |
| 		{
 | |
| 			if (this.WindowState == FormWindowState.Normal)
 | |
| 			{
 | |
| 				Properties.Settings.Default.Location = this.Location;
 | |
| 				Properties.Settings.Default.Size = this.Size;
 | |
| 			}
 | |
| 		}
 | |
| 		private void frmLoadAtOnce_Resize(object sender, EventArgs e)
 | |
| 		{
 | |
| 			if (this.WindowState == FormWindowState.Normal)
 | |
| 			{
 | |
| 				Properties.Settings.Default.Location = this.Location;
 | |
| 				Properties.Settings.Default.Size = this.Size;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 	}
 | |
| } |