Allow users to have multiple configuration files

This commit is contained in:
Anton Kasyanov
2016-10-15 21:37:18 +03:00
parent 278ab21592
commit 5e87beadd1
7 changed files with 41 additions and 18 deletions

View File

@@ -3,15 +3,17 @@ using Newtonsoft.Json;
namespace EveOPreview.Configuration
{
public class ConfigurationStorage : IConfigurationStorage
class ConfigurationStorage : IConfigurationStorage
{
private const string ConfigurationFileName = "EVE-O Preview.json";
private readonly IThumbnailConfig _configuration;
private readonly IAppConfig _appConfig;
private readonly IThumbnailConfig _thumbnailConfig;
public ConfigurationStorage(IThumbnailConfig configuration)
public ConfigurationStorage(IAppConfig appConfig, IThumbnailConfig thumbnailConfig)
{
this._configuration = configuration;
this._appConfig = appConfig;
this._thumbnailConfig = thumbnailConfig;
}
public void Load()
@@ -25,22 +27,22 @@ namespace EveOPreview.Configuration
string rawData = File.ReadAllText(filename);
JsonConvert.PopulateObject(rawData, this._configuration);
JsonConvert.PopulateObject(rawData, this._thumbnailConfig);
// Validate data after loading it
this._configuration.ApplyRestrictions();
this._thumbnailConfig.ApplyRestrictions();
}
public void Save()
{
string rawData = JsonConvert.SerializeObject(this._configuration, Formatting.Indented);
string rawData = JsonConvert.SerializeObject(this._thumbnailConfig, Formatting.Indented);
File.WriteAllText(this.GetConfigFileName(), rawData);
}
private string GetConfigFileName()
{
return string.IsNullOrEmpty(this._configuration.ConfigFileName) ? ConfigurationStorage.ConfigurationFileName : this._configuration.ConfigFileName;
return string.IsNullOrEmpty(this._appConfig.ConfigFileName) ? ConfigurationStorage.ConfigurationFileName : this._appConfig.ConfigFileName;
}
}
}