using HMI.Core.Entity;
using HMI.Core.Setting;
using HMI.Core.Util;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace HMI.Core.Manager
{
///
/// TODO 优化数据源,需要支持sqlite和xml
///
public class ProductManager
{
public static string GetFolder()
{
if (ParamSetting.ShareConfig != null)
{
return Path.Combine(ParamSetting.ShareConfig, "Product");
}
return Path.Combine(PathHelper.ConfigFolder, "Product");
}
public static string GetDataFilePath()
{
return Path.Combine(GetFolder(), "Product.data");
}
public static string GetParamFolderByProductName(string productName)
{
return Path.Combine(GetFolder(), "Parameter", $"Parameter_{productName}.data");
}
///
/// 获取保存的产品
///
///
public static T GetProducts() where T : IList
{
string path = GetDataFilePath();
if (!File.Exists(path)) return default(T);
T datas = XmlHelper.DeserializeFromXml(path);
return datas;
}
///
/// 获取保存的产品
///
///
public static T GetParametersByProductName(string productName) where T : IList
{
string path = GetParamFolderByProductName(productName);
if (!File.Exists(path)) return default(T);
T datas = XmlHelper.DeserializeFromXml(path);
return datas;
}
public static List GetProducts()
{
List datas = GetProducts>();
return datas ?? new List();
}
///
/// 根据产品名称获取产品参数
///
///
///
public static List GetParametersByProductName(string productName)
{
List datas = GetParametersByProductName>(productName);
return datas ?? new List();
}
public static ParameterData GetParameterByProductAndName(string product, string name)
{
List datas = GetParametersByProductName>(product);
return datas?.FirstOrDefault(e => e.Name == name);
}
}
}