1+ // Copyright (C) 2024 Xtensive LLC.
2+ // This code is distributed under MIT license terms.
3+ // See the License.txt file in the project root for more information.
4+
5+ using Microsoft . Extensions . Configuration ;
6+ using Xtensive . Orm . Configuration ;
7+ using Xtensive . Orm . Localization . Configuration ;
8+
9+ namespace Xtensive . Orm . Localization
10+ {
11+ /// <summary>
12+ /// Contains extensions for DomainConfiguration that help to configure the extension.
13+ /// </summary>
14+ public static class DomainConfugurationLocalizationExtensions
15+ {
16+ /// <summary>
17+ /// Loads configuration by calling <see cref="LocalizationConfiguration.Load()"/>
18+ /// and uses it to configure the extension.
19+ /// </summary>
20+ /// <param name="domainConfiguration">Domain configuration.</param>
21+ /// <returns><paramref name="domainConfiguration"/> instance with configured extension.</returns>
22+ public static DomainConfiguration ConfigureLocalizationExtension ( this DomainConfiguration domainConfiguration )
23+ => ConfigureLocalizationExtension ( domainConfiguration , LocalizationConfiguration . Load ( ) ) ;
24+
25+ /// <summary>
26+ /// Loads configuration by calling <see cref="LocalizationConfiguration.Load(string)"/>
27+ /// and uses it to configure the extension.
28+ /// </summary>
29+ /// <param name="domainConfiguration">Domain configuration.</param>
30+ /// <param name="configurationSectionName">Section name.</param>
31+ /// <returns><paramref name="domainConfiguration"/> instance with configured extension.</returns>
32+ public static DomainConfiguration ConfigureLocalizationExtension ( this DomainConfiguration domainConfiguration ,
33+ string configurationSectionName ) =>
34+ ConfigureLocalizationExtension ( domainConfiguration , LocalizationConfiguration . Load ( configurationSectionName ) ) ;
35+
36+ /// <summary>
37+ /// Loads configuration by calling <see cref="LocalizationConfiguration.Load(System.Configuration.Configuration)"/>
38+ /// and uses it to configure the extension.
39+ /// </summary>
40+ /// <param name="domainConfiguration">Domain configuration.</param>
41+ /// <param name="configuration">Configuration to load from.</param>
42+ /// <returns><paramref name="domainConfiguration"/> instance with configured extension.</returns>
43+ public static DomainConfiguration ConfigureLocalizationExtension ( this DomainConfiguration domainConfiguration ,
44+ System . Configuration . Configuration configuration ) =>
45+ ConfigureLocalizationExtension ( domainConfiguration , LocalizationConfiguration . Load ( configuration ) ) ;
46+
47+ /// <summary>
48+ /// Loads configuration by calling <see cref="LocalizationConfiguration.Load(System.Configuration.Configuration)"/>
49+ /// and uses it to configure the extension.
50+ /// </summary>
51+ /// <param name="domainConfiguration">Domain configuration.</param>
52+ /// <param name="configuration">Configuration to load from.</param>
53+ /// <param name="sectionName">Section in <paramref name="configuration"/></param>
54+ /// <returns><paramref name="domainConfiguration"/> instance with configured extension.</returns>
55+ public static DomainConfiguration ConfigureLocalizationExtension ( this DomainConfiguration domainConfiguration ,
56+ System . Configuration . Configuration configuration , string sectionName ) =>
57+ ConfigureLocalizationExtension ( domainConfiguration , LocalizationConfiguration . Load ( configuration , sectionName ) ) ;
58+
59+ /// <summary>
60+ /// Loads configuration by calling <see cref="LocalizationConfiguration.Load(IConfigurationRoot, string)"/>
61+ /// and uses it to configure the extension.
62+ /// </summary>
63+ /// <param name="domainConfiguration">Domain configuration.</param>
64+ /// <param name="configuration">Configuration to load from.</param>
65+ /// <returns><paramref name="domainConfiguration"/> instance with configured extension.</returns>
66+ public static DomainConfiguration ConfigureLocalizationExtension ( this DomainConfiguration domainConfiguration ,
67+ IConfiguration configuration ) =>
68+ ConfigureLocalizationExtension ( domainConfiguration , LocalizationConfiguration . Load ( configuration ) ) ;
69+
70+ /// <summary>
71+ /// Loads configuration by calling <see cref="LocalizationConfiguration.Load(IConfigurationRoot, string)"/>
72+ /// and uses it to configure the extension.
73+ /// </summary>
74+ /// <param name="domainConfiguration">Domain configuration.</param>
75+ /// <param name="configuration">Configuration to load from.</param>
76+ /// <param name="sectionName">Section in <paramref name="configuration"/></param>
77+ /// <returns><paramref name="domainConfiguration"/> instance with configured extension.</returns>
78+ public static DomainConfiguration ConfigureLocalizationExtension ( this DomainConfiguration domainConfiguration ,
79+ IConfiguration configuration , string sectionName = null ) =>
80+ ConfigureLocalizationExtension ( domainConfiguration , LocalizationConfiguration . Load ( configuration , sectionName ) ) ;
81+
82+ /// <summary>
83+ /// Loads configuration by calling <see cref="LocalizationConfiguration.Load(IConfigurationRoot, string)"/>
84+ /// and uses it to configure the extension.
85+ /// </summary>
86+ /// <param name="domainConfiguration">Domain configuration.</param>
87+ /// <param name="configurationRoot">Configuration to load from.</param>
88+ /// <returns><paramref name="domainConfiguration"/> instance with configured extension.</returns>
89+ public static DomainConfiguration ConfigureLocalizationExtension ( this DomainConfiguration domainConfiguration ,
90+ IConfigurationRoot configurationRoot ) =>
91+ ConfigureLocalizationExtension ( domainConfiguration , LocalizationConfiguration . Load ( configurationRoot ) ) ;
92+
93+ /// <summary>
94+ /// Loads configuration by calling <see cref="LocalizationConfiguration.Load(IConfigurationRoot, string)"/>
95+ /// and uses it to configure the extension.
96+ /// </summary>
97+ /// <param name="domainConfiguration">Domain configuration.</param>
98+ /// <param name="configurationRoot">Configuration to load from.</param>
99+ /// <param name="sectionName">Section in <paramref name="configurationRoot"/></param>
100+ /// <returns><paramref name="domainConfiguration"/> instance with configured extension.</returns>
101+ public static DomainConfiguration ConfigureLocalizationExtension ( this DomainConfiguration domainConfiguration ,
102+ IConfigurationRoot configurationRoot , string sectionName ) =>
103+ ConfigureLocalizationExtension ( domainConfiguration , LocalizationConfiguration . Load ( configurationRoot , sectionName ) ) ;
104+
105+ /// <summary>
106+ /// Loads configuration by calling <see cref="LocalizationConfiguration.Load(IConfigurationRoot, string)"/>
107+ /// and uses it to configure the extension.
108+ /// </summary>
109+ /// <param name="domainConfiguration">Domain configuration.</param>
110+ /// <param name="configurationSection">Configuration section to load from.</param>
111+ /// <returns><paramref name="domainConfiguration"/> instance with configured extension.</returns>
112+ public static DomainConfiguration ConfigureLocalizationExtension ( this DomainConfiguration domainConfiguration ,
113+ IConfigurationSection configurationSection ) =>
114+ ConfigureLocalizationExtension ( domainConfiguration , LocalizationConfiguration . Load ( configurationSection ) ) ;
115+
116+ /// <summary>
117+ /// Configures the extension with given localization configuration instance.
118+ /// </summary>
119+ /// <param name="domainConfiguration">Domain configuration.</param>
120+ /// <param name="localizationConfiguration">Localization configuration instance.</param>
121+ /// <returns><paramref name="domainConfiguration"/> instance with configured extension.</returns>
122+ public static DomainConfiguration ConfigureLocalizationExtension ( this DomainConfiguration domainConfiguration ,
123+ LocalizationConfiguration localizationConfiguration )
124+ {
125+ domainConfiguration . ExtensionConfigurations . Set ( localizationConfiguration ) ;
126+ domainConfiguration . Types . Register ( typeof ( DomainConfugurationLocalizationExtensions ) . Assembly ) ;
127+ return domainConfiguration ;
128+ }
129+ }
130+ }
0 commit comments