2706 lines
		
	
	
		
			104 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			2706 lines
		
	
	
		
			104 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.ComponentModel;
 | |
| using System.Data;
 | |
| using System.Drawing;
 | |
| using System.Text;
 | |
| using System.Windows.Forms;
 | |
| using VEPROMS.CSLA.Library;
 | |
| using Volian.Base.Library;
 | |
| using System.Xml;
 | |
| using System.IO;
 | |
| using Ionic.Zip;
 | |
| 
 | |
| namespace DataLoader
 | |
| {
 | |
| 	public partial class dlgExportImport : Form
 | |
| 	{
 | |
|     private Dictionary<int, string> oldFormat;
 | |
|     private Dictionary<string, int> newFormat;
 | |
|     private int oldRODbID;
 | |
|     private int newRODbID;
 | |
|     private FolderInfo _MyNewFolder;
 | |
|     public FolderInfo MyNewFolder
 | |
|     {
 | |
|       get { return _MyNewFolder; }
 | |
|     }
 | |
|     private string PEIPath;
 | |
| 		private string _MyMode;
 | |
| 		private FolderInfo MyFolder = null;
 | |
|     private ProcedureInfo MyProcedure = null;
 | |
|     private XmlAttribute AddAttribute(XmlDocument xd, string name, string value)
 | |
| 		{
 | |
| 			XmlAttribute xa = xd.CreateAttribute(name);
 | |
| 			xa.InnerText = value;
 | |
| 			return xa;
 | |
| 		}
 | |
| 		public dlgExportImport(string mode, FolderInfo folderInfo)
 | |
| 		{
 | |
| 			_MyMode = mode;
 | |
| 			MyFolder = folderInfo;
 | |
| 			InitializeComponent();
 | |
| 			this.Text = mode + " Dialog for " + folderInfo.Name;
 | |
| 		}
 | |
|     public dlgExportImport(string mode, ProcedureInfo procedureInfo)
 | |
|     {
 | |
|       _MyMode = mode;
 | |
|       MyProcedure = procedureInfo;
 | |
|       InitializeComponent();
 | |
|       this.Text = mode + " Dialog for " + procedureInfo.DisplayNumber;
 | |
|     }
 | |
|     private void dlgExportImport_Load(object sender, EventArgs e)
 | |
| 		{
 | |
|       PEIPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS\PEI_" + Database.VEPROMS_SqlConnection.Database;
 | |
|       if (!Directory.Exists(PEIPath))
 | |
|         Directory.CreateDirectory(PEIPath);
 | |
|       if (_MyMode == "Import")
 | |
|       {
 | |
|       if (MyFolder.ChildFolderCount == 0)
 | |
|       {
 | |
|         Directory.Delete(PEIPath, true);
 | |
|         Directory.CreateDirectory(PEIPath);
 | |
|       }
 | |
|       }
 | |
|       pnlExport.Dock = DockStyle.Fill;
 | |
| 			pnlImport.Dock = DockStyle.Fill;
 | |
|       if (_MyMode.ToLower() == "export")
 | |
|       {
 | |
|         sfd.InitialDirectory = PEIPath;
 | |
|         pnlExport.BringToFront();
 | |
|       }
 | |
|       else
 | |
|       {
 | |
|         ofd.InitialDirectory = PEIPath;
 | |
|         pnlImport.BringToFront();
 | |
|       }
 | |
| 			this.Height = this.Height / 2;
 | |
| 		}
 | |
| 		private void btnExport_Click(object sender, EventArgs e)
 | |
| 		{
 | |
|       if (MyFolder != null)
 | |
|       {
 | |
|         sfd.FileName = string.Format("{0}.expx", MyFolder.Name);
 | |
|         if (sfd.ShowDialog(this) == DialogResult.OK)
 | |
|         {
 | |
|           if (sfd.FileName != string.Empty)
 | |
|           {
 | |
|             txtExport.Text = sfd.FileName;
 | |
|             if (File.Exists(txtExport.Text))
 | |
|               File.Delete(txtExport.Text);
 | |
|             MyExpxZipFile = new ZipFile(txtExport.Text, Encoding.UTF8);
 | |
|             MyExpxZipFile.Save();
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|       else if (MyProcedure != null)
 | |
|       {
 | |
|         txtExport.Text = string.Format(@"{0}\{1}.xml", PEIPath, MyProcedure.DisplayNumber);
 | |
|       }
 | |
| 		}
 | |
| 		private void txtExport_TextChanged(object sender, EventArgs e)
 | |
| 		{
 | |
| 			btnDoExport.Enabled = txtExport.TextLength > 0;
 | |
| 			if (btnDoExport.Enabled)
 | |
| 				lblExportStatus.Text = "Ready To Perform Export";
 | |
| 			else
 | |
| 				lblExportStatus.Text = "Awaiting Export File Name:";
 | |
| 		}
 | |
| 		private XmlWriter MyWriter = null;
 | |
|     private ZipFile MyExpxZipFile = null;
 | |
|     private ZipFile MyImpxZipFile = null;
 | |
|     private DateTime MyStart;
 | |
|     private void btnDoExport_Click(object sender, EventArgs e)
 | |
| 		{
 | |
|       btnExport.Enabled = false;
 | |
|       if (MyFolder != null)
 | |
|       {
 | |
|         this.Cursor = Cursors.WaitCursor;
 | |
|         MyStart = DateTime.Now;
 | |
|         btnDoExport.Enabled = false;
 | |
|         lblExportStatus.Text = "Performing Export";
 | |
|         SaveExportData();
 | |
|         //SaveExportDataWriter();
 | |
| 
 | |
|         TimeSpan elapsed = DateTime.Now.Subtract(MyStart);
 | |
|         lblExportStatus.Text = "Export Completed in " + elapsed.ToString();
 | |
|         this.Cursor = Cursors.Default;
 | |
|       }
 | |
|       else if (MyProcedure != null)
 | |
|       {
 | |
|         this.Cursor = Cursors.WaitCursor;
 | |
|         MyStart = DateTime.Now;
 | |
|         btnDoExport.Enabled = false;
 | |
|         lblExportStatus.Text = "Performing Export";
 | |
|         XmlDocument xd = new XmlDocument();
 | |
|         ExportItem(xd, MyProcedure, "procedure");
 | |
|         xd.Save(txtExport.Text);
 | |
|         TimeSpan elapsed = DateTime.Now.Subtract(MyStart);
 | |
|         lblExportStatus.Text = "Export Completed in " + elapsed.ToString();
 | |
|         this.Cursor = Cursors.Default;
 | |
|       }
 | |
|       btnCloseExport.Enabled = true;
 | |
|     }
 | |
|     private void SaveExportData()
 | |
|     {
 | |
|       XmlDocument xd = new XmlDocument();
 | |
|       ExportFolder(xd, MyFolder, "folder");
 | |
|     }
 | |
| 		private void SaveExportDataWriter()
 | |
| 		{
 | |
| 			XmlWriterSettings ws = new XmlWriterSettings();
 | |
| 			ws.Indent = true;
 | |
| 			ws.NewLineHandling = NewLineHandling.Entitize;
 | |
| 			ws.CheckCharacters = false;
 | |
| 			MyWriter = XmlWriter.Create(txtExport.Text, ws);
 | |
| 			ExportFolder(MyFolder, "folder");
 | |
| 			MyWriter.Close();
 | |
| 		}
 | |
| 		private void btnDoImport_Click(object sender, EventArgs e)
 | |
| 		{
 | |
|       btnImport.Enabled = false;
 | |
|       this.Cursor = Cursors.WaitCursor;
 | |
| 			MyStart = DateTime.Now;
 | |
| 			btnDoImport.Enabled = false;
 | |
| 			lblImportStatus.Text = "Performing Import";
 | |
| 			//LoadImportDataReader();
 | |
|       TurnChangeManagerOff.Execute();
 | |
| 			LoadImportDataDocument();
 | |
|       TurnChangeManagerOn.Execute();
 | |
|       TimeSpan elapsed = DateTime.Now.Subtract(MyStart);
 | |
| 			lblImportStatus.Text = "Import Completed in " + elapsed.ToString();
 | |
| 			this.Cursor = Cursors.Default;
 | |
|       btnCloseImport.Enabled = true;
 | |
|     }
 | |
| 		private void LoadImportDataDocument()
 | |
| 		{
 | |
|       ZipEntry ze = MyExpxZipFile[0];
 | |
|       string fn = PEIPath + @"\" + ze.FileName;
 | |
|       ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
 | |
| 			XmlDocument xd = new XmlDocument();
 | |
| 			xd.Load(fn);
 | |
|       LoadFormats(xd);
 | |
|       Folder ff = AddFolder(Folder.Get(MyFolder.FolderID), xd);
 | |
|       if (ff == null)
 | |
|       {
 | |
|         MessageBox.Show("You can not import the same procedure set more than once", "Duplicate Import Error");
 | |
|         return;
 | |
|       }
 | |
|       _MyNewFolder = FolderInfo.Get(ff.FolderID);
 | |
|       AddAnnotationTypes(xd);
 | |
| 			DocVersionInfo dvi = AddDocVersion(ff, xd);
 | |
|       xd = null;
 | |
|       lblImportStatus.Text = "Creating Procedures...";
 | |
|       Application.DoEvents();
 | |
|       ProcedureInfo pi = null;
 | |
|       pbImportProcedure.Value = 0;
 | |
|       pbImportProcedure.Maximum = MyExpxZipFile.Entries.Count - 1;
 | |
|       for (int i = 1; i < MyExpxZipFile.Entries.Count; i++)
 | |
|       {
 | |
|         ze = MyExpxZipFile[i];
 | |
|         fn = PEIPath + @"\" + ze.FileName;
 | |
|         ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
 | |
|         xd = new XmlDocument();
 | |
|         xd.Load(fn);
 | |
|         pi = AddProcedure(xd.DocumentElement, dvi, pi);
 | |
|       }
 | |
|       DirectoryInfo di = new DirectoryInfo(PEIPath);
 | |
|       DirectoryInfo[] dis = di.GetDirectories();
 | |
|       for (int d = 0; d < dis.Length; d++)
 | |
|         dis[d].Delete(true);
 | |
| 			lblImportStatus.Text = "Updating Transitions";
 | |
| 			AddTransitions();
 | |
|       SaveTransitionAndItemContentIDs();
 | |
| 		}
 | |
| 
 | |
|     private void LoadFormats(XmlDocument xd)
 | |
|     {
 | |
|       oldFormat = new Dictionary<int, string>();
 | |
|       XmlNodeList nl = xd.SelectNodes("folder/formats/format");
 | |
|       foreach (XmlNode nd in nl)
 | |
|       {
 | |
|         int formatid = int.Parse(nd.Attributes.GetNamedItem("formatid").InnerText);
 | |
|         string name = nd.Attributes.GetNamedItem("name").InnerText;
 | |
|         oldFormat.Add(formatid, name);
 | |
|       }
 | |
|       newFormat = new Dictionary<string, int>();
 | |
|       FormatInfoList fil = FormatInfoList.Get();
 | |
|       foreach (FormatInfo fi in fil)
 | |
|         newFormat.Add(fi.Name, fi.FormatID);
 | |
|     }
 | |
| 		Dictionary<int, ItemInfo> dicParentItem = null;
 | |
| 		private void UpdateParentItem(int depth, ItemInfo ii)
 | |
| 		{
 | |
| 			if (dicParentItem == null) dicParentItem = new Dictionary<int, ItemInfo>();
 | |
| 			if (!dicParentItem.ContainsKey(depth)) dicParentItem.Add(depth, null);
 | |
| 			dicParentItem[depth] = ii;
 | |
| 		}
 | |
| 		Dictionary<int, ItemInfo> dicPreviousItem = null;
 | |
| 		private void UpdatePreviousItem(int depth, ItemInfo ii)
 | |
| 		{
 | |
| 			if (dicPreviousItem == null) dicPreviousItem = new Dictionary<int, ItemInfo>();
 | |
| 			if (!dicPreviousItem.ContainsKey(depth)) dicPreviousItem.Add(depth, null);
 | |
| 			dicPreviousItem[depth] = ii;
 | |
| 		}
 | |
| 		Dictionary<int, int> dicItemDepth = null;
 | |
| 		private void UpdateItemDepth(int depth, int id)
 | |
| 		{
 | |
| 			if (dicItemDepth == null) dicItemDepth = new Dictionary<int, int>();
 | |
| 			if (!dicItemDepth.ContainsKey(depth)) dicItemDepth.Add(depth, 0);
 | |
| 			dicItemDepth[depth] = id;
 | |
| 		}
 | |
| 		private void LoadImportDataReader()
 | |
| 		{
 | |
| 			int pCount = 0;
 | |
| 			int sCount = 0;
 | |
| 			Folder folder = null;
 | |
| 			DocVersion docversion = null;
 | |
| 			Dictionary<string, string> dicRofst = null;
 | |
| 			Dictionary<string, string> dicEntry = null;
 | |
| 			ROFst rofst = null;
 | |
| 			GetImportDataCounts();
 | |
| 			pbImportProcedure.Maximum = MyCounts.Count;
 | |
| 			pbImportProcedure.Value = 0;
 | |
| 			Application.DoEvents();
 | |
| 			FileStream fs = File.OpenRead(txtImport.Text);
 | |
| 			XmlReaderSettings rs = new XmlReaderSettings();
 | |
| 			rs.CheckCharacters = false;
 | |
| 			XmlReader xr = XmlReader.Create(fs, rs);
 | |
| 			while (xr.Read())
 | |
| 			{
 | |
| 				if (xr.IsStartElement())
 | |
| 				{
 | |
| 					switch (xr.Name)
 | |
| 					{
 | |
| 						case "annotation":
 | |
| 							AddAnnotation(xr);
 | |
| 							break;
 | |
| 						//case "association":
 | |
| 						//  break;
 | |
| 						case "content":
 | |
| 							{
 | |
| 								if (xr.Depth == 3)	//content for procedure
 | |
| 								{
 | |
| 									ItemInfo ii = AddProcedure(xr, docversion, dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]);
 | |
| 									UpdatePreviousItem(xr.Depth, ii);
 | |
| 									UpdateParentItem(xr.Depth, ii);
 | |
| 								}
 | |
| 								else
 | |
| 								{
 | |
| 
 | |
| 									int fromtype = dicItemDepth.ContainsKey(xr.Depth - 2) ? dicItemDepth[xr.Depth - 2] : 0;
 | |
| 									switch (fromtype)
 | |
| 									{
 | |
| 										case 2:
 | |
| 											{	//sections
 | |
| 												ItemInfo ii = AddSection(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]);
 | |
| 												UpdatePreviousItem(xr.Depth, ii);
 | |
| 												UpdateParentItem(xr.Depth, ii);
 | |
| 												break;
 | |
| 											}
 | |
| 										case 3:
 | |
| 											{	//cautions
 | |
| 												ItemInfo ii = AddCaution(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]);
 | |
| 												UpdatePreviousItem(xr.Depth, ii);
 | |
| 												UpdateParentItem(xr.Depth, ii);
 | |
| 												break;
 | |
| 											}
 | |
| 										case 4:
 | |
| 											{	//notes
 | |
| 												ItemInfo ii = AddNote(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]);
 | |
| 												UpdatePreviousItem(xr.Depth, ii);
 | |
| 												UpdateParentItem(xr.Depth, ii);
 | |
| 												break;
 | |
| 											}
 | |
| 										case 5:
 | |
| 											{	//rnos
 | |
| 												ItemInfo ii = AddRNO(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]);
 | |
| 												UpdatePreviousItem(xr.Depth, ii);
 | |
| 												UpdateParentItem(xr.Depth, ii);
 | |
| 												break;
 | |
| 											}
 | |
| 										case 6:
 | |
| 											{	//steps
 | |
| 												ItemInfo ii = AddStep(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]);
 | |
| 												UpdatePreviousItem(xr.Depth, ii);
 | |
| 												UpdateParentItem(xr.Depth, ii);
 | |
| 												break;
 | |
| 											}
 | |
| 										case 7:
 | |
| 											{	//tables
 | |
| 												ItemInfo ii = AddTable(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]);
 | |
| 												UpdatePreviousItem(xr.Depth, ii);
 | |
| 												UpdateParentItem(xr.Depth, ii);
 | |
| 												break;
 | |
| 											}
 | |
| 										default:
 | |
| 											break;
 | |
| 									}
 | |
| 								}
 | |
| 								break;
 | |
| 							}
 | |
| 						case "document":
 | |
| 							AddDocument(xr, dicEntry);
 | |
| 							break;
 | |
| 						case "docversion":
 | |
| 							{
 | |
| 								docversion = AddDocVersion(folder, xr);
 | |
| 								UpdatePreviousItem(xr.Depth + 2, null);
 | |
| 								break;
 | |
| 							}
 | |
| 						case "entry":
 | |
| 							dicEntry = AddEntry(xr);
 | |
| 							break;
 | |
| 						case "folder":
 | |
| 							folder = AddFolder(Folder.Get(MyFolder.FolderID), xr);
 | |
| 							break;
 | |
| 						case "grid":
 | |
| 							AddGrid(xr);
 | |
| 							break;
 | |
| 						case "procedure":
 | |
| 							{
 | |
| 								UpdateItemDepth(xr.Depth + 1, int.Parse(xr.GetAttribute("itemid")));
 | |
| 								pbImportProcedure.PerformStep();
 | |
| 								lblImportProcedure.Text = string.Format("{0} of {1} Procedures", pbImportProcedure.Value.ToString(), pbImportProcedure.Maximum.ToString());
 | |
| 								pCount++;
 | |
| 								pbImportSection.Maximum = MyCounts[pCount].Count;
 | |
| 								pbImportSection.Value = 0;
 | |
| 								sCount = 0;
 | |
| 								Application.DoEvents();
 | |
| 								break;
 | |
| 							}
 | |
| 						case "section":
 | |
| 							{
 | |
| 								UpdateItemDepth(xr.Depth + 1, int.Parse(xr.GetAttribute("itemid")));
 | |
| 								pbImportSection.PerformStep();
 | |
| 								lblImportSection.Text = string.Format("{0} of {1} Sections", pbImportSection.Value.ToString(), pbImportSection.Maximum.ToString());
 | |
| 								sCount++;
 | |
| 								pbImportStep.Maximum = MyCounts[pCount][sCount];
 | |
| 								pbImportStep.Value = 0;
 | |
| 								Application.DoEvents();
 | |
| 								break;
 | |
| 							}
 | |
| 						case "step":
 | |
| 							{
 | |
| 								UpdateItemDepth(xr.Depth + 1, int.Parse(xr.GetAttribute("itemid")));
 | |
| 								if (xr.Depth == 8)
 | |
| 								{
 | |
| 									pbImportStep.PerformStep();
 | |
| 									lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString());
 | |
| 									Application.DoEvents();
 | |
| 								}
 | |
| 								break;
 | |
| 							}
 | |
| 						case "caution":
 | |
| 						case "note":
 | |
| 						case "rno":
 | |
| 						case "table":
 | |
| 							UpdateItemDepth(xr.Depth + 1, int.Parse(xr.GetAttribute("itemid")));
 | |
| 							break;
 | |
| 						case "cautions":
 | |
| 						case "notes":
 | |
| 						case "rnos":
 | |
| 						case "sections":
 | |
| 						case "steps":
 | |
| 						case "tables":
 | |
| 							{
 | |
| 								UpdateItemDepth(xr.Depth, int.Parse(xr.GetAttribute("fromtype")));
 | |
| 								UpdatePreviousItem(xr.Depth + 2, null);
 | |
| 								UpdateParentItem(xr.Depth + 2, dicParentItem[xr.Depth - 1]);
 | |
| 								break;
 | |
| 							}
 | |
| 						case "rodb":
 | |
| 							{
 | |
| 								MyRODb = AddRODb(xr);
 | |
| 								rofst = AddROFst(dicRofst);
 | |
| 								docversion.DocVersionAssociations.Add(rofst);
 | |
| 								docversion.Save();
 | |
| 								break;
 | |
| 							}
 | |
| 						case "rofst":
 | |
| 							dicRofst = GetROFstData(xr);
 | |
| 							break;
 | |
| 						case "rousage":
 | |
| 							AddROUsage(xr);
 | |
| 							break;
 | |
| 						//case "transition":
 | |
| 						//  break;
 | |
| 						default:
 | |
| 							break;
 | |
| 					}
 | |
