}//_runNonVersionScripts private void _updateHistoryTable(CswNbtResources CswNbtResources, SchemaInfoEventArgs SchemaInfoEventArgs) { CswTableSelect UpdateHistorySelect = CswNbtResources.makeCswTableSelect("SchemaUpdater_updatehistory_select", "update_history"); DataTable UpdateHistoryTable = UpdateHistorySelect.getTable(string.Empty, new Collection <OrderByClause> { new OrderByClause("updatehistoryid", CswEnumOrderByType.Descending) }); SchemaInfoEventArgs.UpdateHistoryTable = UpdateHistoryTable; if (OnGetSchemaInfo != null) { OnGetSchemaInfo(SchemaInfoEventArgs); } if (OnUpdateDone != null) { OnUpdateDone(SchemaInfoEventArgs); } }//_updateHistoryTable()
public void GetAccessIdInfo(string AccessId) { try { SetStatus("Initializing Selected Schema"); CswNbtResources CswNbtResources = null; _InitSessionResources(AccessId, ref CswNbtResources); SchemaInfoEventArgs e = new SchemaInfoEventArgs(); // Initialize CswSchemaScriptsProd -- we must do this here so that database resources are also initialized _CswSchemaScriptsProd = new CswSchemaScriptsProd(_CswNbtResources); _CswSchemaUpdater = new CswSchemaUpdater(AccessId, new CswSchemaUpdater.ResourcesInitHandler(_InitSessionResources), _CswSchemaScriptsProd); e.MinimumSchemaVersion = _CswSchemaUpdater.MinimumVersion; e.LatestSchemaVersion = _CswSchemaUpdater.LatestVersion; CswSchemaVersion CurrentVersion = new CswSchemaVersion(CswNbtResources.ConfigVbls.getConfigVariableValue("schemaversion").ToString()); e.CurrentSchemaVersion = CurrentVersion; CswTableSelect UpdateHistorySelect = CswNbtResources.makeCswTableSelect("SchemaUpdater_updatehistory_select", "update_history"); DataTable UpdateHistoryTable = UpdateHistorySelect.getTable(string.Empty, new Collection <OrderByClause> { new OrderByClause("updatehistoryid", CswEnumOrderByType.Descending) }); e.UpdateHistoryTable = UpdateHistoryTable; if (OnGetSchemaInfo != null) { OnGetSchemaInfo(e); } _CloseSessionResources(CswNbtResources); SetStatus("Initializing Selected Schema: Done"); } catch (Exception ex) { SetStatus("ERROR: " + ex.Message); } }
}//_updateHistoryTable() public void DoUpdate(string AccessId) { try { SetStatus("Updating Selected Schema"); CswNbtResources CswNbtResources = null; _InitSessionResources(AccessId, ref CswNbtResources); SchemaInfoEventArgs SchemaInfoEventArgs = new SchemaInfoEventArgs(); _CswSchemaUpdater = new CswSchemaUpdater(AccessId, new CswSchemaUpdater.ResourcesInitHandler(_InitSessionResources), _CswSchemaScriptsProd); //wait to create updater until resource initiation is thoroughly done // RunBeforeScripts -- Run Non Versioned Scripts bool UpdateSucceeded = _runNonVersionScripts(_CswSchemaScriptsProd.RunBeforeScripts, CswNbtResources, SchemaInfoEventArgs); if (UpdateSucceeded) { CswSchemaVersion CurrentVersion = _CswSchemaUpdater.CurrentVersion(CswNbtResources); for (int i = 0; (UpdateSucceeded && !Cancel && ((CurrentVersion != _CswSchemaUpdater.LatestVersion) || (i < _CswSchemaUpdater.UpdateDrivers.Count))); i++) { CswSchemaVersion UpdateToVersion = _CswSchemaUpdater.SchemaVersions[i]; SetStatus("Updating to " + UpdateToVersion); UpdateSucceeded = _CswSchemaUpdater.runNextVersionedScript(); CswNbtResources.AccessId = AccessId; //cases 23787,9751: you have to re-init after the release() that is done in the Updater CswNbtResources.ClearCache(); SchemaInfoEventArgs.MinimumSchemaVersion = _CswSchemaUpdater.MinimumVersion; SchemaInfoEventArgs.LatestSchemaVersion = _CswSchemaUpdater.LatestVersion; CurrentVersion = _CswSchemaUpdater.CurrentVersion(CswNbtResources); SchemaInfoEventArgs.CurrentSchemaVersion = CurrentVersion; _updateHistoryTable(CswNbtResources, SchemaInfoEventArgs); if (UpdateSucceeded) { SetStatus("Update successful: " + _CswSchemaUpdater.getDriver(UpdateToVersion).SchemaVersion + ": " + _CswSchemaUpdater.getDriver(UpdateToVersion).Description); } } //iterate } //if pre-process scripts succeded if (UpdateSucceeded) { UpdateSucceeded = _runNonVersionScripts(_CswSchemaScriptsProd.RunAfterScripts, CswNbtResources, SchemaInfoEventArgs); } if (Cancel) { SetStatus("Update process stopped"); } else if (!UpdateSucceeded) { if (OnUpdateFailed != null) { OnUpdateFailed(); } SetStatus("Update failed"); } else { SetStatus("Update process completed"); } _CloseSessionResources(CswNbtResources); } catch (Exception ex) { SetStatus("ERROR: " + ex.Message); } }//iterate versions
private bool _runNonVersionScripts(List <CswSchemaUpdateDriver> ScriptCollection, CswNbtResources CswNbtResources, SchemaInfoEventArgs SchemaInfoEventArgs) { bool ReturnVal = true; for (int idx = 0; ReturnVal && (idx < ScriptCollection.Count); idx++) { CswSchemaUpdateDriver CurrentUpdateDriver = ScriptCollection[idx]; string ScriptDescription = CurrentUpdateDriver.SchemaVersion.ToString() + ": " + CurrentUpdateDriver.Description; ReturnVal = _CswSchemaUpdater.runArbitraryScript(CurrentUpdateDriver); if (ReturnVal) { SetStatus("Update successful: " + ScriptDescription); } else { SetStatus("Update failed: " + ScriptDescription + ": " + CurrentUpdateDriver.Message); } _updateHistoryTable(CswNbtResources, SchemaInfoEventArgs); } return(ReturnVal); }//_runNonVersionScripts