コード例 #1
0
        /// <summary>
        /// Create a new <see cref="XmlManager"/> instance using the specified <see cref="ManagerElement"/>.
        /// </summary>
        /// <param name="element">The <see cref="ManagerElement"/> to use.</param>
        /// <returns>A new <see cref="XmlManager"/> instance.</returns>
        public static XmlManager Create(ManagerElement element)
        {
            FigaroEnv env = string.IsNullOrEmpty(element.Env) ? null : EnvFactory.Create(element.Env);

            if (env == null && !string.IsNullOrEmpty(element.Env))
            {
                throw new ConfigurationErrorsException(
                          $"The specified environment configuration instance '{element.Env}' does not exist.");
            }
            var opts = ManagerInitOptions.None;

            if (!string.IsNullOrEmpty(element.Options))
            {
                opts = (ManagerInitOptions)Enum.Parse(typeof(ManagerInitOptions), element.Options, true);
            }
            var mgr = env != null ?
                      new XmlManager(env, opts)
            {
                ConfigurationName = element.Name
            } :
            new XmlManager(opts)
            {
                ConfigurationName = element.Name
            };
            var ctype = XmlContainerType.NodeContainer;

            if (!string.IsNullOrEmpty(element.DefaultContainerType))
            {
                ctype = (XmlContainerType)Enum.Parse(typeof(XmlContainerType), element.DefaultContainerType, true);
            }

            mgr.DefaultContainerType = ctype;

            if (element.DefaultPageSize > 0)
            {
                mgr.DefaultPageSize = element.DefaultPageSize;
            }

            if (element.DefaultSequenceIncrement > 0)
            {
                mgr.DefaultSequenceIncrement = element.DefaultSequenceIncrement;
            }

            if (element.DefaultContainerSettings != null)
            {
                mgr.DefaultContainerSettings = ContainerConfigFactory.Create(element.DefaultContainerSettings);
            }

            return(mgr);
        }
コード例 #2
0
        /// <summary>
        /// Create a new <see cref="XmlManager"/> instance using the specified <see cref="ManagerElement"/>.
        /// </summary>
        /// <param name="element">The <see cref="ManagerElement"/> to use.</param>
        /// <returns>A new <see cref="XmlManager"/> instance.</returns>
        public static XmlManager Create(ManagerElement element)
        {
            var opts     = ManagerInitOptions.None;
            var homePath = string.IsNullOrEmpty(element.Home) ? string.Empty : PathUtility.ResolvePath(element.Home);

            if (!string.IsNullOrEmpty(element.Options))
            {
                opts = (ManagerInitOptions)Enum.Parse(typeof(ManagerInitOptions), element.Options, true);
            }
            if (!string.IsNullOrEmpty(homePath) && !Directory.Exists(homePath))
            {
                Directory.CreateDirectory(homePath);
            }
            var mgr = string.IsNullOrEmpty(homePath) ?
                      new XmlManager(opts)
            {
                ConfigurationName = element.Name
            } :
            new XmlManager(homePath, opts)
            {
                ConfigurationName = element.Name
            };
            var ctype = XmlContainerType.NodeContainer;

            if (!string.IsNullOrEmpty(element.DefaultContainerType))
            {
                ctype = (XmlContainerType)Enum.Parse(typeof(XmlContainerType), element.DefaultContainerType, true);
            }

            mgr.DefaultContainerType = ctype;

            if (element.DefaultPageSize > 0)
            {
                mgr.DefaultPageSize = element.DefaultPageSize;
            }

            if (element.DefaultSequenceIncrement > 0)
            {
                mgr.DefaultSequenceIncrement = element.DefaultSequenceIncrement;
            }

            if (element.DefaultContainerSettings != null)
            {
                mgr.DefaultContainerSettings = ContainerConfigFactory.Create(element.DefaultContainerSettings);
            }

            return(mgr);
        }
コード例 #3
0
        /// <summary>
        /// Creates a new <see cref="ContainerConfig"/> instance from the <see cref="ManagerElement"/> default container settings.
        /// </summary>
        /// <param name="managerName">The named <see cref="ManagerElement"/> instance.</param>
        /// <returns>A new <see cref="ContainerConfig"/> instance, or <c>null</c> if no instance exists.</returns>
        public static ContainerConfig CreateDefault(string managerName)
        {
            if (string.IsNullOrEmpty(managerName))
            {
                return(null);
            }
            FigaroSection section;

            try
            {
                section = (FigaroSection)ConfigurationManager.GetSection("Figaro");
            }
            catch (Exception)
            {
                return(null);
            }
            if (section == null)
            {
                return(null);
            }

            if (section.Managers == null || section.Managers.Count == 0)
            {
                return(null);
            }

            ManagerElement managerElement =
                section.Managers.Cast <ManagerElement>().FirstOrDefault(manager => manager.Name.Equals(managerName));

            if (managerElement == null)
            {
                return(null);
            }
            return(managerElement.DefaultContainerSettings == null
                ? null
                : Create(managerElement.DefaultContainerSettings));
        }