815 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			815 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.ComponentModel;
 | |
| using System.Data;
 | |
| using System.Drawing;
 | |
| using System.Text;
 | |
| using System.Windows.Forms;
 | |
| 
 | |
| namespace WestinghouseROImport
 | |
| {
 | |
| 	public partial class frmROImport : Form
 | |
| 	{
 | |
| 		public string MyStatus
 | |
| 		{
 | |
| 			get { return tsslStatus.Text; }
 | |
| 			set { tsslStatus.Text = value; Application.DoEvents(); }
 | |
| 		}
 | |
| 		public frmROImport()
 | |
| 		{
 | |
| 			InitializeComponent();
 | |
| 		}
 | |
| 		private string _STPDBRecID = "";
 | |
| 		public string STPDBRecID
 | |
| 		{
 | |
| 			get { return _STPDBRecID; }
 | |
| 			set { _STPDBRecID = value; }
 | |
| 		}
 | |
| 		private void clearOldSetpointData_Click(object sender, EventArgs e)
 | |
| 		{
 | |
| 			int count = ClearSetpointData();
 | |
| 			MessageBox.Show(string.Format("{0} setpoint records deleted", count), "Purge", MessageBoxButtons.OK, MessageBoxIcon.Information);
 | |
| 		}
 | |
| 		private int ClearSetpointData()
 | |
| 		{
 | |
| 			STPTableAdapter.Fill(this.rOMasterDataSet.RO000002);
 | |
| 			DataTable dto = STPTableAdapter.GetData();
 | |
| 			List<DataRow> deleteList = new List<DataRow>();
 | |
| 			foreach (DataRow dr in dto.Rows)
 | |
| 			{
 | |
| 				if (int.Parse(dr["RecType"].ToString()) == 3) // Remove Grouping
 | |
| 				{
 | |
| 					if (dr["ParentID"].ToString() != "00000000")
 | |
| 					{
 | |
| 						deleteList.Add(dr);
 | |
| 					}
 | |
| 					else
 | |
| 					{
 | |
| 						STPDBRecID = dr["RecID"].ToString();
 | |
| 					}
 | |
| 				}
 | |
| 				if (int.Parse(dr["RecType"].ToString()) == 5) // Remove ROs
 | |
| 				{
 | |
| 					deleteList.Add(dr);
 | |
| 				}
 | |
| 			}
 | |
| 			int count = deleteList.Count;
 | |
| 			while (deleteList.Count > 0)
 | |
| 			{
 | |
| 				DataRow dr = deleteList[0];
 | |
| 				dr.Delete();
 | |
| 				STPTableAdapter.Update(dr);
 | |
| 				deleteList.RemoveAt(0);
 | |
| 			}
 | |
| 			return count;
 | |
| 		}
 | |
| 		private Dictionary<string,string> _SetpointParameters;
 | |
| 		public Dictionary<string,string> SetpointParameters
 | |
| 		{
 | |
| 			get { return _SetpointParameters; }
 | |
| 			set { _SetpointParameters = value; }
 | |
| 		}
 | |
| 		private DataRow _DrCount;
 | |
| 		public DataRow DrCount
 | |
| 		{
 | |
| 			get { return _DrCount; }
 | |
| 			set { _DrCount = value; }
 | |
| 		}
 | |
| 		private void importSetpointData_Click(object sender, EventArgs e)
 | |
| 		{
 | |
| 			DateTime dtStart = DateTime.Now;
 | |
| 			ClearSetpointData();
 | |
| 			STPTableAdapter.Fill(this.rOMasterDataSet.RO000002);
 | |
| 			STPImportTableAdapter.Fill(this.rOImportDataSet.ImportSTP_qry);
 | |
| 			DataTable dto = STPTableAdapter.GetData();
 | |
| 			DrCount = dto.Rows[0];
 | |
| 			DataTable dti = STPImportTableAdapter.GetData();
 | |
| 			SetpointParameters = new Dictionary<string, string>();
 | |
| 			foreach (DataRow dr in dti.Rows)
 | |
| 			{
 | |
| 				// Parameter Name Value Description
 | |
| 				//Console.WriteLine("Parameter = '{0}', Name = '{1}', Value = '{2}', Description = '{3}'",
 | |
| 				//	dr["Parameter"], dr["Name"], dr["Value"], dr["Description"]);
 | |
| 				MyStatus = dr["Name"].ToString();
 | |
| 				AddSetpoint(dr["Parameter"].ToString(), dr["Name"].ToString(), dr["Value"].ToString(), dr["Description"].ToString());
 | |
| 			}
 | |
| 			STPTableAdapter.Update(DrCount);
 | |
| 			DateTime dtEnd = DateTime.Now;
 | |
| 			MyStatus = string.Format("{0} Setpoint ROs added in {1} seconds", dti.Rows.Count,TimeSpan.FromTicks(dtEnd.Ticks - dtStart.Ticks).TotalSeconds);
 | |
| 			MessageBox.Show(string.Format("{0} ROs added", dti.Rows.Count), "ROs Loaded", MessageBoxButtons.OK, MessageBoxIcon.Information);
 | |
| 		}
 | |
| 		private void AddSetpoint(string parameter, string id, string value, string description)
 | |
| 		{
 | |
| 			string parentid = AddSetpointParameter(parameter);
 | |
| 			string recid = GetNextSTPRecID();
 | |
| 			string rovalue = BuildSTPROValue(id, value, description);
 | |
| 			STPTableAdapter.Insert(recid, 5, parentid, id, DateTimeStamp, rovalue);
 | |
| 		}
 | |
| 		public string DateTimeStamp
 | |
| 		{
 | |
| 			get {return DateTime.Now.ToString("yyyyMMddHHmm");}
 | |
| 		}
 | |
| 		private string GetNextSTPRecID()
 | |
| 		{
 | |
| 			string nextRec = DrCount["Info"].ToString();
 | |
| 			nextRec = string.Format("{0:x08}", Convert.ToInt32(nextRec,16) + 1);
 | |
| 			DrCount["Info"] = nextRec;
 | |
| 			//STPTableAdapter.Update(DrCount);
 | |
| 			//Console.WriteLine("ID = {0}", nextRec);
 | |
| 			return nextRec;
 | |
| 		}
 | |
| 		private string BuildSTPROValue(string id, string value, string description)
 | |
| 		{
 | |
| 			value = FixSpecialCharacters(value);
 | |
| 			description = FixSpecialCharacters(description);
 | |
| 			return string.Format("<Setpoint MenuTitle=\"{1} - {2}\"><Setpoint__Valuea>{1}</Setpoint__Valuea><Setpoint__ID>{0}</Setpoint__ID><Description>{2}</Description></Setpoint>"
 | |
| 				,id,value,description);
 | |
| 		}
 | |
| 		private string FixSpecialCharacters(string str)
 | |
| 		{
 | |
| 			string str2 = str.Trim();
 | |
| 			StringBuilder sb = new StringBuilder();
 | |
| 			foreach (char c in str2)
 | |
| 			{
 | |
| 				switch (c)
 | |
| 				{
 | |
| 					case '"':
 | |
| 						sb.Append(""");
 | |
| 						break;
 | |
| 					case '&':
 | |
| 						sb.Append("&");
 | |
| 						break;
 | |
| 					case '<':
 | |
| 						sb.Append("<");
 | |
| 						break;
 | |
| 					case '>':
 | |
| 						sb.Append(">");
 | |
| 						break;
 | |
| 					case '\xA0':
 | |
| 						sb.Append(' ');
 | |
| 						break;
 | |
| 					case '\x1E':
 | |
| 						sb.Append('-');
 | |
| 						break;
 | |
| 					case '\xB0':
 | |
| 						sb.Append(c);
 | |
| 						break;
 | |
| 					case '\u2013':
 | |
| 						sb.Append('-');
 | |
| 						break;
 | |
| 					default:
 | |
| 						if (c < ' ' || c > '\x7F')
 | |
| 						{
 | |
| 							sb.Append(string.Format("[x{0:X}]", (int)c));
 | |
| 						}
 | |
| 						else
 | |
| 							sb.Append(c);
 | |
| 						break;
 | |
| 				}
 | |
| 			}
 | |
| 			return sb.ToString();
 | |
| 		}
 | |
| 		private string AddSetpointParameter(string parameter)
 | |
| 		{
 | |
| 			if (!SetpointParameters.ContainsKey(parameter))
 | |
| 			{
 | |
| 				string recid = GetNextSTPRecID();
 | |
| 				string paramValue = BuildSTPParam(parameter);
 | |
| 				STPTableAdapter.Insert(recid, 3, STPDBRecID, null, DateTimeStamp, paramValue);
 | |
| 				SetpointParameters.Add(parameter, recid);
 | |
| 			}
 | |
| 			return SetpointParameters[parameter];
 | |
| 		}
 | |
| 		private string BuildSTPParam(string parameter)
 | |
| 		{
 | |
| 			return string.Format("<vlnGroup MenuTitle=\"{0}\"><Parameter>{0}</Parameter></vlnGroup>", parameter);
 | |
| 		}
 | |
| 		private void clearOldMELData_Click(object sender, EventArgs e)
 | |
| 		{
 | |
| 			// Clear Old MEL Data
 | |
| 			int count = ClearMELData();
 | |
| 			MessageBox.Show(string.Format("{0} MEL records deleted", count), "Purge", MessageBoxButtons.OK, MessageBoxIcon.Information);
 | |
| 		}
 | |
| 		private string MELDBRecID;
 | |
| 		private int ClearMELData()
 | |
| 		{
 | |
| 			MELTableAdapter.Fill(this.rOMasterDataSet.RO000003);
 | |
| 			DataTable dto = MELTableAdapter.GetData();
 | |
| 			List<DataRow> deleteList = new List<DataRow>();
 | |
| 			foreach (DataRow dr in dto.Rows)
 | |
| 			{
 | |
| 				if (int.Parse(dr["RecType"].ToString()) == 3) // Remove Grouping
 | |
| 				{
 | |
| 					if (dr["ParentID"].ToString() != "00000000")
 | |
| 					{
 | |
| 						deleteList.Add(dr);
 | |
| 					}
 | |
| 					else
 | |
| 					{
 | |
| 						MELDBRecID = dr["RecID"].ToString();
 | |
| 					}
 | |
| 				}
 | |
| 				if (int.Parse(dr["RecType"].ToString()) == 5) // Remove ROs
 | |
| 				{
 | |
| 					deleteList.Add(dr);
 | |
| 				}
 | |
| 			}
 | |
| 			int count = deleteList.Count;
 | |
| 			while (deleteList.Count > 0)
 | |
| 			{
 | |
| 				DataRow dr = deleteList[0];
 | |
| 				dr.Delete();
 | |
| 				MELTableAdapter.Update(dr);
 | |
| 				deleteList.RemoveAt(0);
 | |
| 			}
 | |
| 			return count;
 | |
| 		}
 | |
| 		Dictionary<string, string> _MELSystems;
 | |
| 		public Dictionary<string, string> MELSystems
 | |
| 		{
 | |
| 			get { return _MELSystems; }
 | |
| 			set { _MELSystems = value; }
 | |
| 		}
 | |
| 		Dictionary<string, string> _MELSysComp;
 | |
| 		public Dictionary<string, string> MELSysComps
 | |
| 		{
 | |
| 			get { return _MELSysComp; }
 | |
| 			set { _MELSysComp = value; }
 | |
| 		}
 | |
| 		private void importMELData_Click(object sender, EventArgs e)
 | |
| 		{
 | |
| 			DateTime dtStart = DateTime.Now;
 | |
| 			ClearMELData();
 | |
| 			MELTableAdapter.Fill(this.rOMasterDataSet.RO000003);
 | |
| 			MELImportTableAdapter.Fill(this.rOImportDataSet.ImportMEL_qry);
 | |
| 			DataTable dto = MELTableAdapter.GetData();
 | |
| 			DrCount = dto.Rows[0];
 | |
| 			DataTable dti = MELImportTableAdapter.GetData();
 | |
| 			MELSystems = new Dictionary<string, string>();
 | |
| 			MELSysComps = new Dictionary<string, string>();
 | |
| 			int recsAdded = 0;
 | |
| 			DateTime justASecHoney = DateTime.Now + TimeSpan.FromSeconds(10);
 | |
| 			int lastAdded = 0;
 | |
| 			DateTime lastTime = DateTime.Now;
 | |
| 			foreach (DataRow dr in dti.Rows)
 | |
| 			{
 | |
| 				recsAdded++;
 | |
| 				// Parameter Name Value Description
 | |
| 				//Console.WriteLine("Parameter = '{0}', Name = '{1}', Value = '{2}', Description = '{3}'",
 | |
| 				//	dr["Parameter"], dr["Name"], dr["Value"], dr["Description"]);
 | |
| 				MyStatus = dr["FullName"].ToString();
 | |
| 				AddMEL(dr["SystemID"].ToString(), dr["SystemDesc"].ToString(), dr["ComponentID"].ToString(), dr["CompDesc"].ToString()
 | |
| 					, dr["FullName"].ToString(), dr["ShortName"].ToString(), dr["Room"].ToString(), dr["Description"].ToString(), dr["CommonDesc"].ToString());
 | |
| 				DateTime tNow = DateTime.Now;
 | |
| 				if (tNow > justASecHoney)
 | |
| 				{
 | |
| 					int remaining = dti.Rows.Count - recsAdded;
 | |
| 					TimeSpan elapsed = tNow - lastTime;
 | |
| 					TimeSpan total = tNow - dtStart;
 | |
| 					int processed = recsAdded - lastAdded;
 | |
| 					lastTime = tNow;
 | |
| 					lastAdded = recsAdded;
 | |
| 					DateTime eta1 = tNow + TimeSpan.FromTicks(elapsed.Ticks * remaining / processed);
 | |
| 					DateTime eta2 = tNow + TimeSpan.FromTicks(total.Ticks * remaining / recsAdded);
 | |
| 					AddStatusText("{0}\t{1}\t{2}\t{3}\t{4}\t{5}", tNow.ToString("HH:mm:ss"), processed,
 | |
| 						recsAdded, remaining, eta1.ToString("HH:mm:ss"), eta2.ToString("HH:mm:ss"));
 | |
| 					justASecHoney += TimeSpan.FromSeconds(10);
 | |
| 				}
 | |
| 			}
 | |
| 			AddStatusText("{0}\t{1}\t{2}\t{3}", DateTime.Now.ToString("HH:mm:ss"), recsAdded - lastAdded, recsAdded, 0);
 | |
| 			MELTableAdapter.Update(DrCount);
 | |
| 			DateTime dtEnd = DateTime.Now;
 | |
| 			MyStatus = string.Format("{0} MEL ROs added in {1} seconds", dti.Rows.Count, TimeSpan.FromTicks(dtEnd.Ticks - dtStart.Ticks).TotalSeconds);
 | |
| 			MessageBox.Show(string.Format("{0} MEL ROs added", dti.Rows.Count), "ROs Loaded", MessageBoxButtons.OK, MessageBoxIcon.Information);
 | |
| 		}
 | |
| 		private void AddMEL(string systemID, string systemDesc, string ComponentID, string CompDesc, string FullName, string ShortName, string Room, string Description, string CommonDesc)
 | |
| 		{
 | |
| 			string parentid = AddMELSystemComponent(systemID,systemDesc,ComponentID,CompDesc);
 | |
| 			string recid = GetNextMELRecID();
 | |
| 			string rovalue = BuildMELROValue(FullName,ShortName,Room,Description,CommonDesc);
 | |
| 			MELTableAdapter.Insert(recid, 5, parentid, FullName, DateTimeStamp, rovalue);
 | |
| 		}
 | |
| 		private string BuildMELROValue(string FullName, string ShortName, string Room, string Description, string CommonDesc)
 | |
| 		{
 | |
| 			FullName = FixSpecialCharacters(FullName);
 | |
| 			ShortName = FixSpecialCharacters(ShortName);
 | |
| 			Room = FixSpecialCharacters(Room);
 | |
| 			Description = FixSpecialCharacters(Description);
 | |
| 			CommonDesc = FixSpecialCharacters(CommonDesc);
 | |
| 			return string.Format("<MEL MenuTitle=\"{0} - {3}\"><Short__Name>{1}</Short__Name><Full__Name>{0}" + 
 | |
| 				"</Full__Name><Description>{3}</Description><Room>{2}</Room></MEL>",FullName,ShortName,Room,Description,
 | |
| 				CommonDesc); // ComonDesc will not load because it has no token {4}
 | |
| 		}
 | |
| 		private string GetNextMELRecID()
 | |
| 		{
 | |
| 			string nextRec = DrCount["Info"].ToString();
 | |
| 			nextRec = string.Format("{0:x08}", Convert.ToInt32(nextRec, 16) + 1);
 | |
| 			DrCount["Info"] = nextRec;
 | |
| 			//MELTableAdapter.Update(DrCount);
 | |
| 			//Console.WriteLine("ID = {0}", nextRec);
 | |
| 			return nextRec;
 | |
| 		}
 | |
| 		private string AddMELSystemComponent(string systemID, string systemDesc, string ComponentID, string CompDesc)
 | |
| 		{
 | |
| 			string key = systemID + "|" + ComponentID;
 | |
| 			if (!MELSysComps.ContainsKey(key))
 | |
| 			{
 | |
| 				string sysRecID = AddMELSystem(systemID, systemDesc);
 | |
| 				string recid = GetNextMELRecID();
 | |
| 				string compValue = BuildMELComponent(ComponentID,CompDesc);
 | |
| 				MELTableAdapter.Insert(recid, 3, sysRecID, null, DateTimeStamp, compValue);
 | |
| 				MELSysComps.Add(key, recid);
 | |
| 			}
 | |
| 			return MELSysComps[key];
 | |
| 		}
 | |
| 		private string BuildMELComponent(string ComponentID, string CompDesc)
 | |
| 		{
 | |
| 			ComponentID = FixSpecialCharacters(ComponentID);
 | |
| 			CompDesc = FixSpecialCharacters(CompDesc);
 | |
| 			return string.Format("<vlnGroup MenuTitle=\"{0} - {1}\"><Description>{1}" +
 | |
| 				"</Description><Component__Type>{0}</Component__Type></vlnGroup>", ComponentID, CompDesc);
 | |
| 		}
 | |
| 		private string AddMELSystem(string systemID, string systemDesc)
 | |
| 		{
 | |
| 			if (!MELSystems.ContainsKey(systemID))
 | |
| 			{
 | |
| 				string recid = GetNextMELRecID();
 | |
| 				string sysValue = BuildMELSystem(systemID,systemDesc);
 | |
| 				MELTableAdapter.Insert(recid, 3, MELDBRecID, null, DateTimeStamp, sysValue);
 | |
| 				MELSystems.Add(systemID, recid);
 | |
| 			}
 | |
| 			return MELSystems[systemID];
 | |
| 		}
 | |
| 		private string BuildMELSystem(string systemID, string systemDesc)
 | |
| 		{
 | |
| 			systemID = FixSpecialCharacters(systemID);
 | |
| 			systemDesc = FixSpecialCharacters(systemDesc);
 | |
| 			return string.Format("<vlnGroup GroupMenuItem=\"<Component Type> - <Description>\" GroupFieldsInUse=\"00000022 00000010\" MenuTitle=\"{0} - {1}\"><Description>{1}</Description><System>{0}</System></vlnGroup>", systemID, systemID);
 | |
| 		}
 | |
| 		private void AddStatusText(string format, params object []args)
 | |
| 		{
 | |
| 			tbStatus.Select(tbStatus.TextLength, 0);
 | |
| 			tbStatus.SelectedText=string.Format(format, args) + "\r\n";
 | |
| 		}
 | |
| 		private void clearOldARPData_Click(object sender, EventArgs e)
 | |
| 		{
 | |
| 			ClearARPData();
 | |
| 		}
 | |
| 		private string ARPDBRecID;
 | |
| 		private int ClearARPData()
 | |
| 		{
 | |
| 			ARPTableAdapter.Fill(this.rOMasterDataSet.RO000004);
 | |
| 			DataTable dto = ARPTableAdapter.GetData();
 | |
| 			List<DataRow> deleteList = new List<DataRow>();
 | |
| 			foreach (DataRow dr in dto.Rows)
 | |
| 			{
 | |
| 				if (int.Parse(dr["RecType"].ToString()) == 3) // Remove Grouping
 | |
| 				{
 | |
| 					if (dr["ParentID"].ToString() != "00000000")
 | |
| 					{
 | |
| 						deleteList.Add(dr);
 | |
| 					}
 | |
| 					else
 | |
| 					{
 | |
| 						ARPDBRecID = dr["RecID"].ToString();
 | |
| 					}
 | |
| 				}
 | |
| 				if (int.Parse(dr["RecType"].ToString()) == 5) // Remove ROs
 | |
| 				{
 | |
| 					deleteList.Add(dr);
 | |
| 				}
 | |
| 			}
 | |
| 			int count = deleteList.Count;
 | |
| 			while (deleteList.Count > 0)
 | |
| 			{
 | |
| 				DataRow dr = deleteList[0];
 | |
| 				dr.Delete();
 | |
| 				ARPTableAdapter.Update(dr);
 | |
| 				deleteList.RemoveAt(0);
 | |
| 			}
 | |
| 			return count;
 | |
| 		}
 | |
| 		private Dictionary<string, string> _ARPDocuments;
 | |
| 		public Dictionary<string, string> ARPDocuments
 | |
| 		{
 | |
| 			get { return _ARPDocuments; }
 | |
| 			set { _ARPDocuments = value; }
 | |
| 		}
 | |
| 		private Dictionary<string, string> _ARPSystems;
 | |
| 		public Dictionary<string, string> ARPSystems
 | |
| 		{
 | |
| 			get { return _ARPSystems; }
 | |
| 			set { _ARPSystems = value; }
 | |
| 		}
 | |
| 		private void importARPData_Click(object sender, EventArgs e)
 | |
| 		{
 | |
| 			ARPImportTableAdapter.Fill(this.rOImportDataSet.ImportARP_tbl);
 | |
| 			DateTime dtStart = DateTime.Now;
 | |
| 			ClearARPData();
 | |
| 			ARPTableAdapter.Fill(this.rOMasterDataSet.RO000004);
 | |
| 			ARPImportTableAdapter.Fill(this.rOImportDataSet.ImportARP_tbl);
 | |
| 			DataTable dto = ARPTableAdapter.GetData();
 | |
| 			DrCount = dto.Rows[0];
 | |
| 			DataTable dti = ARPImportTableAdapter.GetData();
 | |
| 			ARPDocuments = new Dictionary<string, string>();
 | |
| 			ARPSystems = new Dictionary<string, string>();
 | |
| 			int recsAdded = 0;
 | |
| 			DateTime justASecHoney = DateTime.Now + TimeSpan.FromSeconds(10);
 | |
| 			int lastAdded = 0;
 | |
| 			DateTime lastTime = DateTime.Now;
 | |
| 			foreach (DataRow dr in dti.Rows)
 | |
| 			{
 | |
| 				recsAdded++;
 | |
| 				// Parameter Name Value Description
 | |
| 				//Console.WriteLine("Parameter = '{0}', Name = '{1}', Value = '{2}', Description = '{3}'",
 | |
| 				//	dr["Parameter"], dr["Name"], dr["Value"], dr["Description"]);
 | |
| 				MyStatus = dr["Alarm"].ToString();
 | |
| 				AddARP(dr["Document"].ToString(), dr["Alarm"].ToString(), dr["PointName"].ToString(), dr["Type"].ToString()
 | |
| 					, dr["Value"].ToString(), dr["Description"].ToString(), dr["SystemID"].ToString(), dr["SysTitle"].ToString());
 | |
| 				DateTime tNow = DateTime.Now;
 | |
| 				if (tNow > justASecHoney)
 | |
| 				{
 | |
| 					int remaining = dti.Rows.Count - recsAdded;
 | |
| 					TimeSpan elapsed = tNow - lastTime;
 | |
| 					TimeSpan total = tNow - dtStart;
 | |
| 					int processed = recsAdded - lastAdded;
 | |
| 					lastTime = tNow;
 | |
| 					lastAdded = recsAdded;
 | |
| 					DateTime eta1 = tNow + TimeSpan.FromTicks(elapsed.Ticks * remaining / processed);
 | |
| 					DateTime eta2 = tNow + TimeSpan.FromTicks(total.Ticks * remaining / recsAdded);
 | |
| 					AddStatusText("{0}\t{1}\t{2}\t{3}\t{4}\t{5}", tNow.ToString("HH:mm:ss"), processed,
 | |
| 						recsAdded, remaining, eta1.ToString("HH:mm:ss"), eta2.ToString("HH:mm:ss"));
 | |
| 					justASecHoney += TimeSpan.FromSeconds(10);
 | |
| 				}
 | |
| 			}
 | |
| 			AddStatusText("{0}\t{1}\t{2}\t{3}", DateTime.Now.ToString("HH:mm:ss"), recsAdded - lastAdded, recsAdded, 0);
 | |
| 			ARPTableAdapter.Update(DrCount);
 | |
| 			DateTime dtEnd = DateTime.Now;
 | |
| 			MyStatus = string.Format("{0} ARP ROs added in {1} seconds", dti.Rows.Count, TimeSpan.FromTicks(dtEnd.Ticks - dtStart.Ticks).TotalSeconds);
 | |
| 			MessageBox.Show(string.Format("{0} ARP ROs added", dti.Rows.Count), "ROs Loaded", MessageBoxButtons.OK, MessageBoxIcon.Information);
 | |
| 		}
 | |
| 		private void AddARP(string document, string alarm, string pointName, string type, string value, string description, string systemID, string systemTitle)
 | |
| 		{
 | |
| 			string parentid = AddARPDocumentSystem(document,systemID,systemTitle);
 | |
| 			string recid = GetNextARPRecID();
 | |
| 			string rovalue = BuildARPROValue(alarm, pointName, type, value, description, systemID);
 | |
| 			ARPTableAdapter.Insert(recid, 5, parentid, alarm, DateTimeStamp, rovalue);
 | |
| 		}
 | |
| 		private string BuildARPROValue(string alarm, string pointName, string type, string value, string description, string systemID)
 | |
| 		{
 | |
| 			alarm = FixSpecialCharacters(alarm);
 | |
| 			pointName = FixSpecialCharacters(pointName);
 | |
| 			type = FixSpecialCharacters(type);
 | |
| 			value = FixSpecialCharacters(value);
 | |
| 			description = FixSpecialCharacters(description);
 | |
| 			systemID = FixSpecialCharacters(systemID);
 | |
| 			return string.Format("<Alarms MenuTitle=\"{0} - {4}\"><Alarm>{0}</Alarm><PointName>{1}</PointName><Type>{2}</Type>" +
 | |
| 				"<Alarm__Value>{3}</Alarm__Value><Description>{4}</Description><SystemID>{5}</SystemID></Alarms>",
 | |
| 			alarm,pointName,type,value,description,systemID);
 | |
| 		}
 | |
| 		private string GetNextARPRecID()
 | |
| 		{
 | |
| 			string nextRec = DrCount["Info"].ToString();
 | |
| 			nextRec = string.Format("{0:x08}", Convert.ToInt32(nextRec, 16) + 1);
 | |
| 			DrCount["Info"] = nextRec;
 | |
| 			return nextRec;
 | |
| 		}
 | |
| 		private string AddARPDocumentSystem(string document, string systemID, string systemTitle)
 | |
| 		{
 | |
| 			if (!ARPDocuments.ContainsKey(document))
 | |
| 			{
 | |
| 				string recid = GetNextARPRecID();
 | |
| 				string documentValue = BuildARPDocument(document);
 | |
| 				ARPTableAdapter.Insert(recid, 3, ARPDBRecID, null, DateTimeStamp, documentValue);
 | |
| 				ARPDocuments.Add(document, recid);
 | |
| 			}
 | |
| 			if(document != "None") return ARPDocuments[document];
 | |
| 			string parentID = ARPDocuments[document];
 | |
| 			if (!ARPSystems.ContainsKey(systemID))
 | |
| 			{
 | |
| 				string recid = GetNextARPRecID();
 | |
| 				string documentValue = BuildARPSystem(systemID,systemTitle);
 | |
| 				ARPTableAdapter.Insert(recid, 3, parentID , null, DateTimeStamp, documentValue);
 | |
| 				ARPSystems.Add(systemID, recid);
 | |
| 			}
 | |
| 			return ARPSystems[systemID];
 | |
| 		}
 | |
| 		private string BuildARPSystem(string systemID, string systemTitle)
 | |
| 		{
 | |
| 			systemID = FixSpecialCharacters(systemID);
 | |
| 			systemTitle = FixSpecialCharacters(systemTitle);
 | |
| 			return string.Format("<vlnGroup MenuTitle=\"{0} - {1}\"><Description>{1}</Description><System>{0}</System></vlnGroup>", systemID, systemTitle);
 | |
| 		}
 | |
| 		private string BuildARPDocument(string document)
 | |
| 		{
 | |
| 			if(document != "None")
 | |
| 				return string.Format("<vlnGroup MenuTitle=\"{0}\"><Document>{0}</Document></vlnGroup>", document);
 | |
| 			else
 | |
| 				return string.Format("<vlnGroup GroupMenuItem=\"<System> - <Description>\" " +
 | |
| 					"GroupFieldsInUse=\"0000001e 00000010\" MenuTitle=\"{0}\"><Document>{0}</Document></vlnGroup>",document);
 | |
| 		}
 | |
| 		private void updateToCPPSetpoints_Click(object sender, EventArgs e)
 | |
| 		{
 | |
| 			Dictionary<String, int> parentCount = new Dictionary<string, int>();
 | |
| 			Dictionary<String, DataRow> parentDictionary = new Dictionary<string, DataRow>();
 | |
| 			Dictionary<String, DataRow> roDictionary = new Dictionary<string, DataRow>();
 | |
| 			ROMasterDataSet.RO000002DataTable dto = STPTableAdapter.GetData();
 | |
| 			BuildSTPDictionaries(dto, parentCount, parentDictionary, roDictionary);
 | |
| 			STPCPPImportTableAdapter.Fill(this.rOCPPImportDataSet.ImportSTP_qry);
 | |
| 			ROCPPImportDataSet.ImportSTP_qryDataTable dti = STPCPPImportTableAdapter.GetData();
 | |
| 			int updateCount = 0;
 | |
| 			int updatePCount = 0;
 | |
| 			foreach (DataRow dr in dti.Rows)
 | |
| 			{
 | |
| 				string accPageID = dr["Name"].ToString().Trim();
 | |
| 				if (roDictionary.ContainsKey(accPageID))
 | |
| 				{
 | |
| 					DataRow dro = roDictionary[accPageID];
 | |
| 					roDictionary.Remove(accPageID);
 | |
| 					string info = BuildSTPROValue(dr["Name"].ToString(), dr["Value"].ToString(), dr["Description"].ToString());
 | |
| 					string infoOld = dro["Info"].ToString();
 | |
| 					if (info != infoOld)
 | |
| 					{
 | |
| 						dro["Info"] = info;
 | |
| 						dro["ModDateTime"] = DateTimeStamp;
 | |
| 						STPTableAdapter.Update(dro);
 | |
| 						MyStatus = "Updating " + accPageID;
 | |
| 						AddStatusText("Updating {0}", accPageID);
 | |
| 						updateCount++;
 | |
| 					}
 | |
| 				}
 | |
| 				else
 | |
| 				{
 | |
| 					//if dro is null because accpageid does not exist, need to add including figuring out parent status and adding parent if it does not exist
 | |
| 					//get parent for new ro
 | |
| 					//see if parent exists
 | |
| 					MessageBox.Show("oh oh, new ro exists");
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			MyStatus = string.Format("{0} ROs Updated", updateCount);
 | |
| 			AddStatusText("RO Rows Updated: {0}", updateCount);
 | |
| 			// What has not been processed
 | |
| 			updateCount = 0;
 | |
| 			foreach (string key in roDictionary.Keys)
 | |
| 			{
 | |
| 				DataRow dr = roDictionary[key];
 | |
| 				string parentID = dr["ParentID"].ToString().Trim();
 | |
| 				dr.Delete();
 | |
| 				STPTableAdapter.Update(dr);
 | |
| 				MyStatus = string.Format("Deleting {0}", key);
 | |
| 				AddStatusText("Deleting {0}", key);
 | |
| 				updateCount++;
 | |
| 				parentCount[parentID]--;
 | |
| 				if (parentCount[parentID] == 0)
 | |
| 				{
 | |
| 					DataRow drp = parentDictionary[parentID];
 | |
| 					string grandparentID = drp["ParentID"].ToString().Trim();
 | |
| 					drp.Delete();
 | |
| 					STPTableAdapter.Update(drp);
 | |
| 					MyStatus = string.Format("Deleting Parent {0}", parentID);
 | |
| 					AddStatusText("Deleting Parent {0}", parentID);
 | |
| 					updatePCount++;
 | |
| 					parentCount[grandparentID]--;
 | |
| 					if (parentCount[grandparentID] == 0)
 | |
| 					{
 | |
| 						DataRow drgp = parentDictionary[grandparentID];
 | |
| 						drgp.Delete();
 | |
| 						STPTableAdapter.Update(drgp);
 | |
| 						MyStatus = string.Format("Deleting GrandParent {0}", grandparentID);
 | |
| 						AddStatusText("Deleting GrandParent {0}", grandparentID);
 | |
| 						updatePCount++;
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 			MyStatus = string.Format("{0} ROs Deleted, {1} RO Parent/GrandParent Ros Deleted", updateCount, updatePCount);
 | |
| 			AddStatusText("RO Rows Deleted: {0}, RO Parent/GrandParent Rows Deleted {1}", updateCount, updatePCount);
 | |
| 		}
 | |
| 		private void BuildSTPDictionaries(ROMasterDataSet.RO000002DataTable dto, Dictionary<string, int> parentCount, Dictionary<string, DataRow> parentRow, Dictionary<string, DataRow> dataRow)
 | |
| 		{
 | |
| 			foreach (DataRow dr in dto.Rows)
 | |
| 			{
 | |
| 				if (int.Parse(dr["RecType"].ToString()) == 3) // Remove Grouping
 | |
| 				{
 | |
| 					if (dr["ParentID"].ToString() != "00000000")
 | |
| 					{
 | |
| 						parentRow.Add(dr["RecID"].ToString().Trim(), dr);
 | |
| 						AddToParentCount(parentCount, dr["ParentID"].ToString().Trim());
 | |
| 					}
 | |
| 				}
 | |
| 				if (int.Parse(dr["RecType"].ToString()) == 5) // Remove ROs
 | |
| 				{
 | |
| 					string accPageID = dr["AccPageID"].ToString().Trim();
 | |
| 					dataRow.Add(accPageID, dr);
 | |
| 					AddToParentCount(parentCount, dr["ParentID"].ToString().Trim());
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		private void BuildARPDictionaries(ROMasterDataSet.RO000004DataTable dto, Dictionary<string, int> parentCount, Dictionary<string, DataRow> parentRow, Dictionary<string, DataRow> dataRow)
 | |
| 		{
 | |
| 			foreach (DataRow dr in dto.Rows)
 | |
| 			{
 | |
| 				if (int.Parse(dr["RecType"].ToString()) == 3) // Remove Grouping
 | |
| 				{
 | |
| 					if (dr["ParentID"].ToString() != "00000000")
 | |
| 					{
 | |
| 						parentRow.Add(dr["RecID"].ToString().Trim(), dr);
 | |
| 						AddToParentCount(parentCount, dr["ParentID"].ToString().Trim());
 | |
| 					}
 | |
| 				}
 | |
| 				if (int.Parse(dr["RecType"].ToString()) == 5) // Remove ROs
 | |
| 				{
 | |
| 					string accPageID = dr["AccPageID"].ToString().Trim();
 | |
| 					dataRow.Add(accPageID, dr);
 | |
| 					AddToParentCount(parentCount, dr["ParentID"].ToString().Trim());
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		private void AddToParentCount(Dictionary<string, int> parentCount, string parentID)
 | |
| 		{
 | |
| 			if (!parentCount.ContainsKey(parentID))
 | |
| 				parentCount.Add(parentID, 0);
 | |
| 			parentCount[parentID]++;
 | |
| 		}
 | |
| 		private void BuildMELDictionaries(ROMasterDataSet.RO000003DataTable dto, Dictionary<string, int> parentCount, Dictionary<string, DataRow> parentRow, Dictionary<string, DataRow> dataRow)
 | |
| 		{
 | |
| 			foreach (DataRow dr in dto.Rows)
 | |
| 			{
 | |
| 				if (int.Parse(dr["RecType"].ToString()) == 3) // Remove Grouping
 | |
| 				{
 | |
| 					if (dr["ParentID"].ToString() != "00000000")
 | |
| 					{
 | |
| 						parentRow.Add(dr["RecID"].ToString().Trim(), dr);
 | |
| 						AddToParentCount(parentCount, dr["ParentID"].ToString().Trim());
 | |
| 					}
 | |
| 				}
 | |
| 				if (int.Parse(dr["RecType"].ToString()) == 5) // Remove ROs
 | |
| 				{
 | |
| 					string accPageID = dr["AccPageID"].ToString().Trim();
 | |
| 					dataRow.Add(accPageID, dr);
 | |
| 					AddToParentCount(parentCount, dr["ParentID"].ToString().Trim());
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		private void updateToCPPEquipment_Click(object sender, EventArgs e)
 | |
| 		{
 | |
| 			Dictionary<String, int> parentCount = new Dictionary<string, int>();
 | |
| 			Dictionary<String, DataRow> parentDictionary = new Dictionary<string, DataRow>();
 | |
| 			Dictionary<String, DataRow> roDictionary = new Dictionary<string, DataRow>();
 | |
| 			ROMasterDataSet.RO000003DataTable dto = MELTableAdapter.GetData();
 | |
| 			BuildMELDictionaries(dto, parentCount, parentDictionary, roDictionary);
 | |
| 			MELCPPImportTableAdapter.Fill(this.rOCPPImportDataSet.ImportMEL_qry);
 | |
| 			ROCPPImportDataSet.ImportMEL_qryDataTable dti = MELCPPImportTableAdapter.GetData();
 | |
| 			int updateCount = 0;
 | |
| 			int updatePCount = 0;
 | |
| 			foreach (DataRow dr in dti.Rows)
 | |
| 			{
 | |
| 				string accPageID = dr["FullName"].ToString().Trim();
 | |
| 				if (roDictionary.ContainsKey(accPageID))
 | |
| 				{
 | |
| 					DataRow dro = roDictionary[accPageID];
 | |
| 					roDictionary.Remove(accPageID);
 | |
| 					string info = BuildMELROValue(dr["Fullname"].ToString(), dr["ShortName"].ToString(), dr["Room"].ToString(), dr["Description"].ToString(), dr["CommonDesc"].ToString());
 | |
| 					string infoOld = dro["Info"].ToString();
 | |
| 					if (info != infoOld)
 | |
| 					{
 | |
| 						dro["Info"] = info;
 | |
| 						dro["ModDateTime"] = DateTimeStamp;
 | |
| 						MELTableAdapter.Update(dro);
 | |
| 						MyStatus = "Updating " + accPageID;
 | |
| 						AddStatusText("Updating {0}", accPageID);
 | |
| 						updateCount++;
 | |
| 					}
 | |
| 				}
 | |
| 				else
 | |
| 				{
 | |
| 					//if dro is null because accpageid does not exist, need to add including figuring out parent status and adding parent if it does not exist
 | |
| 					//get parent for new ro
 | |
| 					//see if parent exists
 | |
| 					AddStatusText("**********  new mel item '{0}'  **********", accPageID);
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			MyStatus = string.Format("{0} ROs Updated", updateCount);
 | |
| 			AddStatusText("RO Rows Updated: {0}", updateCount);
 | |
| 			// What has not been processed
 | |
| 			updateCount = 0;
 | |
| 			foreach (string key in roDictionary.Keys)
 | |
| 			{
 | |
| 				if (key == "CCS-EJ-PLV200")
 | |
| 					System.Threading.Thread.Sleep(1000);
 | |
| 				DataRow dr = roDictionary[key];
 | |
| 				string parentID = dr["ParentID"].ToString().Trim();
 | |
| 				dr.Delete();
 | |
| 				MELTableAdapter.Update(dr);
 | |
| 				MyStatus = string.Format("Deleting {0}", key);
 | |
| 				AddStatusText("Deleting '{0}'", key);
 | |
| 				updateCount++;
 | |
| 				parentCount[parentID]--;
 | |
| 				if (parentCount[parentID] == 0)
 | |
| 				{
 | |
| 					DataRow drp = parentDictionary[parentID];
 | |
| 					string grandparentID = drp["ParentID"].ToString().Trim();
 | |
| 					drp.Delete();
 | |
| 					MELTableAdapter.Update(drp);
 | |
| 					MyStatus = string.Format("Deleting Parent {0}", parentID);
 | |
| 					AddStatusText("Deleting Parent {0}", parentID);
 | |
| 					updatePCount++;
 | |
| 					parentCount[grandparentID]--;
 | |
| 					if (parentCount[grandparentID] == 0)
 | |
| 					{
 | |
| 						DataRow drgp = parentDictionary[grandparentID];
 | |
| 						drgp.Delete();
 | |
| 						MELTableAdapter.Update(drgp);
 | |
| 						MyStatus = string.Format("Deleting GrandParent {0}", grandparentID);
 | |
| 						AddStatusText("Deleting GrandParent {0}", grandparentID);
 | |
| 						updatePCount++;
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 			MyStatus = string.Format("{0} ROs Deleted, {1} RO Parent/GrandParent Ros Deleted", updateCount, updatePCount);
 | |
| 			AddStatusText("RO Rows Deleted: {0}, RO Parent/GrandParent Rows Deleted {1}", updateCount, updatePCount);
 | |
| 		}
 | |
| 		private void updateToCPPAlarms_Click(object sender, EventArgs e)
 | |
| 		{
 | |
| 			Dictionary<String, int> parentCount = new Dictionary<string, int>();
 | |
| 			Dictionary<String, DataRow> parentDictionary = new Dictionary<string, DataRow>();
 | |
| 			Dictionary<String, DataRow> roDictionary = new Dictionary<string, DataRow>();
 | |
| 			ROMasterDataSet.RO000004DataTable dto = ARPTableAdapter.GetData();
 | |
| 			BuildARPDictionaries(dto, parentCount, parentDictionary, roDictionary);
 | |
| 			//why is this not a query versus a table
 | |
| 			ARPCPPImportTableAdapter.Fill(this.rOCPPImportDataSet.ImportARP_tbl);
 | |
| 			ROCPPImportDataSet.ImportARP_tblDataTable dti = ARPCPPImportTableAdapter.GetData();
 | |
| 			int updateCount = 0;
 | |
| 			int updatePCount = 0;
 | |
| 			int addCount = 0;
 | |
| 			foreach (DataRow dr in dti.Rows)
 | |
| 			{
 | |
| 				string accPageID = dr["Alarm"].ToString().Trim();
 | |
| 				if (roDictionary.ContainsKey(accPageID))
 | |
| 				{
 | |
| 					DataRow dro = roDictionary[accPageID];
 | |
| 					roDictionary.Remove(accPageID);
 | |
| 					string info = BuildARPROValue(dr["Alarm"].ToString(), dr["PointName"].ToString(), dr["Type"].ToString(), dr["Value"].ToString(), dr["Description"].ToString(), dr["SystemID"].ToString());
 | |
| 					string infoOld = dro["Info"].ToString();
 | |
| 					if (info != infoOld)
 | |
| 					{
 | |
| 						dro["Info"] = info;
 | |
| 						dro["ModDateTime"] = DateTimeStamp;
 | |
| 						ARPTableAdapter.Update(dro);
 | |
| 						MyStatus = "Updating " + accPageID;
 | |
| 						AddStatusText("Updating {0}", accPageID);
 | |
| 						updateCount++;
 | |
| 					}
 | |
| 				}
 | |
| 				else
 | |
| 				{
 | |
| 					//if dro is null because accpageid does not exist, need to add including figuring out parent status and adding parent if it does not exist
 | |
| 					//get parent for new ro
 | |
| 					//see if parent exists
 | |
| 					AddStatusText("**********  new arp item '{0}'  **********", accPageID);
 | |
| 					addCount++;
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			MyStatus = string.Format("{0} ROs Updated", updateCount);
 | |
| 			AddStatusText("RO Rows Updated: {0}", updateCount);
 | |
| 			AddStatusText("RO Rows Added: {0}", addCount);
 | |
| 			// What has not been processed
 | |
| 			updateCount = 0;
 | |
| 			foreach (string key in roDictionary.Keys)
 | |
| 			{
 | |
| 				DataRow dr = roDictionary[key];
 | |
| 				string parentID = dr["ParentID"].ToString().Trim();
 | |
| 				dr.Delete();
 | |
| 				ARPTableAdapter.Update(dr);
 | |
| 				MyStatus = string.Format("Deleting {0}", key);
 | |
| 				AddStatusText("Deleting '{0}'", key);
 | |
| 				updateCount++;
 | |
| 				parentCount[parentID]--;
 | |
| 				if (parentCount[parentID] == 0)
 | |
| 				{
 | |
| 					DataRow drp = parentDictionary[parentID];
 | |
| 					string grandparentID = drp["ParentID"].ToString().Trim();
 | |
| 					drp.Delete();
 | |
| 					ARPTableAdapter.Update(drp);
 | |
| 					MyStatus = string.Format("Deleting Parent {0}", parentID);
 | |
| 					AddStatusText("Deleting Parent {0}", parentID);
 | |
| 					updatePCount++;
 | |
| 					parentCount[grandparentID]--;
 | |
| 					if (parentCount[grandparentID] == 0)
 | |
| 					{
 | |
| 						DataRow drgp = parentDictionary[grandparentID];
 | |
| 						drgp.Delete();
 | |
| 						ARPTableAdapter.Update(drgp);
 | |
| 						MyStatus = string.Format("Deleting GrandParent {0}", grandparentID);
 | |
| 						AddStatusText("Deleting GrandParent {0}", grandparentID);
 | |
| 						updatePCount++;
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 			MyStatus = string.Format("{0} ROs Deleted, {1} RO Parent/GrandParent Ros Deleted", updateCount, updatePCount);
 | |
| 			AddStatusText("RO Rows Deleted: {0}, RO Parent/GrandParent Rows Deleted {1}", updateCount, updatePCount);
 | |
| 		}
 | |
| 	}
 | |
| } |