Exemplo n.º 1
0
        private ServiceResponse InstallDb(Assembly asm, string version, DbInstallItem items)
        {
            var result   = new ServiceResponse();
            var prefix   = asm.GetName().Name + ".Data";
            var _version = version;

            for (var i = 0; i < 1; i++)
            {
                if (string.IsNullOrEmpty(_version))
                {
                    _version = ResourceProvider.Versions.OrderByDescending(item => item.Value).FirstOrDefault().Key;
                }
                else
                {
                    if (string.IsNullOrEmpty(ResourceProvider.Versions.FirstOrDefault(item => item.Key == version).Key))
                    {
                        result.Status  = "VersionNotFound";
                        result.Message = $"Specified application module does not contain {_version} version.";

                        break;
                    }
                }

                prefix += _version + ".Db." + Config.DbConfig.DbType;
                var items = ResourceProvider.ResourceNames.Where(name => name.StartsWith(prefix));
            }

            return(result);
        }
Exemplo n.º 2
0
        public ServiceResponse Install(string version = "", DbInstallItem items = DbInstallItem.SchemaAndData)
        {
            var response = null as ServiceResponse;

            Logger.LogCategory("Installing ...");
            Logger.Log("Checking config");

            for (var i = 0; i < 1; i++)
            {
                try
                {
                    response = ValidateConfig();

                    if (response != null)
                    {
                        break;
                    }

                    response = new ServiceResponse();

                    var asmr = AssemblyHelper.Load(Config.AppModuleNameOrPath);

                    if (!asmr.Success)
                    {
                        response.Status    = "LoadingAppModuleFailed";
                        response.Message   = "Loading application module failed.";
                        response.Exception = asmr.Exception;

                        break;
                    }

                    ResourceProvider = new AppModuleResourceProvider(asmr.Data);

                    if (string.IsNullOrEmpty(ResourceProvider.ModuleType))
                    {
                        response.Status  = "MissingAssemblyType";
                        response.Message = "Application module is missing 'AssemblyType' attribute.";

                        break;
                    }

                    if (string.Compare(ResourceProvider.ModuleType, "AppModule", true) != 0)
                    {
                        response.Status  = "InvalidAssemblyType";
                        response.Message = "Specified file is not an application module.";

                        break;
                    }

                    InstallDb(asmr.Data, version, items);

                    response.Success = true;
                    response.Status  = "InstallationSucceeded";
                    response.Message = "Installation Succeeded";
                }
                catch (Exception e)
                {
                    response.Status    = "AbnormalTermination";
                    response.Message   = "Installation encountered with an unexpected exception. Installation aborted.";
                    response.Exception = e;

                    break;
                }
            }

            Logger.Log(response.Status);
            Logger.Log(response.Message);

            if (response.Exception != null)
            {
                Logger.Log(response.Exception.Message);
                ExceptionLogger.LogException(response.Exception);
            }

            return(response);
        }