| 					Console.WriteLine("{0} - {1}", xr.Name, xr.Depth.ToString());
 | |
| 				}
 | |
| 			}
 | |
| 			pbImportProcedure.PerformStep();
 | |
| 			Application.DoEvents();
 | |
| 			fs.Close();
 | |
| 			FixImportDataTransitions();
 | |
|       StoreItemContentIDs();
 | |
|       ResolveExternalTransitions(folder);
 | |
| 		}
 | |
|     private void SaveTransitionAndItemContentIDs()
 | |
|     {
 | |
|       XmlDocument xd = new XmlDocument();
 | |
|       XmlElement xe = xd.CreateElement("items");
 | |
|       xd.AppendChild(xe);
 | |
|       string fn = PEIPath + @"\items.xml";
 | |
|       foreach (int key in Old2NewItem.Keys)
 | |
|       {
 | |
|         xe = xd.CreateElement("item");
 | |
|         xe.Attributes.SetNamedItem(AddAttribute(xd, "old", key.ToString()));
 | |
|         xe.Attributes.SetNamedItem(AddAttribute(xd, "new", Old2NewItem[key].ToString()));
 | |
|         xd.DocumentElement.AppendChild(xe);
 | |
|       }
 | |
|       xd.Save(fn);
 | |
|       ZipEntry ze = MyImpxZipFile["items.xml"];
 | |
|       MyImpxZipFile.RemoveEntry(ze);
 | |
|       MyImpxZipFile.Save();
 | |
|       MyImpxZipFile.AddFile(fn, "");
 | |
|       MyImpxZipFile.Save();
 | |
|       File.Delete(fn);
 | |
|       xd = new XmlDocument();
 | |
|       xe = xd.CreateElement("contents");
 | |
|       xd.AppendChild(xe);
 | |
|       fn = PEIPath + @"\contents.xml";
 | |
|       foreach (int key in Old2NewContent.Keys)
 | |
|       {
 | |
|         xe = xd.CreateElement("content");
 | |
|         xe.Attributes.SetNamedItem(AddAttribute(xd, "old", key.ToString()));
 | |
|         xe.Attributes.SetNamedItem(AddAttribute(xd, "new", Old2NewContent[key].ToString()));
 | |
|         xd.DocumentElement.AppendChild(xe);
 | |
|       }
 | |
|       xd.Save(fn);
 | |
|       ze = MyImpxZipFile["contents.xml"];
 | |
|       MyImpxZipFile.RemoveEntry(ze);
 | |
|       MyImpxZipFile.Save();
 | |
|       MyImpxZipFile.AddFile(fn, "");
 | |
|       MyImpxZipFile.Save();
 | |
|       File.Delete(fn);
 | |
|       xd = new XmlDocument();
 | |
|       xe = xd.CreateElement("transitions");
 | |
|       xd.AppendChild(xe);
 | |
|       fn = PEIPath + @"\transitions.xml";
 | |
|       if (PendingTransitions != null && PendingTransitions.DocumentElement.HasChildNodes)
 | |
|       {
 | |
|         foreach (XmlNode nd in PendingTransitions.DocumentElement.ChildNodes)
 | |
|         {
 | |
|           if(nd.InnerText == "")
 | |
|             xd.DocumentElement.AppendChild(xd.ImportNode(nd, true));
 | |
|         }
 | |
|         xd.Save(fn);
 | |
|       }
 | |
|       ze = MyImpxZipFile["transitions.xml"];
 | |
|       MyImpxZipFile.RemoveEntry(ze);
 | |
|       MyImpxZipFile.Save();
 | |
|       MyImpxZipFile.AddFile(fn, "");
 | |
|       MyImpxZipFile.Save();
 | |
|       File.Delete(fn);
 | |
|     }
 | |
|     private void StoreItemContentIDs()
 | |
|     {
 | |
|       XmlDocument xd = new XmlDocument();
 | |
|       string fn = PEIPath + @"\ExternalTransitions.xml";
 | |
|       xd.Load(fn);
 | |
|       XmlElement xe = (XmlElement)xd.SelectSingleNode("externaltransitions/oldtonewitem");
 | |
|       foreach (int key in Old2NewItem.Keys)
 | |
|       {
 | |
|         XmlElement xee = xd.CreateElement("item");
 | |
|         XmlAttribute xa = AddAttribute(xd, "old", key.ToString());
 | |
|         xee.Attributes.SetNamedItem(xa);
 | |
|         xa = AddAttribute(xd, "new", Old2NewItem[key].ToString());
 | |
|         xee.Attributes.SetNamedItem(xa);
 | |
|         xe.AppendChild(xee);
 | |
|       }
 | |
|       xd.Save(fn);
 | |
|       xe = (XmlElement)xd.SelectSingleNode("externaltransitions/oldtonewcontent");
 | |
|       foreach (int key in Old2NewContent.Keys)
 | |
|       {
 | |
|         XmlElement xee = xd.CreateElement("content");
 | |
|         XmlAttribute xa = AddAttribute(xd, "old", key.ToString());
 | |
|         xee.Attributes.SetNamedItem(xa);
 | |
|         xa = AddAttribute(xd, "new", Old2NewContent[key].ToString());
 | |
|         xee.Attributes.SetNamedItem(xa);
 | |
|         xe.AppendChild(xee);
 | |
|       }
 | |
|       xd.Save(fn);
 | |
|     }
 | |
|     private void ResolveExternalTransitions(Folder folder)
 | |
|     {
 | |
|       XmlDocument xd = new XmlDocument();
 | |
|       string fn = PEIPath + @"\ExternalTransitions.xml";
 | |
|       xd.Load(fn);
 | |
|       AddStoredItemContentIDs(xd);
 | |
|       XmlNodeList nl = xd.SelectNodes("//transition[@folder!='']");
 | |
|       foreach (XmlNode nd in nl)
 | |
|       {
 | |
|         int transitionid = int.Parse(nd.Attributes.GetNamedItem("transitionid").InnerText);
 | |
|         int fromid = int.Parse(nd.Attributes.GetNamedItem("fromid").InnerText);
 | |
|         int toid = int.Parse(nd.Attributes.GetNamedItem("toid").InnerText);
 | |
|         int rangeid = int.Parse(nd.Attributes.GetNamedItem("rangeid").InnerText);
 | |
|         if (Old2NewContent.ContainsKey(fromid) && Old2NewItem.ContainsKey(toid) && Old2NewItem.ContainsKey(rangeid))
 | |
|         {
 | |
|           int isrange = int.Parse(nd.Attributes.GetNamedItem("isrange").InnerText);
 | |
|           int trantype = int.Parse(nd.Attributes.GetNamedItem("trantype").InnerText);
 | |
|           string config = nd.Attributes.GetNamedItem("config").InnerText;
 | |
|           string userid = nd.Attributes.GetNamedItem("userid").InnerText;
 | |
|           DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText);
 | |
|           string lookfor;
 | |
|           if (isrange == 0)
 | |
|             lookfor = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid);
 | |
|           else
 | |
|             lookfor = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid);
 | |
|           fromid = Old2NewContent[fromid];
 | |
|           toid = Old2NewItem[toid];
 | |
|           rangeid = Old2NewItem[rangeid];
 | |
|           Content cc = Content.Get(fromid);
 | |
|           Transition tt = Transition.MakeTransition(cc, Item.Get(toid), Item.Get(rangeid), isrange, trantype, config, dts, userid);
 | |
|           transitionid = tt.TransitionID;
 | |
|           string replacewith;
 | |
|           if (isrange == 0)
 | |
|             replacewith = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid);
 | |
|           else
 | |
|             replacewith = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid);
 | |
|           cc.Text = cc.Text.Replace(lookfor, replacewith);
 | |
|           cc.Save();
 | |
|           nd.Attributes.GetNamedItem("folder").InnerText = "";
 | |
|         }
 | |
|       }
 | |
|       xd.Save(fn);
 | |
|     }
 | |
|     private void ReadTransitionAndItemContentIDs()
 | |
|     {
 | |
|       ZipEntry ze = MyImpxZipFile["items.xml"];
 | |
|       ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
 | |
|       string fn = PEIPath + @"\items.xml";
 | |
|       XmlDocument xd = new XmlDocument();
 | |
|       xd.Load(fn);
 | |
|       XmlNodeList nl = xd.SelectNodes("//item");
 | |
|       foreach (XmlNode nd in nl)
 | |
|       {
 | |
|         int oldid = int.Parse(nd.Attributes.GetNamedItem("old").InnerText);
 | |
|         int newid = int.Parse(nd.Attributes.GetNamedItem("new").InnerText);
 | |
|         //if (!Old2NewItem.ContainsKey(oldid))
 | |
|           Old2NewItem.Add(oldid, newid);
 | |
|       }
 | |
|       ze = MyImpxZipFile["contents.xml"];
 | |
|       ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
 | |
|       fn = PEIPath + @"\contents.xml";
 | |
|       xd = new XmlDocument();
 | |
|       xd.Load(fn);
 | |
|       nl = xd.SelectNodes("//content");
 | |
|       foreach (XmlNode nd in nl)
 | |
|       {
 | |
|         int oldid = int.Parse(nd.Attributes.GetNamedItem("old").InnerText);
 | |
|         int newid = int.Parse(nd.Attributes.GetNamedItem("new").InnerText);
 | |
|         //if (!Old2NewContent.ContainsKey(oldid))
 | |
|           Old2NewContent.Add(oldid, newid);
 | |
|       }
 | |
|       ze = MyImpxZipFile["libdocs.xml"];
 | |
|       ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
 | |
|       fn = PEIPath + @"\libdocs.xml";
 | |
|       xd = new XmlDocument();
 | |
|       xd.Load(fn);
 | |
|       nl = xd.SelectNodes("//libdoc");
 | |
|       foreach (XmlNode nd in nl)
 | |
|       {
 | |
|         int oldid = int.Parse(nd.Attributes.GetNamedItem("old").InnerText);
 | |
|         int newid = int.Parse(nd.Attributes.GetNamedItem("new").InnerText);
 | |
|         //if (!Old2NewContent.ContainsKey(oldid))
 | |
|         Old2NewLibDoc.Add(oldid, newid);
 | |
|       }
 | |
|       ze = MyImpxZipFile["transitions.xml"];
 | |
|       ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
 | |
|       fn = PEIPath + @"\transitions.xml";
 | |
|       PendingTransitions.Load(fn);
 | |
|     }
 | |
|     private void AddStoredItemContentIDs(XmlDocument xd)
 | |
|     {
 | |
|       XmlNodeList nl = xd.SelectNodes("//item");
 | |
|       foreach (XmlNode nd in nl)
 | |
|       {
 | |
|         int oldid = int.Parse(nd.Attributes.GetNamedItem("old").InnerText);
 | |
|         int newid = int.Parse(nd.Attributes.GetNamedItem("new").InnerText);
 | |
|         if (!Old2NewItem.ContainsKey(oldid))
 | |
|           Old2NewItem.Add(oldid, newid);
 | |
|       }
 | |
|       nl = xd.SelectNodes("//content");
 | |
|       foreach (XmlNode nd in nl)
 | |
|       {
 | |
|         int oldid = int.Parse(nd.Attributes.GetNamedItem("old").InnerText);
 | |
|         int newid = int.Parse(nd.Attributes.GetNamedItem("new").InnerText);
 | |
|         if (!Old2NewContent.ContainsKey(oldid))
 | |
|           Old2NewContent.Add(oldid, newid);
 | |
|       }
 | |
|     }
 | |
| 		private void FixImportDataTransitions()
 | |
