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.Drawing;
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace VEPROMS.CSLA.Library
|
||||
{
|
||||
@ -29,6 +30,21 @@ namespace VEPROMS.CSLA.Library
|
||||
string ToString();
|
||||
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
|
||||
{
|
||||
#region PlantFormat
|
||||
@ -37,6 +53,12 @@ namespace VEPROMS.CSLA.Library
|
||||
public PlantFormat PlantFormat
|
||||
{ get { return (_PlantFormat != null ? _PlantFormat : _PlantFormat = new PlantFormat(this)); } }
|
||||
#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 override string ToString()
|
||||
{
|
||||
@ -52,6 +74,171 @@ namespace VEPROMS.CSLA.Library
|
||||
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
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user