3989 lines
		
	
	
		
			163 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			3989 lines
		
	
	
		
			163 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;
 | 
						|
using System.Text.RegularExpressions;
 | 
						|
 | 
						|
namespace VEPROMS
 | 
						|
{
 | 
						|
	public partial class dlgExportImport : Form
 | 
						|
{
 | 
						|
		private bool _ConvertROsToTextDuringImport = false;
 | 
						|
		private bool _ConvertROsAndTransitionsToText = false; // set to true when Approval creates an Export file
 | 
						|
		private ItemInfo _ExternalTransitionItem = null;
 | 
						|
		public ItemInfo ExternalTransitionItem
 | 
						|
		{
 | 
						|
			get { return _ExternalTransitionItem; }
 | 
						|
			set { _ExternalTransitionItem = value; }
 | 
						|
		}
 | 
						|
    private Dictionary<int, int> floatFoldout;
 | 
						|
    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 ProcedureInfo _MyNewProcedure;
 | 
						|
    public ProcedureInfo MyNewProcedure
 | 
						|
    {
 | 
						|
      get { return _MyNewProcedure; }
 | 
						|
			set { _MyNewProcedure = value; }
 | 
						|
    }
 | 
						|
    private string PEIPath;
 | 
						|
		private string _MyMode;
 | 
						|
		private FolderInfo MyFolder = null;
 | 
						|
    private DocVersionInfo MyDocVersion = 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, DocVersionInfo docVersionInfo)
 | 
						|
    {
 | 
						|
      _MyMode = mode;
 | 
						|
      MyDocVersion = docVersionInfo;
 | 
						|
      InitializeComponent();
 | 
						|
      this.Text = mode + " Dialog for " + docVersionInfo.Name + " of " + docVersionInfo.MyFolder.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 you try to import a procedure into an empty PROMS folder, the code was deleting the File System Folder including the import file.  This happened during D.C. Cook training (12/3/2015).
 | 
						|
				//if (MyFolder != null && 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)
 | 
						|
      {
 | 
						|
        //Database.SelectedDatabase
 | 
						|
        //sfd.FileName = string.Format("{0}.expx", MyFolder.Name);
 | 
						|
        sfd.FileName = string.Format("{0}-{1}.expx",Database.ActiveDatabase, 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}.pxml", PEIPath, MyProcedure.DisplayNumber.Replace("/", "_").Replace("\\","_"));
 | 
						|
      }
 | 
						|
		}
 | 
						|
		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";
 | 
						|
        pbExportProcedure.Maximum = 1;
 | 
						|
        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");
 | 
						|
    }
 | 
						|
 | 
						|
		// appears to not be used -jsj 4-29-2016
 | 
						|
		//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)
 | 
						|
		{
 | 
						|
			bool isImported = false;
 | 
						|
			bool canceledPressed = false;
 | 
						|
			btnImport.Enabled = false;
 | 
						|
			this.Cursor = Cursors.WaitCursor;
 | 
						|
			MyStart = DateTime.Now;
 | 
						|
			btnDoImport.Enabled = false;
 | 
						|
			lblImportStatus.Text = "Performing Import";
 | 
						|
			//LoadImportDataReader();
 | 
						|
			if (MyFolder != null)  // import a folder - a .expx file
 | 
						|
			{
 | 
						|
				TurnChangeManagerOff.Execute();
 | 
						|
				LoadImportDataDocument();
 | 
						|
				MyDocVersion = null;
 | 
						|
				isImported = true;
 | 
						|
				TurnChangeManagerOn.Execute();
 | 
						|
			}
 | 
						|
			if (MyDocVersion != null) // import a procedure - a .pxml file
 | 
						|
			{
 | 
						|
				// compare the ROPath of MyDocVerion
 | 
						|
				// if no path set, display Pick RO Folder dialog
 | 
						|
				// if MyDocVersion ROPath is different than the import file ROPath, then ask user:
 | 
						|
				//  - use MyDocVersion ROPath (warn resulting RO values may be be correct)
 | 
						|
				//    * set oldRODbID to id in import file
 | 
						|
				//    * set newRODbid to MyDocVersion rodbid
 | 
						|
				//  - or convert ROs to text
 | 
						|
				TurnChangeManagerOff.Execute();
 | 
						|
				XmlDocument xd = new XmlDocument();
 | 
						|
				xd.Load(txtImport.Text);
 | 
						|
				pbImportProcedure.Maximum = 1;
 | 
						|
				string rofolderpath = xd.DocumentElement.Attributes.GetNamedItem("rofolderpath").InnerText;
 | 
						|
				int rodbid = int.Parse(xd.DocumentElement.Attributes.GetNamedItem("rodbid").InnerText);
 | 
						|
				int rofstid = int.Parse(xd.DocumentElement.Attributes.GetNamedItem("rofstid").InnerText);
 | 
						|
				if (MyDocVersion.DocVersionAssociationCount > 0)
 | 
						|
				{
 | 
						|
					// use current ROPath
 | 
						|
							MyRODb = RODb.GetJustRoDb(MyDocVersion.DocVersionAssociations[0].MyROFst.MyRODb.RODbID);
 | 
						|
					// if the current RO Path and the import file RO Path are not the same
 | 
						|
					//  then ask if we should import using the current workingdraft RO Path, convert the ROs to text, or cancel the import
 | 
						|
							if (MyRODb.FolderPath != rofolderpath)
 | 
						|
							{
 | 
						|
								dlgImpHowToHandleROs dlg = new dlgImpHowToHandleROs();
 | 
						|
								dlg.ImportedROFolder = rofolderpath;
 | 
						|
								dlg.WorkingDraftROFolder = MyRODb.FolderPath;
 | 
						|
								dlg.ShowDialog(this);
 | 
						|
								if (dlg.CancelImport)
 | 
						|
								{
 | 
						|
									this.Cursor = Cursors.Default;
 | 
						|
									this.btnImport.Enabled = true; // allow user to select a different export file to import
 | 
						|
									this.btnDoImport.Enabled = true; // allow user to change mind and perform the import
 | 
						|
									return;
 | 
						|
								}
 | 
						|
								_ConvertROsToTextDuringImport = dlg.ConvertROsToText;
 | 
						|
							}
 | 
						|
					// this saves the old RO database ID and the current RO database ID so that we can change the RODBIDs in the RO links
 | 
						|
							newRODbID = MyRODb.RODbID;
 | 
						|
							oldRODbID = rodbid;
 | 
						|
				}
 | 
						|
				else 
 | 
						|
				{
 | 
						|
					#region NeedToSelectROPath
 | 
						|
					// MyDocVersion does not have an RO database (ro folder path) assigned to it so we need to select an RO Path
 | 
						|
					List<string> localROPaths = new List<string>();
 | 
						|
					RODbInfoList rolist = RODbInfoList.Get();
 | 
						|
					foreach (RODbInfo dbi in rolist)
 | 
						|
					{
 | 
						|
						if (dbi.FolderPath == rofolderpath && dbi.RODbID == rodbid)
 | 
						|
						{
 | 
						|
							MyRODb = RODb.GetJustRoDb(rodbid);
 | 
						|
							oldRODbID = newRODbID = rodbid;
 | 
						|
							break;
 | 
						|
						}
 | 
						|
						// B2016-175 have the correct (matching) RO Path but the rodbid is different (procedure came from a different SQL database)
 | 
						|
						// We can use the RO Path but we need to change the rodbid in the RO links of the procedure we are importing
 | 
						|
						else if (dbi.FolderPath == rofolderpath && dbi.RODbID != rodbid)
 | 
						|
						{
 | 
						|
							MyRODb = RODb.GetByFolderPath(rofolderpath);
 | 
						|
							newRODbID = MyRODb.RODbID;
 | 
						|
							oldRODbID = rodbid;
 | 
						|
							break;
 | 
						|
						}
 | 
						|
						else
 | 
						|
						{
 | 
						|
							DirectoryInfo di = new DirectoryInfo(dbi.FolderPath);
 | 
						|
							if (di.Exists)
 | 
						|
								localROPaths.Add(dbi.FolderPath);
 | 
						|
						}
 | 
						|
					}
 | 
						|
					if (MyRODb == null)
 | 
						|
					{
 | 
						|
						if (localROPaths.Count == 0)
 | 
						|
						{
 | 
						|
							MessageBox.Show("There has been no RO folder defined for this database.\r\n\r\nIn order to import a procedure, you need to assign a RO folder path.\r\n\r\nImport process will terminate.");
 | 
						|
							this.Cursor = Cursors.Default;
 | 
						|
							return;
 | 
						|
						}
 | 
						|
						else
 | 
						|
						{
 | 
						|
							this.Cursor = Cursors.Default;
 | 
						|
							dlgPickROFolder dlg = new dlgPickROFolder();
 | 
						|
							dlg.ImportedROFolder = rofolderpath;
 | 
						|
							dlg.LocalROFolders = localROPaths;
 | 
						|
							dlg.ShowDialog(this);
 | 
						|
							if ((dlg.SelectedROFolder ?? string.Empty) != string.Empty) // B2015-216 If the return value is null treat it like an empty string
 | 
						|
							{
 | 
						|
								MyRODb = RODb.GetByFolderPath(dlg.SelectedROFolder);
 | 
						|
								RODbInfo myRODBInfo = RODbInfo.Get(MyRODb.RODbID);
 | 
						|
								oldRODbID = newRODbID = MyRODb.RODbID;
 | 
						|
								ROFstInfo fstInfo = null;
 | 
						|
								foreach (ROFstInfo tmp in myRODBInfo.RODbROFsts)
 | 
						|
									if (fstInfo == null || tmp.ROFstID > fstInfo.ROFstID)
 | 
						|
										fstInfo = tmp;
 | 
						|
								using (DocVersion dv = MyDocVersion.Get())
 | 
						|
								{
 | 
						|
									using (ROFst fst = fstInfo.Get())
 | 
						|
									{
 | 
						|
										dv.DocVersionAssociations.Add(fst);
 | 
						|
										dv.Save();
 | 
						|
									}
 | 
						|
									dv.Reset_DocVersionAssociations();
 | 
						|
									MyDocVersion.RefreshDocVersionAssociations();
 | 
						|
								}
 | 
						|
							}
 | 
						|
							else
 | 
						|
							{
 | 
						|
								MessageBox.Show("Since you did not pick an existing RO folder defined for this database, the import process will terminate.");
 | 
						|
								this.Close();// Close the Import Window
 | 
						|
								return;
 | 
						|
							}
 | 
						|
						}
 | 
						|
					}
 | 
						|
					#endregion
 | 
						|
				} // end - need to select RO Path
 | 
						|
 | 
						|
				// use resolvedProcNum to determine if procedure is 'unique', i.e. if the procedure number exists
 | 
						|
				// and user does not overwrite or copy, then the procedure should NOT be imported. Fix for B2016-045
 | 
						|
				bool resolvedProcNum = true;
 | 
						|
				foreach (ProcedureInfo pi in MyDocVersion.Procedures)
 | 
						|
				{
 | 
						|
					// procedure numbers that contain a hyphen may have the hyphen represented as the unicode character
 | 
						|
					// '\u8209?' or the '-' character.  If proc number is same except for hyphen representation, they
 | 
						|
					//  should be considered the same procedure (fix for B2016-084)
 | 
						|
					string hyphenNum = pi.MyContent.Number == null ? "" : pi.MyContent.Number.Replace(@"\u8209?", "-").Replace("\u2011", "-").Replace("\u9586?","_").Replace("\u2572", @"\");
 | 
						|
					string hyphenImpNum = xd.SelectSingleNode("procedure/content/@number").InnerText;
 | 
						|
					// bug fix C2015-044 - jsj
 | 
						|
					// - the cancel button would ignor the user's wishes and proceed with the import (overwriting the existing procedure)
 | 
						|
					// - also found that the message about overwriting or making a copy wasn't appearing because we where not converting the import procedure number
 | 
						|
					// - our standard unicode dash (\u8209?) before conparing the existing and imported
 | 
						|
					// - also found the Overrite and make a copy of messages looked too similar - fixed that as well.
 | 
						|
					//hyphenImpNum = hyphenImpNum == null ? "" : hyphenImpNum.Replace("\u8030?", "-"); -did not find any reason to have this \u8030? - note retested sourcesafe doc for B2016-084 without this logic and it was fine
 | 
						|
					hyphenImpNum = hyphenImpNum == null ? "" : hyphenImpNum.Replace(@"\u8209?", "-").Replace("\u2011", "-").Replace(@"\u9586?", @"\").Replace("\u2572", @"\");
 | 
						|
 | 
						|
					if (hyphenNum == hyphenImpNum)
 | 
						|
					{
 | 
						|
						string msg = string.Format("The procedure you are importing{0}already exists in this procedure set.\n\nDo you want to OVERWRITE the existing procedure?", !hyphenImpNum.Equals("")?string.Format(" ({0}) ",hyphenImpNum):" ");
 | 
						|
						DialogResult dr = MessageBox.Show(this, msg, "Overwrite Existing Procedure", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop);
 | 
						|
						if (dr == DialogResult.Yes)
 | 
						|
						{
 | 
						|
							ImportProcedureOverwrite(xd, pi);
 | 
						|
							isImported = true;
 | 
						|
							break;
 | 
						|
						}
 | 
						|
						if (dr == DialogResult.No)
 | 
						|
						{
 | 
						|
							msg = string.Format("Do you want to import {0} as a COPY of the existing procedure?\n\nThis will prefix the procedure number with \"Copy of\"", !hyphenImpNum.Equals("") ? string.Format("({0})", hyphenImpNum) : "the procedure");
 | 
						|
							dr = MessageBox.Show(this, msg , "Create Copy Of Existing Procedure", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop);
 | 
						|
							if (dr == DialogResult.Yes)
 | 
						|
							{
 | 
						|
								ImportProcedureCopy(xd);
 | 
						|
								isImported = true;
 | 
						|
								break;
 | 
						|
							}
 | 
						|
							else
 | 
						|
								resolvedProcNum = false;
 | 
						|
						}
 | 
						|
						if (dr == System.Windows.Forms.DialogResult.Cancel)
 | 
						|
						{
 | 
						|
							canceledPressed = true;
 | 
						|
							resolvedProcNum = false;
 | 
						|
						}
 | 
						|
						break; // user selected No or Cancel so break out of the foreach loop
 | 
						|
					}
 | 
						|
				}
 | 
						|
				if (!canceledPressed && !isImported && resolvedProcNum)
 | 
						|
				{
 | 
						|
					ImportProcedureNew(xd);
 | 
						|
					isImported = true;
 | 
						|
				}
 | 
						|
				TurnChangeManagerOn.Execute();
 | 
						|
				if (isImported)
 | 
						|
				{
 | 
						|
					TimeSpan elapsed = DateTime.Now.Subtract(MyStart);
 | 
						|
					lblImportStatus.Text = "Import Completed in " + elapsed.ToString();
 | 
						|
				}
 | 
						|
				else
 | 
						|
				{
 | 
						|
					btnImport.Enabled = true;
 | 
						|
					btnDoImport.Enabled = true;
 | 
						|
				}
 | 
						|
			}
 | 
						|
			this.Cursor = Cursors.Default;
 | 
						|
			btnCloseImport.Enabled = true;
 | 
						|
			if (isImported)
 | 
						|
				MessageBox.Show(string.Format("Finished Importing:\n\n{0}",txtImport.Text.Substring(txtImport.Text.LastIndexOf("\\")+1)),"Import",MessageBoxButtons.OK,MessageBoxIcon.Information);
 | 
						|
			if (canceledPressed)
 | 
						|
			{
 | 
						|
				MessageBox.Show(string.Format("Canceling the import of:\n\n{0}",txtImport.Text.Substring(txtImport.Text.LastIndexOf("\\")+1)),"Import",MessageBoxButtons.OK,MessageBoxIcon.Information);
 | 
						|
				btnCloseImport.PerformClick();
 | 
						|
			}
 | 
						|
		}
 | 
						|
    private void ImportProcedureNew(XmlDocument xd)
 | 
						|
    {
 | 
						|
      //add imported procedure
 | 
						|
			floatFoldout = new Dictionary<int, int>();
 | 
						|
			oldFormat = new Dictionary<int, string>();
 | 
						|
      newFormat = new Dictionary<string, int>();
 | 
						|
      FormatInfoList fil = FormatInfoList.Get();
 | 
						|
      foreach (FormatInfo fi in fil)
 | 
						|
      {
 | 
						|
        oldFormat.Add(fi.FormatID, fi.Name);
 | 
						|
        newFormat.Add(fi.Name, fi.FormatID);
 | 
						|
      }
 | 
						|
      Old2NewItem = new Dictionary<int, int>();
 | 
						|
      Old2NewContent = new Dictionary<int, int>();
 | 
						|
      Old2NewLibDoc = new Dictionary<int, int>();
 | 
						|
      PendingTransitions = new XmlDocument();
 | 
						|
      XmlElement xe = PendingTransitions.CreateElement("transitions");
 | 
						|
      PendingTransitions.AppendChild(xe);
 | 
						|
      string fn = PEIPath + @"\transitions.xml";
 | 
						|
      PendingTransitions.Save(fn);
 | 
						|
      ProcedureInfo lastProcedure = null;
 | 
						|
      foreach (ProcedureInfo pi in MyDocVersion.Procedures)
 | 
						|
        lastProcedure = pi;
 | 
						|
      _MyNewProcedure = AddProcedure(xd.DocumentElement, MyDocVersion, lastProcedure);
 | 
						|
      //update transitions
 | 
						|
      AddTransitions(PendingTransitions);
 | 
						|
			PendingTransitions.Save(fn);
 | 
						|
			FixFloatingFoldouts();
 | 
						|
			//File.Delete(fn);
 | 
						|
    }
 | 
						|
    private void ImportProcedureCopy(XmlDocument xd)
 | 
						|
    {
 | 
						|
			floatFoldout = new Dictionary<int, int>();
 | 
						|
			oldFormat = new Dictionary<int, string>();
 | 
						|
      newFormat = new Dictionary<string, int>();
 | 
						|
      FormatInfoList fil = FormatInfoList.Get();
 | 
						|
      foreach (FormatInfo fi in fil)
 | 
						|
      {
 | 
						|
        oldFormat.Add(fi.FormatID, fi.Name);
 | 
						|
        newFormat.Add(fi.Name, fi.FormatID);
 | 
						|
      }
 | 
						|
      Old2NewItem = new Dictionary<int, int>();
 | 
						|
      Old2NewContent = new Dictionary<int, int>();
 | 
						|
      Old2NewLibDoc = new Dictionary<int, int>();
 | 
						|
      PendingTransitions = new XmlDocument();
 | 
						|
      XmlElement xe = PendingTransitions.CreateElement("transitions");
 | 
						|
      PendingTransitions.AppendChild(xe);
 | 
						|
      string fn = PEIPath + @"\transitions.xml";
 | 
						|
      PendingTransitions.Save(fn);
 | 
						|
      ProcedureInfo lastProcedure = null;
 | 
						|
      //determine count of existing procedures with same number
 | 
						|
      string number = xd.SelectSingleNode("procedure/content/@number").InnerText;
 | 
						|
 | 
						|
			// kbr - could replace '-' with unicode in number, here.
 | 
						|
      int count = 0;
 | 
						|
      foreach (ProcedureInfo pi in MyDocVersion.Procedures)
 | 
						|
      {
 | 
						|
        lastProcedure = pi;
 | 
						|
        if (pi.MyContent.Number.EndsWith(number))
 | 
						|
          count++;
 | 
						|
      }
 | 
						|
      xd.SelectSingleNode("procedure/content/@number").InnerText = string.Format("Copy({0}) of {1}", count.ToString(), number);
 | 
						|
      //add imported procedure and copy count
 | 
						|
      _MyNewProcedure = AddProcedure(xd.DocumentElement, MyDocVersion, lastProcedure);
 | 
						|
      //update transitions
 | 
						|
      AddTransitions(PendingTransitions);
 | 
						|
			FixFloatingFoldouts();
 | 
						|
      File.Delete(fn);
 | 
						|
    }
 | 
						|
    private void ImportProcedureOverwrite(XmlDocument xd, ProcedureInfo pi)
 | 
						|
    {
 | 
						|
			floatFoldout = new Dictionary<int, int>();
 | 
						|
			oldFormat = new Dictionary<int, string>();
 | 
						|
      newFormat = new Dictionary<string, int>();
 | 
						|
      FormatInfoList fil = FormatInfoList.Get();
 | 
						|
      foreach (FormatInfo fi in fil)
 | 
						|
      {
 | 
						|
        oldFormat.Add(fi.FormatID, fi.Name);
 | 
						|
        newFormat.Add(fi.Name, fi.FormatID);
 | 
						|
      }
 | 
						|
      Old2NewItem = new Dictionary<int, int>();
 | 
						|
      Old2NewContent = new Dictionary<int, int>();
 | 
						|
      Old2NewLibDoc = new Dictionary<int, int>();
 | 
						|
      PendingTransitions = new XmlDocument();
 | 
						|
      XmlElement xe = PendingTransitions.CreateElement("transitions");
 | 
						|
      PendingTransitions.AppendChild(xe);
 | 
						|
      string fn = PEIPath + @"\transitions.xml";
 | 
						|
      PendingTransitions.Save(fn);
 | 
						|
      ProcedureInfo lastProcedure = null;
 | 
						|
      //delete old procedure
 | 
						|
      foreach (ProcedureInfo lp in MyDocVersion.Procedures)
 | 
						|
        lastProcedure = lp;
 | 
						|
      //delete opi
 | 
						|
			try
 | 
						|
			{
 | 
						|
				TurnChangeManagerOn.Execute(); // Import Turns off the Change Manager - Delete needs to have it on
 | 
						|
				Item.DeleteItemAndChildren(pi);
 | 
						|
				TurnChangeManagerOff.Execute(); // Assure that the Change Manager is off
 | 
						|
			}
 | 
						|
			catch(Exception ex)
 | 
						|
			{
 | 
						|
				ExternalTransitionItem = pi.HandleSqlExceptionOnDelete(ex);
 | 
						|
				File.Delete(fn);
 | 
						|
				TurnChangeManagerOff.Execute(); // Assure that the Change Manager is off
 | 
						|
				return;
 | 
						|
			}
 | 
						|
      //add imported procedure
 | 
						|
      _MyNewProcedure = AddProcedure(xd.DocumentElement, MyDocVersion, lastProcedure);
 | 
						|
      //update transitions
 | 
						|
      AddTransitions(PendingTransitions);
 | 
						|
			FixFloatingFoldouts();
 | 
						|
    }
 | 
						|
		private void LoadImportDataDocument()
 | 
						|
		{
 | 
						|
      floatFoldout = new Dictionary<int, int>();
 | 
						|
      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);
 | 
						|
			MyDocVersion = dvi;
 | 
						|
      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();
 | 
						|
      FixFloatingFoldouts();
 | 
						|
      SaveTransitionAndItemContentIDs();
 | 
						|
		}
 | 
						|
		private void FixSectionStart(ProcedureInfo pi)
 | 
						|
		{
 | 
						|
			Content c = Content.Get(pi.MyContent.ContentID);
 | 
						|
			XmlDocument xd = new XmlDocument();
 | 
						|
			// If the config field is empty, add an empty xml node.
 | 
						|
			if (c.Config == "") c.Config = "<Config/>";
 | 
						|
			xd.LoadXml(c.Config);
 | 
						|
			XmlNode xn = xd.SelectSingleNode("Config/Procedure/@SectionStart");
 | 
						|
			if (xn != null)
 | 
						|
			{
 | 
						|
			int iid = int.Parse(xn.InnerText);
 | 
						|
			if (Old2NewItem.ContainsKey(iid))
 | 
						|
				iid = Old2NewItem[iid];
 | 
						|
			else
 | 
						|
			{
 | 
						|
				int oldid = iid;
 | 
						|
				iid = pi.ItemID;
 | 
						|
				XmlAttribute xa = xd.CreateAttribute("ErrorSectionStart");
 | 
						|
				xa.InnerText = oldid.ToString();
 | 
						|
				XmlNode xp = xd.SelectSingleNode("Config/Procedure");
 | 
						|
				xp.Attributes.SetNamedItem(xa);
 | 
						|
			}
 | 
						|
			xn.InnerText = iid.ToString();
 | 
						|
			c.Config = xd.OuterXml;
 | 
						|
			c.Save();
 | 
						|
			}
 | 
						|
		}
 | 
						|
    private void FixFloatingFoldouts()
 | 
						|
    {
 | 
						|
      foreach (int key in floatFoldout.Keys)
 | 
						|
      {
 | 
						|
        lblImportStatus.Text = "Updating Floating Foldouts";
 | 
						|
        int cid = Old2NewContent[key];
 | 
						|
        int iid = Old2NewItem[floatFoldout[key]];
 | 
						|
        Content c = Content.Get(cid);
 | 
						|
        XmlDocument xd = new XmlDocument();
 | 
						|
        xd.LoadXml(c.Config);
 | 
						|
        XmlNode xn = xd.SelectSingleNode("Config/Step/@FloatingFoldout");
 | 
						|
        xn.InnerText = iid.ToString();
 | 
						|
        c.Config = xd.OuterXml;
 | 
						|
        c.Save();
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
		// note that his is only used when importing a folder
 | 
						|
    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);
 | 
						|
    }
 | 
						|
 | 
						|
		//jsj 4-29-2016 appears to not be used
 | 
						|
		//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;
 | 
						|
		//}
 | 
						|
 | 
						|
		//jsj 4-29-2016 appears to not be used
 | 
						|
		//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;
 | 
						|
 | 
						|
		// jsj 4-29-2016 appears to not be used
 | 
						|
		//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;
 | 
						|
		//}
 | 
						|
		// jsj 2016Feb17 - this appears to not be used
 | 
						|
		//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);
 | 
						|
		//}
 | 
						|
 | 
						|
		// This is called only when we are importing an entire folder.
 | 
						|
		// if there is a .impx file (a zip file generated from the last folder export file and based on location -folder name- of the export file you are importing), then it updates it with new values, 
 | 
						|
		// else it will create a .impx file, and saves the id information listed below.
 | 
						|
		// This will create and save the ItemIDs (old and new), ContentIDs (old andnew), library document IDs (old and new), and pending transitions each in their own xml file
 | 
						|
		// the xml files are then added (or replaced) in the .impx file.
 | 
						|
		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);
 | 
						|
    }
 | 
						|
		// appears to not be used - jsj 4-28-2016
 | 
						|
		//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);
 | 
						|
		//}
 | 
						|
 | 
						|
		// This is called only when we are importing an entire folder and there is a .impx file (a zip file)
 | 
						|
		// the name of the .impx file is based on the folder name containing the export file being imported
 | 
						|
		// This will read in the saved ItemIDs (old and new), ContentIDs (old andnew), library document IDs (old and new), and pending transitions
 | 
						|
    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);
 | 
						|
      }
 | 
						|
      File.Delete(fn);
 | 
						|
      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);
 | 
						|
      }
 | 
						|
      File.Delete(fn);
 | 
						|
      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);
 | 
						|
      }
 | 
						|
      File.Delete(fn);
 | 
						|
      ze = MyImpxZipFile["transitions.xml"];
 | 
						|
      ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently);
 | 
						|
      fn = PEIPath + @"\transitions.xml";
 | 
						|
      PendingTransitions.Load(fn);
 | 
						|
      File.Delete(fn);
 | 
						|
    }
 | 
						|
		// appears not to be used - jsj  4-28-2016
 | 
						|
		//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);
 | 
						|
		//	}
 | 
						|
		//}
 | 
						|
 | 
						|
		// appears not to be used - jsj  4-28-2016
 | 
						|
		//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);
 | 
						|
		//}
 | 
						|
 | 
						|
		// jsj 4-29-2016 appears to not be used
 | 
						|
		//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 (MyFolder != null)
 | 
						|
      {
 | 
						|
        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;
 | 
						|
						if (fi.Name.IndexOf("-") > 0)
 | 
						|
							dn = fi.Name.Substring(0, fi.Name.IndexOf("-"));
 | 
						|
						else
 | 
						|
							dn = fi.Name.Substring(0,fi.Name.IndexOf("."));
 | 
						|
            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);
 | 
						|
            }
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
      if (MyDocVersion != null)
 | 
						|
      {
 | 
						|
        ofd.Filter = "PROMS Procedure Export Files|*.pxml";
 | 
						|
        if (ofd.ShowDialog(this) == DialogResult.OK)
 | 
						|
          txtImport.Text = ofd.FileName;
 | 
						|
      }
 | 
						|
		}
 | 
						|
		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();
 | 
						|
			string formatFileName = (fi.MyFormat != null)? fi.MyFormat.Name:"";
 | 
						|
      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()));
 | 
						|
			xe.Attributes.SetNamedItem(AddAttribute(xd, "formatfilename",formatFileName));
 | 
						|
      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);
 | 
						|
    }
 | 
						|
 | 
						|
		// jsj 4-29-2016  appears to not be used
 | 
						|
		//private void ExportFolder(FolderInfo fi, string nodename)
 | 
						|
		//{
 | 
						|
		//	/*
 | 
						|
		//	FolderID
 | 
						|
		//	ParentID
 | 
						|
		//	DBID
 | 
						|
		//	Name
 | 
						|
		//	Title
 | 
						|
		//	ShortName
 | 
						|
		//	FormatID
 | 
						|
		//	ManualOrder
 | 
						|
		//	Config
 | 
						|
		//	DTS
 | 
						|
		//	UsrID
 | 
						|
		//	*/
 | 
						|
		//	string formatFileName = (fi.MyFormat != null) ? fi.MyFormat.Name : "";
 | 
						|
		//	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());
 | 
						|
		//	MyWriter.WriteAttributeString("formatfilename", formatFileName);
 | 
						|
      
 | 
						|
		//	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();
 | 
						|
			string formatFileName = (dvi.MyFormat != null) ? dvi.MyFormat.Name : "";
 | 
						|
      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()));
 | 
						|
			xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "formatfilename", formatFileName));
 | 
						|
      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
 | 
						|
			*/
 | 
						|
			string formatFileName = (dvi.MyFormat != null) ? dvi.MyFormat.Name : "";
 | 
						|
			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());
 | 
						|
			MyWriter.WriteAttributeString("formatfilename", formatFileName);
 | 
						|
      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);
 | 
						|
			ExportFigures(xe, fst);
 | 
						|
      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 ExportFigures(XmlElement xn, ROFstInfo fst)
 | 
						|
		{
 | 
						|
			if (fst.ROFstFigureCount > 0)
 | 
						|
			{
 | 
						|
				XmlElement xe = xn.OwnerDocument.CreateElement("figures");
 | 
						|
				xn.AppendChild(xe);
 | 
						|
				foreach (FigureInfo figure in fst.ROFstFigures)
 | 
						|
				{
 | 
						|
					XmlElement xee = xn.OwnerDocument.CreateElement("figure");
 | 
						|
					xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "figureid", figure.FigureID.ToString()));
 | 
						|
					xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "rofstid", figure.ROFstID.ToString()));
 | 
						|
					xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "imageid", figure.ImageID.ToString()));
 | 
						|
					xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "config", figure.Config));
 | 
						|
					xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "dts", figure.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | 
						|
					xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "userid", figure.UserID));
 | 
						|
					xe.AppendChild(xee);
 | 
						|
					ExportROImage(xee, figure.MyROImage);
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void ExportROImage(XmlElement xn, ROImageInfo image)
 | 
						|
		{
 | 
						|
			XmlElement xe = xn.OwnerDocument.CreateElement("image");
 | 
						|
			xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "imageid", image.ImageID.ToString()));
 | 
						|
			xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rodbid", image.RODbID.ToString()));
 | 
						|
			xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "filename", image.FileName));
 | 
						|
			xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "content", Convert.ToBase64String(image.Content)));
 | 
						|
			xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", image.Config));
 | 
						|
			xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", image.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | 
						|
			xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", image.UserID));
 | 
						|
			xn.AppendChild(xe);
 | 
						|
		}
 | 
						|
    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();
 | 
						|
		}
 | 
						|
    public void ExportItem(XmlDocument xd, ItemInfo ii, string nodename)
 | 
						|
    {
 | 
						|
      XmlElement xe = xd.CreateElement(nodename);
 | 
						|
			if (ii.IsProcedure)
 | 
						|
			{
 | 
						|
				xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rodbid", ii.MyDocVersion.DocVersionAssociations[0].MyROFst.MyRODb.RODbID.ToString()));
 | 
						|
				xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rofolderpath", ii.MyDocVersion.DocVersionAssociations[0].MyROFst.MyRODb.FolderPath));
 | 
						|
				xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rofstid", ii.MyDocVersion.DocVersionAssociations[0].MyROFst.ROFstID.ToString()));
 | 
						|
				xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rofstdts", ii.MyDocVersion.DocVersionAssociations[0].MyROFst.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | 
						|
			}
 | 
						|
      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;
 | 
						|
        if(ii.Sections != null)
 | 
						|
          pbExportSection.Maximum = ii.Sections.Count;
 | 
						|
				else
 | 
						|
				{
 | 
						|
					pbExportSection.Maximum = 1;
 | 
						|
					pbExportSection.PerformStep();
 | 
						|
					pbExportStep.Maximum = 1;
 | 
						|
					pbExportStep.PerformStep();
 | 
						|
					lblExportSection.Text = "Sections";
 | 
						|
					lblExportStep.Text = "Steps";
 | 
						|
					Application.DoEvents();
 | 
						|
				}
 | 
						|
			}
 | 
						|
      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;
 | 
						|
				else
 | 
						|
				{
 | 
						|
					pbExportStep.Maximum = 1;
 | 
						|
					pbExportStep.PerformStep();
 | 
						|
					lblExportStep.Text = "Word Section Data";
 | 
						|
					Application.DoEvents();
 | 
						|
				}
 | 
						|
      }
 | 
						|
      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")));
 | 
						|
      //item audits
 | 
						|
      ExportItemAudits(xe, ii);
 | 
						|
      ExportContent(xe, ii.MyContent, "content");
 | 
						|
      if (ii.ItemAnnotationCount > 0)
 | 
						|
        foreach (AnnotationInfo ai in ii.ItemAnnotations)
 | 
						|
          ExportAnnotation(xe, ai, "annotation");
 | 
						|
    }
 | 
						|
    private void ExportItemAudits(XmlElement xn, ItemInfo ii)
 | 
						|
    {
 | 
						|
      if (cbxExportAudits.Checked)
 | 
						|
      {
 | 
						|
        ItemAuditInfoList audits = ItemAuditInfoList.Get(ii.ItemID);
 | 
						|
        if (audits.Count > 0)
 | 
						|
        {
 | 
						|
          XmlElement xe = xn.OwnerDocument.CreateElement("audits");
 | 
						|
          foreach (ItemAuditInfo audit in audits)
 | 
						|
          {
 | 
						|
            if (audit.DeleteStatus == 0)
 | 
						|
            {
 | 
						|
              XmlElement xee = xn.OwnerDocument.CreateElement("audit");
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "auditid", audit.AuditID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "contentid", audit.ContentID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "deletestatus", audit.DeleteStatus.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "dts", audit.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "itemid", audit.ItemID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "previousid", audit.PreviousID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "userid", audit.UserID));
 | 
						|
              xe.AppendChild(xee);
 | 
						|
            }
 | 
						|
          }
 | 
						|
          xn.AppendChild(xe);
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
		// used to save word sections with resolved ROs (export generated from Approve)
 | 
						|
		private Dictionary<int, byte[]> _DocReplace;
 | 
						|
		public Dictionary<int, byte[]> DocReplace
 | 
						|
		{
 | 
						|
			get { return _DocReplace; }
 | 
						|
			set 
 | 
						|
			{
 | 
						|
				_DocReplace = value;
 | 
						|
				_ConvertROsAndTransitionsToText = (value != null);
 | 
						|
			}
 | 
						|
		}
 | 
						|
    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.Sections != null)
 | 
						|
					pbExportSection.Maximum = ii.Sections.Count;
 | 
						|
				else
 | 
						|
				{
 | 
						|
					pbExportSection.Maximum = 1;
 | 
						|
					pbExportSection.PerformStep();
 | 
						|
					pbExportStep.Maximum = 1;
 | 
						|
					pbExportStep.PerformStep();
 | 
						|
					lblExportSection.Text = "Sections";
 | 
						|
					lblExportStep.Text = "Steps";
 | 
						|
					Application.DoEvents();
 | 
						|
				}
 | 
						|
			}
 | 
						|
			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;
 | 
						|
				else
 | 
						|
				{
 | 
						|
					pbExportStep.Maximum = 1;
 | 
						|
					pbExportStep.PerformStep();
 | 
						|
					lblExportStep.Text = "Word Section Data";
 | 
						|
					Application.DoEvents();
 | 
						|
				}
 | 
						|
			}
 | 
						|
			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);
 | 
						|
			// strip the link information if we are convertingthe RO and Transitions to text
 | 
						|
			string ciText = (_ConvertROsAndTransitionsToText)?ItemInfo.StripLinks(ci.Text):ci.Text;
 | 
						|
			string formatFileName = (ci.MyFormat != null) ? ci.MyFormat.Name : "";
 | 
						|
      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", ciText));
 | 
						|
      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()));
 | 
						|
      xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "formatfilename", formatFileName));
 | 
						|
      //content audits
 | 
						|
      ExportContentAudits(xe, ci);
 | 
						|
      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 ExportContentAudits(XmlElement xn, ContentInfo ci)
 | 
						|
    {
 | 
						|
      if (cbxExportAudits.Checked)
 | 
						|
      {
 | 
						|
        ContentAuditInfoList audits = ContentAuditInfoList.Get(ci.ContentID);
 | 
						|
        if (audits.Count > 0)
 | 
						|
        {
 | 
						|
          XmlElement xe = xn.OwnerDocument.CreateElement("audits");
 | 
						|
          foreach (ContentAuditInfo audit in audits)
 | 
						|
          {
 | 
						|
            if (audit.DeleteStatus == 0)
 | 
						|
            {
 | 
						|
              XmlElement xee = xn.OwnerDocument.CreateElement("audit");
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "auditid", audit.AuditID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "contentid", audit.ContentID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "number", audit.Number));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "text", audit.Text));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "type", audit.Type.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "formatid", audit.FormatID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "config", audit.Config));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "dts", audit.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "userid", audit.UserID));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "deletestatus", audit.DeleteStatus.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "actiondts", audit.ActionWhen.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | 
						|
              xe.AppendChild(xee);
 | 
						|
            }
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
    private void ExportContent(ContentInfo ci, string nodename)
 | 
						|
		{
 | 
						|
			/*
 | 
						|
			ContentID
 | 
						|
			Number
 | 
						|
			Text
 | 
						|
			Type
 | 
						|
			FormatID
 | 
						|
			Config
 | 
						|
			DTS
 | 
						|
			UserID
 | 
						|
			*/
 | 
						|
			// strip the link information if we are convertinga the ROs and Transitions to text
 | 
						|
			string ciText = (_ConvertROsAndTransitionsToText) ? ItemInfo.StripLinks(ci.Text) : ci.Text;
 | 
						|
			string formatFileName = (ci.MyFormat != null) ? ci.MyFormat.Name : "";
 | 
						|
			MyWriter.WriteStartElement(nodename);
 | 
						|
			MyWriter.WriteAttributeString("contentid", ci.ContentID.ToString());
 | 
						|
			MyWriter.WriteAttributeString("number", ci.Number);
 | 
						|
			MyWriter.WriteAttributeString("text", ciText);
 | 
						|
			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());
 | 
						|
			MyWriter.WriteAttributeString("formatfilename", formatFileName);
 | 
						|
			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
 | 
						|
      */
 | 
						|
			string giData = gi.Data;
 | 
						|
			if (_ConvertROsAndTransitionsToText)
 | 
						|
			{
 | 
						|
				giData = giData.Replace("<IsRoTable>True", "<IsRoTable>False"); // converts a RO table to a unlinked regular table
 | 
						|
				giData = ItemInfo.StripLinks(giData); // this converts ROs and transitions to text
 | 
						|
			}
 | 
						|
      XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | 
						|
      xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", gi.ContentID.ToString()));
 | 
						|
      xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "data", giData));
 | 
						|
      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()));
 | 
						|
      //grid audits
 | 
						|
      ExportGridAudits(xe, gi);
 | 
						|
      xn.AppendChild(xe);
 | 
						|
    }
 | 
						|
    private void ExportGridAudits(XmlElement xn, GridInfo gi)
 | 
						|
    {
 | 
						|
      if (cbxExportAudits.Checked)
 | 
						|
      {
 | 
						|
        GridAuditInfoList audits = GridAuditInfoList.Get(gi.ContentID);
 | 
						|
        if (audits.Count > 0)
 | 
						|
        {
 | 
						|
          XmlElement xe = xn.OwnerDocument.CreateElement("audits");
 | 
						|
          foreach (GridAuditInfo audit in audits)
 | 
						|
          {
 | 
						|
            if (audit.DeleteStatus == 0)
 | 
						|
            {
 | 
						|
              XmlElement xee = xn.OwnerDocument.CreateElement("audit");
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "auditid", audit.AuditID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "contentid", audit.ContentID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "data", audit.Data));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "config", audit.Config));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "dts", audit.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "userid", audit.UserID));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "deletestatus", audit.DeleteStatus.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "contentauditid", audit.ContentAuditID.ToString()));
 | 
						|
              xe.AppendChild(xee);
 | 
						|
 | 
						|
            }
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
    private void ExportGrid(GridInfo gi, string nodename)
 | 
						|
		{
 | 
						|
			/*
 | 
						|
			ContentID
 | 
						|
			Data
 | 
						|
			Config
 | 
						|
			DTS
 | 
						|
			UserID
 | 
						|
			*/
 | 
						|
			string giData = gi.Data;
 | 
						|
			if (_ConvertROsAndTransitionsToText)
 | 
						|
			{
 | 
						|
				giData = giData.Replace("IsRoTable>True", "IsRoTable>False"); // converts a RO table to regular table
 | 
						|
				giData = ItemInfo.StripLinks(giData); // converts ROs and Transitions to text
 | 
						|
			}
 | 
						|
			MyWriter.WriteStartElement(nodename);
 | 
						|
			MyWriter.WriteAttributeString("contentid", gi.ContentID.ToString());
 | 
						|
			MyWriter.WriteAttributeString("data", giData);
 | 
						|
			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()));
 | 
						|
      //entry audits
 | 
						|
      ExportEntryAudits(xe, ei);
 | 
						|
      xn.AppendChild(xe);
 | 
						|
      ExportDocument(xe, ei.MyDocument, "document");
 | 
						|
    }
 | 
						|
    private void ExportEntryAudits(XmlElement xn, EntryInfo ei)
 | 
						|
    {
 | 
						|
      if (cbxExportAudits.Checked)
 | 
						|
      {
 | 
						|
        EntryAuditInfoList audits = EntryAuditInfoList.Get(ei.ContentID);
 | 
						|
        if (audits.Count > 0)
 | 
						|
        {
 | 
						|
          XmlElement xe = xn.OwnerDocument.CreateElement("audits");
 | 
						|
          foreach (EntryAuditInfo audit in audits)
 | 
						|
          {
 | 
						|
            if (audit.DeleteStatus == 0)
 | 
						|
            {
 | 
						|
              XmlElement xee = xn.OwnerDocument.CreateElement("audit");
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "auditid", audit.AuditID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "contentid", audit.ContentID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "docid", audit.DocID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "dts", audit.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "userid", audit.UserID));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "deletestatus", audit.DeleteStatus.ToString()));
 | 
						|
              xe.AppendChild(xee);
 | 
						|
            }
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
    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
 | 
						|
      */
 | 
						|
			byte[] buf = di.DocContent;
 | 
						|
			string libDocTitle = di.LibTitle;
 | 
						|
			if (DocReplace != null && DocReplace.ContainsKey(di.DocID) && _ConvertROsAndTransitionsToText)
 | 
						|
			{
 | 
						|
				buf = DocReplace[di.DocID];
 | 
						|
				libDocTitle = null;  // unlink the word section from the library document
 | 
						|
			}
 | 
						|
      XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
 | 
						|
      xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "docid", di.DocID.ToString()));
 | 
						|
			xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "libtitle", libDocTitle)); // di.LibTitle));
 | 
						|
      xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "doccontent", Convert.ToBase64String(buf)));
 | 
						|
      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));
 | 
						|
      //document audits
 | 
						|
      ExportDocumentAudits(xe, di);
 | 
						|
      xn.AppendChild(xe);
 | 
						|
    }
 | 
						|
    private void ExportDocumentAudits(XmlElement xn, DocumentInfo di)
 | 
						|
    {
 | 
						|
      if (cbxExportAudits.Checked)
 | 
						|
      {
 | 
						|
        DocumentAuditInfoList audits = DocumentAuditInfoList.Get(di.DocID);
 | 
						|
        if (audits.Count > 0)
 | 
						|
        {
 | 
						|
          XmlElement xe = xn.OwnerDocument.CreateElement("audits");
 | 
						|
          foreach (DocumentAuditInfo audit in audits)
 | 
						|
          {
 | 
						|
            if (audit.DeleteStatus == 0)
 | 
						|
            {
 | 
						|
              XmlElement xee = xn.OwnerDocument.CreateElement("audit");
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "auditid", audit.AuditID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "docid", audit.DocID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "libtitle", audit.LibTitle));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "doccontent",Convert.ToBase64String(audit.DocContent)));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "docascii", audit.DocAscii));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "config", audit.Config));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "dts", audit.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "userid", audit.UserID));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "fileextension", audit.FileExtension));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "deletestatus", audit.DeleteStatus.ToString()));
 | 
						|
              xe.AppendChild(xee);
 | 
						|
            }
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
    private void ExportDocument(DocumentInfo di, string nodename)
 | 
						|
		{
 | 
						|
			/*
 | 
						|
			DocID
 | 
						|
			LibTitle
 | 
						|
			DocContent
 | 
						|
			DocAscii
 | 
						|
			Config
 | 
						|
			DTS
 | 
						|
			UserID
 | 
						|
			FileExtension
 | 
						|
			*/
 | 
						|
			byte[] buf = di.DocContent;
 | 
						|
			string libDocTitle = di.LibTitle;
 | 
						|
			if (DocReplace != null && DocReplace.ContainsKey(di.DocID) && _ConvertROsAndTransitionsToText)
 | 
						|
			{
 | 
						|
				buf = DocReplace[di.DocID];
 | 
						|
				libDocTitle = null; // unlink the word section from the library document
 | 
						|
			}
 | 
						|
			MyWriter.WriteStartElement(nodename);
 | 
						|
			MyWriter.WriteAttributeString("docid", di.DocID.ToString());
 | 
						|
			MyWriter.WriteAttributeString("libtitle", libDocTitle);// di.LibTitle);
 | 
						|
			MyWriter.WriteAttributeString("doccontent", Convert.ToBase64String(buf));
 | 
						|
			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()));
 | 
						|
      //rousage audits
 | 
						|
      ExportROUsageAudits(xe, ri);
 | 
						|
      xn.AppendChild(xe);
 | 
						|
    }
 | 
						|
    private void ExportROUsageAudits(XmlElement xe, RoUsageInfo ri)
 | 
						|
    {
 | 
						|
      if (cbxExportAudits.Checked)
 | 
						|
      {
 | 
						|
      }
 | 
						|
    }
 | 
						|
    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()));
 | 
						|
      //part audits
 | 
						|
      ExportPartAudits(xe, pi);
 | 
						|
      xn.AppendChild(xe);
 | 
						|
      foreach (ItemInfo ii in pi.MyItems)
 | 
						|
        ExportItem(xe, ii, pi.PartType.ToString().ToLower());
 | 
						|
    }
 | 
						|
    private void ExportPartAudits(XmlElement xn, PartInfo pi)
 | 
						|
    {
 | 
						|
      if (cbxExportAudits.Checked)
 | 
						|
      {
 | 
						|
        PartAuditInfoList audits = PartAuditInfoList.Get(pi.ContentID);
 | 
						|
        if (audits.Count > 0)
 | 
						|
        {
 | 
						|
          XmlElement xe = xn.OwnerDocument.CreateElement("audits");
 | 
						|
          foreach (PartAuditInfo audit in audits)
 | 
						|
          {
 | 
						|
            if (audit.DeleteStatus == 0)
 | 
						|
            {
 | 
						|
              XmlElement xee = xn.OwnerDocument.CreateElement("audit");
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "auditid", audit.AuditID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "contentid", audit.ContentID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "fromtype", audit.FromType.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "itemid", audit.ItemID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "dts", audit.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "userid", audit.UserID));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "deletestatus", audit.DeleteStatus.ToString()));
 | 
						|
              xe.AppendChild(xee);
 | 
						|
            }
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
    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()));
 | 
						|
      //transition audits
 | 
						|
      ExportTransitionAudits(xe, ti);
 | 
						|
      xn.AppendChild(xe);
 | 
						|
    }
 | 
						|
    private void ExportTransitionAudits(XmlElement xe, TransitionInfo ti)
 | 
						|
    {
 | 
						|
      if (cbxExportAudits.Checked)
 | 
						|
      {
 | 
						|
      }
 | 
						|
    }
 | 
						|
    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()));
 | 
						|
      //annotation audits
 | 
						|
      ExportAnnotationAudits(xe, ai);
 | 
						|
      xn.AppendChild(xe);
 | 
						|
    }
 | 
						|
    private void ExportAnnotationAudits(XmlElement xn, AnnotationInfo ai)
 | 
						|
    {
 | 
						|
      if (cbxExportAudits.Checked)
 | 
						|
      {
 | 
						|
        AnnotationAuditInfoList audits = AnnotationAuditInfoList.GetByAnnotationID(ai.AnnotationID);
 | 
						|
        if (audits.Count > 0)
 | 
						|
        {
 | 
						|
          XmlElement xe = xn.OwnerDocument.CreateElement("audits");
 | 
						|
          foreach (AnnotationAuditInfo audit in audits)
 | 
						|
          {
 | 
						|
            if (audit.DeleteStatus == 0)
 | 
						|
            {
 | 
						|
              XmlElement xee = xn.OwnerDocument.CreateElement("audit");
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "auditid", audit.AuditID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "annotationid", audit.AnnotationID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "itemid", audit.ItemID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "typeid", audit.TypeID.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "rtftext", audit.RtfText));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "searchtext", audit.SearchText));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "config", audit.Config));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "deletestatus", audit.DeleteStatus.ToString()));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "dts", audit.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "userid", audit.UserID));
 | 
						|
              xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "actiondts", audit.ActionWhen.ToString("MM/dd/yyyy HH:mm:ss.fff")));
 | 
						|
              xe.AppendChild(xee);
 | 
						|
            }
 | 
						|
          }
 | 
						|
          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
 | 
						|
 | 
						|
		// jsj 4-29-2016  appears to not be used
 | 
						|
		//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);
 | 
						|
		//}
 | 
						|
 | 
						|
		// jsj 4-29-2016  appears to not be used
 | 
						|
		//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.FixTransitionText(TransitionInfo.Get(tt.TransitionID));
 | 
						|
					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());
 | 
						|
			int cnt = 0;
 | 
						|
			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);
 | 
						|
				int trantype = int.Parse(nd.Attributes.GetNamedItem("trantype").InnerText);
 | 
						|
				{
 | 
						|
					if (Old2NewItem.ContainsKey(toid) && Old2NewItem.ContainsKey(rangeid))	//transition to new itemid (internal)
 | 
						|
					{
 | 
						|
						int transitionid = int.Parse(nd.Attributes.GetNamedItem("transitionid").InnerText);
 | 
						|
						int isrange = int.Parse(nd.Attributes.GetNamedItem("isrange").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);
 | 
						|
						bool forceConvertToText = false;
 | 
						|
						if (TransitionInfo.Get(tt.TransitionID).MyItemToID.ActiveSection != null)
 | 
						|
						{
 | 
						|
							SectionConfig sc = TransitionInfo.Get(tt.TransitionID).MyItemToID.ActiveSection.MyConfig as SectionConfig;
 | 
						|
							forceConvertToText = (sc.SubSection_Edit == "N");
 | 
						|
						}
 | 
						|
						cc.FixTransitionText(TransitionInfo.Get(tt.TransitionID), forceConvertToText);
 | 
						|
						cc.Save();
 | 
						|
						nd.InnerText = "done";
 | 
						|
					}
 | 
						|
					else  //transition to existing itemid (external)
 | 
						|
					{
 | 
						|
						bool forceConvertToText = false;
 | 
						|
						int transitionid = int.Parse(nd.Attributes.GetNamedItem("transitionid").InnerText);
 | 
						|
						int isrange = int.Parse(nd.Attributes.GetNamedItem("isrange").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);
 | 
						|
						if (tt.TransitionID < 0)
 | 
						|
						{
 | 
						|
							forceConvertToText = true;
 | 
						|
							cc.FixTransitionText(TransitionInfo.Get(tt.TransitionID), forceConvertToText);
 | 
						|
							cc.Save();
 | 
						|
							nd.InnerText = "done";
 | 
						|
						}
 | 
						|
						else
 | 
						|
						{
 | 
						|
							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);
 | 
						|
							if (TransitionInfo.Get(tt.TransitionID).MyItemToID.ActiveSection != null)
 | 
						|
							{
 | 
						|
								SectionConfig sc = TransitionInfo.Get(tt.TransitionID).MyItemToID.ActiveSection.MyConfig as SectionConfig;
 | 
						|
								forceConvertToText = (sc.SubSection_Edit == "N");
 | 
						|
							}
 | 
						|
							if (!forceConvertToText)	//check to see if external with internal format
 | 
						|
							{
 | 
						|
								TransitionInfo tran = TransitionInfo.Get(transitionid);
 | 
						|
								if (tran.MyContent.ContentItems[0].MyProcedure.ItemID != tran.MyItemToID.MyProcedure.ItemID)
 | 
						|
									if (!tran.MyContent.ContentItems[0].ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[tran.TranType].TransMenu.Contains("Proc"))
 | 
						|
										forceConvertToText = true;
 | 
						|
							}
 | 
						|
							if (!forceConvertToText)	//check to see if external to different doc version
 | 
						|
							{
 | 
						|
								TransitionInfo tran = TransitionInfo.Get(transitionid);
 | 
						|
								if (tran.MyContent.ContentItems[0].MyDocVersion.VersionID != tran.MyItemToID.MyDocVersion.VersionID)
 | 
						|
									forceConvertToText = true;
 | 
						|
							}
 | 
						|
							cc.FixTransitionText(TransitionInfo.Get(tt.TransitionID), forceConvertToText);
 | 
						|
							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;
 | 
						|
 | 
						|
		// jsj 4-29-2016  appears to not be used
 | 
						|
		//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");
 | 
						|
		//	string formatfilename = xr.GetAttribute("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
		//	Format format = formatid == string.Empty ? null : OldToNewFormat(int.Parse(formatid),formatfilename);
 | 
						|
		//	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;
 | 
						|
			XmlNode fnNode = xd.DocumentElement.Attributes.GetNamedItem("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
			string formatfilename = (fnNode != null) ? fnNode.InnerText : "";
 | 
						|
      Format format = formatid == string.Empty ? null : OldToNewFormat(int.Parse(formatid),formatfilename);
 | 
						|
      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 formatFileName)
 | 
						|
    {
 | 
						|
			try
 | 
						|
			{
 | 
						|
				string formatName = formatFileName; // B2016-103,  new export files include the format filename use that if it exists
 | 
						|
				if (formatFileName == string.Empty)
 | 
						|
				{
 | 
						|
					if (formatID >= oldFormat.Count) return null; // formatID not found, use default file name
 | 
						|
					formatName = oldFormat[formatID];  // for backwards compatibility with older export files
 | 
						|
				}
 | 
						|
				formatID = newFormat[formatName];
 | 
						|
				return Format.Get(formatID);
 | 
						|
			}
 | 
						|
			catch
 | 
						|
			{
 | 
						|
				return null; // format not found return null to use default format
 | 
						|
			}
 | 
						|
    }
 | 
						|
		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");
 | 
						|
			string formatfilename = xr.GetAttribute("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
      Format format = formatid == string.Empty ? null : OldToNewFormat(int.Parse(formatid),formatfilename);
 | 
						|
			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;
 | 
						|
			config = StripEnhanced(config);
 | 
						|
			string userid = xe.Attributes.GetNamedItem("userid").InnerText;
 | 
						|
			DateTime dts = DateTime.Parse(xe.Attributes.GetNamedItem("dts").InnerText);
 | 
						|
			string formatid = xe.Attributes.GetNamedItem("formatid").InnerText;
 | 
						|
			XmlNode fnNode = xe.Attributes.GetNamedItem("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
			string formatfilename = (fnNode != null) ? fnNode.InnerText : "";
 | 
						|
      Format format = formatid == string.Empty ? null : OldToNewFormat(int.Parse(formatid),formatfilename);
 | 
						|
			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);
 | 
						|
		}
 | 
						|
 | 
						|
		// jsj 4-29-2016  appears to not be used
 | 
						|
		//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;
 | 
						|
		//}
 | 
						|
 | 
						|
		// jsj 4-29-2016  appears to not be used
 | 
						|
		//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);	
 | 
						|
			// if the RO database is not found in the current data (does not have the same RODBid nor date/time stamp
 | 
						|
			// then spin through the list of RO databases and compare the FST information.
 | 
						|
			// If the RO FST information is the same, then use that current RO database when importing
 | 
						|
			if (rv == null)
 | 
						|
			{
 | 
						|
				RODbInfoList rodblst = RODbInfoList.Get();
 | 
						|
				foreach (RODbInfo roinfo in rodblst)
 | 
						|
				{
 | 
						|
					rv = ROFst.GetByRODbID_DTS(roinfo.RODbID, dts);
 | 
						|
					if (rv != null && Same(rv.ROLookup,rolookup)) return rv;
 | 
						|
				}
 | 
						|
				rv = ROFst.MakeROFst(MyRODb, rolookup, config, dts, userid);
 | 
						|
				XmlNode xfigures = xrofst.SelectSingleNode("figures");
 | 
						|
				if (xfigures != null)
 | 
						|
					AddFigures(xfigures, rv);
 | 
						|
			}
 | 
						|
			return rv;
 | 
						|
		}
 | 
						|
 | 
						|
		private bool Same(byte[] p, byte[] rolookup)
 | 
						|
		{
 | 
						|
			if (p.Length != rolookup.Length) return false;
 | 
						|
			for (int i = 0; i < p.Length; i++)
 | 
						|
				if (p[i] != rolookup[i]) return false;
 | 
						|
			return true;
 | 
						|
		}
 | 
						|
 | 
						|
		private void AddFigures(XmlNode xfigures, ROFst rofst)
 | 
						|
		{
 | 
						|
			foreach (XmlNode nd in xfigures.SelectNodes("figure"))
 | 
						|
			{
 | 
						|
				XmlNode image = nd.SelectSingleNode("image");
 | 
						|
				int imageid = int.Parse(image.Attributes.GetNamedItem("imageid").InnerText);
 | 
						|
				ROImage roimage = ROImage.Get(imageid);
 | 
						|
				string config;
 | 
						|
				DateTime dts;
 | 
						|
				string userid;
 | 
						|
				if (roimage == null)
 | 
						|
				{
 | 
						|
					string filename = image.Attributes.GetNamedItem("filename").InnerText;
 | 
						|
					byte[] content = Convert.FromBase64String(image.Attributes.GetNamedItem("content").InnerText);
 | 
						|
					config = image.Attributes.GetNamedItem("config").InnerText;
 | 
						|
					dts = DateTime.Parse(image.Attributes.GetNamedItem("dts").InnerText);
 | 
						|
					userid = image.Attributes.GetNamedItem("userid").InnerText;
 | 
						|
					roimage = ROImage.MakeROImage(MyRODb, filename, content, config, dts, userid);
 | 
						|
				}
 | 
						|
				config = nd.Attributes.GetNamedItem("config").InnerText;
 | 
						|
				dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText);
 | 
						|
				userid = nd.Attributes.GetNamedItem("userid").InnerText;
 | 
						|
				Figure fig = Figure.MakeFigure(rofst, roimage, config, dts, userid);
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		// jsj 4-29-2016  appears to not be used
 | 
						|
		//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)
 | 
						|
			{
 | 
						|
				// create a list of the RO databases currently in the database
 | 
						|
				List<string> roDbNameList = new List<string>();
 | 
						|
				RODbInfoList rolist = RODbInfoList.Get();
 | 
						|
				foreach (RODbInfo rodbinfo in rolist)
 | 
						|
				{
 | 
						|
					if (!roDbNameList.Contains(rodbinfo.ROName))
 | 
						|
						roDbNameList.Add(rodbinfo.ROName);
 | 
						|
				}
 | 
						|
				rolist.Dispose();
 | 
						|
				int cnt = 0;
 | 
						|
				string roNameNew = roname;
 | 
						|
				// if the ROname we are importing is the same as one already in the database
 | 
						|
				// and the ROpaths are different, then rename the one we are importing
 | 
						|
				while (roDbNameList.Contains(roNameNew))
 | 
						|
					roNameNew = string.Format("{0}_{1}",roname,(++cnt).ToString());
 | 
						|
				rv = RODb.MakeRODb(roNameNew, folderpath, dbconnectionstring, config, dts, userid);
 | 
						|
			}
 | 
						|
      newRODbID = rv.RODbID;
 | 
						|
			return rv;
 | 
						|
		}
 | 
						|
 | 
						|
		// jsj 4-29-2016 appears to not be used
 | 
						|
		//private int GetProcedureData(XmlReader xr)
 | 
						|
		//{
 | 
						|
		//	return int.Parse(xr.GetAttribute("itemid"));
 | 
						|
		//}
 | 
						|
 | 
						|
		// jsj 4-29-2016 appears to not be used
 | 
						|
		//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;
 | 
						|
		//	string formatfilename = xr.GetAttribute("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
		//	if (formatid != string.Empty)
 | 
						|
		//		p.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid),formatfilename);
 | 
						|
		//	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;
 | 
						|
			config = StripEnhanced(config);
 | 
						|
			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;
 | 
						|
			// check for a null in case an older export file is being imported (the older files will not have the fromatfilename attribute)
 | 
						|
			XmlNode fnNode = xc.Attributes.GetNamedItem("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
			string formatfilename = (fnNode !=null)? fnNode.InnerText : "";
 | 
						|
			if (formatid != string.Empty)
 | 
						|
        p.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid),formatfilename);
 | 
						|
			p.MyContent.Config = config;
 | 
						|
			p.MyContent.DTS = dts;
 | 
						|
			p.MyContent.UserID = userid;
 | 
						|
			p.Save();
 | 
						|
			if (!Old2NewItem.ContainsKey(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText)))
 | 
						|
				Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), p.ItemID);
 | 
						|
			if (!Old2NewContent.ContainsKey(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText)))
 | 
						|
				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);
 | 
						|
			FixSectionStart(procInfo);
 | 
						|
			return procInfo;
 | 
						|
		}
 | 
						|
		// jsj 2016Feb16 - This appears to not be used
 | 
						|
		//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 = (cbxCvrtROsToText.Checked) ? "" : 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 string GetMyPrefix(string text, int start, int lastIndex)
 | 
						|
		{
 | 
						|
			string defPrefix = text.Substring(start - 3, 3);
 | 
						|
			if (defPrefix != @"\v ") throw new Exception(string.Format("rtf string {0} does not match expected format", defPrefix));
 | 
						|
			string txt = text.Substring(lastIndex, start - lastIndex - 3);
 | 
						|
			int lastSlash = txt.LastIndexOf(@"\");
 | 
						|
			int lastSpace = txt.LastIndexOf(" ");
 | 
						|
			int lastCR = txt.LastIndexOf("\r");
 | 
						|
			if (lastSpace < lastCR)
 | 
						|
				lastSpace = lastCR;
 | 
						|
			if (lastSlash <= lastSpace) //this will return "\v "
 | 
						|
				return defPrefix;
 | 
						|
			txt = txt.Substring(lastSlash);
 | 
						|
			if (txt.StartsWith(@"\'"))	//this is a hex
 | 
						|
				return defPrefix;
 | 
						|
			if (Regex.IsMatch(txt, @"\\u[0-9].*"))	//this is unicode
 | 
						|
				return defPrefix;
 | 
						|
			return @"\v";
 | 
						|
		}
 | 
						|
		private string GetMySuffix(string text, int start)
 | 
						|
		{
 | 
						|
			string txt = text.Substring(start);
 | 
						|
			int firstSlashVeeZero = txt.IndexOf(@"\v0");
 | 
						|
			if (firstSlashVeeZero == 0 && txt.Length > 3 && txt[3] == ' ')	//"\v0 "
 | 
						|
				return text.Substring(start, 4);
 | 
						|
			return text.Substring(start, firstSlashVeeZero + 3);	//everything upto \v0"
 | 
						|
		}
 | 
						|
		private void ConvertImportProcedureROsToText(Content content, XmlNode xn)
 | 
						|
		{
 | 
						|
			bool processATable = content.MyGrid != null; // content.Type == 20008;
 | 
						|
			string newvalue = ""; //value;
 | 
						|
			if (content.MyGrid != null)
 | 
						|
				Console.WriteLine("stop");
 | 
						|
				foreach (XmlNode nd in xn.SelectNodes("rousage"))
 | 
						|
			{
 | 
						|
				string rousageid = nd.Attributes.GetNamedItem("rousageid").InnerText;
 | 
						|
				string roid = nd.Attributes.GetNamedItem("roid").InnerText;
 | 
						|
 | 
						|
				string findLink = @"<START\].*?\[END>";
 | 
						|
				MatchCollection ms = Regex.Matches(content.Text, findLink);
 | 
						|
				string lookFor = string.Format(@"^<START\](\\[^v \\]+)*\\v0(\\[^v '?{{}}~\\]+)*( |\\u[0-9]{{1,4}}?|\\'[0-9a-fA-F]{{2}}|\\[{{}}~])(.*?)(\\[^v'?{{}}~ \\]+)*\\v(\\[^v \\]+)* #Link:ReferencedObject:{0} .*?\[END>$", rousageid);
 | 
						|
				int lastIndex = 0;
 | 
						|
				string newText = content.Text;
 | 
						|
				foreach (Match mm in ms)
 | 
						|
				{
 | 
						|
					int offset = mm.Index;
 | 
						|
					Match m = Regex.Match(mm.Value, lookFor, RegexOptions.Singleline);
 | 
						|
					if (m != null && m.Groups.Count > 1)
 | 
						|
					{
 | 
						|
						string prefix = GetMyPrefix(content.Text, mm.Index, lastIndex);
 | 
						|
						string suffix = GetMySuffix(content.Text, mm.Index + mm.Length);
 | 
						|
						int myIndex = m.Groups[4].Index + mm.Index;
 | 
						|
						int myLength = m.Groups[4].Length;
 | 
						|
						if (m.Groups[3].Value != " ")
 | 
						|
						{
 | 
						|
							myIndex = m.Groups[3].Index + mm.Index;
 | 
						|
							myLength += m.Groups[3].Length;
 | 
						|
						}
 | 
						|
						string gg = newText.Substring(myIndex, myLength);
 | 
						|
						//retval = gg;
 | 
						|
						gg = gg.Replace("{", @"\{").Replace("}", @"\}");
 | 
						|
						string part1 = newText.Substring(0, mm.Index);
 | 
						|
						string part2 = gg;
 | 
						|
						string part3 = newText.Substring(mm.Index + mm.Length);
 | 
						|
						//modify part1 based on prefix
 | 
						|
						if (prefix == @"\v ")
 | 
						|
							part1 = part1.Substring(0, part1.Length - 3);
 | 
						|
						else
 | 
						|
							part1 = part1.Substring(0, part1.Length - 3) + " ";
 | 
						|
						//modify part3 based on suffix
 | 
						|
						if (suffix == @"\v0 ")
 | 
						|
							part3 = part3.Substring(4);
 | 
						|
						else
 | 
						|
							part3 = suffix.Replace(@"\v0", "") + part3.Substring(suffix.Length);
 | 
						|
						if (gg.Contains(@"\u8209?"))
 | 
						|
						{
 | 
						|
							Match mmm = Regex.Match(gg, @"(\\f[0-9]+)(\\u[0-9]{1,4}\?)(\\f[0-9]+ ?)");
 | 
						|
							if (mmm == null)
 | 
						|
								newvalue = newvalue.Replace(@"\u8209?", "-");
 | 
						|
							else
 | 
						|
								newvalue = newvalue.Replace(@"\u8209?", m.Groups[1].Value + @"\u8209?" + m.Groups[3].Value);
 | 
						|
						}
 | 
						|
						if (gg.Contains(@"\u9586?"))
 | 
						|
						{
 | 
						|
							Match mmm = Regex.Match(gg, @"(\\f[0-9]+)(\\u[0-9]{1,4}\?)(\\f[0-9]+ ?)");
 | 
						|
							if (mmm == null)
 | 
						|
								newvalue = newvalue.Replace(@"\u9586?", @"\\");
 | 
						|
							else
 | 
						|
								newvalue = newvalue.Replace(@"\u9586?", m.Groups[1].Value + @"\u9586?" + m.Groups[3].Value);
 | 
						|
						}
 | 
						|
						content.Text = part1 + part2 + part3;
 | 
						|
						break; // Text has been processed
 | 
						|
					}
 | 
						|
					lastIndex = mm.Index + mm.Length;
 | 
						|
				}
 | 
						|
			}
 | 
						|
			if (content.MyGrid != null)
 | 
						|
			{
 | 
						|
				if (content.Text.StartsWith(@"\v "))   // if change in rotable data...
 | 
						|
				{
 | 
						|
					content.Text = newvalue;
 | 
						|
					//if (origROFstInfo != null)
 | 
						|
					//{
 | 
						|
					//	List<string> retlist = origROFstInfo.OnROTableUpdate(this, new ROFstInfoROTableUpdateEventArgs(newvalue, MyGrid.Data));
 | 
						|
					//	if (MyGrid.Data != retlist[1])
 | 
						|
					//	{
 | 
						|
					//		MyGrid.Data = retlist[1];
 | 
						|
					//		retval = Text;
 | 
						|
					//		if (Text != retlist[0])
 | 
						|
					//			Text = retlist[0];
 | 
						|
					//	}
 | 
						|
					//}
 | 
						|
				}
 | 
						|
				//else
 | 
						|
				//{
 | 
						|
				//	// if it's an ro within a table, need to process into an flex grid to save the grid data:
 | 
						|
				//	string findLinkXml = @"<START\].*?\[END>";
 | 
						|
				//	//string lookForXml = string.Format(@"<START\](\\[^v \\]+)*\\v0(\\[^v \\]+)* (.*?)(\\[^v '?\\]+)*\\v(\\[^v \\]+)* #Link:ReferencedObject:{0} .*?\[END>", rousg.ROUsageID);
 | 
						|
				//	string lookForXml = string.Format(@"^<START\](\\[^v \\]+)*\\v0(\\[^v '?{{}}\\]+)*( |\\u[0-9]{{1,4}}?|\\'[0-9a-fA-F]{{2}}|\\[{{}}~])(.*?)(\\[^v'?{{}} \\]+)*\\v(\\[^v \\]+)* #Link:ReferencedObject:{0} .*?\[END>$", rousg.ROUsageID);
 | 
						|
				//	MatchCollection msg = Regex.Matches(MyGrid.Data, findLinkXml);
 | 
						|
				//	int nmsg = msg.Count;
 | 
						|
				//	for (int i = nmsg - 1; i >= 0; i--)
 | 
						|
				//	{
 | 
						|
				//		Match mmg = msg[i];
 | 
						|
				//		int offset = 0; //  crashed in substring line below if using mmg.Index;  Set to 0 and it worked - KBR.
 | 
						|
				//		Match mg = Regex.Match(mmg.Value, lookForXml);// Regex.Match(MyGrid.Data, lookForXml);
 | 
						|
				//		if (mg != null && mg.Groups.Count > 1)
 | 
						|
				//		{
 | 
						|
				//			int myIndex = mg.Groups[4].Index + mmg.Index;
 | 
						|
				//			int myLength = mg.Groups[4].Length;
 | 
						|
				//			if (mg.Groups[3].Value != " ")
 | 
						|
				//			{
 | 
						|
				//				myIndex = mg.Groups[3].Index + mmg.Index;
 | 
						|
				//				myLength += mg.Groups[3].Length;
 | 
						|
				//			}
 | 
						|
				//			string gg = MyGrid.Data.Substring(myIndex, myLength);
 | 
						|
				//			if (newvalue.Contains(@"\u8209?"))
 | 
						|
				//			{
 | 
						|
				//				Match m = Regex.Match(newvalue, @"(\\f[0-9]+)(\\u[0-9]{1,4}\?)(\\f[0-9]+ ?)");
 | 
						|
				//				if (m == null)
 | 
						|
				//					newvalue = newvalue.Replace(@"\u8209?", "-");
 | 
						|
				//				else
 | 
						|
				//					newvalue = newvalue.Replace(@"\u8209?", m.Groups[1].Value + @"\u8209?" + m.Groups[3].Value);
 | 
						|
				//			}
 | 
						|
				//			if (newvalue.Contains(@"\u9586?"))
 | 
						|
				//			{
 | 
						|
				//				Match m = Regex.Match(newvalue, @"(\\f[0-9]+)(\\u[0-9]{1,4}\?)(\\f[0-9]+ ?)");
 | 
						|
				//				if (m == null)
 | 
						|
				//					newvalue = newvalue.Replace(@"\u9586?", @"\\");
 | 
						|
				//				else
 | 
						|
				//					newvalue = newvalue.Replace(@"\u9586?", m.Groups[1].Value + @"\u9586?" + m.Groups[3].Value);
 | 
						|
				//			}
 | 
						|
				//			if (gg != newvalue)
 | 
						|
				//			{
 | 
						|
				//				MyGrid.Data = MyGrid.Data.Substring(0, myIndex) + newvalue + MyGrid.Data.Substring(myIndex + myLength);
 | 
						|
				//			}
 | 
						|
				//			//System.Text.RegularExpressions.Group g = mg.Groups[3];
 | 
						|
				//			//if (g.ToString() != newvalue)
 | 
						|
				//			//{
 | 
						|
				//			//  retval = g.Value;
 | 
						|
				//			//  MyGrid.Data = MyGrid.Data.Substring(0, offset + mmg.Index + g.Index) + newvalue + MyGrid.Data.Substring(offset + mmg.Index + g.Index + g.Length);
 | 
						|
				//			//}
 | 
						|
				//		}
 | 
						|
				//	}
 | 
						|
				//}
 | 
						|
			}
 | 
						|
			content.Save();
 | 
						|
		}
 | 
						|
		private void AddROUsages(Content content, XmlNode xn)
 | 
						|
		{
 | 
						|
			if (_ConvertROsToTextDuringImport)
 | 
						|
			{
 | 
						|
				ConvertImportProcedureROsToText(content, xn);
 | 
						|
			}
 | 
						|
			else
 | 
						|
			{
 | 
						|
				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);
 | 
						|
					if (MyDocVersion.DocVersionAssociations == null)
 | 
						|
						MyDocVersion.RefreshDocVersionAssociations();
 | 
						|
					ROFSTLookup lookup = MyDocVersion.DocVersionAssociations[0].MyROFst.GetROFSTLookup(MyDocVersion);
 | 
						|
					string roval = lookup.GetRoValue(roid);
 | 
						|
					if (roval == "?")
 | 
						|
					{
 | 
						|
						RoUsageInfo roui = RoUsageInfo.Get(int.Parse(rousageid));
 | 
						|
					}
 | 
						|
					else
 | 
						|
					{
 | 
						|
						RoUsage rou = RoUsage.MakeRoUsage(content, roid, config, dts, userid, MyRODb);
 | 
						|
						rou.Save();
 | 
						|
						RoUsageInfo roui = RoUsageInfo.Get(rou.ROUsageID);
 | 
						|
						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.FixContentText(roui, roval, 0, MyDocVersion.DocVersionAssociations[0].MyROFst);
 | 
						|
						}
 | 
						|
					}
 | 
						|
					//content.Save();
 | 
						|
				}
 | 
						|
				content.Save();
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		// jsj 4-29-2016 appears to not be used
 | 
						|
		//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.GetByNameOrCreate(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;
 | 
						|
					case "entry": // this is word section max out the status bar
 | 
						|
						lblImportStep.Text = "Word Section Data";
 | 
						|
						pbImportStep.Maximum = 1;
 | 
						|
						pbImportStep.PerformStep();
 | 
						|
						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);
 | 
						|
		}
 | 
						|
		// jsj 2016Feb16 - This appears to not be used
 | 
						|
		//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;
 | 
						|
			config = StripEnhanced(config);
 | 
						|
			int contentid = int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText);
 | 
						|
      CheckForFloatingFoldout(contentid, config);
 | 
						|
      string userid = xc.Attributes.GetNamedItem("userid").InnerText;
 | 
						|
			DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText);
 | 
						|
			using (step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Table))
 | 
						|
			{
 | 
						|
				step.DTS = dts;
 | 
						|
				step.UserID = userid;
 | 
						|
				// check for a null in case an older export file is being imported (the older files will not have the fromatfilename attribute)
 | 
						|
				XmlNode fnNode = xc.Attributes.GetNamedItem("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
				string formatfilename = (fnNode != null) ? fnNode.InnerText : "";
 | 
						|
				if (formatid != string.Empty)
 | 
						|
					step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid), formatfilename);
 | 
						|
				step.MyContent.Config = config;
 | 
						|
				step.MyContent.DTS = dts;
 | 
						|
				step.MyContent.UserID = userid;
 | 
						|
				step.Save();
 | 
						|
				if (!Old2NewItem.ContainsKey(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText)))
 | 
						|
					Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID);
 | 
						|
				if (!Old2NewContent.ContainsKey(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText)))
 | 
						|
					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);
 | 
						|
		}
 | 
						|
 | 
						|
		// jsj 4-29-2016 appears to not be used
 | 
						|
		//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;
 | 
						|
		//	string formatfilename = xr.GetAttribute("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
		//	if (formatid != string.Empty)
 | 
						|
		//		step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid),formatfilename);
 | 
						|
		//	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;
 | 
						|
			config = StripEnhanced(config);
 | 
						|
			int contentid = int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText);
 | 
						|
      CheckForFloatingFoldout(contentid, config);
 | 
						|
      string userid = xc.Attributes.GetNamedItem("userid").InnerText;
 | 
						|
			DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText);
 | 
						|
			using (step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Step))
 | 
						|
			{
 | 
						|
				step.DTS = dts;
 | 
						|
				step.UserID = userid;
 | 
						|
				// check for a null in case an older export file is being imported (the older files will not have the fromatfilename attribute)
 | 
						|
				XmlNode fnNode = xc.Attributes.GetNamedItem("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
				string formatfilename = (fnNode != null) ? fnNode.InnerText : "";
 | 
						|
				if (formatid != string.Empty)
 | 
						|
					step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid), formatfilename);
 | 
						|
				step.MyContent.Config = config;
 | 
						|
				step.MyContent.DTS = dts;
 | 
						|
				step.MyContent.UserID = userid;
 | 
						|
				step.Save();
 | 
						|
				if (!Old2NewItem.ContainsKey(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText)))
 | 
						|
					Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID);
 | 
						|
				if (!Old2NewContent.ContainsKey(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText)))
 | 
						|
					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);
 | 
						|
		}
 | 
						|
 | 
						|
		// jsj 4-29-2016 appears to not be used
 | 
						|
		//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;
 | 
						|
		//	string formatfilename = xr.GetAttribute("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
		//	if (formatid != string.Empty)
 | 
						|
		//		step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid), formatfilename);
 | 
						|
		//	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;
 | 
						|
			config = StripEnhanced(config);
 | 
						|
			int contentid = int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText);
 | 
						|
      CheckForFloatingFoldout(contentid, config);
 | 
						|
      string userid = xc.Attributes.GetNamedItem("userid").InnerText;
 | 
						|
			DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText);
 | 
						|
			using (step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.RNO))
 | 
						|
			{
 | 
						|
				step.DTS = dts;
 | 
						|
				step.UserID = userid;
 | 
						|
				// check for a null in case an older export file is being imported (the older files will not have the fromatfilename attribute)
 | 
						|
				XmlNode fnNode = xc.Attributes.GetNamedItem("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
				string formatfilename = (fnNode != null) ? fnNode.InnerText : "";
 | 
						|
				if (formatid != string.Empty)
 | 
						|
					step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid), formatfilename);
 | 
						|
				step.MyContent.Config = config;
 | 
						|
				step.MyContent.DTS = dts;
 | 
						|
				step.MyContent.UserID = userid;
 | 
						|
				step.Save();
 | 
						|
				if (!Old2NewItem.ContainsKey(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText)))
 | 
						|
					Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID);
 | 
						|
				if (!Old2NewContent.ContainsKey(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText)))
 | 
						|
					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);
 | 
						|
		}
 | 
						|
 | 
						|
		// jsj 4-29-2016 appears to not be used
 | 
						|
		//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;
 | 
						|
		//	string formatfilename = xr.GetAttribute("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
		//	if (formatid != string.Empty)
 | 
						|
		//		step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid), formatfilename);
 | 
						|
		//	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;
 | 
						|
			config = StripEnhanced(config);
 | 
						|
			int contentid = int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText);
 | 
						|
      CheckForFloatingFoldout(contentid, config);
 | 
						|
      string userid = xc.Attributes.GetNamedItem("userid").InnerText;
 | 
						|
			DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText);
 | 
						|
			using (step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Note))
 | 
						|
			{
 | 
						|
				step.DTS = dts;
 | 
						|
				step.UserID = userid;
 | 
						|
				// check for a null in case an older export file is being imported (the older files will not have the fromatfilename attribute)
 | 
						|
				XmlNode fnNode = xc.Attributes.GetNamedItem("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
				string formatfilename = (fnNode != null) ? fnNode.InnerText : "";
 | 
						|
				if (formatid != string.Empty)
 | 
						|
					step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid), formatfilename);
 | 
						|
				step.MyContent.Config = config;
 | 
						|
				step.MyContent.DTS = dts;
 | 
						|
				step.MyContent.UserID = userid;
 | 
						|
				step.Save();
 | 
						|
				if (!Old2NewItem.ContainsKey(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText)))
 | 
						|
					Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID);
 | 
						|
				if (!Old2NewContent.ContainsKey(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText)))
 | 
						|
					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);
 | 
						|
		}
 | 
						|
 | 
						|
		// jsj 4-29-2016 appears to not be used
 | 
						|
		//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;
 | 
						|
		//	string formatfilename = xr.GetAttribute("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
		//	if (formatid != string.Empty)
 | 
						|
		//		step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid), formatfilename);
 | 
						|
		//	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;
 | 
						|
			config = StripEnhanced(config);
 | 
						|
			int contentid = int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText);
 | 
						|
      CheckForFloatingFoldout(contentid, config);
 | 
						|
      string userid = xc.Attributes.GetNamedItem("userid").InnerText;
 | 
						|
			DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText);
 | 
						|
			using (step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Caution))
 | 
						|
			{
 | 
						|
				step.DTS = dts;
 | 
						|
				step.UserID = userid;
 | 
						|
				// check for a null in case an older export file is being imported (the older files will not have the fromatfilename attribute)
 | 
						|
				XmlNode fnNode = xc.Attributes.GetNamedItem("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
				string formatfilename = (fnNode != null) ? fnNode.InnerText : "";
 | 
						|
				if (formatid != string.Empty)
 | 
						|
					step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid), formatfilename);
 | 
						|
				step.MyContent.Config = config;
 | 
						|
				step.MyContent.DTS = dts;
 | 
						|
				step.MyContent.UserID = userid;
 | 
						|
				step.Save();
 | 
						|
				if (!Old2NewItem.ContainsKey(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText)))
 | 
						|
					Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID);
 | 
						|
				if (!Old2NewContent.ContainsKey(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText)))
 | 
						|
					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;
 | 
						|
		}
 | 
						|
 | 
						|
		// js j4-29-2016 appears to not be used
 | 
						|
		//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;
 | 
						|
		//	string formatfilename = xr.GetAttribute("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
		//	if (formatid != string.Empty)
 | 
						|
		//		sect.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid), formatfilename);
 | 
						|
		//	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;
 | 
						|
			config = StripEnhanced(config);
 | 
						|
      int contentid = int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText);
 | 
						|
      CheckForFloatingFoldout(contentid, config);
 | 
						|
			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;
 | 
						|
			// check for a null in case an older export file is being imported (the older files will not have the fromatfilename attribute)
 | 
						|
			XmlNode fnNode = xc.Attributes.GetNamedItem("formatfilename"); //Bug fix B2016-103  the formatid in an Export file may not match the formatid where you are importing to
 | 
						|
			string formatfilename = (fnNode != null) ? fnNode.InnerText : "";
 | 
						|
			if (formatid != string.Empty)
 | 
						|
				sect.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid), formatfilename);
 | 
						|
			sect.MyContent.Config = config;
 | 
						|
			sect.MyContent.DTS = dts;
 | 
						|
			sect.MyContent.UserID = userid;
 | 
						|
			sect.Save();
 | 
						|
			if (!Old2NewContent.ContainsKey(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText)))
 | 
						|
				Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), sect.MyContent.ContentID);
 | 
						|
			if (!Old2NewItem.ContainsKey(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText)))
 | 
						|
				Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), sect.ItemID);
 | 
						|
			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 string StripEnhanced(string config)
 | 
						|
		{
 | 
						|
			if (config.Length > 0)
 | 
						|
			{
 | 
						|
				XmlDocument xd = new XmlDocument();
 | 
						|
				xd.LoadXml(config);
 | 
						|
				XmlNodeList nl = xd.DocumentElement.SelectNodes("//Enhanced");
 | 
						|
				foreach (XmlNode nd in nl)
 | 
						|
					nd.ParentNode.RemoveChild(nd);
 | 
						|
				return xd.OuterXml;
 | 
						|
			}
 | 
						|
			return config;
 | 
						|
		}
 | 
						|
    private void CheckForFloatingFoldout(int contentid, string config)
 | 
						|
    {
 | 
						|
      if (config != string.Empty)
 | 
						|
      {
 | 
						|
        XmlDocument xd = new XmlDocument();
 | 
						|
        xd.LoadXml(config);
 | 
						|
        XmlNode xn = xd.SelectSingleNode("Config/Step/@FloatingFoldout");
 | 
						|
        if (xn != null)
 | 
						|
          floatFoldout.Add(contentid, int.Parse(xn.InnerText));
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
		// jsj 2016Feb16 - This appears to not be used
 | 
						|
		//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();
 | 
						|
		}
 | 
						|
 | 
						|
		// jsj 4-29-2016 appears to not be used
 | 
						|
		//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();
 | 
						|
		}
 | 
						|
		// jsj 2016Feb16 - This appears to not be used
 | 
						|
		//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;
 | 
						|
        DateTime dts = DateTime.Parse(xn.Attributes.GetNamedItem("dts").InnerText);
 | 
						|
				if (libtitle != "")
 | 
						|
				{
 | 
						|
					DocumentInfoList dil = DocumentInfoList.GetLibraries(true);
 | 
						|
					foreach (DocumentInfo di in dil)
 | 
						|
					{
 | 
						|
						if (di.LibTitle == libtitle && di.DTS == dts)
 | 
						|
							return di.Get(); // found library document in exiting database
 | 
						|
					}
 | 
						|
				}
 | 
						|
        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;
 | 
						|
        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();
 | 
						|
    }
 | 
						|
	}
 | 
						|
}
 |