| 		{
 | |
|       XmlDocument xd = new XmlDocument();
 | |
|       string fn = PEIPath + @"\ExternalTransitions.xml";
 | |
|       if (!File.Exists(fn))
 | |
|       {
 | |
|         XmlElement xe = xd.CreateElement("externaltransitions");
 | |
|         XmlElement xee = xd.CreateElement("oldtonewitem");
 | |
|         xe.AppendChild(xee);
 | |
|         xee = xd.CreateElement("oldtonewcontent");
 | |
|         xe.AppendChild(xee);
 | |
|         xee = xd.CreateElement("transitions");
 | |
|         xe.AppendChild(xee);
 | |
|         xd.AppendChild(xe);
 | |
|         xd.Save(fn);
 | |
|       }
 | |
|       else
 | |
|       {
 | |
|         xd.Load(fn);
 | |
|       }
 | |
|       FileStream fs = File.OpenRead(txtImport.Text);
 | |
| 			XmlReaderSettings rs = new XmlReaderSettings();
 | |
| 			rs.CheckCharacters = false;
 | |
| 			XmlReader xr = XmlReader.Create(fs, rs);
 | |
| 			while (xr.Read())
 | |
| 			{
 | |
| 				if (xr.IsStartElement())
 | |
| 				{
 | |
| 					switch (xr.Name)
 | |
| 					{
 | |
| 						case "transition":
 | |
| 							AddTransitions(xr);
 | |
| 							break;
 | |
|             case "externaltransition":
 | |
|               {
 | |
|                 AddExternalTransition(xr, xd);
 | |
|                 break;
 | |
|               }
 | |
| 						default:
 | |
| 							break;
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 			fs.Close();
 | |
|       xd.Save(fn);
 | |
| 		}
 | |
| 		private Dictionary<int, Dictionary<int, int>> MyCounts = null;
 | |
| 		private Dictionary<int, int> MySubCounts = null;
 | |
| 		private void GetImportDataCounts()
 | |
| 		{
 | |
| 			int pCount = 0;
 | |
| 			int sCount = 0;
 | |
| 			int tCount = 0;
 | |
| 			MyCounts = new Dictionary<int, Dictionary<int, int>>();
 | |
| 			MySubCounts = new Dictionary<int, int>();
 | |
| 			FileStream fs = File.OpenRead(txtImport.Text);
 | |
| 			XmlReaderSettings rs = new XmlReaderSettings();
 | |
| 			rs.CheckCharacters = false;
 | |
| 			XmlReader xr = XmlReader.Create(fs, rs);
 | |
| 			while (xr.Read())
 | |
| 			{
 | |
| 				if (xr.IsStartElement())
 | |
| 				{
 | |
| 					switch (xr.Name)
 | |
| 					{
 | |
| 						case "procedure":
 | |
| 							{
 | |
| 								if (pCount > 0)
 | |
| 								{
 | |
| 									MySubCounts.Add(sCount, tCount);
 | |
| 									MyCounts.Add(pCount, MySubCounts);
 | |
| 									sCount = 0;
 | |
| 									tCount = 0;
 | |
| 									MySubCounts = new Dictionary<int, int>();
 | |
| 								}
 | |
| 								pCount++;
 | |
| 								break;
 | |
| 							}
 | |
| 						case "section":
 | |
| 							{
 | |
| 								if (sCount > 0)
 | |
| 								{
 | |
| 									MySubCounts.Add(sCount, tCount);
 | |
| 									tCount = 0;
 | |
| 								}
 | |
| 								sCount++;
 | |
| 								break;
 | |
| 							}
 | |
| 						case "step":
 | |
| 							{
 | |
| 								if (xr.Depth == 8)
 | |
| 									tCount++;
 | |
| 								break;
 | |
| 							}
 | |
| 						default:
 | |
| 							break;
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 			MySubCounts.Add(sCount, tCount);
 | |
| 			MyCounts.Add(pCount, MySubCounts);
 | |
| 			fs.Close();
 | |
| 		}
 | |
| 		private void btnImport_Click(object sender, EventArgs e)
 | |
| 		{
 | |
| 			if (ofd.ShowDialog(this) == DialogResult.OK)
 | |
| 			{
 | |
| 				if (ofd.FileName != string.Empty)
 | |
| 				{
 | |
|           Old2NewItem = new Dictionary<int, int>();
 | |
|           Old2NewContent = new Dictionary<int, int>();
 | |
|           Old2NewLibDoc = new Dictionary<int, int>();
 | |
|           PendingTransitions = new XmlDocument();
 | |
|           FileInfo fi = new FileInfo(ofd.FileName);
 | |
|           string dn = fi.Directory.Name;
 | |
| 					txtImport.Text = ofd.FileName;
 | |
|           ReadOptions ro = new ReadOptions();
 | |
|           ro.Encoding = Encoding.UTF8;
 | |
|           MyExpxZipFile = ZipFile.Read(txtImport.Text, ro);
 | |
|           string fn = string.Format(@"{0}\{1}.impx", PEIPath, dn);
 | |
|           if (File.Exists(fn))
 | |
|           {
 | |
|             MyImpxZipFile = ZipFile.Read(fn, ro);
 | |
|             ReadTransitionAndItemContentIDs();
 | |
|           }
 | |
|           else
 | |
|           {
 | |
|             MyImpxZipFile = new ZipFile(fn, Encoding.UTF8);
 | |
|             //transitions
 | |
|             XmlElement xe = PendingTransitions.CreateElement("transitions");
 | |
|             PendingTransitions.AppendChild(xe);
 | |
|             fn = PEIPath + @"\transitions.xml";
 | |
|             PendingTransitions.Save(fn);
 | |
|             MyImpxZipFile.AddFile(fn, "");
 | |
|             MyImpxZipFile.Save();
 | |
|             //File.Delete(fn);
 | |
|             //itemids
 | |
|             XmlDocument xd = new XmlDocument();
 | |
|             xe = xd.CreateElement("items");
 | |
|             xd.AppendChild(xe);
 | |
|             fn = PEIPath + @"\items.xml";
 | |
|             xd.Save(fn);
 | |
|             MyImpxZipFile.AddFile(fn, "");
 | |
|             MyImpxZipFile.Save();
 | |
|             File.Delete(fn);
 | |
|             //contentids
 | |
|             xd = new XmlDocument();
 | |
|             xe = xd.CreateElement("contents");
 | |
|             xd.AppendChild(xe);
 | |
|             fn = PEIPath + @"\contents.xml";
 | |
|             xd.Save(fn);
 | |
|             MyImpxZipFile.AddFile(fn, "");
 | |
|             MyImpxZipFile.Save();
 | |
|             File.Delete(fn);
 | |
|             //libdocids
 | |
|             xd = new XmlDocument();
 | |
|             xe = xd.CreateElement("libdocs");
 | |
|             xd.AppendChild(xe);
 | |
|             fn = PEIPath + @"\libdocs.xml";
 | |
|             xd.Save(fn);
 | |
|             MyImpxZipFile.AddFile(fn, "");
 | |
|             MyImpxZipFile.Save();
 | |
|             File.Delete(fn);
 | |
|           }
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		private void txtImport_TextChanged(object sender, EventArgs e)
 | |
| 		{
 | |
| 			btnDoImport.Enabled = txtImport.TextLength > 0;
 | |
| 			if (btnDoImport.Enabled)
 | |
| 				lblImportStatus.Text = "Ready To Perform Import";
 | |
| 			else
 | |
| 				lblImportStatus.Text = "Awaiting Import File Name:";
 | |
| 		}
 | |
| 		#region Export for Merge
 | |
|     private string FromFolderName = string.Empty;
 | |
|     private void ExportFolder(XmlDocument xd, FolderInfo fi, string nodename)
 | |
|     {
 | |
|       /*
 | |
|       FolderID
 | |
|       ParentID
 | |
|       DBID
 | |
|       Name
 | |
|       Title
 | |
|       ShortName
 | |
|       FormatID
 | |
|       ManualOrder
 | |
|       Config
 | |
|       DTS
 | |
|       UsrID
 | |
|       */
 | |
|       lblExportStatus.Text = "Exporting Folder...";
 | |
|       Application.DoEvents();
 | |
|       FromFolderName = fi.Name;
 | |
|       XmlElement xe = xd.CreateElement(nodename);
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xd, "folderid", fi.FolderID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xd, "parentid", fi.ParentID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xd, "dbid", fi.DBID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xd, "name", fi.Name));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xd, "title", fi.Title));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xd, "shortname", fi.ShortName));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xd, "formatid", fi.FormatID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xd, "manualorder", fi.ManualOrder.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xd, "config", fi.Config));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xd, "dts", fi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xd, "usrid", fi.UsrID.ToString()));
 | |
|       xd.AppendChild(xe);
 | |
|       ExportAnnotationTypes(xe, "annotationtypes");
 | |
|       ExportFormats(xe, "formats");
 | |
|       if (fi.FolderDocVersionCount > 0)
 | |
|         foreach (DocVersionInfo dvi in fi.FolderDocVersions)
 | |
|           ExportDocVersion(xe, dvi, "docversion");
 | |
|     }
 | |
|     private void ExportFormats(XmlElement xn, string nodename)
 | |
|     {
 | |
|       XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|       FormatInfoList fil = FormatInfoList.Get();
 | |
|       foreach (FormatInfo fi in fil)
 | |
|         ExportFormat(xe, fi, "format");
 | |
|       xn.AppendChild(xe);
 | |
|     }
 | |
|     private void ExportFormat(XmlElement xn, FormatInfo fi, string nodename)
 | |
|     {
 | |
|       XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "formatid", fi.FormatID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "name", fi.Name));
 | |
|       xn.AppendChild(xe);
 | |
|     }
 | |
|     private void ExportAnnotationTypes(XmlElement xn, string nodename)
 | |
|     {
 | |
|       XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|       AnnotationTypeInfoList atl = AnnotationTypeInfoList.Get();
 | |
|       foreach (AnnotationTypeInfo ati in atl)
 | |
|           ExportAnnotationType(xe, ati, "annotationtype");
 | |
|       xn.AppendChild(xe);
 | |
|     }
 | |
|     private void ExportAnnotationType(XmlElement xn, AnnotationTypeInfo ati, string nodename)
 | |
|     {
 | |
|       /*
 | |
|       TypeID
 | |
|       Name
 | |
|       Config
 | |
|       DTS
 | |
|       UserID
 | |
|       */
 | |
|       XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "typeid", ati.TypeID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "name", ati.Name));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ati.Config));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ati.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ati.UserID.ToString()));
 | |
|       xn.AppendChild(xe);
 | |
|     }
 | |
|     private void ExportFolder(FolderInfo fi, string nodename)
 | |
| 		{
 | |
| 			/*
 | |
| 			FolderID
 | |
| 			ParentID
 | |
| 			DBID
 | |
| 			Name
 | |
| 			Title
 | |
| 			ShortName
 | |
| 			FormatID
 | |
| 			ManualOrder
 | |
| 			Config
 | |
| 			DTS
 | |
| 			UsrID
 | |
| 			*/
 | |
|       FromFolderName = fi.Name;
 | |
| 			MyWriter.WriteStartDocument();
 | |
| 			MyWriter.WriteStartElement(nodename);
 | |
| 			MyWriter.WriteAttributeString("folderid", fi.FolderID.ToString());
 | |
| 			MyWriter.WriteAttributeString("parentid", fi.ParentID.ToString());
 | |
| 			MyWriter.WriteAttributeString("dbid", fi.DBID.ToString());
 | |
| 			MyWriter.WriteAttributeString("name", fi.Name);
 | |
| 			MyWriter.WriteAttributeString("title", fi.Title);
 | |
| 			MyWriter.WriteAttributeString("shortname", fi.ShortName);
 | |
| 			MyWriter.WriteAttributeString("formatid", fi.FormatID.ToString());
 | |
| 			MyWriter.WriteAttributeString("manualorder", fi.ManualOrder.ToString());
 | |
| 			MyWriter.WriteAttributeString("config", fi.Config);
 | |
| 			MyWriter.WriteAttributeString("dts", fi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
 | |
| 			MyWriter.WriteAttributeString("usrid", fi.UsrID.ToString());
 | |
|       
 | |
| 			if (fi.FolderDocVersionCount > 0)
 | |
| 				foreach (DocVersionInfo dvi in fi.FolderDocVersions)
 | |
| 					ExportDocVersion(dvi, "docversion");
 | |
| 			MyWriter.WriteEndElement();
 | |
| 			MyWriter.WriteEndDocument();
 | |
|     }
 | |
|     private void ExportDocVersion(XmlElement xn, DocVersionInfo dvi, string nodename)
 | |
|     {
 | |
|       /*
 | |
|       VersionID
 | |
|       FolderID
 | |
|       VersionType
 | |
|       Name
 | |
|       Title
 | |
|       ItemID
 | |
|       FormatID
 | |
|       Config
 | |
|       DTS
 | |
|       UserID
 | |
|       */
 | |
|       lblExportStatus.Text = "Exporting DocVersion...";
 | |
|       Application.DoEvents();
 | |
|       XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "versionid", dvi.VersionID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "folderid", dvi.FolderID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "versiontype", dvi.VersionType.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "name", dvi.Name));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "title", dvi.Title));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "itemid", dvi.ItemID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "formatid", dvi.FormatID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", dvi.Config));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", dvi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", dvi.UserID.ToString()));
 | |
|       xn.AppendChild(xe);
 | |
|       if (dvi.DocVersionAssociationCount > 0)
 | |
|         foreach (AssociationInfo ai in dvi.DocVersionAssociations)
 | |
|           ExportAssociation(xe, ai, "association");
 | |
|       string fn = PEIPath + @"\folder.xml";
 | |
|       xn.OwnerDocument.Save(fn);
 | |
|       MyExpxZipFile.AddFile(fn, "folder");
 | |
|       MyExpxZipFile.Save();
 | |
|       File.Delete(fn);
 | |
|       //here
 | |
|       lblExportStatus.Text = "Exporting Procedures...";
 | |
|       Application.DoEvents();
 | |
|       if (dvi.Procedures.Count > 0)
 | |
|       {
 | |
|         pbExportProcedure.Value = 0;
 | |
|         pbExportProcedure.Maximum = dvi.Procedures.Count;
 | |
|         lblExportProcedure.Text = pbExportProcedure.Maximum.ToString() + " Procedures";
 | |
|         foreach (ItemInfo ii in dvi.Procedures)
 | |
|         {
 | |
|           XmlDocument xd = new XmlDocument();
 | |
|           ExportItem(xd, ii, "procedure");
 | |
|           fn = string.Format(@"{0}\proc{1}.xml", PEIPath, pbExportProcedure.Value.ToString().PadLeft(4, '0'));
 | |
|           xd.Save(fn);
 | |
|           MyExpxZipFile.AddFile(fn, "procedures");
 | |
|           MyExpxZipFile.Save();
 | |
|           File.Delete(fn);
 | |
|           xd = null;
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|     private void ExportDocVersion(DocVersionInfo dvi, string nodename)
 | |
| 		{
 | |
| 			/*
 | |
| 			VersionID
 | |
| 			FolderID
 | |
| 			VersionType
 | |
| 			Name
 | |
| 			Title
 | |
| 			ItemID
 | |
| 			FormatID
 | |
| 			Config
 | |
| 			DTS
 | |
| 			UserID
 | |
| 			*/
 | |
| 			MyWriter.WriteStartElement(nodename);
 | |
| 			MyWriter.WriteAttributeString("versionid", dvi.VersionID.ToString());
 | |
| 			MyWriter.WriteAttributeString("folderid", dvi.FolderID.ToString());
 | |
| 			MyWriter.WriteAttributeString("versiontype", dvi.VersionType.ToString());
 | |
| 			MyWriter.WriteAttributeString("name", dvi.Name);
 | |
| 			MyWriter.WriteAttributeString("title", dvi.Title);
 | |
| 			MyWriter.WriteAttributeString("itemid", dvi.ItemID.ToString());
 | |
| 			MyWriter.WriteAttributeString("formatid", dvi.FormatID.ToString());
 | |
| 			MyWriter.WriteAttributeString("config", dvi.Config);
 | |
| 			MyWriter.WriteAttributeString("dts", dvi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
 | |
| 			MyWriter.WriteAttributeString("userid", dvi.UserID.ToString());
 | |
|       if (dvi.DocVersionAssociationCount > 0)
 | |
|         foreach (AssociationInfo ai in dvi.DocVersionAssociations)
 | |
|           ExportAssociation(ai, "association");
 | |
| 			if (dvi.Procedures.Count > 0)
 | |
| 			{
 | |
| 				pbExportProcedure.Value = 0;
 | |
| 				pbExportProcedure.Maximum = dvi.Procedures.Count;
 | |
| 				lblExportProcedure.Text = pbExportProcedure.Maximum.ToString() + " Procedures";
 | |
| 				foreach (ItemInfo ii in dvi.Procedures)
 | |
| 				{
 | |
| 					ExportItem(ii, "procedure");
 | |
| 				}
 | |
| 			}
 | |
| 			MyWriter.WriteEndElement();
 | |
| 		}
 | |
|     private void ExportAssociation(XmlElement xn, AssociationInfo ai, string nodename)
 | |
|     {
 | |
|       /*
 | |
|       AssociationID
 | |
|       VersionID
 | |
|       ROFstID
 | |
|       Config
 | |
|       DTS
 | |
|       UserID
 | |
|       */
 | |
|       lblExportStatus.Text = "Exporting Association...";
 | |
|       Application.DoEvents();
 | |
|       XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "associationid", ai.AssociationID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "versionid", ai.VersionID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rofstid", ai.ROFstID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ai.Config));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ai.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ai.UserID.ToString()));
 | |
|       xn.AppendChild(xe);
 | |
|       ExportROFst(xe, ai.MyROFst, "rofst");
 | |
|     }
 | |
|     private void ExportAssociation(AssociationInfo ai, string nodename)
 | |
| 		{
 | |
| 			/*
 | |
| 			AssociationID
 | |
| 			VersionID
 | |
| 			ROFstID
 | |
| 			Config
 | |
| 			DTS
 | |
| 			UserID
 | |
| 			*/
 | |
| 			MyWriter.WriteStartElement(nodename);
 | |
| 			MyWriter.WriteAttributeString("associationid", ai.AssociationID.ToString());
 | |
| 			MyWriter.WriteAttributeString("versionid", ai.VersionID.ToString());
 | |
| 			MyWriter.WriteAttributeString("rofstid", ai.ROFstID.ToString());
 | |
| 			MyWriter.WriteAttributeString("config", ai.Config);
 | |
| 			MyWriter.WriteAttributeString("dts", ai.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
 | |
| 			MyWriter.WriteAttributeString("userid", ai.UserID.ToString());
 | |
| 			ExportROFst(ai.MyROFst, "rofst");
 | |
| 			MyWriter.WriteEndElement();
 | |
| 		}
 | |
|     private void ExportROFst(XmlElement xn, ROFstInfo fst, string nodename)
 | |
|     {
 | |
|       /*
 | |
|       ROFstID
 | |
|       RODbID
 | |
|       ROLookup
 | |
|       Config
 | |
|       DTS
 | |
|       UserID
 | |
|       */
 | |
|       lblExportStatus.Text = "Exporting ROFst...";
 | |
|       Application.DoEvents();
 | |
|       XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rofstid", fst.ROFstID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rodbid", fst.RODbID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rolookup", Convert.ToBase64String(fst.ROLookup)));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", fst.Config));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", fst.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", fst.UserID.ToString()));
 | |
|       xn.AppendChild(xe);
 | |
|       ExportRODb(xe, fst.MyRODb, "rodb");
 | |
|     }
 | |
