diff --git a/PROMS/DataLoader/LibDoc.cs b/PROMS/DataLoader/LibDoc.cs index 3290f646..0bfb131a 100644 --- a/PROMS/DataLoader/LibDoc.cs +++ b/PROMS/DataLoader/LibDoc.cs @@ -29,7 +29,7 @@ namespace DataLoader public partial class Loader { - private void MigrateLibDocs(OleDbConnection cn, string pth) + private void MigrateLibDocs(OleDbConnection cn, string pth, bool appending) { // MessageBox.Show("Before LibDocs"); frmMain.AddInfo("Before MigrateLibDocs{0}\r\n{1}", GC.GetTotalMemory(true), VEPROMS.CSLA.Library.CSLACache.UsageAll); @@ -38,7 +38,8 @@ namespace DataLoader // file. During processing for procedures/sections occurs, the used library documents // will be migrated. After that, any remaining library documents will be added to // the section table without a reference from the structuretbl. - Dictionary dicLibDocSect = new Dictionary(); + Dictionary dicLibDocSect = new Dictionary(); + VEPROMS.CSLA.Library.DocumentInfoList docList = VEPROMS.CSLA.Library.DocumentInfoList.Get(); frmMain.UpdateLabelsLibDocs(0, 0); if (Directory.Exists(pth + "\\rtffiles")) { @@ -47,8 +48,18 @@ namespace DataLoader frmMain.UpdateLabelsSetProc(fis.Length); foreach (FileInfo fi in fis) { + string fName = fi.Name.Substring(0, 8).ToUpper(); frmMain.UpdateLabelsLibDocs(1, 0); - dicLibDocSect[fi.Name.Substring(0, 8).ToUpper()] = MigrateLibDoc(fi); + if (appending) + { + foreach (VEPROMS.CSLA.Library.DocumentInfo docInfo in docList) + { + if(docInfo.Config.Contains(string.Format("\"{0}.LIB\"", fName))) + dicLibDocSect[fName] = docInfo.DocID; + } + } + else + dicLibDocSect[fName] = MigrateLibDoc(fi); } } dicLibDocRef = new Dictionary(); @@ -59,7 +70,7 @@ namespace DataLoader foreach (DataRow dr_doc in ds_doc.Tables[0].Rows) { frmMain.UpdateLabelsLibDocs(0, 1); - string key = dr_doc["FROMNUMBER"].ToString().PadRight(20) + dr_doc["FROMSEQUEN"].ToString().PadRight(10); + string key = dr_doc["FROMNUMBER"].ToString().PadRight(20) + TextConvert.ConvertSeq(dr_doc["FROMSEQUEN"].ToString()).PadRight(10); if (!dicLibDocSect.ContainsKey(dr_doc["TONUMBER"].ToString().ToUpper())) log.ErrorFormat("Error setting library document references: {0}", dr_doc["TONUMBER"].ToString().ToUpper()); else diff --git a/PROMS/DataLoader/Loader.cs b/PROMS/DataLoader/Loader.cs index 36092815..6b068d6b 100644 --- a/PROMS/DataLoader/Loader.cs +++ b/PROMS/DataLoader/Loader.cs @@ -85,10 +85,11 @@ namespace DataLoader { //_FmtAllPath = frmMain.MySettings.FormatFolder; //_GenmacAllPath = frmMain.MySettings.GenMacFolder; + vlnServer.XMLControlPath = Application.StartupPath + "\\vlncontrol.xml"; frmMain.Status = "Make Connection"; // make the initial database connection record, annotation types & top // system folder. - dbConn = Connection.MakeConnection("Default", "Default", frmMain.MySettings.ConnectionString.Replace("{DBName}",frmMain.MySettings.DBName), 1, null, DateTime.Now, "Migration"); + dbConn = Connection.MakeConnection("Default", "Default", frmMain.MySettings.ConnectionString.Replace("{DBName}",frmMain.DBName), 1, null, DateTime.Now, "Migration"); ConfigFile cfg = new ConfigFile(); frmMain.Status = "Add AnnotationTypes"; @@ -152,7 +153,7 @@ namespace DataLoader frmMain.Status = "Getting Connection"; // get the connection and annotations from the existing database. dbConn = Connection.GetByName("Default"); - //dbConn = Connection.MakeConnection("Default", "Default", frmMain.MySettings.ConnectionString.Replace("{DBName}",frmMain.MySettings.DBName), 1, null, DateTime.Now, "Migration"); + //dbConn = Connection.MakeConnection("Default", "Default", frmMain.MySettings.ConnectionString.Replace("{DBName}",frmMain.DBName), 1, null, DateTime.Now, "Migration"); frmMain.Status = "Getting AnnotationTypes"; CommentType = AnnotationType.GetByName("Comment"); // .MakeAnnotationType("Comment", null); diff --git a/PROMS/DataLoader/frmLoader.cs b/PROMS/DataLoader/frmLoader.cs index ca7ba3b4..099b31ea 100644 --- a/PROMS/DataLoader/frmLoader.cs +++ b/PROMS/DataLoader/frmLoader.cs @@ -59,9 +59,56 @@ namespace DataLoader public int pbStepMaximum { get { return pbStep.Maximum; } set { pbStep.Maximum = value; } } public int pbStepValue { get { return pbStep.Value; } set { pbStep.Value = value; } } public int pbProcValue { get { return pbProc.Value; } set { pbProc.Value = value; } } + private bool _Automatic = false; + public bool Automatic + { + get { return _Automatic; } + set { _Automatic = value; } + } + private string _DBName = null; + public string DBName + { + get + { + if (_DBName != null) return _DBName; + return MySettings.DBName; + } + } + private string _ProcedureSetPath = null; + public string ProcedureSetPath + { + get + { + if (_ProcedureSetPath != null) return _ProcedureSetPath; + return MySettings.ProcedureSetPath; + } + } + private int? _SkipProcedures = null; public int SkipProcedures { - get { return MySettings.Skip; } + get + { + if (_SkipProcedures != null) return (int)_SkipProcedures; + return MySettings.Skip; + } + } + private int? _HowManyProcedures = null; + public int HowManyProcedures + { + get + { + if (_HowManyProcedures != null) return (int)_HowManyProcedures; + return MySettings.HowMany; + } + } + private bool? _PurgeExistingData = null; + public bool PurgeExistingData + { + get + { + if (_PurgeExistingData != null) return (bool)_PurgeExistingData; + return MySettings.PurgeExistingData; + } } public string Status { @@ -255,13 +302,13 @@ namespace DataLoader { _ProcessTime = value; // Set the Log File Name when the ProcessTime is set - ChangeLogFileName("LogFileAppender", MySettings.DBName + " " + ProcessTime.ToString("yyyyMMdd HHmmss") + " DMErrorLog.txt"); + ChangeLogFileName("LogFileAppender", DBName + " " + ProcessTime.ToString("yyyyMMdd HHmmss") + " DMErrorLog.txt"); } } private void btnConvert_Click(object sender, System.EventArgs e) { // Set Connection String - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); + Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); // Setup based upon RedPDF Setting // if in debug mode, pdf output is red VlnSettings.DebugMode = (MySettings.ExecutionMode == ExecutionMode.Debug) && MySettings.RedPDFs; @@ -291,7 +338,7 @@ namespace DataLoader if (!FormatsOnly && wordProcesses.Length > 0) { AddError("{0} copies of MS Word are running", wordProcesses.Length); - if (MessageBox.Show("MS Word is Running and must be stopped before proceeding.\n\nStop MS Word?", "MS Word is Running", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + if (Automatic || MessageBox.Show("MS Word is Running and must be stopped before proceeding.\n\nStop MS Word?", "MS Word is Running", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { WordDoc.TerminateProcesses(wordProcesses); MyFrmErrors.Clear(); @@ -315,10 +362,10 @@ namespace DataLoader // Create Database // if purge data, purge it all & reload folders & security. - if (MySettings.PurgeExistingData) + if (PurgeExistingData) { if(!RunScript("BuildVEPROMS.Sql", "Master")) return; - if(!RunScript("PROMS2010.SQL", MySettings.DBName)) return; + if(!RunScript("PROMS2010.SQL", DBName)) return; Status = "Purging Data"; ldr.ClearData(); Status = "Loading Folders"; @@ -344,7 +391,7 @@ namespace DataLoader MyInfo = "Computer Name: " + SystemInformation.ComputerName.ToUpper(); foreach (DocVersionInfo vi in vl) { - if (!MySettings.OnlyThisSet || (vi.Title.ToUpper() == MySettings.ProcedureSetPath.ToUpper())) // is this the procedure set we want to convert? + if (!MySettings.OnlyThisSet || (vi.Title.ToUpper() == ProcedureSetPath.ToUpper())) // is this the procedure set we want to convert? { using (DocVersion v = DocVersion.Get(vi.VersionID)) { @@ -380,7 +427,7 @@ namespace DataLoader bool ok = false; Status = String.Format("Running Script '{0}'", scriptName); string script = GetScript(scriptName); - script = script.Replace("{DBName}", MySettings.DBName); + script = script.Replace("{DBName}", DBName); script = script.Replace("{DBPath}", MySettings.DBPath); SQLScriptRunner ssr = new SQLScriptRunner(script, MySettings.ConnectionString.Replace("{DBName}", dbName)); ssr.InfoMessage += new SQLScriptRunnerEvent(ssr_InfoMessage); @@ -404,9 +451,9 @@ namespace DataLoader { bool ok = false; Status = String.Format("Running {0}", script); - script = script.Replace("{DBName}", MySettings.DBName); + script = script.Replace("{DBName}", DBName); script = script.Replace("{DBPath}", MySettings.DBPath); - SQLScriptRunner ssr = new SQLScriptRunner(script, MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName)); + SQLScriptRunner ssr = new SQLScriptRunner(script, MySettings.ConnectionString.Replace("{DBName}", DBName)); ssr.InfoMessage += new SQLScriptRunnerEvent(ssr_InfoMessage); try { @@ -417,7 +464,7 @@ namespace DataLoader catch (Exception ex) { AddInfo("====****===="); - AddError(ex, "While processing database {0}", MySettings.DBName); + AddError(ex, "While processing database {0}", DBName); AddInfo("====****===="); Status = String.Format("Script {0} Failed", script); } @@ -425,7 +472,7 @@ namespace DataLoader } private void Backup(string suffix) { - SQLScriptRunner ssrbu = new SQLScriptRunner(MySettings.DBName, MySettings.BackupFolder, + SQLScriptRunner ssrbu = new SQLScriptRunner(DBName, MySettings.BackupFolder, MySettings.ConnectionString.Replace("{DBName}", "Master"), ProcessTime, suffix); ssrbu.InfoMessage += new SQLScriptRunnerEvent(ssr_InfoMessage); ssrbu.Run(); @@ -494,7 +541,7 @@ namespace DataLoader private void btnVesam_Click(object sender, EventArgs e) { // if purge data, purge it all & reload folders. - if (MySettings.PurgeExistingData) + if (PurgeExistingData) { ldr.ClearData(); ldr.LoadFolders(MySettings.VEPromsPath); @@ -612,6 +659,7 @@ namespace DataLoader MySettings.OnlyThisSet = (Properties.Settings.Default.OnlyThisSet == CheckState.Checked); MySettings.CheckRTF = (Properties.Settings.Default.CheckRTF == CheckState.Checked); MySettings.Skip = Properties.Settings.Default.Skip; + MySettings.HowMany = Properties.Settings.Default.HowMany; MySettings.ConvertTo = (AccPageConversion)Properties.Settings.Default.ConvertTo; MySettings.ExecutionMode = (ExecutionMode)Properties.Settings.Default.ExecutionMode; MySettings.Phase1Suffix = Properties.Settings.Default.Phase1; @@ -657,7 +705,6 @@ namespace DataLoader } private void SaveSettings() { - Properties.Settings.Default.DbfPathname = MySettings.ProcedureSetPath; Properties.Settings.Default.VePromsFilename = MySettings.VEPromsPath; Properties.Settings.Default.VeSamFilename = MySettings.VESamFile; Properties.Settings.Default.DbfPathname = MySettings.ProcedureSetPath; @@ -673,6 +720,7 @@ namespace DataLoader Properties.Settings.Default.OnlyThisSet = MySettings.OnlyThisSet ? CheckState.Checked : CheckState.Unchecked; Properties.Settings.Default.CheckRTF = MySettings.CheckRTF ? CheckState.Checked : CheckState.Unchecked; Properties.Settings.Default.Skip = MySettings.Skip; + Properties.Settings.Default.HowMany = MySettings.HowMany; Properties.Settings.Default.ConvertTo = (int)MySettings.ConvertTo; Properties.Settings.Default.ExecutionMode = (int)MySettings.ExecutionMode; Properties.Settings.Default.Phase1 = MySettings.Phase1Suffix; @@ -693,11 +741,57 @@ namespace DataLoader private void frmLoader_Load(object sender, EventArgs e) { LoadSettings(); + LoadCommandLineSettings(); _Loading = false; MSWordToPDF.CloseWordWhenDone = false; Format.FormatLoaded += new FormatEvent(Format_FormatLoaded); StepRTB.DoSpellCheck = false; } + private void LoadCommandLineSettings() + { + string[] parameters = System.Environment.CommandLine.Split(" ".ToCharArray()); + if (ParameterCheck(parameters, "/Auto")!=null) + { + Automatic = true; + _DBName = ParameterCheck(parameters, "/DBName="); + _ProcedureSetPath = ParameterCheck(parameters, "/ProcedureSetPath="); + _SkipProcedures = IntParameterCheck(parameters, "/Skip="); + _HowManyProcedures = IntParameterCheck(parameters, "/HowMany="); + _PurgeExistingData = BooleanParameterCheck(parameters, "/PurgeData="); + vlnServer.XMLControlPath = Application.StartupPath + @"\vlnControl.xml"; + tAutomatic.Interval = 1000;//Wait 1000 Milliseconds + tAutomatic.Enabled = true; + tAutomatic.Tick += new EventHandler(tAutomatic_Tick); + } + } + Timer tAutomatic = new Timer(); + void tAutomatic_Tick(object sender, EventArgs e) + { + tAutomatic.Enabled = false; + completeToolStripMenuItem_Click(this, new EventArgs()); + this.Close(); + } + private int? IntParameterCheck(string[] parameters, string lookfor) + { + string pcheck = ParameterCheck(parameters, lookfor); + if (pcheck != null) return int.Parse(pcheck); + return null; + } + private bool? BooleanParameterCheck(string[] parameters, string lookfor) + { + string pcheck = ParameterCheck(parameters, lookfor); + if (pcheck != null) return bool.Parse(pcheck); + return null; + } + private string ParameterCheck(string[] parameters, string lookfor) + { + foreach (string parameter in parameters) + { + if (parameter.ToUpper().StartsWith(lookfor.ToUpper())) + return parameter.Substring(lookfor.Length); + } + return null; + } void Format_FormatLoaded(object sender, FormatEventArgs args) { if (args.Status.StartsWith("Loading Format")) @@ -786,8 +880,8 @@ namespace DataLoader string bckupFileName = MySettings.BackupFileName; if (!bckupFileName.EndsWith(".bak")) bckupFileName += ".bak"; string backupPath = MySettings.LogFilePath + @"\" + bckupFileName + "'\""; - string bckupcmd = string.Format("sqlcmd -E -S.\\sqlexpress -Q \"backup database [{0}] to disk = '{1}", MySettings.DBName, backupPath); - string rstorecmd = string.Format("sqlcmd -E -S.\\sqlexpress -Q \"restore database [{0}] from disk = '{1}", MySettings.DBName, backupPath); + string bckupcmd = string.Format("sqlcmd -E -S.\\sqlexpress -Q \"backup database [{0}] to disk = '{1}", DBName, backupPath); + string rstorecmd = string.Format("sqlcmd -E -S.\\sqlexpress -Q \"restore database [{0}] from disk = '{1}", DBName, backupPath); StreamWriter fsbackup = new StreamWriter(MySettings.LogFilePath + @"\Backup" + bckupFileName.Substring(0, bckupFileName.Length - 4) + ".bat"); fsbackup.WriteLine(bckupcmd); fsbackup.WriteLine(pause); @@ -864,7 +958,7 @@ namespace DataLoader Backup("_" + MySettings.Phase2Suffix); mb.Append("Phase 2 Backup Complete"); // only do the following two steps if we are NOT appending to an existing set - if (MySettings.PurgeExistingData) + if (PurgeExistingData) { // Phase 3 - Convert to Change Manager Version if (!ConvertToChangeManager()) return; @@ -897,15 +991,16 @@ namespace DataLoader //Clipboard.Clear(); //Clipboard.SetText(mb.ToString()); AddInfo(mb.ToString()); - MessageBox.Show(mb.ToString(), "Processing Complete", MessageBoxButtons.OK, MessageBoxIcon.Information); + if (!Automatic) + MessageBox.Show(mb.ToString(), "Processing Complete", MessageBoxButtons.OK, MessageBoxIcon.Information); } private bool ConvertToChangeManager() { - return RunScript("PROMStoCM.sql", MySettings.DBName); + return RunScript("PROMStoCM.sql", DBName); } private bool ConvertToApproval() { - return RunScript("PROMStoAPPR.sql", MySettings.DBName); + return RunScript("PROMStoAPPR.sql", DBName); } private void formatOnlyToolStripMenuItem_Click(object sender, EventArgs e) { @@ -942,7 +1037,7 @@ namespace DataLoader } private void fixTransitionsToolStripMenuItem_Click(object sender, EventArgs e) { - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); + Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); ProcessTime = DateTime.Now; RunScript("vesp_TurnChangeManagerOFF"); btnFixTransitions_Click(this, new System.EventArgs()); @@ -987,7 +1082,7 @@ namespace DataLoader } private void load16BitApprovalToolStripMenuItem_Click(object sender, EventArgs e) { - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); + Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); ProcessTime = DateTime.Now; if (LoadApprovedData()) { @@ -1005,9 +1100,9 @@ namespace DataLoader } private bool LoadApprovedData() { - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); + Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); Status = "Converting 16-Bit Approved Data"; - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); + Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); bool ok = ldr.BuildApprovedRevision(); Status = "Conversion " + (ok ? "Succeeded" : "Failed"); return ok; @@ -1026,7 +1121,7 @@ namespace DataLoader } private bool FixProceduresAndFunctions() { - return RunScript("PROMSFixes.sql", MySettings.DBName); + return RunScript("PROMSFixes.sql", DBName); } #endregion #region Settings Menu Items @@ -1134,13 +1229,13 @@ namespace DataLoader //{ // int good = 0; // int bad = 0; - // string saveDbName = MySettings.DBName; + // string saveDbName = DBName; // foreach (string s in cms) // { // try // { // AddInfo("\r\nUpdating Formats in database {0}\r\n", s); - // MySettings.DBName = s; + // DBName = s; // Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", s); // Format.UpdateFormats(MySettings.FormatFolder, MySettings.GenMacFolder); // Database.VEPROMS_SqlConnection.Close(); @@ -1155,7 +1250,7 @@ namespace DataLoader // bad++; // } // } - // MySettings.DBName = saveDbName; + // DBName = saveDbName; // AddInfo("\r\nUpdating Formats in databases complete. {0} Fixed, {1} Failures", good, bad); // Status = String.Format("Updating Formats in databases complete. {0} Fixed, {1} Failures", good, bad); //} @@ -1163,7 +1258,7 @@ namespace DataLoader } private void fixROValuesToolStripMenuItem_Click(object sender, EventArgs e) { - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); + Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); ROFixer myRoFixer = new ROFixer(MySettings.LogFilePath,this); myRoFixer.StatusChanged += new ROFixerEvent(myRoFixer_StatusChanged); TimeSpan howlong = myRoFixer.Process(); @@ -1188,7 +1283,7 @@ namespace DataLoader { tv.CheckBoxes = false; tv.Nodes.Clear(); - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); + Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); FolderInfo fi = FolderInfo.GetTop(); TreeNode tn = tv.Nodes.Add(fi.Name); @@ -1236,7 +1331,7 @@ namespace DataLoader if (tn.Tag is ProcedureInfo) { ProcedureInfo pi = tn.Tag as ProcedureInfo; - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); + Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); ROFixer myRoFixer = new ROFixer(MySettings.LogFilePath, this); myRoFixer.StatusChanged += new ROFixerEvent(myRoFixer_StatusChanged); TimeSpan howlong = myRoFixer.Process(pi); @@ -1246,7 +1341,7 @@ namespace DataLoader else if (tn.Tag is DocVersionInfo) { DocVersionInfo dvi = tn.Tag as DocVersionInfo; - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); + Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); ROFixer myRoFixer = new ROFixer(MySettings.LogFilePath, this); myRoFixer.StatusChanged += new ROFixerEvent(myRoFixer_StatusChanged); TimeSpan howlong = myRoFixer.Process(dvi); @@ -1265,7 +1360,7 @@ namespace DataLoader if (tn.Tag is FolderInfo) { FolderInfo fi = tn.Tag as FolderInfo; - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); + Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); dlgExportImport dlg = new dlgExportImport("export", fi); dlg.ShowDialog(this); } @@ -1277,7 +1372,7 @@ namespace DataLoader if (tn.Tag is FolderInfo) { FolderInfo fi = tn.Tag as FolderInfo; - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); + Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); dlgExportImport dlg = new dlgExportImport("import", fi); dlg.ShowDialog(this); } @@ -1290,7 +1385,7 @@ namespace DataLoader if (tn.Tag is ProcedureInfo) { ProcedureInfo pi = tn.Tag as ProcedureInfo; - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); + Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); dlgExportImport dlg = new dlgExportImport("export", pi); dlg.ShowDialog(this); }