122 lines
3.7 KiB
C#
122 lines
3.7 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.IO;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace Xylem.Common.Hardware.WaterMeter.MagFlux.MagFluxConfig
|
|
{
|
|
/// <summary>
|
|
/// Configuration of meter
|
|
/// </summary>
|
|
public class ProcessConfig
|
|
{
|
|
/// <summary>
|
|
/// ctor
|
|
/// </summary>
|
|
public ProcessConfig()
|
|
{
|
|
UseRegisterWatchService = false;
|
|
UseErrorLogger = false;
|
|
AutoUpdateFiles = false;
|
|
ProductionMode = true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Load configuration file from AppRoaming or working directory
|
|
/// </summary>
|
|
/// <param name="file"></param>
|
|
public ProcessConfig(String file)
|
|
{
|
|
// check for AppRoaming
|
|
var configFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
|
|
nameof(MagFlux), file);
|
|
|
|
if (!File.Exists(configFile))
|
|
{
|
|
// take actual working directory
|
|
configFile = Path.Combine(file);
|
|
if (!File.Exists(configFile))
|
|
{
|
|
UseRegisterWatchService = false;
|
|
UseErrorLogger = false;
|
|
return;
|
|
}
|
|
}
|
|
|
|
using (var tr = new StreamReader(configFile))
|
|
{
|
|
var meterConfig = JsonConvert.DeserializeObject<ProcessConfig>(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;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Write file to AppRoaming and backup it to actual working directory
|
|
/// </summary>
|
|
/// <param name="file"></param>
|
|
public void Update(String file)
|
|
{
|
|
var configFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
|
|
nameof(MagFlux), file);
|
|
|
|
File.WriteAllText(configFile, JsonConvert.SerializeObject(this));
|
|
File.WriteAllText(file, JsonConvert.SerializeObject(this));
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public Boolean UseRegisterWatchService { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public String RegisterWatchServiceUrl { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public Boolean UseMinMaxCheck { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public Boolean UseErrorLogger { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public String ErrorLoggerServiceUrl { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public Boolean UseCalibrationLogger { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public String CalibrationLoggerServiceUrl { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public Boolean AutoUpdateFiles { get; set; }
|
|
|
|
[DefaultValue(true)]
|
|
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
|
|
|
|
public Boolean ProductionMode { get; set; } = true;
|
|
}
|
|
}
|