public PlatformDatabaseFoundEventArgs(ITableRepository repository, IPatcher patcher, RDMPPlatformDatabaseStatus status, Exception exception = null)
 {
     Repository = repository;
     Patcher    = patcher;
     Status     = status;
     Exception  = exception;
 }
Пример #2
0
        private void HandleDatabaseFoundOnSimpleUI(PlatformDatabaseFoundEventArgs eventArgs)
        {
            //if status got worse
            if (eventArgs.Status < lastStatus)
            {
                lastStatus = eventArgs.Status;
            }

            //if we are unable to reach a tier 1 database don't report anything else
            if (_couldNotReachTier1Database)
            {
                return;
            }

            lblProgress.Text = eventArgs.Patcher.Name + " database status was " + eventArgs.Status;

            switch (eventArgs.Status)
            {
            case RDMPPlatformDatabaseStatus.Unreachable:

                if (eventArgs.Patcher.Tier == 1)
                {
                    pbDisconnected.Visible = true;

                    if (eventArgs.Repository == null)
                    {
                        lblProgress.Text = "RDMP Platform Databases are not set";
                    }
                    else
                    {
                        lblProgress.Text = "Could not reach " + eventArgs.Patcher.Name;
                    }

                    _couldNotReachTier1Database = true;

                    ragSmiley1.Fatal(new Exception(string.Format("Core Platform Database was {0} ({1})", eventArgs.Status, eventArgs.Patcher.Name), eventArgs.Exception));
                }
                else
                {
                    ragSmiley1.Warning(new Exception(string.Format("Tier {0} Database was {1} ({2})", eventArgs.Patcher.Tier, eventArgs.Status, eventArgs.Patcher.Name), eventArgs.Exception));
                }
                break;

            case RDMPPlatformDatabaseStatus.Broken:
                if (eventArgs.Patcher.Tier == 1)
                {
                    ragSmiley1.Fatal(new Exception(string.Format("Core Platform Database was {0} ({1})", eventArgs.Status, eventArgs.Patcher.Name), eventArgs.Exception));
                }
                else
                {
                    ragSmiley1.Warning(new Exception(string.Format("Tier {0} Database was {1} ({2})", eventArgs.Patcher.Tier, eventArgs.Status, eventArgs.Patcher.Name), eventArgs.Exception));
                }
                break;

            case RDMPPlatformDatabaseStatus.RequiresPatching:

                if (MessageBox.Show("Patching Required on database of type " + eventArgs.Patcher.Name, "Patch",
                                    MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    PatchingUI.ShowIfRequired(
                        eventArgs.Repository.DiscoveredServer.GetCurrentDatabase(),
                        eventArgs.Repository, eventArgs.Patcher);
                    DoNotContinue = true;
                }
                else
                {
                    MessageBox.Show("Patching was cancelled, application will exit");
                    Application.Exit();
                }

                break;

            case RDMPPlatformDatabaseStatus.Healthy:
                ragSmiley1.OnCheckPerformed(new CheckEventArgs(eventArgs.SummariseAsString(), CheckResult.Success));
                return;

            case RDMPPlatformDatabaseStatus.SoftwareOutOfDate:
                if (!_haveWarnedAboutOutOfDate)
                {
                    MessageBox.Show("The RDMP database you are connecting to is running a newer schema to your software, please consider updating the software to the latest version");
                    _haveWarnedAboutOutOfDate = true;
                }
                return;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }