6.2 KiB
/ ======================================================================
/ 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\≥nmacall\\" + 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; }
} }