Files
CPXV2/SystemX.Net.CP.PCAdaptor.UIM/SystemX.Net.PCAdaptor/XList/lstList.cs

384 lines
12 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using SystemX.Common.Archive;
using static SystemX.Net.Platform.Common.Util.LogMessage;
namespace SystemX.Net.XAdaptor
{
public class QueryGetInfo
{
public string ProdNo_C;
public string ProdNo_P;
public string TestCode;
public string Gate1;
public string Gate2;
public string FileName;
public string RegUserComment;
public string Description;
public string GroupName;
public string ModelName;
public string VariantNo;
public string TestListNo;
public string Config;
public string TestType;
public string Version;
public string ProdCode;
public QueryGetInfo()
{
ProdNo_C = "";
ProdNo_P = "";
TestCode = "";
Gate1 = "";
Gate2 = "";
FileName = "";
RegUserComment = "";
Description = "";
GroupName = "";
ModelName = "";
VariantNo = "";
TestListNo = "";
Config = "";
TestType = "";
Version = "";
ProdCode = "";
}
}
public interface IControlTestListDataSet
{
QueryGetInfo ReadInfo();
DataSet getTestListDataSet();
int getTestListCount();
string GetTestListCntID();
DataRow[] GetPRODTestList(string strProdP_No, string strProdC_No,
string strTestType,
string strTestCode,
string strVersion,
string strProdCode);
DataRow[] GetCurrentTestListRow();
byte[] getTestListFileBytes();
string getTestListFileFullName();
string getTestListFileName();
string getTestListFileExtension();
string MakeTestListFile(string strMakePath,
bool bCreateDirectory = true,
bool bDuplicateFileDelete = true);
}
internal class TProdTestListInfo : IControlTestListDataSet
{
private QueryGetInfo tslInfo;
private DataSet dsQueryTestLists;
/*
* Caution : Row 0 Index 고정
*/
private DataRow[] drFindInfos;
private byte[] ucGetTestListData;
private string strGetFileFullName;
private string strGetFileName;
private string strGetVersion;
private string strGetProdCode;
private string strGetExtension;
private string strGetTestListCntID;
public string GetTestListCntID()
{
return strGetTestListCntID;
}
public void SetTestListCntID(string strSetValue)
{
strGetTestListCntID = strSetValue;
}
public void SetTestListDataSetCopy(DataSet ds)
{
dsQueryTestLists = new DataSet();
dsQueryTestLists = ds.Copy();
}
public void SetTestListDataSet()
{
if (dsQueryTestLists.Tables[0].Rows.Count == 1)
{
if (dsQueryTestLists.Tables[0].Columns.Contains("TestListData"))
{
ucGetTestListData = dsQueryTestLists.Tables[0].Rows[0]["TestListData"] as byte[];
ucGetTestListData = XDataArchive.DecompressGZipByteToByte(ucGetTestListData);
}
else
ucGetTestListData = new byte[1];
strGetFileName = dsQueryTestLists.Tables[0].Rows[0]["FileName"].ToString();
strGetVersion = dsQueryTestLists.Tables[0].Rows[0]["Version"].ToString();
strGetProdCode = dsQueryTestLists.Tables[0].Rows[0]["ProdCode"].ToString();
strGetExtension = ".CpXv" + strGetVersion + strGetProdCode;
strGetFileFullName = strGetFileName + strGetExtension;
setQueryInfo(dsQueryTestLists.Tables[0].Rows[0]);
}
}
public DataSet getTestListDataSet()
{
return dsQueryTestLists;
}
public int getTestListCount()
{
return dsQueryTestLists != null ? dsQueryTestLists.Tables[0].Rows.Count : 0;
}
public TProdTestListInfo()
{
tslInfo = new QueryGetInfo();
dsQueryTestLists = new DataSet();
dsQueryTestLists.Clear();
ClearVar();
}
public DataRow[] GetCurrentTestListRow()
{
return drFindInfos;
}
public void ClearVar()
{
ucGetTestListData = null;
strGetFileName = "";
strGetVersion = "";
strGetProdCode = "";
strGetExtension = "";
}
public QueryGetInfo ReadInfo()
{
return tslInfo;
}
virtual public void setQueryInfo(DataRow dr)
{
tslInfo.ProdNo_C = dr["ProdNo_C"].ToString();
tslInfo.ProdNo_P = dr["ProdNo_P"].ToString();
tslInfo.TestCode = dr["TestCode"].ToString();
tslInfo.Gate1 = dr["Gate1"].ToString();
tslInfo.Gate2 = dr["Gate2"].ToString();
tslInfo.FileName = dr["FileName"].ToString();
tslInfo.RegUserComment = dr["RegUserComment"].ToString();
tslInfo.Description = dr["Description"].ToString();
tslInfo.GroupName = dr["GroupName"].ToString();
tslInfo.ModelName = dr["ModelName"].ToString();
tslInfo.VariantNo = dr["VariantNo"].ToString();
tslInfo.TestListNo = dr["TestListNo"].ToString();
tslInfo.Config = dr["Config"].ToString();
tslInfo.TestType = dr["TestType"].ToString();
tslInfo.Version = dr["Version"].ToString();
tslInfo.ProdCode = dr["ProdCode"].ToString();
}
private void setDataRowInsertInfo()
{
ucGetTestListData = drFindInfos[0]["TestListData"] as byte[];
ucGetTestListData = XDataArchive.DecompressGZipByteToByte(ucGetTestListData);
strGetFileName = drFindInfos[0]["FileName"].ToString();
strGetVersion = drFindInfos[0]["Version"].ToString();
strGetProdCode = drFindInfos[0]["ProdCode"].ToString();
strGetExtension = ".CpXv" + strGetVersion + strGetProdCode;
strGetFileFullName = strGetFileName + strGetExtension;
}
public DataRow[] GetPRODTestList(string strProdP_No, string strProdC_No,
string strTestType,
string strTestCode,
string strVersion,
string strProdCode)
{
drFindInfos = null;
if (dsQueryTestLists.Tables.Count <= 0)
return null;
try
{
if (dsQueryTestLists.Tables[0].Rows.Count == 1)
{
drFindInfos = dsQueryTestLists.Tables[0].Select("");
if (drFindInfos.Count() > 0)
{
setDataRowInsertInfo();
setQueryInfo(drFindInfos[0]);
}
else
ClearVar();
return drFindInfos;
}
}
catch (Exception ex)
{
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @" Failed to test-list info column check. check the dll-version. [SystemX.Net.XAdaptor : TestListInfo.GetPRODTestList]\r\n" + ex.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
drFindInfos = null;
}
if (drFindInfos == null)
return drFindInfos;
string[] strParameters = new string[5];
strParameters[0] = strProdP_No;
strParameters[1] = strTestType;
strParameters[2] = strVersion;
strParameters[3] = strProdCode;
strParameters[4] = strTestCode;
string strSetSelectText = "";
int iParameterCnt = 0;
for (int i = 0; i < strParameters.Length; i++)
{
if (strParameters[i].Length > 0)
{
iParameterCnt++;
if (iParameterCnt > 1)
strSetSelectText += "AND ";
switch(i)
{
case 0: strSetSelectText += "ProdNo_P = '" + strParameters[i] + "' "; break;
case 1: strSetSelectText += "TestType = '" + strParameters[i] + "' "; break;
case 2: strSetSelectText += "Version = '" + strParameters[i] + "' "; break;
case 3: strSetSelectText += "ProdCode = '" + strParameters[i] + "' "; break;
case 4: strSetSelectText += "TestCode = '" + strParameters[i] + "' "; break;
}
}
}
if(strSetSelectText.Length > 0)
drFindInfos = dsQueryTestLists.Tables[0].Select(strSetSelectText);
if (drFindInfos != null && drFindInfos.Count() > 0)
{
setDataRowInsertInfo();
setQueryInfo(drFindInfos[0]);
}
else
ClearVar();
return drFindInfos;
}
public byte[] getTestListFileBytes()
{
return ucGetTestListData;
}
public string getTestListFileFullName()
{
return strGetFileFullName;
}
public string getTestListFileName()
{
return strGetFileName;
}
public string getTestListFileExtension()
{
return strGetExtension;
}
public string MakeTestListFile(string @strMakePath,
bool bCreateDirectory = true,
bool bDuplicateFileDelete = true)
{
string strSetMakePath = "";
if (Directory.Exists(@strMakePath) == false)
{
if (bCreateDirectory == false)
{
strSetMakePath = "The specified location does not exist.";
return strSetMakePath;
}
else
Directory.CreateDirectory(@strMakePath);
}
if (strGetFileFullName.Length > 0)
{
if (Base.CheckPath(strMakePath) == false)
{
strSetMakePath = "Enter only the path excluding the file name and extension as parameters.";
return strSetMakePath;
}
string strSetFilePos = strMakePath + strGetFileFullName;
if (File.Exists(strSetFilePos))
{
try
{
if (bDuplicateFileDelete)
File.Delete(strSetFilePos);
}
catch (Exception ex)
{
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @" Failed to delete duplicate test-list file. [SystemX.Net.XAdaptor : TestListInfo.MakeTestListFile]\r\n" + ex.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
}
}
strSetMakePath = strSetFilePos;
try
{
File.WriteAllBytes(@strSetFilePos, ucGetTestListData);
}
catch (Exception ex)
{
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @" Failed to create test list file. [SystemX.Net.XAdaptor : TestListInfo.MakeTestListFile]\r\n" + ex.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
strSetMakePath = "";
}
}
return strSetMakePath;
}
}
}