Files
2024-06-26 10:30:00 +09:00

181 lines
8.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
using SystemX.Net.BaseProtocol;
using SystemX.Net.DB;
using CpTesterPlatform.CpLogUtil;
using static SystemX.Net.Platform.Common.Util.LogMessage;
namespace SystemX.Common.Log.LSU
{
/// <summary>
/// Query Base Infomation
/// </summary>
///
public class LogProcessInfo_LSU
{
public bool READ_INFO_STATE { set; get; }
private string strInfoFilePos;
//TestID, TableName
private Dictionary<string, Tuple<int, string>> dicBaseIDInfo;
//TestID, DetailLogUse
private Dictionary<string, bool> dicDetailInfo;
//KEY - STEP, Name, UpdateTableName, ToField
private Dictionary<int, Tuple<string, bool, string, int, string, string, string>> dicSubExtrctionInfo;
public bool USE_TABLE_DATA_DELETE_MANAGER { internal set; get; }
//KEY - TableName, USE
private Dictionary<string, bool> dicTableDataDeleteList;
//KEY - No, USE, TableName, Set Date
private Dictionary<int, Tuple<bool, string, int>> dicTableDataDeleteManager;
public LogProcessInfo_LSU(string strGetInfoPath)
{
strInfoFilePos = strGetInfoPath;
dicBaseIDInfo = new Dictionary<string, Tuple<int, string>>();
dicDetailInfo = new Dictionary<string, bool>();
dicSubExtrctionInfo = new Dictionary<int, Tuple<string, bool, string, int, string, string, string>>();
//
dicTableDataDeleteList = new Dictionary<string, bool>();
dicTableDataDeleteManager = new Dictionary<int, Tuple<bool, string, int>>();
}
public string GetSaveTableName(string strTestID)
{
if (dicBaseIDInfo.Keys.Contains(strTestID))
{
return dicBaseIDInfo[strTestID].Item2;
}
else
return "";
}
public bool GetSaveDetailTable(string strTestID)
{
if (dicDetailInfo.Keys.Contains(strTestID))
return dicDetailInfo[strTestID];
else
return false;
}
public List<KeyValuePair<int, Tuple<string, bool, string, int, string, string, string>>> GetExtractInfo(string strTestID)
{
if (dicBaseIDInfo.Keys.Contains(strTestID))
return dicSubExtrctionInfo.ToList().FindAll(x => x.Value.Item1 == strTestID);
else
return null;
}
public List<KeyValuePair<int, Tuple<bool, string, int>>> GeManageInfo()
{
return dicTableDataDeleteManager.ToList();
}
public bool Load()
{
READ_INFO_STATE = true;
int iSetPos = 0;
try
{
XDocument xDoc = XDocument.Load(strInfoFilePos);
var xElement = xDoc.Element("ROOT");
if (xElement != null)
{
var ListGetElement = xElement.Elements("TableDataDeleteManager").ToList();
foreach (var getXElement in ListGetElement)
{
USE_TABLE_DATA_DELETE_MANAGER = Convert.ToBoolean(getXElement.Attribute("USE").Value);
if (getXElement.Elements().ToList().Count > 0)
{
iSetPos = 0;
for (int i = 0; i < getXElement.Elements().ToList().Count; i++)
{
int iGetDateDiff = 0;
if (int.TryParse(getXElement.Element("Management" + (i + 1).ToString()).Attribute("DateDifference").Value.ToString(), out iGetDateDiff))
{
dicTableDataDeleteList.Add(getXElement.Element("Management" + (i + 1).ToString()).Attribute("TableName").Value,
Convert.ToBoolean(getXElement.Element("Management" + (i + 1).ToString()).Attribute("USE").Value));
dicTableDataDeleteManager.Add(iSetPos++,
new Tuple<bool, string, int>(
Convert.ToBoolean(getXElement.Element("Management" + (i + 1).ToString()).Attribute("USE").Value),
getXElement.Element("Management" + (i + 1).ToString()).Attribute("TableName").Value,
iGetDateDiff));
}
else
throw new Exception("DateDifference value error.");
}
}
}
ListGetElement = xElement.Elements("QueryInfo").ToList();
foreach (var getXElement in ListGetElement)
{
string strBaseID = getXElement.Attribute("ID").Value;
bool bGetDetailSelect = false;
int iGetProcNo = int.Parse(getXElement.Attribute("ProcNo").Value);
dicBaseIDInfo.Add(strBaseID, new Tuple<int, string>(iGetProcNo, getXElement.Attribute("Table").Value));
dicDetailInfo.Add(strBaseID, bool.TryParse(getXElement.Attribute("DetailProcess").Value, out bGetDetailSelect) == true ? bGetDetailSelect : false);
if (getXElement.Elements().ToList().Count > 0)
{
iSetPos = 0;
for (int i = 0; i < getXElement.Elements().ToList().Count; i++)
{
int iGetStep = 0;
if (int.TryParse(getXElement.Element("ExtractionInfo" + (i + 1).ToString()).Attribute("Step").Value.ToString(), out iGetStep))
{
string strUpdateTable = getXElement.Element("ExtractionInfo" + (i + 1).ToString()).Attribute("UpdateTableName").Value;
bool bUpdateTableDiff = dicSubExtrctionInfo.ToList().FindAll(x => x.Value.Item1 == strBaseID).All(x => x.Value.Item6 == strUpdateTable);
if (bUpdateTableDiff == false)
throw new Exception();
dicSubExtrctionInfo.Add(iSetPos++,
new Tuple<string, bool, string, int, string, string, string>(
strBaseID,
Convert.ToBoolean(getXElement.Element("ExtractionInfo" + (i + 1).ToString()).Attribute("MO_Find").Value),
getXElement.Element("ExtractionInfo" + (i + 1).ToString()).Attribute("MO").Value,
iGetStep,
getXElement.Element("ExtractionInfo" + (i + 1).ToString()).Attribute("Name").Value,
getXElement.Element("ExtractionInfo" + (i + 1).ToString()).Attribute("UpdateTableName").Value,
getXElement.Element("ExtractionInfo" + (i + 1).ToString()).Attribute("ToField").Value));
}
else
throw new Exception("Step value error.");
}
}
}
}
}
catch (Exception ex)
{
READ_INFO_STATE = false;
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"LogProcessInfo read failed. [SystemX.Common.Protocol.Log.LSU : LogProcessInfo_LSU.Load]\r\n" + ex.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
}
return READ_INFO_STATE;
}
}
}