SourceCode/PROMS/DataLoader/Formats.cs.org

199 lines
6.2 KiB
Org Mode

// ========================================================================
// 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;
}
}
}