Exemplo n.º 1
0
        }//_runNonVersionScripts()

        private bool _updateAccessId(string AccessId, CswNbtResources CswNbtResources, CswSchemaUpdater CswSchemaUpdater, CswConsoleOutput CswConsoleOutput, bool SuppressRealTimeProgressTics, bool ContinueOnError)
        {
            CswSchemaUpdateThread CswSchemaUpdateThread = new CswSchemaUpdateThread(CswSchemaUpdater);

            CswConsoleOutput.write("Running Non-Versioned Pre-Scripts" + _Separator_NuLine + _Separator_NuLine);

            CswSchemaScriptsProd CswSchemaScriptsProd = new CswSchemaScriptsProd(CswNbtResources);

            bool UpdateSucceeded = _runNonVersionScripts(CswSchemaUpdater, CswSchemaScriptsProd.RunBeforeScripts, CswConsoleOutput);

            if (UpdateSucceeded)
            {
                CswSchemaVersion CurrentVersion = CswSchemaUpdater.CurrentVersion(CswNbtResources);
                // refresh current version in case it was altered
                CswNbtResources.ConfigVbls.refresh();
                CurrentVersion = CswSchemaUpdater.CurrentVersion(CswNbtResources);

                CswConsoleOutput.write("Updating from " + CurrentVersion.ToString() + " to " + CswSchemaUpdater.LatestVersion.ToString() + _Separator_NuLine + _Separator_NuLine);

                for (int i = 0; ((UpdateSucceeded || ContinueOnError) &&
                                 ((CurrentVersion != CswSchemaUpdater.LatestVersion) || (i < CswSchemaUpdater.UpdateDrivers.Count))); i++)
                {
                    if (CurrentVersion < CswSchemaUpdater.MinimumVersion)
                    {
                        UpdateSucceeded = false;
                        CswConsoleOutput.write("AccessId " + AccessId + ": ");
                        CswConsoleOutput.write(" failed: Schema version (" + CurrentVersion.ToString() + ") is below minimum version (" + CswSchemaUpdater.MinimumVersion.ToString() + ")" + _Separator_NuLine);
                    }
                    else
                    {
                        CswSchemaVersion UpdateToVersion = CswSchemaUpdater.SchemaVersions[i];

                        string UpdateDescription = CswSchemaUpdater.getDriver(UpdateToVersion).SchemaVersion + ": " + CswSchemaUpdater.getDriver(UpdateToVersion).Description;

                        CswSchemaUpdateThread.start();

                        if (false == SuppressRealTimeProgressTics)
                        {
                            CswConsoleOutput.write(UpdateDescription + ": ");
                        }

                        while (CswEnumSchemaUpdateState.Running == CswSchemaUpdateThread.UpdateState)
                        {
                            if (false == SuppressRealTimeProgressTics)
                            {
                                CswConsoleOutput.write(".");
                            }

                            Thread.Sleep(1000);
                        }

                        UpdateSucceeded = (CswEnumSchemaUpdateState.Succeeded == CswSchemaUpdateThread.UpdateState);

                        if (UpdateSucceeded)
                        {
                            string Message = string.Empty;
                            if (false == SuppressRealTimeProgressTics)
                            {
                                Message = " succeeded" + _Separator_NuLine;
                            }
                            else
                            {
                                Message = UpdateDescription + " succeeded" + _Separator_NuLine;
                            }

                            CswConsoleOutput.write(Message);
                        }
                        else
                        {
                            string Message = string.Empty;
                            if (false == SuppressRealTimeProgressTics)
                            {
                                Message = " failed: " + CswSchemaUpdateThread.Message + _Separator_NuLine;
                            }
                            else
                            {
                                Message = UpdateDescription + " failed: " + CswSchemaUpdateThread.Message + _Separator_NuLine;
                            }

                            CswConsoleOutput.write(Message, ForceWrite: true, SuppressAccessId: false);
                        }

                        CswNbtResources.ClearCache();

                        CurrentVersion = CswSchemaUpdater.CurrentVersion(CswNbtResources);
                    }
                } // for()
            }     //if pre-scripts succeded

            if (UpdateSucceeded)
            {
                UpdateSucceeded = _runNonVersionScripts(CswSchemaUpdater, CswSchemaScriptsProd.RunAfterScripts, CswConsoleOutput);
            }

            return(UpdateSucceeded);
        }//_updateAccessId()