|     private void ExportROFst(ROFstInfo fst, string nodename)
 | |
| 		{
 | |
| 			/*
 | |
| 			ROFstID
 | |
| 			RODbID
 | |
| 			ROLookup
 | |
| 			Config
 | |
| 			DTS
 | |
| 			UserID
 | |
| 			*/
 | |
| 			MyWriter.WriteStartElement(nodename);
 | |
| 			MyWriter.WriteAttributeString("rofstid", fst.ROFstID.ToString());
 | |
| 			MyWriter.WriteAttributeString("rodbid", fst.RODbID.ToString());
 | |
| 			MyWriter.WriteAttributeString("rolookup", Convert.ToBase64String(fst.ROLookup));
 | |
| 			MyWriter.WriteAttributeString("config", fst.Config);
 | |
| 			MyWriter.WriteAttributeString("dts", fst.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
 | |
| 			MyWriter.WriteAttributeString("userid", fst.UserID.ToString());
 | |
| 			ExportRODb(fst.MyRODb, "rodb");
 | |
| 			MyWriter.WriteEndElement();
 | |
| 		}
 | |
|     private void ExportRODb(XmlElement xn, RODbInfo db, string nodename)
 | |
|     {
 | |
|       /*
 | |
|       RODbID
 | |
|       ROName
 | |
|       FolderPath
 | |
|       DBConnectionString
 | |
|       Config
 | |
|       DTS
 | |
|       UserID
 | |
|       */
 | |
|       lblExportStatus.Text = "Exporting RODb...";
 | |
|       Application.DoEvents();
 | |
|       XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rodbid", db.RODbID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "roname", db.ROName));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "folderpath", db.FolderPath));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dbconnectionstring", db.DBConnectionString));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", db.Config));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", db.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", db.UserID.ToString()));
 | |
|       xn.AppendChild(xe);
 | |
|     }
 | |
|     private void ExportRODb(RODbInfo db, string nodename)
 | |
| 		{
 | |
| 			/*
 | |
| 			RODbID
 | |
| 			ROName
 | |
| 			FolderPath
 | |
| 			DBConnectionString
 | |
| 			Config
 | |
| 			DTS
 | |
| 			UserID
 | |
| 			*/
 | |
| 			MyWriter.WriteStartElement(nodename);
 | |
| 			MyWriter.WriteAttributeString("rodbid", db.RODbID.ToString());
 | |
| 			MyWriter.WriteAttributeString("roname", db.ROName);
 | |
| 			MyWriter.WriteAttributeString("folderpath", db.FolderPath);
 | |
| 			MyWriter.WriteAttributeString("dbconnectionstring", db.DBConnectionString);
 | |
| 			MyWriter.WriteAttributeString("config", db.Config);
 | |
| 			MyWriter.WriteAttributeString("dts", db.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
 | |
| 			MyWriter.WriteAttributeString("userid", db.UserID.ToString());
 | |
| 			MyWriter.WriteEndElement();
 | |
| 		}
 | |
|     private void ExportItem(XmlDocument xd, ItemInfo ii, string nodename)
 | |
|     {
 | |
|       XmlElement xe = xd.CreateElement(nodename);
 | |
|       xd.AppendChild(xe);
 | |
|       ExportItem(xe, ii, nodename);
 | |
|     }
 | |
|     private void ExportItem(XmlElement xn, ItemInfo ii, string nodename)
 | |
|     {
 | |
|       /*
 | |
|       ItemID
 | |
|       PreviousID
 | |
|       ContentID
 | |
|       DTS
 | |
|       */
 | |
|       XmlElement xe = null;
 | |
|       if (xn.Name == "procedure")
 | |
|         xe = xn;
 | |
|       else
 | |
|       {
 | |
|         xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|         xn.AppendChild(xe);
 | |
|       }
 | |
|       if (ii.IsProcedure)
 | |
|       {
 | |
|         pbExportProcedure.PerformStep();
 | |
|         lblExportProcedure.Text = string.Format("{0} of {1} Procedures", pbExportProcedure.Value.ToString(), pbExportProcedure.Maximum.ToString());
 | |
|         TimeSpan elapsed = DateTime.Now.Subtract(MyStart);
 | |
|         lblExportTime.Text = "Elapsed Time: " + elapsed.ToString();
 | |
|         Application.DoEvents();
 | |
|         pbExportSection.Value = 0;
 | |
|         pbExportSection.Maximum = pbExportSection.Value;
 | |
|         pbExportStep.Value = 0;
 | |
|         pbExportStep.Maximum = pbExportStep.Value;
 | |
|         pbExportSection.Maximum = ii.Sections.Count;
 | |
|       }
 | |
|       if (ii.IsSection && ii.ActiveParent.IsProcedure)
 | |
|       {
 | |
|         pbExportSection.PerformStep();
 | |
|         lblExportSection.Text = string.Format("{0} of {1} Sections", pbExportSection.Value.ToString(), pbExportSection.Maximum.ToString());
 | |
|         Application.DoEvents();
 | |
|         pbExportStep.Value = 0;
 | |
|         pbExportStep.Maximum = pbExportStep.Value;
 | |
|         if (ii.Steps != null)
 | |
|           pbExportStep.Maximum = ii.Steps.Count;
 | |
|       }
 | |
|       if (ii.IsStep && ii.ActiveParent.IsSection && ii.ActiveParent.ActiveParent.IsProcedure)
 | |
|       {
 | |
|         pbExportStep.PerformStep();
 | |
|         lblExportStep.Text = string.Format("{0} of {1} Steps", pbExportStep.Value.ToString(), pbExportStep.Maximum.ToString());
 | |
|         Application.DoEvents();
 | |
|       }
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "itemid", ii.ItemID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "previousid", ii.PreviousID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", ii.ContentID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ii.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | |
|       ExportContent(xe, ii.MyContent, "content");
 | |
|       if (ii.ItemAnnotationCount > 0)
 | |
|         foreach (AnnotationInfo ai in ii.ItemAnnotations)
 | |
|           ExportAnnotation(xe, ai, "annotation");
 | |
|     }
 | |
|     private void ExportItem(ItemInfo ii, string nodename)
 | |
| 		{
 | |
| 			/*
 | |
| 			ItemID
 | |
| 			PreviousID
 | |
| 			ContentID
 | |
| 			DTS
 | |
| 			*/
 | |
| 			if (ii.IsProcedure)
 | |
| 			{
 | |
| 				pbExportProcedure.PerformStep();
 | |
| 				lblExportProcedure.Text = string.Format("{0} of {1} Procedures", pbExportProcedure.Value.ToString(), pbExportProcedure.Maximum.ToString());
 | |
| 				Application.DoEvents();
 | |
| 				pbExportSection.Value = 0;
 | |
| 				pbExportStep.Value = 0;
 | |
| 				pbExportSection.Maximum = ii.Sections.Count;
 | |
| 			}
 | |
| 			if (ii.IsSection)
 | |
| 			{
 | |
| 				pbExportSection.PerformStep();
 | |
| 				lblExportSection.Text = string.Format("{0} of {1} Sections", pbExportSection.Value.ToString(), pbExportSection.Maximum.ToString());
 | |
| 				Application.DoEvents();
 | |
| 				pbExportStep.Value = 0;
 | |
| 				if (ii.Steps != null)
 | |
| 					pbExportStep.Maximum = ii.Steps.Count;
 | |
| 			}
 | |
| 			if (ii.IsStep)
 | |
| 			{
 | |
| 				pbExportStep.PerformStep();
 | |
| 				lblExportStep.Text = string.Format("{0} of {1} Steps", pbExportStep.Value.ToString(), pbExportStep.Maximum.ToString());
 | |
| 				Application.DoEvents();
 | |
| 			}
 | |
| 			MyWriter.WriteStartElement(nodename);
 | |
| 			MyWriter.WriteAttributeString("itemid", ii.ItemID.ToString());
 | |
| 			MyWriter.WriteAttributeString("previousid", ii.PreviousID.ToString());
 | |
| 			MyWriter.WriteAttributeString("contentid", ii.ContentID.ToString());
 | |
| 			MyWriter.WriteAttributeString("dts", ii.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
 | |
| 			ExportContent(ii.MyContent, "content");
 | |
| 			if (ii.ItemAnnotationCount > 0)
 | |
| 				foreach (AnnotationInfo ai in ii.ItemAnnotations)
 | |
| 					ExportAnnotation(ai, "annotation");
 | |
| 			MyWriter.WriteEndElement();
 | |
| 		}
 | |
|     private void ExportContent(XmlElement xn, ContentInfo ci, string nodename)
 | |
|     {
 | |
|       /*
 | |
|       ContentID
 | |
|       Number
 | |
|       Text
 | |
|       Type
 | |
|       FormatID
 | |
|       Config
 | |
|       DTS
 | |
|       UserID
 | |
|       */
 | |
|       XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", ci.ContentID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "number", ci.Number));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "text", ci.Text));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "type", ci.Type.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "formatid", ci.FormatID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ci.Config));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ci.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ci.UserID.ToString()));
 | |
|       xn.AppendChild(xe);
 | |
|       if (ci.ContentTransitionCount > 0)
 | |
|         foreach (TransitionInfo ti in ci.ContentTransitions)
 | |
|           ExportTransition(xe, ti, "transition");
 | |
|       if (ci.ContentRoUsageCount > 0)
 | |
|         foreach (RoUsageInfo ri in ci.ContentRoUsages)
 | |
|           ExportROUsage(xe, ri, "rousage");
 | |
|       if (ci.ContentEntryCount > 0)
 | |
|         ExportEntry(xe, ci.MyEntry, "entry");
 | |
|       if (ci.ContentGridCount > 0)
 | |
|         ExportGrid(xe, ci.MyGrid, "grid");
 | |
|       if (ci.ContentPartCount > 0)
 | |
|         foreach (PartInfo pi in ci.ContentParts)
 | |
|           ExportPart(xe, pi, ((E_FromTypes)pi.FromType).ToString().ToLower());
 | |
|     }
 | |
|     private void ExportContent(ContentInfo ci, string nodename)
 | |
| 		{
 | |
| 			/*
 | |
| 			ContentID
 | |
| 			Number
 | |
| 			Text
 | |
| 			Type
 | |
| 			FormatID
 | |
| 			Config
 | |
| 			DTS
 | |
| 			UserID
 | |
| 			*/
 | |
| 			MyWriter.WriteStartElement(nodename);
 | |
| 			MyWriter.WriteAttributeString("contentid", ci.ContentID.ToString());
 | |
| 			MyWriter.WriteAttributeString("number", ci.Number);
 | |
| 			MyWriter.WriteAttributeString("text", ci.Text);
 | |
| 			MyWriter.WriteAttributeString("type", ci.Type.ToString());
 | |
| 			MyWriter.WriteAttributeString("formatid", ci.FormatID.ToString());
 | |
| 			MyWriter.WriteAttributeString("config", ci.Config);
 | |
| 			MyWriter.WriteAttributeString("dts", ci.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
 | |
| 			MyWriter.WriteAttributeString("userid", ci.UserID.ToString());
 | |
| 			if (ci.ContentTransitionCount > 0)
 | |
| 				foreach (TransitionInfo ti in ci.ContentTransitions)
 | |
| 					ExportTransition(ti, "transition");
 | |
| 			if (ci.ContentRoUsageCount > 0)
 | |
| 				foreach (RoUsageInfo ri in ci.ContentRoUsages)
 | |
| 					ExportROUsage(ri, "rousage");
 | |
| 			if (ci.ContentEntryCount > 0)
 | |
| 				ExportEntry(ci.MyEntry, "entry");
 | |
| 			if (ci.ContentGridCount > 0)
 | |
| 				ExportGrid(ci.MyGrid, "grid");
 | |
| 			if (ci.ContentPartCount > 0)
 | |
| 				foreach (PartInfo pi in ci.ContentParts)
 | |
| 					ExportPart(pi, ((E_FromTypes)pi.FromType).ToString().ToLower());
 | |
| 			MyWriter.WriteEndElement();
 | |
| 		}
 | |
|     private void ExportGrid(XmlElement xn, GridInfo gi, string nodename)
 | |
|     {
 | |
|       /*
 | |
|       ContentID
 | |
|       Data
 | |
|       Config
 | |
|       DTS
 | |
|       UserID
 | |
|       */
 | |
|       XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", gi.ContentID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "data", gi.Data));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", gi.Config));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", gi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", gi.UserID.ToString()));
 | |
|       xn.AppendChild(xe);
 | |
|     }
 | |
|     private void ExportGrid(GridInfo gi, string nodename)
 | |
| 		{
 | |
| 			/*
 | |
| 			ContentID
 | |
| 			Data
 | |
| 			Config
 | |
| 			DTS
 | |
| 			UserID
 | |
| 			*/
 | |
| 			MyWriter.WriteStartElement(nodename);
 | |
| 			MyWriter.WriteAttributeString("contentid", gi.ContentID.ToString());
 | |
| 			MyWriter.WriteAttributeString("data", gi.Data);
 | |
| 			MyWriter.WriteAttributeString("config", gi.Config);
 | |
| 			MyWriter.WriteAttributeString("dts", gi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
 | |
| 			MyWriter.WriteAttributeString("userid", gi.UserID.ToString());
 | |
| 			MyWriter.WriteEndElement();
 | |
| 		}
 | |
|     private void ExportEntry(XmlElement xn, EntryInfo ei, string nodename)
 | |
|     {
 | |
|       /*
 | |
|       ContentID
 | |
|       DocID
 | |
|       DTS
 | |
|       UserID
 | |
|       */
 | |
|       XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", ei.ContentID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "docid", ei.DocID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ei.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ei.UserID.ToString()));
 | |
|       xn.AppendChild(xe);
 | |
|       ExportDocument(xe, ei.MyDocument, "document");
 | |
|     }
 | |
|     private void ExportEntry(EntryInfo ei, string nodename)
 | |
| 		{
 | |
| 			/*
 | |
| 			ContentID
 | |
| 			DocID
 | |
| 			DTS
 | |
| 			UserID
 | |
| 			*/
 | |
| 			MyWriter.WriteStartElement(nodename);
 | |
| 			MyWriter.WriteAttributeString("contentid", ei.ContentID.ToString());
 | |
| 			MyWriter.WriteAttributeString("docid", ei.DocID.ToString());
 | |
| 			MyWriter.WriteAttributeString("dts", ei.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
 | |
| 			MyWriter.WriteAttributeString("userid", ei.UserID.ToString());
 | |
| 			ExportDocument(ei.MyDocument, "document");
 | |
| 			MyWriter.WriteEndElement();
 | |
| 		}
 | |
|     private void ExportDocument(XmlElement xn, DocumentInfo di, string nodename)
 | |
|     {
 | |
|       /*
 | |
|       DocID
 | |
|       LibTitle
 | |
|       DocContent
 | |
|       DocAscii
 | |
|       Config
 | |
|       DTS
 | |
|       UserID
 | |
|       FileExtension
 | |
|       */
 | |
|       XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "docid", di.DocID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "libtitle", di.LibTitle));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "doccontent", Convert.ToBase64String(di.DocContent)));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "docascii", di.DocAscii));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", di.Config));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", di.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", di.UserID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "fileextension", di.FileExtension));
 | |
|       xn.AppendChild(xe);
 | |
|     }
 | |
|     private void ExportDocument(DocumentInfo di, string nodename)
 | |
| 		{
 | |
| 			/*
 | |
| 			DocID
 | |
| 			LibTitle
 | |
| 			DocContent
 | |
| 			DocAscii
 | |
| 			Config
 | |
| 			DTS
 | |
| 			UserID
 | |
| 			FileExtension
 | |
| 			*/
 | |
| 			MyWriter.WriteStartElement(nodename);
 | |
| 			MyWriter.WriteAttributeString("docid", di.DocID.ToString());
 | |
| 			MyWriter.WriteAttributeString("libtitle", di.LibTitle);
 | |
| 			MyWriter.WriteAttributeString("doccontent", Convert.ToBase64String(di.DocContent));
 | |
| 			MyWriter.WriteAttributeString("docascii", di.DocAscii);
 | |
| 			MyWriter.WriteAttributeString("config", di.Config);
 | |
| 			MyWriter.WriteAttributeString("dts", di.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
 | |
| 			MyWriter.WriteAttributeString("userid", di.UserID.ToString());
 | |
| 			MyWriter.WriteAttributeString("fileextension", di.FileExtension);
 | |
| 			MyWriter.WriteEndElement();
 | |
| 		}
 | |
|     private void ExportROUsage(XmlElement xn, RoUsageInfo ri, string nodename)
 | |
|     {
 | |
|       /*
 | |
|       ROUsageID
 | |
|       ContentID
 | |
|       ROID
 | |
|       Config
 | |
|       DTS
 | |
|       UserID
 | |
|       RODbID
 | |
|       */
 | |
|       XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rousageid", ri.ROUsageID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", ri.ContentID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "roid", ri.ROID));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ri.Config));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ri.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ri.UserID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rodbid", ri.RODbID.ToString()));
 | |
