allow update of formats from PROMS interface
This commit is contained in:
parent
c04081d056
commit
bfd97a31bf
@ -18,6 +18,7 @@ using System.IO;
|
|||||||
using System.Xml;
|
using System.Xml;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace VEPROMS.CSLA.Library
|
namespace VEPROMS.CSLA.Library
|
||||||
{
|
{
|
||||||
@ -29,6 +30,21 @@ namespace VEPROMS.CSLA.Library
|
|||||||
string ToString();
|
string ToString();
|
||||||
string FullName { get; }
|
string FullName { get; }
|
||||||
}
|
}
|
||||||
|
public class FormatEventArgs
|
||||||
|
{
|
||||||
|
private string _Status;
|
||||||
|
|
||||||
|
public string Status
|
||||||
|
{
|
||||||
|
get { return _Status; }
|
||||||
|
set { _Status = value; }
|
||||||
|
}
|
||||||
|
public FormatEventArgs(string status)
|
||||||
|
{
|
||||||
|
_Status = status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public delegate void FormatEvent(object sender,FormatEventArgs args);
|
||||||
public partial class Format:IFormatOrFormatInfo
|
public partial class Format:IFormatOrFormatInfo
|
||||||
{
|
{
|
||||||
#region PlantFormat
|
#region PlantFormat
|
||||||
@ -37,6 +53,12 @@ namespace VEPROMS.CSLA.Library
|
|||||||
public PlantFormat PlantFormat
|
public PlantFormat PlantFormat
|
||||||
{ get { return (_PlantFormat != null ? _PlantFormat : _PlantFormat = new PlantFormat(this)); } }
|
{ get { return (_PlantFormat != null ? _PlantFormat : _PlantFormat = new PlantFormat(this)); } }
|
||||||
#endregion
|
#endregion
|
||||||
|
public static event FormatEvent FormatLoaded;
|
||||||
|
private static void OnFormatLoaded(object sender, FormatEventArgs args)
|
||||||
|
{
|
||||||
|
if (FormatLoaded != null)
|
||||||
|
FormatLoaded(sender, args);
|
||||||
|
}
|
||||||
public IFormatOrFormatInfo MyIParent { get { return MyParent; } }
|
public IFormatOrFormatInfo MyIParent { get { return MyParent; } }
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
@ -52,6 +74,171 @@ namespace VEPROMS.CSLA.Library
|
|||||||
return MyParent.Description + " - " + Description + " (" + Name + ")";
|
return MyParent.Description + " - " + Description + " (" + Name + ")";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void UpdateFormats(string fmtPath, string genmacPath)
|
||||||
|
{
|
||||||
|
Format basefmt = null;
|
||||||
|
Format parent = null;
|
||||||
|
|
||||||
|
|
||||||
|
// Load base format.
|
||||||
|
basefmt = AddFormatToDB(null, "base", false, DateTime.Now, "Migration", fmtPath, genmacPath);
|
||||||
|
if (basefmt == null) return;
|
||||||
|
// now loop through all files... If there is an _ in the name, it's a subformat
|
||||||
|
// (for example, AEP_00.xml) skip it in main loop, it's handled for each format.
|
||||||
|
DirectoryInfo di = new DirectoryInfo(fmtPath); //(@"c:\development\fmtall");
|
||||||
|
FileInfo[] fis = di.GetFiles("*.xml");
|
||||||
|
|
||||||
|
foreach (FileInfo fi in fis)
|
||||||
|
{
|
||||||
|
//if (fi.Name.ToUpper() == "WCN2ALL.XML"|| fi.Name.ToUpper() == "OHLPALL.XML")
|
||||||
|
//{
|
||||||
|
bool issub = (fi.Name.IndexOf("_") > 0) ? true : false;
|
||||||
|
if (!issub && fi.Name.ToLower() != "baseall.xml")
|
||||||
|
{
|
||||||
|
string fmtname = fi.Name.Substring(0, fi.Name.Length - 7);
|
||||||
|
// remove the all.xml part of the filename.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
parent = AddFormatToDB(basefmt, fmtname, issub, DateTime.Now, "Migration", fmtPath, genmacPath);
|
||||||
|
if (parent != null)
|
||||||
|
{
|
||||||
|
// now see if there are any subformats associated with this, if so
|
||||||
|
// add them here...
|
||||||
|
DirectoryInfo sdi = new DirectoryInfo(fmtPath); //("c:\\development\\fmtall");
|
||||||
|
FileInfo[] sfis = di.GetFiles(fmtname + "_*.xml");
|
||||||
|
foreach (FileInfo sfi in sfis)
|
||||||
|
{
|
||||||
|
string nm = sfi.Name.Substring(0, sfi.Name.Length - 7);
|
||||||
|
Console.WriteLine("Processing {0}", sfi.Name);
|
||||||
|
//frmMain.Status = string.Format("Processing Format {0}", sfi.Name);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
AddFormatToDB(parent, nm, true, DateTime.Now, "Migration",fmtPath,genmacPath);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
//frmMain.AddError(ex, "LoadAllFormats() '{0}'", sfi.Name);
|
||||||
|
Console.WriteLine("{0} - {1}", ex.GetType().Name, ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
//frmMain.AddError(ex, "LoadAllFormats() '{0}'", fi.Name);
|
||||||
|
Console.WriteLine("{0} - {1}", ex.GetType().Name, ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
OnFormatLoaded(null, new FormatEventArgs("Formats Updated"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Dictionary<string, int> _LookupFormats;
|
||||||
|
public static Dictionary<string, int> LookupFormats
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_LookupFormats == null)
|
||||||
|
{
|
||||||
|
_LookupFormats = new Dictionary<string, int>();
|
||||||
|
FormatInfoList allFormats = FormatInfoList.Get();
|
||||||
|
foreach (FormatInfo myFormat in allFormats)
|
||||||
|
{
|
||||||
|
_LookupFormats.Add(myFormat.Name, myFormat.FormatID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _LookupFormats;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Format AddFormatToDB(Format parent, string format, bool issub, DateTime Dts, string Userid, string fmtPath, string genmacPath)
|
||||||
|
{
|
||||||
|
string fmtdata = null;
|
||||||
|
string genmacdata = null;
|
||||||
|
XmlDocument xd = null;
|
||||||
|
|
||||||
|
OnFormatLoaded(null, new FormatEventArgs("Loading "+format));
|
||||||
|
//string path = "c:\\development\\fmtall\\" + format + "all.xml";
|
||||||
|
string path = fmtPath + "\\" + format + "all.xml";
|
||||||
|
if (File.Exists(path))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
StreamReader srf = new StreamReader(path);
|
||||||
|
xd = new XmlDocument();
|
||||||
|
xd.Load(srf);
|
||||||
|
//xd.Load(path);
|
||||||
|
fmtdata = xd.OuterXml;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
//frmMain.AddError(ex, "AddFormatToDB('{0}','{1}')", parent.Name, path);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Do we need genmac - only if non-subformat
|
||||||
|
if (!issub)
|
||||||
|
{
|
||||||
|
//path = "c:\\development\\genmacall\\" + format + ".svg";
|
||||||
|
path = genmacPath + "\\" + format + ".svg";
|
||||||
|
if (File.Exists(path))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
StreamReader sr = new StreamReader(path);
|
||||||
|
XmlDocument xdg = new XmlDocument();
|
||||||
|
xdg.Load(sr);
|
||||||
|
//xdg.Load(path);
|
||||||
|
genmacdata = xdg.OuterXml;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
//frmMain.AddError(ex, "AddFormatToDB('{0}','{1}')", parent.Name, path);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Get the name & then create the record.
|
||||||
|
if (Userid == null || Userid == "") Userid = "Migration";
|
||||||
|
|
||||||
|
string nmattr = "Default";
|
||||||
|
|
||||||
|
// use xpath to get name.
|
||||||
|
if (parent != null)
|
||||||
|
{
|
||||||
|
XmlNode nmnode = xd.SelectSingleNode("//FormatData");
|
||||||
|
if (nmnode is XmlElement)
|
||||||
|
{
|
||||||
|
XmlElement xm = (XmlElement)nmnode;
|
||||||
|
nmattr = xm.GetAttribute("Name");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// use the format name if base or non sub. If it's a sub, remove the "_".
|
||||||
|
string fname = issub ? format.Replace("_", "") : format;
|
||||||
|
Format rec = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!LookupFormats.ContainsKey(fname))
|
||||||
|
{
|
||||||
|
rec = Format.MakeFormat(parent, fname, nmattr, fmtdata, genmacdata, Dts, Userid);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rec = Format.Get(LookupFormats[fname]);
|
||||||
|
rec.Data = fmtdata;
|
||||||
|
rec.GenMac = genmacdata;
|
||||||
|
rec = rec.Save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
//frmMain.AddError(ex, "AddFormatToDB-make format('{0}','{1}')", parent.Name, path);
|
||||||
|
}
|
||||||
|
return rec;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public partial class FormatInfo : IFormatOrFormatInfo
|
public partial class FormatInfo : IFormatOrFormatInfo
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user