GetStatus() 공개 추상적인 메소드

public abstract GetStatus ( ) : DatabaseStatus
리턴 DatabaseStatus
예제 #1
0
        public virtual SystemStatusLevel GetStatus()
        {
            if (isUpAndRunning)
            {
                return(level);
            }

            var previousLevel = level;

            var status = installer.GetStatus();

            level = status.Level;

            if (level >= SystemStatusLevel.UpAndRunning)
            {
                isUpAndRunning = true;
            }

            if (previousLevel != level && DatabaseStatusChanged != null)
            {
                DatabaseStatusChanged(this, new EventArgs());
            }

            return(level);
        }
예제 #2
0
        private void CheckInstallation()
        {
            string currentUrl = webContext.ToAppRelative(webContext.Url.LocalUrl);
            bool   isEditing  = currentUrl.StartsWith(webContext.ToAppRelative(managementUrl), StringComparison.InvariantCultureIgnoreCase);

            if (isEditing)
            {
                return;
            }

            DatabaseStatus status      = installer.GetStatus();
            Url            redirectUrl = Url.ResolveTokens(welcomeUrl);

            if (status.NeedsUpgrade)
            {
                redirectUrl = redirectUrl.AppendQuery("action", "upgrade");
            }
            else if (!status.IsInstalled)
            {
                redirectUrl = redirectUrl.AppendQuery("action", "install");
            }
            else if (status.NeedsRebase)
            {
                redirectUrl = redirectUrl.AppendQuery("action", "rebase");
            }
            else
            {
                return;
            }
            Trace.WriteLine("Redirecting to '" + redirectUrl + "' to handle status: " + status.ToStatusString());
            webContext.Response.Redirect(redirectUrl);
        }
예제 #3
0
        public virtual IEnumerable <MigrationResult> UpgradeAndMigrate()
        {
            DatabaseStatus initialStatus = installer.GetStatus();

            installer.Upgrade();

            return(MigrateOnly(initialStatus));
        }
예제 #4
0
 public InstallationChecker(IWebContext webContext, EventBroker broker, ConfigurationManagerWrapper configuration, InstallationManager installer)
 {
     this.installer = installer;
     if (configuration.Sections.Management.Installer.CheckInstallationStatus)
     {
         welcomeUrl = configuration.Sections.Management.Installer.WelcomeUrl;
         managementUrl = configuration.Sections.Management.Paths.ManagementInterfaceUrl;
         this.webContext = webContext;
         this.broker = broker;
         this.broker.BeginRequest += BeginRequest;
         this.status = installer.GetStatus();
     }
     else
     {
         installer.UpdateStatus(SystemStatusLevel.Unconfirmed);
     }
 }
예제 #5
0
        public InstallationChecker(IWebContext webContext, EventBroker broker, ConfigurationManagerWrapper configuration, InstallationManager installer)
        {
            this.installer = installer;
            if (configuration.Sections.Management.Installer.CheckInstallationStatus)
            {
                welcomeUrl      = configuration.Sections.Management.Installer.WelcomeUrl;
                managementUrl   = configuration.Sections.Management.Paths.ManagementInterfaceUrl;
                this.webContext = webContext;
                this.broker     = broker;
                this.Status     = installer.GetStatus();

                installer.UpdateStatus(Status.Level);

                if (Status.Level != SystemStatusLevel.UpAndRunning)
                {
                    this.broker.BeginRequest += BeginRequest;
                }
            }
            else
            {
                installer.UpdateStatus(SystemStatusLevel.Unconfirmed);
            }
        }
예제 #6
0
        private void CheckInstallation()
        {
            string currentUrl = Url.ToRelative(webContext.Url.LocalUrl);

            try
            {
                AuthenticationSection authentication = ConfigurationManager.GetSection("system.web/authentication") as AuthenticationSection;
                if (currentUrl.Trim('~', '/').StartsWith(Url.ToAbsolute(authentication.Forms.LoginUrl.Trim('~', '/')), StringComparison.InvariantCultureIgnoreCase))
                {
                    // don't redirect from login page
                    return;
                }
            }
            catch (Exception ex)
            {
                Engine.Logger.Warn(ex);
            }

            if (Status == null)
            {
                Status = installer.GetStatus();
            }

            Url redirectUrl = Url.ResolveTokens(welcomeUrl);

            if (Status == null)
            {
                Engine.Logger.Warn("Null status");
                installer.UpdateStatus(SystemStatusLevel.Unknown);
                return;
            }
            else if (Status.NeedsUpgrade)
            {
                redirectUrl = redirectUrl.AppendQuery("action", "upgrade");
            }
            else if (!Status.IsInstalled)
            {
                redirectUrl = redirectUrl.AppendQuery("action", "install");
            }
            else if (Status.NeedsRebase)
            {
                redirectUrl = redirectUrl.AppendQuery("action", "rebase");
            }
            else
            {
                this.broker.BeginRequest -= BeginRequest;
                installer.UpdateStatus(Status.Level);
                this.Status = null;
                return;
            }

            installer.UpdateStatus(Status.Level);

            bool isEditing = currentUrl.StartsWith(N2.Web.Url.ToRelative(managementUrl), StringComparison.InvariantCultureIgnoreCase);

            if (isEditing)
            {
                return;
            }

            logger.Debug("Redirecting to '" + redirectUrl + "' to handle status: " + Status.ToStatusString());

            this.Status = null;
            webContext.HttpContext.Response.Redirect(redirectUrl);
        }