Added Command Line Parameters:

Auto - Used to run from a batch file.  Automatically starts the processing
PurgeData - Yes - Create a new database. No - Append to an existing database
DBName - Database name
ProcedureSetPath - 16 bit source data path
Skip - How many procedures to skip
HowMany - How many procedures to process
Support the ability to append to an existing procedure set
Use new command line parameters
This commit is contained in:
Rich 2014-12-08 20:24:02 +00:00
parent 368280d7ee
commit 165036ff44
3 changed files with 148 additions and 41 deletions

View File

@ -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);
@ -39,6 +39,7 @@ namespace DataLoader
// will be migrated. After that, any remaining library documents will be added to
// the section table without a reference from the structuretbl.
Dictionary<string, int> dicLibDocSect = new Dictionary<string, int>();
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<string, int>();
@ -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

View File

@ -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);

View File

@ -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());
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);
}