199 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Org Mode
		
	
	
	
	
	
			
		
		
	
	
			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;
 | 
						|
		}
 | 
						|
		
 | 
						|
	}
 | 
						|
} |