SourceCode/PROMS/DataLoader/OutsideTransition.cs
Rich 5af2c31559 Removed Debug Print
Moved code to add sections to Procedure parts
Moved code to add steps to Section parts
Moved code to add steps to Step parts
Changed Debug Print
Fixed a Format Flag conversion DontBreakOptEquipmentList
Changed GetItemFont so that parent items would not be left in the cache
Changed AddIncludedStepNumber to allow for ranges to sub levels.
Added a array reference to StepDataList by index.
2010-06-17 18:42:06 +00:00

279 lines
8.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
//using System.Collections.Specialized;
//using System.Collections.Generic;
//using System.Xml;
//using System.IO;
//using System.Text;
using VEPROMS.CSLA.Library;
namespace DataLoader
{
class OutsideTransition
{
private OleDbConnection _DbConnect;
public OleDbConnection DbConnect
{
get { return _DbConnect; }
set { _DbConnect = value; }
}
private Dictionary <string,ItemInfo> _TranLookup;
public OutsideTransition(OleDbConnection cn)
{
_DbConnect = cn;
_TranLookup = new Dictionary<string, ItemInfo>();
}
public ItemInfo GetItem(string key)
{
if (!_TranLookup.ContainsKey(key))
_TranLookup.Add(key, Find(key));
return _TranLookup[key];
}
private ItemInfo Find(string key)
{
string setid = key.Substring(0, 8);
string procid = key.Substring(8, 8);
string path = GetPath(setid);// Get set path from XTSETID
string proc = GetProc(setid, procid);// Get procedure number from XTPROCID
return Find(path,proc);// Return ItemInfo based upon path and procedure number
}
private ItemInfo Find(string path, string proc)
{
return OTLookup.Find(path, proc);
}
private string GetProc(string setid, string procid)
{
string retval = null;
string xtproccmd = "SELECT * FROM [xtprocid] WHERE [SETID]='" + setid + "' AND [PROCID]='" + procid + "'";
using (OleDbDataAdapter da = new OleDbDataAdapter(xtproccmd, _DbConnect))
{
try
{
DataSet ds = new DataSet();
da.Fill(ds);
DataTable dt = ds.Tables[0];
dt.CaseSensitive = true;
DataRow dr = dt.Rows[0]; // there should be only one entry!
retval = dr["Procnum"].ToString(); // this should be the procedure number!
ds.Dispose();
}
catch (Exception ex)
{
return "<Procedure Number>";//ex.GetType().Name + " " + ex.Message;
}
}
return retval;
}
private string GetPath(string setid)
{
try
{
string xtsetcmd = "SELECT * FROM [xtsetid] WHERE [SETID]='" + setid + "'";
OleDbDataAdapter da = new OleDbDataAdapter(xtsetcmd, _DbConnect);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable dt = ds.Tables[0];
dt.CaseSensitive = true;
DataRow dr = dt.Rows[0]; // there should be only one entry!
string retval = dr["Path"].ToString();
da.Dispose();
ds.Dispose();
return retval; // dr["Path"].ToString(); // this should be the path to the proc set!
}
catch (Exception ex)
{
return "<Procedure Set Location>";//ex.GetType().Name + " " + ex.Message;
}
}
private string GetTitle(string setid, string procid)
{
try
{
string xtproccmd = "SELECT * FROM [xtprocid] WHERE [SETID]='" + setid + "' AND [PROCID]='" + procid + "'";
OleDbDataAdapter da = new OleDbDataAdapter(xtproccmd, _DbConnect);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable dt = ds.Tables[0];
dt.CaseSensitive = true;
DataRow dr = dt.Rows[0]; // there should be only one entry!
string retval = dr["Proctitle"].ToString();
da.Dispose();
ds.Dispose();
return retval; // dr["Proctitle"].ToString(); // this should be the procedure number!
}
catch (Exception ex)
{
return "<Procedure Title>";//ex.GetType().Name + " " + ex.Message;
}
}
public string GetDescription(string key)
{
string setid = key.Substring(0, 8);
string procid = key.Substring(8, 8);
string path = GetPath(setid);// Get set path from XTSETID
string proc = GetProc(setid, procid);// Get procedure number from XTPROCID
string title = GetTitle(setid, procid);// Get procedure title from XTPROCID
return string.Format("{0}, {1} in folder {2}",proc,title,path);
}
public string GetTransitionText(string key)
{
string setid = key.Substring(0, 8);
string procid = key.Substring(8, 8);
string proc = GetProc(setid, procid);// Get procedure number from XTPROCID
string title = GetTitle(setid, procid);// Get procedure title from XTPROCID
return string.Format("{0}, {1}", proc, title);
}
//private string ProcessOutSideTrans(OleDbConnection cn, string thekey, string pth)
//{
// string xtransstring = null;
// DataTable dt = null;
// DataSet ds = null;
// OleDbDataAdapter da = null;
// DataTable dt2 = null;
// DataSet ds2 = null;
// OleDbDataAdapter da2 = null;
// string tosetid = thekey.Substring(0, 8);
// string toprocid = thekey.Substring(8, 8);
// /// Get the path to the procedure set from the SETID
// string xtsetcmd = "SELECT * FROM [xtsetid] WHERE [SETID]='" + tosetid + "'";
// string xtproccmd = "SELECT * FROM [xtprocid] WHERE [SETID]='" + tosetid + "' AND [PROCID]='" + toprocid + "'";
// da = new OleDbDataAdapter(xtsetcmd, cn);
// da2 = new OleDbDataAdapter(xtproccmd, cn);
// // get xtsetid records.
// ds = new DataSet();
// try
// {
// da.Fill(ds);
// dt = ds.Tables[0];
// dt.CaseSensitive = true;
// }
// catch (Exception ex)
// {
// log.Error("Error getting XTSETID");
// log.ErrorFormat("to number = {0}", thekey);
// log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException);
// //return textm;
// }
// DataRow dr = dt.Rows[0]; // there should be only one entry!
// string setpth = dr["Path"].ToString(); // this should be the path to the proc set!
// // get xtprocid records
// ds2 = new DataSet();
// try
// {
// da2.Fill(ds2);
// dt2 = ds2.Tables[0];
// dt2.CaseSensitive = true;
// }
// catch (Exception ex)
// {
// log.Error("Error getting XTPROCID");
// log.ErrorFormat("to number = {0}", thekey);
// log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException);
// //return textm;
// }
// DataRow dr2 = dt2.Rows[0]; // there should be only one entry!
// string procnum = dr2["Procnum"].ToString(); // this should be the procedure number!
// xtransstring = setpth + "\\" + procnum; // ex: VEHLP\PROCS\0POP05-EO00
// //if (pathsAreEqual(setpth, pth))
// //{
// // // Outside Transiton is to this procedure set (not really outsde)
// // // need to find the item id that references the proc number and title
// // // - find the setpth in the doc.version
// //}
// //else
// //return thekey; // is a true outside transition
// return xtransstring;
//}
}
internal static class OTLookup
{
private static Dictionary<string, ItemInfo> _Lookup = null;
public static ItemInfo Find(string path, string procnum)
{
string key = string.Format(@"{0}\{1}",path,procnum);
if (_Lookup == null)
_Lookup = new Dictionary<string, ItemInfo>();
if (!_Lookup.ContainsKey(key))
_Lookup.Add(key, FindItem(path, procnum));
return _Lookup[key];
}
private static DocVersionInfoList _DocVersions = null;
private static ItemInfo FindItem(string path, string procnum)
{
if (_DocVersions == null)
_DocVersions = DocVersionInfoList.Get();
DocVersionInfo dvi = ExactMatch(path);
if (dvi == null) dvi = PartialMatch(path);
if (dvi != null) return FindItem(dvi, procnum);
return null;
}
private static ItemInfo FindItem(DocVersionInfo dvi, string procnum)
{
foreach (ItemInfo itm in dvi.Procedures)
if (itm.MyContent.Number == procnum)
return itm;
return null;
}
private static DocVersionInfo PartialMatch(string path)
{
string partial = GetPartial(path);
if (partial != null)
{
foreach (DocVersionInfo dvi in _DocVersions)
{
if (dvi.MyFolder.Title.ToUpper().EndsWith(partial.ToUpper()))
return dvi;
}
}
return null;
}
private static string GetPartial(string path)
{
//Console.WriteLine(string.Format("GetPartial path = {0}",path));
if (path.Contains("\\"))
{
string[] parts = path.Split("\\".ToCharArray());
return "\\" + parts[parts.Length - 2] + "\\" + parts[parts.Length - 1];
}
else
return null;
}
private static DocVersionInfo ExactMatch(string path)
{
foreach (DocVersionInfo dvi in _DocVersions)
if (dvi.MyFolder.Title.ToUpper().EndsWith(path.ToUpper()))
return dvi;
return null;
}
}
}