|       xn.AppendChild(xe);
 | |
|     }
 | |
|     private void ExportROUsage(RoUsageInfo ri, string nodename)
 | |
| 		{
 | |
| 			/*
 | |
| 			ROUsageID
 | |
| 			ContentID
 | |
| 			ROID
 | |
| 			Config
 | |
| 			DTS
 | |
| 			UserID
 | |
| 			RODbID
 | |
| 			*/
 | |
| 			MyWriter.WriteStartElement(nodename);
 | |
| 			MyWriter.WriteAttributeString("rousageid", ri.ROUsageID.ToString());
 | |
| 			MyWriter.WriteAttributeString("contentid", ri.ContentID.ToString());
 | |
| 			MyWriter.WriteAttributeString("roid", ri.ROID);
 | |
| 			MyWriter.WriteAttributeString("config", ri.Config);
 | |
| 			MyWriter.WriteAttributeString("dts", ri.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
 | |
| 			MyWriter.WriteAttributeString("userid", ri.UserID.ToString());
 | |
| 			MyWriter.WriteAttributeString("rodbid", ri.RODbID.ToString());
 | |
| 			MyWriter.WriteEndElement();
 | |
| 		}
 | |
|     private void ExportPart(XmlElement xn, PartInfo pi, string nodename)
 | |
|     {
 | |
|       /*
 | |
|       ContentID
 | |
|       FromType
 | |
|       ItemID
 | |
|       DTS
 | |
|       UserID
 | |
|       */
 | |
|       XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", pi.ContentID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "fromtype", pi.FromType.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "itemid", pi.ItemID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", pi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", pi.UserID.ToString()));
 | |
|       xn.AppendChild(xe);
 | |
|       foreach (ItemInfo ii in pi.MyItems)
 | |
|         ExportItem(xe, ii, pi.PartType.ToString().ToLower());
 | |
|     }
 | |
|     private void ExportPart(PartInfo pi, string nodename)
 | |
| 		{
 | |
| 			/*
 | |
| 			ContentID
 | |
| 			FromType
 | |
| 			ItemID
 | |
| 			DTS
 | |
| 			UserID
 | |
| 			*/
 | |
| 			MyWriter.WriteStartElement(nodename);
 | |
| 			MyWriter.WriteAttributeString("contentid", pi.ContentID.ToString());
 | |
| 			MyWriter.WriteAttributeString("fromtype", pi.FromType.ToString());
 | |
| 			MyWriter.WriteAttributeString("itemid", pi.ItemID.ToString());
 | |
| 			MyWriter.WriteAttributeString("dts", pi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
 | |
| 			MyWriter.WriteAttributeString("userid", pi.UserID.ToString());
 | |
| 			foreach (ItemInfo ii in pi.MyItems)
 | |
| 				ExportItem(ii, pi.PartType.ToString().ToLower());
 | |
| 			MyWriter.WriteEndElement();
 | |
| 		}
 | |
|     private void ExportTransition(XmlElement xn, TransitionInfo ti, string nodename)
 | |
|     {
 | |
|       /*
 | |
|       TransitionID
 | |
|       FromID
 | |
|       ToID
 | |
|       RangeID
 | |
|       IsRange
 | |
|       TranType
 | |
|       Config
 | |
|       DTS
 | |
|       UserID
 | |
|       */
 | |
|       XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "transitionid", ti.TransitionID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "fromid", ti.FromID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "toid", ti.ToID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rangeid", ti.RangeID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "isrange", ti.IsRange.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "trantype", ti.TranType.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ti.Config));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ti.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ti.UserID.ToString()));
 | |
|       xn.AppendChild(xe);
 | |
|     }
 | |
|     private void ExportTransition(TransitionInfo ti, string nodename)
 | |
| 		{
 | |
| 			/*
 | |
| 			TransitionID
 | |
| 			FromID
 | |
| 			ToID
 | |
| 			RangeID
 | |
| 			IsRange
 | |
| 			TranType
 | |
| 			Config
 | |
| 			DTS
 | |
| 			UserID
 | |
| 			*/
 | |
|       string folder = string.Empty;
 | |
|       if (ti.MyItemToID.MyDocVersion != null && ti.MyItemToID.MyDocVersion.MyFolder.Name != MyFolder.Name)
 | |
|       {
 | |
|         nodename = "external" + nodename;
 | |
|         folder = ti.MyItemToID.MyDocVersion.MyFolder.Name;
 | |
|       }
 | |
|       else
 | |
|       {
 | |
|         nodename = "external" + nodename;
 | |
|         folder = "UNKNOWN";
 | |
|       }
 | |
|       MyWriter.WriteStartElement(nodename);
 | |
|       if (folder != string.Empty)
 | |
|         MyWriter.WriteAttributeString("folder", folder);
 | |
| 			MyWriter.WriteAttributeString("transitionid", ti.TransitionID.ToString());
 | |
| 			MyWriter.WriteAttributeString("fromid", ti.FromID.ToString());
 | |
| 			MyWriter.WriteAttributeString("toid", ti.ToID.ToString());
 | |
| 			MyWriter.WriteAttributeString("rangeid", ti.RangeID.ToString());
 | |
| 			MyWriter.WriteAttributeString("isrange", ti.IsRange.ToString());
 | |
| 			MyWriter.WriteAttributeString("trantype", ti.TranType.ToString());
 | |
| 			MyWriter.WriteAttributeString("config", ti.Config);
 | |
| 			MyWriter.WriteAttributeString("dts", ti.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
 | |
| 			MyWriter.WriteAttributeString("userid", ti.UserID.ToString());
 | |
| 			MyWriter.WriteEndElement();
 | |
| 		}
 | |
|     private void ExportAnnotation(XmlElement xn, AnnotationInfo ai, string nodename)
 | |
|     {
 | |
|       /*
 | |
|       AnnotationID
 | |
|       ItemID
 | |
|       TypeID
 | |
|       RtfText
 | |
|       SearchText
 | |
|       Config
 | |
|       DTS
 | |
|       UserID
 | |
|       */
 | |
|       XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "annotationid", ai.AnnotationID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "itemid", ai.ItemID.ToString()));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "typeid", ai.TypeID.ToString()));
 | |
|       //if(ai.TypeID > 6)
 | |
|         xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "typename", ai.MyAnnotationType.Name));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rtftext", ai.RtfText));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "searchtext", ai.SearchText));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ai.Config));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ai.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | |
|       xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ai.UserID.ToString()));
 | |
|       xn.AppendChild(xe);
 | |
|     }
 | |
|     private void ExportAnnotation(AnnotationInfo ai, string nodename)
 | |
| 		{
 | |
| 			/*
 | |
| 			AnnotationID
 | |
| 			ItemID
 | |
| 			TypeID
 | |
| 			RtfText
 | |
| 			SearchText
 | |
| 			Config
 | |
| 			DTS
 | |
| 			UserID
 | |
| 			*/
 | |
| 			MyWriter.WriteStartElement(nodename);
 | |
| 			MyWriter.WriteAttributeString("annotationid", ai.AnnotationID.ToString());
 | |
| 			MyWriter.WriteAttributeString("itemid", ai.ItemID.ToString());
 | |
| 			MyWriter.WriteAttributeString("typeid", ai.TypeID.ToString());
 | |
| 			MyWriter.WriteAttributeString("rtftext", ai.RtfText);
 | |
| 			MyWriter.WriteAttributeString("searchtext", ai.SearchText);
 | |
| 			MyWriter.WriteAttributeString("config", ai.Config);
 | |
| 			MyWriter.WriteAttributeString("dts", ai.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
 | |
| 			MyWriter.WriteAttributeString("userid", ai.UserID.ToString());
 | |
| 			MyWriter.WriteEndElement();
 | |
| 		}
 | |
| 		#endregion
 | |
| 		#region Import for Merge
 | |
|     private void AddExternalTransition(XmlReader xr, XmlDocument xd)
 | |
|     {
 | |
|       XmlElement xe = xd.CreateElement("transition");
 | |
|       XmlAttribute xa = AddAttribute(xd, "folder", xr.GetAttribute("folder"));
 | |
|       xe.Attributes.SetNamedItem(xa);
 | |
|       xa = AddAttribute(xd, "transitionid", xr.GetAttribute("transitionid"));
 | |
|       xe.Attributes.SetNamedItem(xa);
 | |
|       xa = AddAttribute(xd, "fromid", xr.GetAttribute("fromid"));
 | |
|       xe.Attributes.SetNamedItem(xa);
 | |
|       xa = AddAttribute(xd, "toid", xr.GetAttribute("toid"));
 | |
|       xe.Attributes.SetNamedItem(xa);
 | |
|       xa = AddAttribute(xd, "rangeid", xr.GetAttribute("rangeid"));
 | |
|       xe.Attributes.SetNamedItem(xa);
 | |
|       xa = AddAttribute(xd, "isrange", xr.GetAttribute("isrange"));
 | |
|       xe.Attributes.SetNamedItem(xa);
 | |
|       xa = AddAttribute(xd, "trantype", xr.GetAttribute("trantype"));
 | |
|       xe.Attributes.SetNamedItem(xa);
 | |
|       xa = AddAttribute(xd, "config", xr.GetAttribute("config"));
 | |
|       xe.Attributes.SetNamedItem(xa);
 | |
|       xa = AddAttribute(xd, "userid", xr.GetAttribute("userid"));
 | |
|       xe.Attributes.SetNamedItem(xa);
 | |
|       xa = AddAttribute(xd, "dts", xr.GetAttribute("dts"));
 | |
|       xe.Attributes.SetNamedItem(xa);
 | |
|       xd.SelectSingleNode("externaltransitions/transitions").AppendChild(xe);
 | |
|     }
 | |
| 		private void AddTransitions(XmlReader xr)
 | |
| 		{
 | |
| 			int transitionid = int.Parse(xr.GetAttribute("transitionid"));
 | |
| 			int fromid = int.Parse(xr.GetAttribute("fromid"));
 | |
| 			int toid = int.Parse(xr.GetAttribute("toid"));
 | |
| 			int rangeid = int.Parse(xr.GetAttribute("rangeid"));
 | |
| 			int isrange = int.Parse(xr.GetAttribute("isrange"));
 | |
| 			int trantype = int.Parse(xr.GetAttribute("trantype"));
 | |
| 			string config = xr.GetAttribute("config");
 | |
| 			string userid = xr.GetAttribute("userid");
 | |
| 			DateTime dts = DateTime.Parse(xr.GetAttribute("dts"));
 | |
| 			string lookfor;
 | |
| 			if (isrange == 0)
 | |
| 				lookfor = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid);
 | |
| 			else
 | |
| 				lookfor = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid);
 | |
| 			fromid = Old2NewContent[fromid];
 | |
| 			toid = Old2NewItem[toid];
 | |
| 			rangeid = Old2NewItem[rangeid];
 | |
| 			Content cc = Content.Get(fromid);
 | |
| 			Transition tt = Transition.MakeTransition(cc, Item.Get(toid), Item.Get(rangeid), isrange, trantype, config, dts, userid);
 | |
| 			transitionid = tt.TransitionID;
 | |
| 			string replacewith;
 | |
| 			if (isrange == 0)
 | |
| 				replacewith = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid);
 | |
| 			else
 | |
| 				replacewith = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid);
 | |
| 			cc.Text = cc.Text.Replace(lookfor, replacewith);
 | |
| 			cc.Save();
 | |
| 		}
 | |
|     private void AddTransitions(Content content, XmlNode xn)
 | |
|     {
 | |
|       /*
 | |
|       Content
 | |
|       Item
 | |
|       Item
 | |
|       int
 | |
|       int
 | |
|       string
 | |
|       dts
 | |
|       string
 | |
|       <transition transitionid="1" fromid="186" toid="175" rangeid="177" isrange="1" trantype="2" config="" dts="4/11/1997 1:20:00 PM" userid="MH" />
 | |
| 
 | |
|       #Link:Transition:1 2 187
 | |
|       type,id,toid
 | |
| 
 | |
|       #Link:TransitionRange:2 1 175 177
 | |
|       type,id,toid,rangeid
 | |
|       */
 | |
|       XmlNodeList nl = xn.SelectNodes("./transition");
 | |
|       foreach (XmlNode nd in nl)
 | |
|       {
 | |
|         int toid = int.Parse(nd.Attributes.GetNamedItem("toid").InnerText);
 | |
|         int rangeid = int.Parse(nd.Attributes.GetNamedItem("rangeid").InnerText);
 | |
|         if (Old2NewItem.ContainsKey(toid) && Old2NewItem.ContainsKey(rangeid))
 | |
|         {
 | |
|           int transitionid = int.Parse(nd.Attributes.GetNamedItem("transitionid").InnerText);
 | |
|           int isrange = int.Parse(nd.Attributes.GetNamedItem("isrange").InnerText);
 | |
|           int trantype = int.Parse(nd.Attributes.GetNamedItem("trantype").InnerText);
 | |
|           string config = nd.Attributes.GetNamedItem("config").InnerText;
 | |
|           string userid = nd.Attributes.GetNamedItem("userid").InnerText;
 | |
|           DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText);
 | |
|           string lookfor;
 | |
|           if (isrange == 0)
 | |
|             lookfor = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid);
 | |
|           else
 | |
|             lookfor = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid);
 | |
|           //fromid = content.ContentID;
 | |
|           toid = Old2NewItem[toid];
 | |
|           rangeid = Old2NewItem[rangeid];
 | |
|           Transition tt = Transition.MakeTransition(content, Item.Get(toid), Item.Get(rangeid), isrange, trantype, config, dts, userid);
 | |
|           transitionid = tt.TransitionID;
 | |
|           string replacewith;
 | |
|           if (isrange == 0)
 | |
|             replacewith = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid);
 | |
|           else
 | |
|             replacewith = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid);
 | |
|           content.Text = content.Text.Replace(lookfor, replacewith);
 | |
|           content.Save();
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|           PendingTransitions.DocumentElement.AppendChild(PendingTransitions.ImportNode(nd, true));
 | |
|           //save to holding pen
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|     private void AddTransitions()
 | |
|     {
 | |
|       AddTransitions(PendingTransitions);
 | |
|     }
 | |
|     private void AddTransitions(XmlDocument xd)
 | |
| 		{
 | |
| 			/*
 | |
| 			Content
 | |
| 			Item
 | |
| 			Item
 | |
| 			int
 | |
| 			int
 | |
| 			string
 | |
| 			dts
 | |
| 			string
 | |
| 			<transition transitionid="1" fromid="186" toid="175" rangeid="177" isrange="1" trantype="2" config="" dts="4/11/1997 1:20:00 PM" userid="MH" />
 | |
| 
 | |
| 			#Link:Transition:1 2 187
 | |
| 			type,id,toid
 | |
| 
 | |
| 			#Link:TransitionRange:2 1 175 177
 | |
| 			type,id,toid,rangeid
 | |
| 			*/
 | |
| 			XmlNodeList nl = xd.SelectNodes("//transition");
 | |
| 			lblImportStatus.Text = string.Format("Updating {0} Tranistions", nl.Count.ToString());
 | |
| 			foreach (XmlNode nd in nl)
 | |
| 			{
 | |
| 				int fromid = int.Parse(nd.Attributes.GetNamedItem("fromid").InnerText);
 | |
| 				int toid = int.Parse(nd.Attributes.GetNamedItem("toid").InnerText);
 | |
| 				int rangeid = int.Parse(nd.Attributes.GetNamedItem("rangeid").InnerText);
 | |
|         if (Old2NewContent.ContainsKey(fromid) && Old2NewItem.ContainsKey(toid) && Old2NewItem.ContainsKey(rangeid))
 | |
|         {
 | |
|           int transitionid = int.Parse(nd.Attributes.GetNamedItem("transitionid").InnerText);
 | |
|           int isrange = int.Parse(nd.Attributes.GetNamedItem("isrange").InnerText);
 | |
|           int trantype = int.Parse(nd.Attributes.GetNamedItem("trantype").InnerText);
 | |
|           string config = nd.Attributes.GetNamedItem("config").InnerText;
 | |
|           string userid = nd.Attributes.GetNamedItem("userid").InnerText;
 | |
|           DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText);
 | |
|           string lookfor;
 | |
|           if (isrange == 0)
 | |
|             lookfor = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid);
 | |
|           else
 | |
|             lookfor = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid);
 | |
|           fromid = Old2NewContent[fromid];
 | |
|           toid = Old2NewItem[toid];
 | |
|           rangeid = Old2NewItem[rangeid];
 | |
|           Content cc = Content.Get(fromid);
 | |
|           Transition tt = Transition.MakeTransition(cc, Item.Get(toid), Item.Get(rangeid), isrange, trantype, config, dts, userid);
 | |
|           transitionid = tt.TransitionID;
 | |
|           string replacewith;
 | |
|           if (isrange == 0)
 | |
|             replacewith = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid);
 | |
|           else
 | |
|             replacewith = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid);
 | |
|           cc.Text = cc.Text.Replace(lookfor, replacewith);
 | |
|           cc.Save();
 | |
|           nd.InnerText = "done";
 | |
|         }
 | |
| 			}
 | |
| 		}
 | |
| 		private Dictionary<int, int> Old2NewItem;
 | |
