Exemplo n.º 1
0
 public static Factory Config(IConfigurationProvider provider, Func<string, IDbConnection> connectionConstructor)
 {
     // set the conguration information
     var config = provider.Create();
     Current._configuration = config;
     // load the dispatcher type for intialization
     var dispatcherName = config.Dispatcher;
     var dispatcherType = Type
         .GetType(config.Dispatchers.Where(dsp => dsp.Name == dispatcherName).First().Type)
         .MakeGenericType(typeof(DataSharding));
     // load the policies and the related database connection strings
     foreach (var policy in config.Policies)
     {
         var dispatcherKey = policy.Version;
         var databases = policy.Nodes.Split(';')
             .Select((node) =>
                 config.Databases
                 .Where(db => db.Name == node)
                 .FirstOrDefault())
             .ToList();
         Current._dispachers.Add(dispatcherKey, CreateDispatcher(dispatcherType, databases));
     }
     // load the currently version provider
     var versionProviderName = config.VersionProvider;
     var versionProviderType = Type
         .GetType(config.VersionProviders.Where(vp => vp.Name == versionProviderName).First().Type);
     Current._versionProvider = Activator.CreateInstance(versionProviderType) as IVersionProvider;
     Current._versionProvider.CurrentVersion = config.Version;
     // set the other properties
     Current._retries = config.Retries;
     Current._connectionConstructor = connectionConstructor;
     // return the singleton instance
     return Current;
 }
Exemplo n.º 2
0
        public IAppConfiguration Load()
        {
            const string configFileName = Default.Config.FileName;

            IAppConfiguration appConfiguration;
            var result = _configurationProvider.Load(configFileName, out appConfiguration);

            if (result.DoesExist == false || result.ReadError == true)
            {
                result = _configurationProvider.Create(configFileName, out appConfiguration);
            }

            if (result.DidFail)
            {
                throw result.Exception;
            }

            return(appConfiguration);
        }