using HMI.Core.Entity;
using HMI.Core.Util;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace HMI.Core.Manager
{
///
/// TODO 优化数据源,需要支持sqlite和xml
///
public class ParameterManager
{
///
/// 获取通用参数
///
///
///
public static T GetCommonParameter() where T : IList
{
string path = PathHelper.ParameterDataPath;
if (!File.Exists(path)) return default(T);
T datas = XmlHelper.DeserializeFromXml(path);
return datas;
}
///
/// 获取通用参数
///
///
///
public static ParameterData GetCommonParameterByName(string name)
{
string path = PathHelper.ParameterDataPath;
if (!File.Exists(path)) return null;
List datas = XmlHelper.DeserializeFromXml>(path);
return datas.FirstOrDefault(d => d.Name == name);
}
///
/// 保存通用参数
///
///
///
public static void SaveCommonParameter(IList datas)
{
if (datas == null)
{
throw new Exception("不能为null");
}
string path = PathHelper.ParameterDataPath;
XmlHelper.SerializeToXml(path, datas);
}
public static string GetCommonParameterValue(string path, string name)
{
if (!File.Exists(path)) return null;
List datas = XmlHelper.DeserializeFromXml>(path);
ParameterData data = datas.FirstOrDefault(d => d.Name == name);
if (data == null) return null;
return data.Value;
}
public static bool UpdateCommonParameter(string name, object value, out string errMsg)
{
errMsg = string.Empty;
try
{
string path = PathHelper.ParameterDataPath;
if (!File.Exists(path))
{
errMsg = "配置文件不存在";
return false;
}
List datas = XmlHelper.DeserializeFromXml>(path);
ParameterData data = datas.FirstOrDefault(d => d.Name == name);
if (data != null)
{
data.Value = value.ToString();
XmlHelper.SerializeToXml(path, datas);
return true;
}
string type = "String";
if (value is bool)
{
type = "Bool";
}
else if (value is int)
{
type = "Int";
}
else if (value is double)
{
type = "Double";
}
data = new ParameterData
{
Name = name,
Type = type,
Value = value.ToString()
};
datas.Add(data);
XmlHelper.SerializeToXml(path, datas);
return true;
}
catch (Exception ex)
{
errMsg = ex.Message;
return false;
}
}
}
}