| 		private Dictionary<int, int> Old2NewContent;
 | |
|     private Dictionary<int, int> Old2NewLibDoc;
 | |
|     private XmlDocument PendingTransitions;
 | |
| 		private RODb MyRODb = null;
 | |
| 		private Folder AddFolder(Folder folder, XmlReader xr)
 | |
| 		{
 | |
| 			Old2NewItem = new Dictionary<int, int>();
 | |
| 			Old2NewContent = new Dictionary<int, int>();
 | |
|       Old2NewLibDoc = new Dictionary<int, int>();
 | |
| 			string title = xr.GetAttribute("title");
 | |
| 			string name = xr.GetAttribute("name");
 | |
| 			string shortname = xr.GetAttribute("shortname");
 | |
| 			string usrid = xr.GetAttribute("usrid");
 | |
| 			DateTime dts = DateTime.Parse(xr.GetAttribute("dts"));
 | |
|       string formatid = xr.GetAttribute("formatid");
 | |
|       Format format = formatid == string.Empty ? null : OldToNewFormat(int.Parse(formatid));
 | |
|       folder = Folder.MakeFolder(folder, folder.MyConnection, name, title, shortname, format, null, dts, usrid);
 | |
| 			//f.Save();
 | |
| 			return folder;
 | |
| 		}
 | |
| 		private Folder AddFolder(Folder p, XmlDocument xd)
 | |
| 		{
 | |
|       lblImportStatus.Text = "Creating Folder...";
 | |
|       Application.DoEvents();
 | |
|       string title = xd.DocumentElement.Attributes.GetNamedItem("title").InnerText;
 | |
| 			string name = xd.DocumentElement.Attributes.GetNamedItem("name").InnerText;
 | |
| 			string shortname = xd.DocumentElement.Attributes.GetNamedItem("shortname").InnerText;
 | |
| 			string usrid = xd.DocumentElement.Attributes.GetNamedItem("usrid").InnerText;
 | |
| 			DateTime dts = DateTime.Parse(xd.DocumentElement.Attributes.GetNamedItem("dts").InnerText);
 | |
|       string formatid = xd.DocumentElement.Attributes.GetNamedItem("formatid").InnerText;
 | |
|       Format format = formatid == string.Empty ? null : OldToNewFormat(int.Parse(formatid));
 | |
|       if (Folder.GetByParentID_Name(p.FolderID, name) != null)
 | |
|         return null;
 | |
| 			Folder f = Folder.MakeFolder(p, p.MyConnection, name, title, shortname, format, null, dts, usrid);
 | |
| 			return f;
 | |
| 		}
 | |
|     private Format OldToNewFormat(int formatID)
 | |
|     {
 | |
|       string formatName = oldFormat[formatID];
 | |
|       formatID = newFormat[formatName];
 | |
|       return Format.Get(formatID);
 | |
|     }
 | |
| 		private DocVersion AddDocVersion(Folder f, XmlReader xr)
 | |
| 		{
 | |
| 			int versiontype = int.Parse(xr.GetAttribute("versiontype"));
 | |
| 			string name = xr.GetAttribute("name");
 | |
| 			string config = xr.GetAttribute("config");
 | |
| 			string userid = xr.GetAttribute("userid");
 | |
| 			DateTime dts = DateTime.Parse(xr.GetAttribute("dts"));
 | |
| 			string formatid = xr.GetAttribute("formatid");
 | |
|       Format format = formatid == string.Empty ? null : OldToNewFormat(int.Parse(formatid));
 | |
| 			DocVersion dv = DocVersion.MakeDocVersion(f, versiontype, name, null, null, format, config, dts, userid);
 | |
| 			return dv;
 | |
| 		}
 | |
|     private void AddAnnotationTypes(XmlDocument xd)
 | |
|     {
 | |
|       XmlNodeList nl = xd.SelectNodes("folder/annotationtypes/annotationtype");
 | |
|       foreach (XmlNode nd in nl)
 | |
|       {
 | |
|         AnnotationTypeInfo ati = AnnotationTypeInfo.GetByName(nd.Attributes.GetNamedItem("name").InnerText);
 | |
|         if (ati == null)
 | |
|           AnnotationType.MakeAnnotationType(nd.Attributes.GetNamedItem("name").InnerText, nd.Attributes.GetNamedItem("config").InnerText, DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText), nd.Attributes.GetNamedItem("userid").InnerText);
 | |
|       }
 | |
|     }
 | |
| 		private DocVersionInfo AddDocVersion(Folder f, XmlDocument xd)
 | |
| 		{
 | |
|       lblImportStatus.Text = "Creating DocVersion...";
 | |
|       Application.DoEvents();
 | |
|       XmlElement xe = (XmlElement)xd.SelectSingleNode("folder/docversion");
 | |
| 			int versiontype = int.Parse(xe.Attributes.GetNamedItem("versiontype").InnerText);
 | |
| 			string name = xe.Attributes.GetNamedItem("name").InnerText;
 | |
| 			string config = xe.Attributes.GetNamedItem("config").InnerText;
 | |
| 			string userid = xe.Attributes.GetNamedItem("userid").InnerText;
 | |
| 			DateTime dts = DateTime.Parse(xe.Attributes.GetNamedItem("dts").InnerText);
 | |
| 			string formatid = xe.Attributes.GetNamedItem("formatid").InnerText;
 | |
|       Format format = formatid == string.Empty ? null : OldToNewFormat(int.Parse(formatid));
 | |
| 			DocVersion dv = DocVersion.MakeDocVersion(f, versiontype, name, null, null, format, config, dts, userid);
 | |
| 			XmlNode xassoc = xe.SelectSingleNode("association");
 | |
|       if (xassoc != null)
 | |
|       {
 | |
|         XmlNode xrofst = xassoc.SelectSingleNode("rofst");
 | |
|         XmlNode xrodb = xrofst.SelectSingleNode("rodb");
 | |
|         MyRODb = AddRODb(xrodb);
 | |
|         ROFst rofst = AddROFst(xrofst);
 | |
|         DocVersionAssociation dva = dv.DocVersionAssociations.Add(rofst);
 | |
|         dv.Save();
 | |
|       }
 | |
| 			return DocVersionInfo.Get(dv.VersionID);
 | |
| 		}
 | |
| 		private Dictionary<string, string> GetROFstData(XmlReader xr)
 | |
| 		{
 | |
| 			Dictionary<string, string> rv = new Dictionary<string, string>();
 | |
| 			rv.Add("rolookup", xr.GetAttribute("rolookup"));
 | |
| 			rv.Add("config", xr.GetAttribute("config"));
 | |
| 			rv.Add("userid", xr.GetAttribute("userid"));
 | |
| 			rv.Add("dts", xr.GetAttribute("dts"));
 | |
| 			return rv;
 | |
| 		}
 | |
| 		private ROFst AddROFst(Dictionary<string,string> dic)
 | |
| 		{
 | |
| 			byte[] rolookup = Convert.FromBase64String(dic["rolookup"]);
 | |
| 			string config = dic["config"];
 | |
| 			string userid = dic["userid"];
 | |
| 			DateTime dts = DateTime.Parse(dic["dts"]);
 | |
| 			ROFst rv = null;
 | |
| 			rv = ROFst.GetByRODbID_DTS(MyRODb.RODbID, dts);	//MyRODb.DTS);
 | |
| 			if (rv == null)
 | |
| 				rv = ROFst.MakeROFst(MyRODb, rolookup, config, dts, userid);
 | |
| 			return rv;
 | |
| 		}
 | |
| 		private ROFst AddROFst(XmlNode xrofst)
 | |
| 		{
 | |
|       lblImportStatus.Text = "Creating ROFst...";
 | |
|       Application.DoEvents();
 | |
|       byte[] rolookup = Convert.FromBase64String(xrofst.Attributes.GetNamedItem("rolookup").InnerText);
 | |
| 			string config = xrofst.Attributes.GetNamedItem("config").InnerText;
 | |
| 			string userid = xrofst.Attributes.GetNamedItem("userid").InnerText;
 | |
| 			DateTime dts = DateTime.Parse(xrofst.Attributes.GetNamedItem("dts").InnerText);
 | |
| 			ROFst rv = null;
 | |
| 			rv = ROFst.GetByRODbID_DTS(MyRODb.RODbID, dts);	//MyRODb.DTS);
 | |
| 			if (rv == null)
 | |
| 				rv = ROFst.MakeROFst(MyRODb, rolookup, config, dts, userid);
 | |
| 			return rv;
 | |
| 		}
 | |
| 		private RODb AddRODb(XmlReader xr)
 | |
| 		{
 | |
|       oldRODbID = int.Parse(xr.GetAttribute("rodbid"));
 | |
|       string roname = xr.GetAttribute("roname");
 | |
| 			string folderpath = xr.GetAttribute("folderpath");
 | |
| 			string dbconnectionstring = xr.GetAttribute("dbconnectionstring");
 | |
| 			string config = xr.GetAttribute("config");
 | |
| 			string userid = xr.GetAttribute("userid");
 | |
| 			DateTime dts = DateTime.Parse(xr.GetAttribute("dts"));
 | |
| 			RODb rv = null;
 | |
| 			rv = RODb.GetByFolderPath(folderpath);
 | |
| 			if (rv == null)
 | |
| 				rv = RODb.MakeRODb(roname, folderpath, dbconnectionstring, config, dts, userid);
 | |
|       newRODbID = rv.RODbID;
 | |
|       return rv;
 | |
| 		}
 | |
| 		private RODb AddRODb(XmlNode xrodb)
 | |
| 		{
 | |
|       lblImportStatus.Text = "Creating RODb...";
 | |
|       Application.DoEvents();
 | |
|       oldRODbID = int.Parse(xrodb.Attributes.GetNamedItem("rodbid").InnerText);
 | |
|       string roname = xrodb.Attributes.GetNamedItem("roname").InnerText;
 | |
| 			string folderpath = xrodb.Attributes.GetNamedItem("folderpath").InnerText;
 | |
| 			string dbconnectionstring = xrodb.Attributes.GetNamedItem("dbconnectionstring").InnerText;
 | |
| 			string config = xrodb.Attributes.GetNamedItem("config").InnerText;
 | |
| 			string userid = xrodb.Attributes.GetNamedItem("userid").InnerText;
 | |
| 			DateTime dts = DateTime.Parse(xrodb.Attributes.GetNamedItem("dts").InnerText);
 | |
| 			RODb rv = null;
 | |
| 			rv = RODb.GetByFolderPath(folderpath);
 | |
| 			if (rv == null)
 | |
| 				rv = RODb.MakeRODb(roname, folderpath, dbconnectionstring, config, dts, userid);
 | |
|       newRODbID = rv.RODbID;
 | |
| 			return rv;
 | |
| 		}
 | |
| 		private int GetProcedureData(XmlReader xr)
 | |
| 		{
 | |
| 			return int.Parse(xr.GetAttribute("itemid"));
 | |
| 		}
 | |
| 		private ItemInfo AddProcedure(XmlReader xr, DocVersion dv, ItemInfo procInfo, int oldid)
 | |
| 		{
 | |
| 			DocVersionInfo dvInfo = DocVersionInfo.Get(dv.VersionID);
 | |
| 			string number = xr.GetAttribute("number");
 | |
| 			string text = xr.GetAttribute("text");
 | |
| 			int proctype = int.Parse(xr.GetAttribute("type"));
 | |
| 			string formatid = xr.GetAttribute("formatid");
 | |
| 			string config = xr.GetAttribute("config");
 | |
| 			string userid = xr.GetAttribute("userid");
 | |
| 			DateTime dts = DateTime.Parse(xr.GetAttribute("dts"));
 | |
| 			Procedure p = Procedure.MakeProcedure(dvInfo, procInfo, number, text, proctype);
 | |
| 			p.DTS = dts;
 | |
| 			p.UserID = userid;
 | |
| 			if (formatid != string.Empty)
 | |
|         p.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid));
 | |
| 			p.MyContent.Config = config;
 | |
| 			p.MyContent.DTS = dts;
 | |
| 			p.MyContent.UserID = userid;
 | |
| 			p.Save();
 | |
| 			Old2NewItem.Add(oldid, p.ItemID);
 | |
| 			Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), p.MyContent.ContentID);
 | |
| 			procInfo = ProcedureInfo.Get(p.ItemID);
 | |
| 			return procInfo;
 | |
| 		}
 | |
| 		private ProcedureInfo AddProcedure(XmlNode xn, DocVersionInfo dvInfo, ProcedureInfo procInfo)
 | |
| 		{
 | |
| 			pbImportProcedure.PerformStep();
 | |
| 			lblImportProcedure.Text = string.Format("{0} of {1} Procedures", pbImportProcedure.Value.ToString(), pbImportProcedure.Maximum.ToString());
 | |
|       TimeSpan elapsed = DateTime.Now.Subtract(MyStart);
 | |
|       lblImportTime.Text = "Elapsed Time: " + elapsed.ToString();
 | |
|       Application.DoEvents();
 | |
| 			XmlNode xc = xn.SelectSingleNode("content");
 | |
| 			string number = xc.Attributes.GetNamedItem("number").InnerText;
 | |
| 			string text = xc.Attributes.GetNamedItem("text").InnerText;
 | |
| 			int proctype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText);
 | |
| 			string formatid = xc.Attributes.GetNamedItem("formatid").InnerText;
 | |
| 			string config = xc.Attributes.GetNamedItem("config").InnerText;
 | |
| 			string userid = xc.Attributes.GetNamedItem("userid").InnerText;
 | |
| 			DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText);
 | |
| 			Procedure p = Procedure.MakeProcedure(dvInfo, procInfo, number, text, proctype);
 | |
| 			p.DTS = dts;
 | |
| 			p.UserID = userid;
 | |
| 			if (formatid != string.Empty)
 | |
|         p.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid));
 | |
| 			p.MyContent.Config = config;
 | |
| 			p.MyContent.DTS = dts;
 | |
| 			p.MyContent.UserID = userid;
 | |
| 			p.Save();
 | |
| 			Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), p.ItemID);
 | |
| 			Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), p.MyContent.ContentID);
 | |
| 			if (xn.SelectNodes("annotation").Count > 0)
 | |
| 				AddAnnotations(p.ItemID, xn);
 | |
| 			if (xc.SelectNodes("rousage").Count > 0)
 | |
| 				AddROUsages(p.MyContent, xc);
 | |
|       if (xc.SelectNodes("transition").Count > 0)
 | |
|         AddTransitions(p.MyContent, xc); 
 | |
| 			procInfo = ProcedureInfo.Get(p.ItemID);
 | |
| 			if (xc.HasChildNodes)
 | |
| 				AddParts(xc, procInfo);
 | |
| 			return procInfo;
 | |
| 		}
 | |
| 		private void AddROUsage(XmlReader xr)
 | |
| 		{
 | |
| 			int contentid = int.Parse(xr.GetAttribute("contentid"));
 | |
| 			contentid = Old2NewContent[contentid];
 | |
| 			Content content = Content.Get(contentid);
 | |
| 			string rousageid = xr.GetAttribute("rousageid");
 | |
| 			string roid = xr.GetAttribute("roid");
 | |
| 			string config = xr.GetAttribute("config");
 | |
| 			string userid = xr.GetAttribute("userid");
 | |
| 			DateTime dts = DateTime.Parse(xr.GetAttribute("dts"));
 | |
| 			RoUsage rou = RoUsage.MakeRoUsage(content, roid, config, dts, userid, MyRODb);
 | |
| 			rou.Save();
 | |
|       string lookFor = string.Format("#Link:ReferencedObject:{0} {1} {2}[END>", rousageid, roid, oldRODbID.ToString());
 | |
|       string replaceWith = string.Format("#Link:ReferencedObject:{0} {1} {2}[END>", rou.ROUsageID.ToString(), roid, newRODbID.ToString());
 | |
| 			if (lookFor != replaceWith)
 | |
| 			{
 | |
| 				content.Text = content.Text.Replace(lookFor, replaceWith);
 | |
| 				content.Save();
 | |
| 			}
 | |
| 		}
 | |
| 		private void AddROUsages(Content content, XmlNode xn)
 | |
