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