Files
DDUtility/DDUtilityApp/LOGPARSER/LogServer.cs
2025-03-05 10:00:08 +09:00

282 lines
8.9 KiB
C#

using JWH;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
namespace DDUtilityApp.DATA
{
/// <summary>
/// Log Server 접속정보
/// </summary>
public class LogServer
{
#region [ Properties ] ------------------------------------------------
public string Name { get; set; }
public string DBConnectionString { get; set; }
public Dictionary<string, Account> NetworkAccount { get; set; } = new Dictionary<string, Account>();
public string FTPAddress { get; set; }
public int FTPPort { get; set; } = 21;
public string FTPUserID { get; set; }
public string FTPPassword { get; set; }
public string DBGetEquipments { get; set; }
public string DBGetModelDetails { get; set; }
public string DBGetModelInfo { get; set; }
/// <summary>
/// GetLogPath()에서 사용 할 Format 문자열을 설정하거나 가져옵니다.
/// <para>{0}\eisap01_eislog\Log\\{1}</para>
/// </summary>
//public Dictionary<string, string> QueryGetLogPath { get; set; } = new Dictionary<string, string>();
#endregion
#region [ LogServer ] -------------------------------------------------
public LogServer(string name, string dbConnectionString = "")
{
this.Name = name;
this.DBConnectionString = dbConnectionString;
}
#endregion
#region [ Method ] ----------------------------------------------------
public DataTable GetEquipments()
{
SqlConnection sqlConnection = null;
DataTable dt = null;
try
{
if (string.IsNullOrEmpty(this.DBConnectionString)) throw new Exception($"ConnectionString 속성에 값이 존재하지 않습니다.");
if (string.IsNullOrEmpty(this.DBGetEquipments)) throw new Exception($"QueryGetEquipment 속성에 값이 존재하지 않습니다.");
sqlConnection = new SqlConnection();
sqlConnection.ConnectionString = this.DBConnectionString;
sqlConnection.Open();
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlCommand.CommandType = CommandType.Text;
sqlCommand.CommandText = this.DBGetEquipments;
DataSet ds = new DataSet();
SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCommand);
sqlAdapter.Fill(ds);
sqlConnection.Close();
if (ds != null && ds.Tables.Count > 0) dt = ds.Tables[0];
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
throw ex;
}
finally
{
if (sqlConnection != null && sqlConnection.State != ConnectionState.Closed)
{
sqlConnection.Close();
sqlConnection.Dispose();
}
}
return dt;
}
public DataTable GetModelDetails(string modelID)
{
SqlConnection sqlConnection = null;
DataTable dt = null;
try
{
if (string.IsNullOrEmpty(this.DBConnectionString)) throw new Exception($"ConnectionString 속성에 값이 존재하지 않습니다.");
if (string.IsNullOrEmpty(this.DBGetEquipments)) throw new Exception($"QueryGetEquipment 속성에 값이 존재하지 않습니다.");
sqlConnection = new SqlConnection();
sqlConnection.ConnectionString = this.DBConnectionString;
sqlConnection.Open();
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlCommand.CommandType = CommandType.Text;
sqlCommand.CommandText = this.DBGetModelDetails;
sqlCommand.Parameters.Add(new SqlParameter("@MODEL_ID", modelID));
DataSet ds = new DataSet();
SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCommand);
sqlAdapter.Fill(ds);
sqlConnection.Close();
if (ds != null && ds.Tables.Count > 0) dt = ds.Tables[0];
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
throw ex;
}
finally
{
if (sqlConnection != null && sqlConnection.State != ConnectionState.Closed)
{
sqlConnection.Close();
sqlConnection.Dispose();
}
}
return dt;
}
public DataTable GetModelInfo(string modelID)
{
SqlConnection sqlConnection = null;
DataTable dt = null;
try
{
if (string.IsNullOrEmpty(this.DBConnectionString)) throw new Exception($"ConnectionString 속성에 값이 존재하지 않습니다.");
if (string.IsNullOrEmpty(this.DBGetEquipments)) throw new Exception($"QueryGetEquipment 속성에 값이 존재하지 않습니다.");
sqlConnection = new SqlConnection();
sqlConnection.ConnectionString = this.DBConnectionString;
sqlConnection.Open();
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlCommand.CommandType = CommandType.Text;
sqlCommand.CommandText = this.DBGetModelInfo;
sqlCommand.Parameters.Add(new SqlParameter("@MODEL_ID", modelID));
DataSet ds = new DataSet();
SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCommand);
sqlAdapter.Fill(ds);
sqlConnection.Close();
if (ds != null && ds.Tables.Count > 0) dt = ds.Tables[0];
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
throw ex;
}
finally
{
if (sqlConnection != null && sqlConnection.State != ConnectionState.Closed)
{
sqlConnection.Close();
sqlConnection.Dispose();
}
}
return dt;
}
public string GetLogPath(string serverIP, string equipmentID)
{
try
{
Account account = this.NetworkAccount[serverIP];
return $@"\\{account.IPAddress}\{account.DefaultPath}{equipmentID}\";
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
return string.Empty;
}
}
public DataSet ExecuteQuery(string query)
{
SqlConnection sqlConnection = null;
DataSet ds = new DataSet();
try
{
if (string.IsNullOrEmpty(this.DBConnectionString)) throw new Exception($"ConnectionString 속성에 값이 존재하지 않습니다.");
sqlConnection = new SqlConnection();
sqlConnection.ConnectionString = this.DBConnectionString;
sqlConnection.Open();
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.CommandTimeout = 5000;
sqlCommand.Connection = sqlConnection;
sqlCommand.CommandType = CommandType.Text;
sqlCommand.CommandText = query;
SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCommand);
sqlAdapter.Fill(ds);
sqlConnection.Close();
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
throw ex;
}
finally
{
if (sqlConnection != null && sqlConnection.State != ConnectionState.Closed)
{
sqlConnection.Close();
sqlConnection.Dispose();
}
}
return ds;
}
public override string ToString()
{
return this.Name;
}
#endregion
}
public class Account
{
public AccessType Access { get; set; } = AccessType.FTPS;
public string IPAddress { get; set; }
public string UserID { get; set; }
public string Password { get; set; }
public string DefaultPath { get; set; }
public Account()
{
}
public Account(string ipAddress, string uid, string pwd, string defaultPath = "", AccessType access = AccessType.SMB)
{
this.IPAddress = ipAddress;
this.UserID = uid;
this.Password = pwd;
this.DefaultPath = defaultPath;
this.Access = access;
}
}
}