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;
}
}