| 		{
 | |
| 			foreach (XmlNode nd in xn.SelectNodes("rousage"))
 | |
| 			{
 | |
| 				string rousageid = nd.Attributes.GetNamedItem("rousageid").InnerText;
 | |
| 				string roid = nd.Attributes.GetNamedItem("roid").InnerText;
 | |
| 				string config = nd.Attributes.GetNamedItem("config").InnerText;
 | |
| 				string userid = nd.Attributes.GetNamedItem("userid").InnerText;
 | |
| 				DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText);
 | |
| 				RoUsage rou = RoUsage.MakeRoUsage(content, roid, config, dts, userid, MyRODb);
 | |
| 				rou.Save();
 | |
|       string lookFor = string.Format("#Link:ReferencedObject:{0} {1} {2}[END>", rousageid, roid, oldRODbID.ToString());
 | |
|       string replaceWith = string.Format("#Link:ReferencedObject:{0} {1} {2}[END>", rou.ROUsageID.ToString(), roid, newRODbID.ToString());
 | |
| 				if (lookFor != replaceWith)
 | |
| 				{
 | |
| 					content.Text = content.Text.Replace(lookFor, replaceWith);
 | |
| 					content.Save();
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		private void AddAnnotation(XmlReader xr)
 | |
| 		{
 | |
| 			int itemid = int.Parse(xr.GetAttribute("itemid"));
 | |
| 			itemid = Old2NewItem[itemid];
 | |
| 			Item itm = Item.Get(itemid);
 | |
| 			int typeid = int.Parse(xr.GetAttribute("typeid"));
 | |
| 			string rtftext = xr.GetAttribute("rtftext");
 | |
| 			string searchtext = xr.GetAttribute("searchtext");
 | |
| 			string config = xr.GetAttribute("config");
 | |
| 			string userid = xr.GetAttribute("userid");
 | |
| 			DateTime dts = DateTime.Parse(xr.GetAttribute("dts"));
 | |
| 			Annotation ann = Annotation.MakeAnnotation(itm, AnnotationType.Get(typeid), rtftext, searchtext, config, dts, userid);
 | |
| 		}
 | |
| 		private void AddAnnotations(int itemID, XmlNode xn)
 | |
| 		{
 | |
| 			Item itm = Item.Get(itemID);
 | |
| 			foreach (XmlNode nd in xn.SelectNodes("annotation"))
 | |
| 			{
 | |
| 				int typeid = int.Parse(nd.Attributes.GetNamedItem("typeid").InnerText);
 | |
| 				string rtftext = nd.Attributes.GetNamedItem("rtftext").InnerText;
 | |
| 				string searchtext = nd.Attributes.GetNamedItem("searchtext").InnerText;
 | |
| 				string config = nd.Attributes.GetNamedItem("config").InnerText;
 | |
| 				string userid = nd.Attributes.GetNamedItem("userid").InnerText;
 | |
| 				DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText);
 | |
|         AnnotationType annType = AnnotationType.GetByName(nd.Attributes.GetNamedItem("typename").InnerText);
 | |
| 				Annotation ann = Annotation.MakeAnnotation(itm, annType, rtftext, searchtext, config, dts, userid);
 | |
| 				ann.Save();
 | |
| 			}
 | |
| 		}
 | |
| 		private void AddParts(XmlNode myNode, ItemInfo parentInfo)
 | |
| 		{
 | |
| 			foreach (XmlNode xn in myNode.ChildNodes)
 | |
| 			{
 | |
| 				switch (xn.Name)
 | |
| 				{
 | |
| 					case "sections":
 | |
| 						AddSections(xn, parentInfo);
 | |
| 						break;
 | |
| 					case "cautions":
 | |
| 						AddCautions(xn, parentInfo);
 | |
| 						break;
 | |
| 					case "notes":
 | |
| 						AddNotes(xn, parentInfo);
 | |
| 						break;
 | |
| 					case "rnos":
 | |
| 						AddRNOs(xn, parentInfo);
 | |
| 						break;
 | |
| 					case "steps":
 | |
| 						AddSteps(xn, parentInfo);
 | |
| 						break;
 | |
| 					case "tables":
 | |
| 						AddTables(xn, parentInfo);
 | |
| 						break;
 | |
| 					default:
 | |
| 						break;
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		private void AddTables(XmlNode xn, ItemInfo parentInfo)
 | |
| 		{
 | |
| 			if (parentInfo.IsProcedure)
 | |
| 			{
 | |
| 				pbImportSection.Value = 0;
 | |
| 				pbImportStep.Value = 0;
 | |
| 				pbImportSection.Maximum = xn.ChildNodes.Count;
 | |
| 			}
 | |
| 			if (parentInfo.IsSection)
 | |
| 			{
 | |
| 				pbImportStep.Value = 0;
 | |
| 				pbImportStep.Maximum = xn.ChildNodes.Count;
 | |
| 			}
 | |
| 			ItemInfo prevInfo = null;
 | |
| 			foreach (XmlNode nd in xn.ChildNodes)
 | |
| 				prevInfo = AddTable(nd, parentInfo, prevInfo);
 | |
| 		}
 | |
| 		private ItemInfo AddTable(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid)
 | |
| 		{
 | |
| 			string number = xr.GetAttribute("number");
 | |
| 			string text = xr.GetAttribute("text");
 | |
| 			int steptype = int.Parse(xr.GetAttribute("type"));
 | |
| 			string formatid = xr.GetAttribute("formatid");
 | |
| 			string config = xr.GetAttribute("config");
 | |
| 			string userid = xr.GetAttribute("userid");
 | |
| 			DateTime dts = DateTime.Parse(xr.GetAttribute("dts"));
 | |
| 			Step step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Table);
 | |
| 			step.DTS = dts;
 | |
| 			step.UserID = userid;
 | |
| 			if (formatid != string.Empty)
 | |
|         step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid));
 | |
| 			step.MyContent.Config = config;
 | |
| 			step.MyContent.DTS = dts;
 | |
| 			step.MyContent.UserID = userid;
 | |
| 			step.Save();
 | |
| 			Old2NewItem.Add(oldid, step.ItemID);
 | |
| 			Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), step.MyContent.ContentID);
 | |
| 			prevInfo = StepInfo.Get(step.ItemID);
 | |
| 			return prevInfo;
 | |
| 		}
 | |
| 		private ItemInfo AddTable(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo)
 | |
| 		{
 | |
| 			pbImportStep.PerformStep();
 | |
| 			lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString());
 | |
| 			Application.DoEvents();
 | |
| 			XmlNode xc = xn.SelectSingleNode("content");
 | |
| 			Step step;
 | |
| 			string number = xc.Attributes.GetNamedItem("number").InnerText;
 | |
| 			string text = xc.Attributes.GetNamedItem("text").InnerText;
 | |
| 			int steptype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText);
 | |
| 			string formatid = xc.Attributes.GetNamedItem("formatid").InnerText;
 | |
| 			string config = xc.Attributes.GetNamedItem("config").InnerText;
 | |
| 			string userid = xc.Attributes.GetNamedItem("userid").InnerText;
 | |
| 			DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText);
 | |
| 			step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Table);
 | |
| 			step.DTS = dts;
 | |
| 			step.UserID = userid;
 | |
| 			if (formatid != string.Empty)
 | |
|         step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid));
 | |
| 			step.MyContent.Config = config;
 | |
| 			step.MyContent.DTS = dts;
 | |
| 			step.MyContent.UserID = userid;
 | |
| 			step.Save();
 | |
| 			Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID);
 | |
| 			Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), step.MyContent.ContentID);
 | |
| 			if (xc.SelectNodes("grid").Count > 0)
 | |
| 				AddGrid(step.MyContent, xc);
 | |
| 			if (xn.SelectNodes("annotation").Count > 0)
 | |
| 				AddAnnotations(step.ItemID, xn);
 | |
| 			if (xc.SelectNodes("rousage").Count > 0)
 | |
| 				AddROUsages(step.MyContent, xc);
 | |
|       if (xc.SelectNodes("transition").Count > 0)
 | |
|         AddTransitions(step.MyContent, xc);
 | |
|       prevInfo = StepInfo.Get(step.ItemID);
 | |
| 			if (xc.HasChildNodes)
 | |
| 				AddParts(xc, prevInfo);
 | |
| 			return prevInfo;
 | |
| 		}
 | |
| 		private void AddSteps(XmlNode xn, ItemInfo parentInfo)
 | |
| 		{
 | |
| 			if (parentInfo.IsProcedure)
 | |
| 			{
 | |
| 				pbImportSection.Value = 0;
 | |
| 				pbImportStep.Value = 0;
 | |
| 				pbImportSection.Maximum = xn.ChildNodes.Count;
 | |
| 			}
 | |
| 			if (parentInfo.IsSection)
 | |
| 			{
 | |
| 				pbImportStep.Value = 0;
 | |
| 				pbImportStep.Maximum = xn.ChildNodes.Count;
 | |
| 			}
 | |
| 			ItemInfo prevInfo = null;
 | |
| 			foreach (XmlNode nd in xn.ChildNodes)
 | |
| 				prevInfo = AddStep(nd, parentInfo, prevInfo);
 | |
| 		}
 | |
| 		private ItemInfo AddStep(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid)
 | |
| 		{
 | |
| 			string number = xr.GetAttribute("number");
 | |
| 			string text = xr.GetAttribute("text");
 | |
| 			int steptype = int.Parse(xr.GetAttribute("type"));
 | |
| 			string formatid = xr.GetAttribute("formatid");
 | |
| 			string config = xr.GetAttribute("config");
 | |
| 			string userid = xr.GetAttribute("userid");
 | |
| 			DateTime dts = DateTime.Parse(xr.GetAttribute("dts"));
 | |
| 			Step step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Step);
 | |
| 			step.DTS = dts;
 | |
| 			step.UserID = userid;
 | |
| 			if (formatid != string.Empty)
 | |
|         step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid));
 | |
| 			step.MyContent.Config = config;
 | |
| 			step.MyContent.DTS = dts;
 | |
| 			step.MyContent.UserID = userid;
 | |
| 			step.Save();
 | |
| 			Old2NewItem.Add(oldid, step.ItemID);
 | |
| 			Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), step.MyContent.ContentID);
 | |
| 			prevInfo = StepInfo.Get(step.ItemID);
 | |
| 			return prevInfo;
 | |
| 		}
 | |
| 		private ItemInfo AddStep(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo)
 | |
| 		{
 | |
| 			pbImportStep.PerformStep();
 | |
| 			lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString());
 | |
| 			Application.DoEvents();
 | |
| 			XmlNode xc = xn.SelectSingleNode("content");
 | |
| 			Step step;
 | |
| 			string number = xc.Attributes.GetNamedItem("number").InnerText;
 | |
| 			string text = xc.Attributes.GetNamedItem("text").InnerText;
 | |
| 			int steptype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText);
 | |
| 			string formatid = xc.Attributes.GetNamedItem("formatid").InnerText;
 | |
| 			string config = xc.Attributes.GetNamedItem("config").InnerText;
 | |
| 			string userid = xc.Attributes.GetNamedItem("userid").InnerText;
 | |
| 			DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText);
 | |
| 			step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Step);
 | |
| 			step.DTS = dts;
 | |
| 			step.UserID = userid;
 | |
| 			if (formatid != string.Empty)
 | |
|         step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid));
 | |
| 			step.MyContent.Config = config;
 | |
| 			step.MyContent.DTS = dts;
 | |
| 			step.MyContent.UserID = userid;
 | |
| 			step.Save();
 | |
| 			Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID);
 | |
| 			Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), step.MyContent.ContentID);
 | |
| 			if (xn.SelectNodes("annotation").Count > 0)
 | |
| 				AddAnnotations(step.ItemID, xn);
 | |
| 			if (xc.SelectNodes("rousage").Count > 0)
 | |
| 				AddROUsages(step.MyContent, xc);
 | |
|       if (xc.SelectNodes("transition").Count > 0)
 | |
|         AddTransitions(step.MyContent, xc);
 | |
|       prevInfo = StepInfo.Get(step.ItemID);
 | |
| 			if (xc.HasChildNodes)
 | |
| 				AddParts(xc, prevInfo);
 | |
| 			return prevInfo;
 | |
| 		}
 | |
| 		private void AddRNOs(XmlNode xn, ItemInfo parentInfo)
 | |
| 		{
 | |
| 			if (parentInfo.IsProcedure)
 | |
| 			{
 | |
| 				pbImportSection.Value = 0;
 | |
| 				pbImportStep.Value = 0;
 | |
| 				pbImportSection.Maximum = xn.ChildNodes.Count;
 | |
| 			}
 | |
| 			if (parentInfo.IsSection)
 | |
| 			{
 | |
| 				pbImportStep.Value = 0;
 | |
| 				pbImportStep.Maximum = xn.ChildNodes.Count;
 | |
| 			}
 | |
| 			ItemInfo prevInfo = null;
 | |
| 			foreach (XmlNode nd in xn.ChildNodes)
 | |
| 				prevInfo = AddRNO(nd, parentInfo, prevInfo);
 | |
| 		}
 | |
| 		private ItemInfo AddRNO(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid)
 | |
| 		{
 | |
| 			string number = xr.GetAttribute("number");
 | |
| 			string text = xr.GetAttribute("text");
 | |
| 			int steptype = int.Parse(xr.GetAttribute("type"));
 | |
| 			string formatid = xr.GetAttribute("formatid");
 | |
| 			string config = xr.GetAttribute("config");
 | |
| 			string userid = xr.GetAttribute("userid");
 | |
| 			DateTime dts = DateTime.Parse(xr.GetAttribute("dts"));
 | |
| 			Step step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.RNO);
 | |
| 			step.DTS = dts;
 | |
| 			step.UserID = userid;
 | |
| 			if (formatid != string.Empty)
 | |
|         step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid));
 | |
| 			step.MyContent.Config = config;
 | |
| 			step.MyContent.DTS = dts;
 | |
| 			step.MyContent.UserID = userid;
 | |
| 			step.Save();
 | |
| 			Old2NewItem.Add(oldid, step.ItemID);
 | |
| 			Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), step.MyContent.ContentID);
 | |
| 			prevInfo = StepInfo.Get(step.ItemID);
 | |
| 			return prevInfo;
 | |
| 		}
 | |
| 		private ItemInfo AddRNO(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo)
 | |
| 		{
 | |
| 			pbImportStep.PerformStep();
 | |
| 			lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString());
 | |
| 			Application.DoEvents();
 | |
| 			XmlNode xc = xn.SelectSingleNode("content");
 | |
| 			Step step;
 | |
| 			string number = xc.Attributes.GetNamedItem("number").InnerText;
 | |
| 			string text = xc.Attributes.GetNamedItem("text").InnerText;
 | |
| 			int steptype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText);
 | |
| 			string formatid = xc.Attributes.GetNamedItem("formatid").InnerText;
 | |
| 			string config = xc.Attributes.GetNamedItem("config").InnerText;
 | |
| 			string userid = xc.Attributes.GetNamedItem("userid").InnerText;
 | |
| 			DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText);
 | |
| 			step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.RNO);
 | |
| 			step.DTS = dts;
 | |
| 			step.UserID = userid;
 | |
| 			if (formatid != string.Empty)
 | |
|         step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid));
 | |
| 			step.MyContent.Config = config;
 | |
| 			step.MyContent.DTS = dts;
 | |
| 			step.MyContent.UserID = userid;
 | |
| 			step.Save();
 | |
| 			Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID);
 | |
| 			Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), step.MyContent.ContentID);
 | |
| 			if (xn.SelectNodes("annotation").Count > 0)
 | |
| 				AddAnnotations(step.ItemID, xn);
 | |
| 			if (xc.SelectNodes("rousage").Count > 0)
 | |
| 				AddROUsages(step.MyContent, xc);
 | |
|       if (xc.SelectNodes("transition").Count > 0)
 | |
|         AddTransitions(step.MyContent, xc);
 | |
|       prevInfo = StepInfo.Get(step.ItemID);
 | |
| 			if (xc.HasChildNodes)
 | |
| 				AddParts(xc, prevInfo);
 | |
| 			return prevInfo;
 | |
| 		}
 | |
| 		private void AddNotes(XmlNode xn, ItemInfo parentInfo)
 | |
| 		{
 | |
| 			if (parentInfo.IsProcedure)
 | |
| 			{
 | |
| 				pbImportSection.Value = 0;
 | |
| 				pbImportStep.Value = 0;
 | |
| 				pbImportSection.Maximum = xn.ChildNodes.Count;
 | |
| 			}
 | |
| 			if (parentInfo.IsSection)
 | |
| 			{
 | |
| 				pbImportStep.Value = 0;
 | |
| 				pbImportStep.Maximum = xn.ChildNodes.Count;
 | |
| 			}
 | |
| 			ItemInfo prevInfo = null;
 | |
| 			foreach (XmlNode nd in xn.ChildNodes)
 | |
| 				prevInfo = AddNote(nd, parentInfo, prevInfo);
 | |
| 		}
 | |
| 		private ItemInfo AddNote(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid)
 | |
| 		{
 | |
| 			string number = xr.GetAttribute("number");
 | |
| 			string text = xr.GetAttribute("text");
 | |
| 			int steptype = int.Parse(xr.GetAttribute("type"));
 | |
| 			string formatid = xr.GetAttribute("formatid");
 | |
| 			string config = xr.GetAttribute("config");
 | |
| 			string userid = xr.GetAttribute("userid");
 | |
| 			DateTime dts = DateTime.Parse(xr.GetAttribute("dts"));
 | |
| 			Step step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Note);
 | |
| 			step.DTS = dts;
 | |
| 			step.UserID = userid;
 | |
| 			if (formatid != string.Empty)
 | |
|         step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid));
 | |
| 			step.MyContent.Config = config;
 | |
| 			step.MyContent.DTS = dts;
 | |
| 			step.MyContent.UserID = userid;
 | |
| 			step.Save();
 | |
| 			Old2NewItem.Add(oldid, step.ItemID);
 | |
| 			Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), step.MyContent.ContentID);
 | |
| 			prevInfo = StepInfo.Get(step.ItemID);
 | |
| 			return prevInfo;
 | |
| 		}
 | |
