Files
DDUtility/DDUtilityApp/LOGPARSER/GemSetting.cs
2025-02-03 11:02:48 +09:00

141 lines
4.8 KiB
C#

using DDUtilityApp.SECS;
using JWH;
using System;
using System.Collections.Generic;
using System.Xml;
namespace DDUtilityApp.LOGPARSER
{
public class GemSetting
{
public string ModelName { get; protected set; } = "COMMON";
public Dictionary<string, CEID> CeidDictionary = new Dictionary<string, CEID>();
public Dictionary<string, RPT> RptDictionary = new Dictionary<string, RPT>();
public Dictionary<string, SECSDefine> EquipmentModelDictionary = new Dictionary<string, SECSDefine>();
public GemSetting(string filename, string modelName = "COMMON")
{
this.Load(filename);
this.SetModelName(modelName);
}
public void Load(string filename)
{
XmlDocument document = null;
try
{
if (string.IsNullOrEmpty(filename)) return;
document = new XmlDocument();
document.Load(filename);
foreach (XmlNode child in document.ChildNodes[0])
{
if (string.Compare(child.Name, "MODEL", true) == 0)
{
string modelName = child.Attributes["NAME"].Value;
if (string.IsNullOrEmpty(modelName)) continue;
SECSDefine eqModel = new SECSDefine(child);
this.EquipmentModelDictionary.Add(modelName, eqModel);
}
}
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
finally
{
}
}
public void SetModelName(string modelName)
{
try
{
this.ModelName = modelName;
if (this.EquipmentModelDictionary.ContainsKey("COMMON"))
{
SECSDefine model = this.EquipmentModelDictionary["COMMON"];
this.CeidDictionary = new Dictionary<string, CEID>(model.CeidDictionary);
this.RptDictionary = new Dictionary<string, RPT>(model.RptDictionary);
}
if (this.ModelName != "COMMON" && this.EquipmentModelDictionary.ContainsKey(this.ModelName))
{
SECSDefine model = this.EquipmentModelDictionary[this.ModelName];
foreach (KeyValuePair<string, CEID> pair in model.CeidDictionary)
if (this.CeidDictionary.ContainsKey(pair.Key)) this.CeidDictionary[pair.Key] = pair.Value;
else this.CeidDictionary.Add(pair.Key, pair.Value);
foreach (KeyValuePair<string, RPT> pair in model.RptDictionary)
if (this.RptDictionary.ContainsKey(pair.Key)) this.RptDictionary[pair.Key] = pair.Value;
else this.RptDictionary.Add(pair.Key, pair.Value);
}
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
/// <summary>
/// Change ID, Name, Format
/// </summary>
/// <param name="item"></param>
public void Setting(SECSItem item)
{
try
{
if (item.Stream != "6" || item.Function != "11") return;
if (item.ChildItems.Count != 3) return;
item.ChildItems[0].Name = "DATAID";
item.ChildItems[1].Name = "CEID";
if (this.CeidDictionary.ContainsKey(item.ChildItems[1].Value) == false) return;
CEID ceid = this.CeidDictionary[item.ChildItems[1].Value];
if (ceid != null) item.ChildItems[1].Description = ceid.Name;
foreach (SECSItem report in item.ChildItems[2])
{
if (report.ChildItems.Count != 2) continue;
report.ChildItems[0].Name = "RPTID";
if (this.RptDictionary.ContainsKey(report.ChildItems[0].Value) == false) continue;
RPT rpt = this.RptDictionary[report.ChildItems[0].Value];
if (rpt == null) continue;
int i = 0;
foreach (VID vid in rpt.VidCollection)
{
SECSItem secsVid = report.ChildItems[1].ChildItems[i];
secsVid.ID = vid.ID;
if (string.IsNullOrEmpty(secsVid.Name))
{
secsVid.Name = vid.Name;
//secsVid.Format = vid.Format;
//secsVid.Length = vid.Length;
}
i++;
}
}
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
}
}