Sage.Configuration.ProjectConfiguration.MergeExtension C# (CSharp) Method

MergeExtension() private method

private MergeExtension ( ProjectConfiguration extensionConfig ) : void
extensionConfig ProjectConfiguration
return void
        private void MergeExtension(ProjectConfiguration extensionConfig)
        {
            string extensionName = extensionConfig.Name;
            foreach (string name in extensionConfig.Routing.Keys)
            {
                if (this.Routing.ContainsKey(name))
                {
                    log.WarnFormat("Skipped registering route '{0}' from extension '{1}' because a route with the same name already exists.", name, extensionName);
                    continue;
                }

                extensionConfig.Routing[name].Extension = extensionName;
                this.Routing.Add(name, extensionConfig.Routing[name]);
            }

            foreach (KeyValuePair<string, ExtensionString> pair in extensionConfig.Linking.Links)
            {
                if (this.Linking.Links.ContainsKey(pair.Key))
                {
                    log.WarnFormat("Skipped registering link '{0}' from extension '{1}' because a link with the same name already exists.", pair.Key, extensionName);
                    continue;
                }

                var newLink = this.Linking.AddLink(pair.Key, pair.Value.Value);
                newLink.Extension = extensionName;
            }

            foreach (KeyValuePair<string, ExtensionString> pair in extensionConfig.Linking.Formats)
            {
                if (this.Linking.Formats.ContainsKey(pair.Key))
                {
                    log.WarnFormat("Skipped registering format '{0}' from extension '{1}' because a link with the same name already exists.", pair.Key, extensionName);
                    continue;
                }

                var newFormat = this.Linking.AddFormat(pair.Key, pair.Value.Value);
                newFormat.Extension = extensionName;
            }

            foreach (string name in extensionConfig.ResourceLibraries.Keys)
            {
                if (this.ResourceLibraries.ContainsKey(name))
                {
                    log.WarnFormat("Skipped registering script library '{0}' from extension '{1}' because a script library with the same name already exists.", name, extensionName);
                    continue;
                }

                ResourceLibraryInfo library = extensionConfig.ResourceLibraries[name];
                library.Resources.Each(r => r.Extension = extensionName);
                library.Extension = extensionName;
                this.ResourceLibraries.Add(name, library);
            }

            foreach (string name in extensionConfig.MetaViews.Keys)
            {
                if (this.MetaViews.ContainsKey(name))
                {
                    log.WarnFormat("Skipped registering meta view '{0}' from extension '{1}' because a meta view with the same name already exists.", name, extensionName);
                    continue;
                }

                MetaViewInfo info = extensionConfig.MetaViews[name];
                info.Extension = extensionName;
                this.MetaViews.Add(name, info);
            }

            foreach (string number in extensionConfig.ErrorViews.Keys)
            {
                if (this.ErrorViews.ContainsKey(number))
                {
                    log.WarnFormat("Skipped registering error view '{0}' from extension '{1}' because an error view with the same number already exists.", number, extensionName);
                    continue;
                }

                ErrorViewInfo info = extensionConfig.ErrorViews[number];
                info.Extension = extensionName;
                this.ErrorViews.Add(number, info);
            }

            foreach (string name in extensionConfig.Modules.Keys)
            {
                if (this.Modules.ContainsKey(name))
                {
                    log.WarnFormat("Skipped registering module '{0}' from extension '{1}' because a module with the same name already exists.", name, extensionName);
                    continue;
                }

                ModuleConfiguration module = extensionConfig.Modules[name];
                module.Resources.Each(r => r.Extension = extensionName);
                module.Extension = extensionName;
                this.Modules.Add(name, module);
            }
        }