| 		private ItemInfo AddNote(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo)
 | |
| 		{
 | |
| 			pbImportStep.PerformStep();
 | |
| 			lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString());
 | |
| 			Application.DoEvents();
 | |
| 			XmlNode xc = xn.SelectSingleNode("content");
 | |
| 			Step step;
 | |
| 			string number = xc.Attributes.GetNamedItem("number").InnerText;
 | |
| 			string text = xc.Attributes.GetNamedItem("text").InnerText;
 | |
| 			int steptype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText);
 | |
| 			string formatid = xc.Attributes.GetNamedItem("formatid").InnerText;
 | |
| 			string config = xc.Attributes.GetNamedItem("config").InnerText;
 | |
| 			string userid = xc.Attributes.GetNamedItem("userid").InnerText;
 | |
| 			DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText);
 | |
| 			step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Note);
 | |
| 			step.DTS = dts;
 | |
| 			step.UserID = userid;
 | |
| 			if (formatid != string.Empty)
 | |
|         step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid));
 | |
| 			step.MyContent.Config = config;
 | |
| 			step.MyContent.DTS = dts;
 | |
| 			step.MyContent.UserID = userid;
 | |
| 			step.Save();
 | |
| 			Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID);
 | |
| 			Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), step.MyContent.ContentID);
 | |
| 			if (xn.SelectNodes("annotation").Count > 0)
 | |
| 				AddAnnotations(step.ItemID, xn);
 | |
| 			if (xc.SelectNodes("rousage").Count > 0)
 | |
| 				AddROUsages(step.MyContent, xc);
 | |
|       if (xc.SelectNodes("transition").Count > 0)
 | |
|         AddTransitions(step.MyContent, xc);
 | |
|       prevInfo = StepInfo.Get(step.ItemID);
 | |
| 			if (xc.HasChildNodes)
 | |
| 				AddParts(xc, prevInfo);
 | |
| 			return prevInfo;
 | |
| 		}
 | |
| 		private void AddCautions(XmlNode xn, ItemInfo parentInfo)
 | |
| 		{
 | |
| 			if (parentInfo.IsProcedure)
 | |
| 			{
 | |
| 				pbImportSection.Value = 0;
 | |
| 				pbImportStep.Value = 0;
 | |
| 				pbImportSection.Maximum = xn.ChildNodes.Count;
 | |
| 			}
 | |
| 			if (parentInfo.IsSection)
 | |
| 			{
 | |
| 				pbImportStep.Value = 0;
 | |
| 				pbImportStep.Maximum = xn.ChildNodes.Count;
 | |
| 			}
 | |
| 			ItemInfo prevInfo = null;
 | |
| 			foreach (XmlNode nd in xn.ChildNodes)
 | |
| 				prevInfo = AddCaution(nd, parentInfo, prevInfo);
 | |
| 		}
 | |
| 		private ItemInfo AddCaution(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid)
 | |
| 		{
 | |
| 			string number = xr.GetAttribute("number");
 | |
| 			string text = xr.GetAttribute("text");
 | |
| 			int steptype = int.Parse(xr.GetAttribute("type"));
 | |
| 			string formatid = xr.GetAttribute("formatid");
 | |
| 			string config = xr.GetAttribute("config");
 | |
| 			string userid = xr.GetAttribute("userid");
 | |
| 			DateTime dts = DateTime.Parse(xr.GetAttribute("dts"));
 | |
| 			Step step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Caution);
 | |
| 			step.DTS = dts;
 | |
| 			step.UserID = userid;
 | |
| 			if (formatid != string.Empty)
 | |
|         step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid));
 | |
| 			step.MyContent.Config = config;
 | |
| 			step.MyContent.DTS = dts;
 | |
| 			step.MyContent.UserID = userid;
 | |
| 			step.Save();
 | |
| 			Old2NewItem.Add(oldid, step.ItemID);
 | |
| 			Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), step.MyContent.ContentID);
 | |
| 			prevInfo = StepInfo.Get(step.ItemID);
 | |
| 			return prevInfo;
 | |
| 		}
 | |
| 		private ItemInfo AddCaution(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo)
 | |
| 		{
 | |
| 			pbImportStep.PerformStep();
 | |
| 			lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString());
 | |
| 			Application.DoEvents();
 | |
| 			XmlNode xc = xn.SelectSingleNode("content");
 | |
| 			Step step;
 | |
| 			string number = xc.Attributes.GetNamedItem("number").InnerText;
 | |
| 			string text = xc.Attributes.GetNamedItem("text").InnerText;
 | |
| 			int steptype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText);
 | |
| 			string formatid = xc.Attributes.GetNamedItem("formatid").InnerText;
 | |
| 			string config = xc.Attributes.GetNamedItem("config").InnerText;
 | |
| 			string userid = xc.Attributes.GetNamedItem("userid").InnerText;
 | |
| 			DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText);
 | |
| 			step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Caution);
 | |
| 			step.DTS = dts;
 | |
| 			step.UserID = userid;
 | |
| 			if (formatid != string.Empty)
 | |
| 				step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid));
 | |
| 			step.MyContent.Config = config;
 | |
| 			step.MyContent.DTS = dts;
 | |
| 			step.MyContent.UserID = userid;
 | |
| 			step.Save();
 | |
| 			Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID);
 | |
| 			Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), step.MyContent.ContentID);
 | |
| 			if (xn.SelectNodes("annotation").Count > 0)
 | |
| 				AddAnnotations(step.ItemID, xn);
 | |
| 			if (xc.SelectNodes("rousage").Count > 0)
 | |
| 				AddROUsages(step.MyContent, xc);
 | |
|       if (xc.SelectNodes("transition").Count > 0)
 | |
|         AddTransitions(step.MyContent, xc);
 | |
|       prevInfo = StepInfo.Get(step.ItemID);
 | |
| 			if (xc.HasChildNodes)
 | |
| 				AddParts(xc, prevInfo);
 | |
| 			return prevInfo;
 | |
| 		}
 | |
| 		private void AddSections(XmlNode xn, ItemInfo parentInfo)
 | |
| 		{
 | |
| 			if (parentInfo.IsProcedure)
 | |
| 			{
 | |
| 				pbImportSection.Value = 0;
 | |
| 				pbImportStep.Value = 0;
 | |
| 				pbImportSection.Maximum = xn.ChildNodes.Count;
 | |
| 			}
 | |
| 			if (parentInfo.IsSection)
 | |
| 			{
 | |
| 				pbImportStep.Value = 0;
 | |
| 				pbImportStep.Maximum = xn.ChildNodes.Count;
 | |
| 			}
 | |
| 			ItemInfo prevInfo = null;
 | |
| 			foreach (XmlNode nd in xn.ChildNodes)
 | |
| 				prevInfo = AddSection(nd, parentInfo, prevInfo);
 | |
| 		}
 | |
| 		private Dictionary<string, string> GetSectionData(XmlReader xr)
 | |
| 		{
 | |
| 			Dictionary<string, string> rv = new Dictionary<string, string>();
 | |
| 			rv.Add("itemid", xr.GetAttribute("itemid"));
 | |
| 			return rv;
 | |
| 		}
 | |
| 		private ItemInfo AddSection(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid)
 | |
| 		{
 | |
| 			string number = xr.GetAttribute("number");
 | |
| 			string text = xr.GetAttribute("text");
 | |
| 			int sectiontype = int.Parse(xr.GetAttribute("type"));
 | |
| 			string formatid = xr.GetAttribute("formatid");
 | |
| 			string config = xr.GetAttribute("config");
 | |
| 			string userid = xr.GetAttribute("userid");
 | |
| 			DateTime dts = DateTime.Parse(xr.GetAttribute("dts"));
 | |
| 			Section sect = Section.MakeSection(parentInfo, prevInfo, number, text, sectiontype);
 | |
| 			sect.DTS = dts;
 | |
| 			sect.UserID = userid;
 | |
| 			if (formatid != string.Empty)
 | |
|         sect.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid));
 | |
| 			sect.MyContent.Config = config;
 | |
| 			sect.MyContent.DTS = dts;
 | |
| 			sect.MyContent.UserID = userid;
 | |
| 			sect.Save();
 | |
| 			Old2NewItem.Add(oldid, sect.ItemID);
 | |
| 			Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), sect.MyContent.ContentID);
 | |
| 			prevInfo = SectionInfo.Get(sect.ItemID);
 | |
| 			return prevInfo;
 | |
| 		}
 | |
| 		private ItemInfo AddSection(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo)
 | |
| 		{
 | |
| 			pbImportSection.PerformStep();
 | |
| 			lblImportSection.Text = string.Format("{0} of {1} Sections", pbImportSection.Value.ToString(), pbImportSection.Maximum.ToString());
 | |
| 			Application.DoEvents();
 | |
| 			XmlNode xc = xn.SelectSingleNode("content");
 | |
| 			Section sect;
 | |
| 			string number = xc.Attributes.GetNamedItem("number").InnerText;
 | |
| 			string text = xc.Attributes.GetNamedItem("text").InnerText;
 | |
| 			int sectiontype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText);
 | |
| 			string formatid = xc.Attributes.GetNamedItem("formatid").InnerText;
 | |
| 			string config = xc.Attributes.GetNamedItem("config").InnerText;
 | |
| 			string userid = xc.Attributes.GetNamedItem("userid").InnerText;
 | |
| 			DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText);
 | |
| 			sect = Section.MakeSection(parentInfo, prevInfo, number, text, sectiontype);
 | |
| 			sect.DTS = dts;
 | |
| 			sect.UserID = userid;
 | |
| 			if (formatid != string.Empty)
 | |
|         sect.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid));
 | |
| 			sect.MyContent.Config = config;
 | |
| 			sect.MyContent.DTS = dts;
 | |
| 			sect.MyContent.UserID = userid;
 | |
| 			sect.Save();
 | |
| 			Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), sect.ItemID);
 | |
| 			Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), sect.MyContent.ContentID);
 | |
| 			if (xn.SelectNodes("annotation").Count > 0)
 | |
| 				AddAnnotations(sect.ItemID, xn);
 | |
| 			if (xc.SelectNodes("entry").Count > 0)
 | |
| 				AddEntry(sect.MyContent, xc);
 | |
| 			if (xc.SelectNodes("rousage").Count > 0)
 | |
| 				AddROUsages(sect.MyContent, xc);
 | |
|       if (xc.SelectNodes("transition").Count > 0)
 | |
|         AddTransitions(sect.MyContent, xc);
 | |
|       prevInfo = SectionInfo.Get(sect.ItemID);
 | |
| 			if (xc.HasChildNodes)
 | |
| 				AddParts(xc, prevInfo);
 | |
| 			return prevInfo;
 | |
| 		}
 | |
| 		private void AddGrid(XmlReader xr)
 | |
| 		{
 | |
| 			int contentid = int.Parse(xr.GetAttribute("contentid"));
 | |
| 			contentid = Old2NewContent[contentid];
 | |
| 			Content content = Content.Get(contentid);
 | |
| 			string data = xr.GetAttribute("data");
 | |
| 			string config = xr.GetAttribute("config");
 | |
| 			string userid = xr.GetAttribute("userid");
 | |
| 			DateTime dts = DateTime.Parse(xr.GetAttribute("dts"));
 | |
| 			Grid gg = Grid.MakeGrid(content, data, config, dts, userid);
 | |
| 		}
 | |
| 		private void AddGrid(Content content, XmlNode xc)
 | |
| 		{
 | |
| 			XmlNode nd = xc.SelectSingleNode("grid");
 | |
| 			string data = nd.Attributes.GetNamedItem("data").InnerText;
 | |
|       XmlDocument xd = new XmlDocument();
 | |
|       xd.LoadXml(data);
 | |
|       XmlNode gn = xd.SelectSingleNode("C1FlexGrid/Control/IsRoTable");
 | |
|       if (gn.InnerText.ToLower() == "true")
 | |
|       {
 | |
|         gn = xd.SelectSingleNode("C1FlexGrid/Control/RODbId");
 | |
|         gn.InnerText = newRODbID.ToString();
 | |
|         data = xd.OuterXml;
 | |
|       }
 | |
|       else
 | |
|       {
 | |
|         XmlNodeList nl = xd.SelectNodes("C1FlexGrid/Cells/Cell/Data");
 | |
|         bool modified = false;
 | |
|         string lookFor = string.Format(" {0}[END", oldRODbID.ToString());
 | |
|         string replaceWith = string.Format(" {0}[END", newRODbID.ToString());
 | |
|         foreach (XmlNode nn in nl)
 | |
|         {
 | |
|           if (nn.InnerText.Contains("#Link:ReferencedObject:"))
 | |
|           {
 | |
|             nn.InnerText = nn.InnerText.Replace(lookFor, replaceWith);
 | |
|             modified = true;
 | |
|           }
 | |
|         }
 | |
|         if (modified)
 | |
|           data = xd.OuterXml;
 | |
|       }
 | |
|       string config = nd.Attributes.GetNamedItem("config").InnerText;
 | |
| 			string userid = nd.Attributes.GetNamedItem("userid").InnerText;
 | |
| 			DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText);
 | |
| 			Grid gg = Grid.MakeGrid(content, data, config, dts, userid);
 | |
| 			gg.Save();
 | |
| 		}
 | |
| 		private Dictionary<string, string> AddEntry(XmlReader xr)
 | |
| 		{
 | |
| 			Dictionary<string, string> dic = new Dictionary<string, string>();
 | |
| 			dic.Add("contentid", xr.GetAttribute("contentid"));
 | |
| 			dic.Add("dts", xr.GetAttribute("dts"));
 | |
| 			dic.Add("userid", xr.GetAttribute("userid"));
 | |
| 			return dic;
 | |
| 		}
 | |
| 		private void AddEntry(Content content, XmlNode xc)
 | |
| 		{
 | |
| 			XmlNode nd = xc.SelectSingleNode("entry");
 | |
| 			string userid = nd.Attributes.GetNamedItem("userid").InnerText;
 | |
| 			DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText);
 | |
| 			Document dd = AddDocument(nd.SelectSingleNode("document"));
 | |
| 			Entry ee = Entry.MakeEntry(content, dd, dts, userid);
 | |
| 			ee.Save();
 | |
| 		}
 | |
| 		private void AddDocument(XmlReader xr, Dictionary<string, string> dic)
 | |
| 		{
 | |
| 			string libtitle = xr.GetAttribute("libtitle");
 | |
| 			byte[] doccontent = Convert.FromBase64String(xr.GetAttribute("doccontent"));
 | |
| 			string docascii = xr.GetAttribute("docascii");
 | |
| 			string config = xr.GetAttribute("config");
 | |
| 			string userid = xr.GetAttribute("userid");
 | |
| 			DateTime dts = DateTime.Parse(xr.GetAttribute("dts"));
 | |
| 			string fileextension = xr.GetAttribute("fileextension");
 | |
| 			Document dd = Document.MakeDocument(libtitle, doccontent, docascii, config, dts, userid, fileextension);
 | |
| 			int contentid = int.Parse(dic["contentid"]);
 | |
| 			contentid = Old2NewContent[contentid];
 | |
| 			Content content = Content.Get(contentid);
 | |
| 			dts = DateTime.Parse(dic["dts"]);
 | |
| 			userid = dic["userid"];
 | |
| 			Entry ee = Entry.MakeEntry(content, dd, dts, userid);
 | |
| 		}
 | |
| 		private Document AddDocument(XmlNode xn)
 | |
| 		{
 | |
|       Document d;
 | |
|       int docid = int.Parse(xn.Attributes.GetNamedItem("docid").InnerText);
 | |
|       if (Old2NewLibDoc.ContainsKey(docid))
 | |
|       {
 | |
|         docid = Old2NewLibDoc[docid];
 | |
|         d = Document.Get(docid);
 | |
|       }
 | |
|       else
 | |
|       {
 | |
| 			string libtitle = xn.Attributes.GetNamedItem("libtitle").InnerText;
 | |
| 			byte[] doccontent = Convert.FromBase64String(xn.Attributes.GetNamedItem("doccontent").InnerText);
 | |
| 			string docascii = xn.Attributes.GetNamedItem("docascii").InnerText;
 | |
| 			string config = xn.Attributes.GetNamedItem("config").InnerText;
 | |
| 			string userid = xn.Attributes.GetNamedItem("userid").InnerText;
 | |
| 			DateTime dts = DateTime.Parse(xn.Attributes.GetNamedItem("dts").InnerText);
 | |
| 			string fileextension = xn.Attributes.GetNamedItem("fileextension").InnerText;
 | |
|         d = Document.MakeDocument(libtitle, doccontent, docascii, config, dts, userid, fileextension);
 | |
| 			d.Save();
 | |
|         Old2NewLibDoc.Add(docid, d.DocID);
 | |
|       }
 | |
| 			return d;
 | |
| 		}
 | |
| 		#endregion
 | |
| 
 | |
|     private void btnCloseExport_Click(object sender, EventArgs e)
 | |
|     {
 | |
|       this.Close();
 | |
|     }
 | |
| 
 | |
|     private void btnCloseImport_Click(object sender, EventArgs e)
 | |
|     {
 | |
|       this.Close();
 | |
|     }
 | |
|   }
 | |
| } | 
