SourceCode/PROMS/VEPROMS/TestFullLoad/frmTestLoadAtOnce.cs

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;
}
}
}
}