using System; using System.ComponentModel; using System.IO; using Newtonsoft.Json; namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig { /// /// Configuration of meter /// public class ProccessConfig { /// /// ctor /// public ProccessConfig() { UseRegisterWatchService = false; UseErrorLogger = false; AutoUpdateFiles = false; ProductionMode = true; } /// public ProccessConfig(String file) { var configFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), nameof(Genesis), file); if (!File.Exists(configFile)) { configFile = Path.Combine(file); if (!File.Exists(configFile)) { UseRegisterWatchService = false; UseErrorLogger = false; return; } } using (var tr = new StreamReader(configFile)) { var meterConfig = JsonConvert.DeserializeObject(tr.ReadToEnd()); UseRegisterWatchService = meterConfig.UseRegisterWatchService; RegisterWatchServiceUrl = meterConfig.RegisterWatchServiceUrl; UseMinMaxCheck = meterConfig.UseMinMaxCheck; UseErrorLogger = meterConfig.UseErrorLogger; ErrorLoggerServiceUrl = meterConfig.ErrorLoggerServiceUrl; UseCalibrationLogger = meterConfig.UseCalibrationLogger; CalibrationLoggerServiceUrl = meterConfig.CalibrationLoggerServiceUrl; AutoUpdateFiles = meterConfig.AutoUpdateFiles; ProductionMode = meterConfig.ProductionMode; } } public void Update(String file) { var configFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), nameof(Genesis), file); if (!File.Exists(configFile)) { configFile = Path.Combine(file); } File.WriteAllText(file, JsonConvert.SerializeObject(this)); } /// /// /// public Boolean UseRegisterWatchService { get; set; } /// /// /// public String RegisterWatchServiceUrl { get; set; } /// /// /// public Boolean UseMinMaxCheck { get; set; } /// /// /// public Boolean UseErrorLogger { get; set; } /// /// /// public String ErrorLoggerServiceUrl { get; set; } /// /// /// public Boolean UseCalibrationLogger { get; set; } /// /// /// public String CalibrationLoggerServiceUrl { get; set; } /// /// /// public bool AutoUpdateFiles { get; set; } [DefaultValue(true)] [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] public bool ProductionMode { get; set; } = true; } }