// ======================================================================== // Copyright 2006 - Volian Enterprises, Inc. All rights reserved. // Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE // ------------------------------------------------------------------------ // $Workfile: $ $Revision: $ // $Author: $ $Date: $ // // $History: $ // ======================================================================== using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Data.OleDb; using System.Collections.Specialized; using System.Collections.Generic; using System.Xml; using System.Xml.XPath; using System.IO; using System.Text; using VEPROMS.CSLA.Library; namespace DataLoader { public partial class Loader { private Format AddFormatToDB(Format parent, string format, bool issub, DateTime Dts, string Userid) { string fmtdata = null; string genmacdata = null; XmlDocument xd = null; string path = "c:\\development\\fmtall\\" + 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"; 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 { rec = Format.MakeFormat(parent, fname, nmattr, fmtdata, genmacdata, Dts, Userid); } catch (Exception ex) { frmMain.AddError(ex, "AddFormatToDB-make format('{0}','{1}')", parent.Name, path); } return rec; } public void LoadAllFormats() { Format basefmt = null; Format parent = null; // Load base format. basefmt = AddFormatToDB(null, "base", false, DateTime.Now, "Migration"); 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(@"c:\development\fmtall"); FileInfo[] fis = di.GetFiles("*.xml"); foreach (FileInfo fi in fis) { 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"); if (parent != null) { // now see if there are any subformats associated with this, if so // add them here... DirectoryInfo sdi = new DirectoryInfo("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"); } 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); } } } } public FormatInfo GetFormat(string format) { Format parent = null; Format rec = null; // get base Format baseparent = Format.Get(1); // if there is no format - what should be done? maybe nothing. if (format == null || format == "") return null; try { if (format.IndexOf(' ') > -1) // will have spaces if it's a user format { string part1 = format.Substring(0, format.IndexOf(' ')); string part2 = format.Substring(format.LastIndexOf(' ') + 1, 2); format = part1 + part2; // get the parent format's id (for example, AEP for AEP00). parent = Format.GetByParentID_Name(baseparent.FormatID, part1); } else parent = baseparent; // see if the format has been added, if not go get it. rec = Format.GetByParentID_Name(parent.FormatID, format); // JSJ - 02/04/10 this fixes cases where a subformat is no longer available, // default to the parent format if (rec == null) rec = parent; } catch (Exception ex) { log.ErrorFormat("Error getting xml version of format {0}", ex.Message); frmMain.AddError(ex, "GetFormat('{0}')", format); } FormatInfo recInfo = FormatInfo.Get(rec.FormatID); return recInfo; } } }