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

272 lines
9.5 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using SystemX.Common;
using SystemX.Common.Serialization;
using static SystemX.Net.DB.XDBConnManager;
namespace SystemX.Net.DB
{
public class CMainConnInfo
{
public string Type { get; set; }
public string IP { get; set; }
public string Port { get; set; }
public string ID { get; set; }
public string PW { get; set; }
public string SCHEMA { get; set; }
public string MAC_ADDR { get; set; }
public string SSPI { get; set; }
public CMainConnInfo()
{
Type = string.Empty;
IP = string.Empty;
Port = string.Empty;
ID = string.Empty;
PW = string.Empty;
SCHEMA = string.Empty;
MAC_ADDR = string.Empty;
SSPI = string.Empty;
}
}
public class CShortTermConnInfo
{
public string Type { get; set; }
public string IP { get; set; }
public string Port { get; set; }
public string ID { get; set; }
public string PW { get; set; }
public string SCHEMA { get; set; }
public string MAC_ADDR { get; set; }
public string SSPI { get; set; }
public CShortTermConnInfo()
{
Type = string.Empty;
IP = string.Empty;
Port = string.Empty;
ID = string.Empty;
PW = string.Empty;
SCHEMA = string.Empty;
MAC_ADDR = string.Empty;
SSPI = string.Empty;
}
}
public class CLongTermConnInfo
{
public string Type { get; set; }
public string IP { get; set; }
public string Port { get; set; }
public string ID { get; set; }
public string PW { get; set; }
public string SCHEMA { get; set; }
public string MAC_ADDR { get; set; }
public string SSPI { get; set; }
public CLongTermConnInfo()
{
Type = string.Empty;
IP = string.Empty;
Port = string.Empty;
ID = string.Empty;
PW = string.Empty;
SCHEMA = string.Empty;
MAC_ADDR = string.Empty;
SSPI = string.Empty;
}
}
public class XDBConnInfo
{
public enum INFO_STRUCTURE
{
DBConnInfo,
IP,
Port,
ID,
PW,
DB_CONN,
MAC_ADDR,
SSPI
}
public CMainConnInfo ConnMain;
public CShortTermConnInfo ConnShortTerm;
public CLongTermConnInfo ConnLongTerm;
public XDBConnInfo()
{
ConnMain = new CMainConnInfo();
ConnShortTerm = new CShortTermConnInfo();
ConnLongTerm = new CLongTermConnInfo();
}
public bool ReadConfig(string strPath)
{
try
{
FileStream fs = new FileStream(strPath, FileMode.Open, FileAccess.Read);
XmlDocument xmldoc = new XmlDocument();
XmlNodeList nodeList;
Type InfoType = typeof(XDBConnInfo);
xmldoc.Load(fs);
nodeList = xmldoc.GetElementsByTagName(INFO_STRUCTURE.DBConnInfo.ToString());
XmlNode topNode = nodeList.Item(0);
foreach (XmlNode node in topNode.ChildNodes)
{
string strNodeName = node.Name;
if (strNodeName.CompareTo("MainConnInfo") == 0)
{
if (node.HasChildNodes == false)
throw new Exception("[MainConnInfo] Has no entries.");
if (node.ChildNodes.Count != 8)
throw new Exception("[MainConnInfo] Entries do not match.");
ConnMain.Type = node.ChildNodes[0].InnerText;
ConnMain.IP = node.ChildNodes[1].InnerText;
ConnMain.Port = node.ChildNodes[2].InnerText;
ConnMain.ID = node.ChildNodes[3].InnerText;
ConnMain.PW = node.ChildNodes[4].InnerText;
ConnMain.SCHEMA = node.ChildNodes[5].InnerText;
ConnMain.MAC_ADDR = node.ChildNodes[6].InnerText;
ConnMain.SSPI = node.ChildNodes[7].InnerText;
}
else if (strNodeName.CompareTo("ShortTermInfo") == 0)
{
if (node.HasChildNodes == false)
throw new Exception("[ShortTermInfo] Has no entries.");
if (node.ChildNodes.Count != 8)
throw new Exception("[ShortTermInfo] Entries do not match.");
ConnShortTerm.Type = node.ChildNodes[0].InnerText;
ConnShortTerm.IP = node.ChildNodes[1].InnerText;
ConnShortTerm.Port = node.ChildNodes[2].InnerText;
ConnShortTerm.ID = node.ChildNodes[3].InnerText;
ConnShortTerm.PW = node.ChildNodes[4].InnerText;
ConnShortTerm.SCHEMA = node.ChildNodes[5].InnerText;
ConnShortTerm.MAC_ADDR = node.ChildNodes[6].InnerText;
ConnShortTerm.SSPI = node.ChildNodes[7].InnerText;
}
else if(strNodeName.CompareTo("LongTermInfo") == 0)
{
if (node.HasChildNodes == false)
throw new Exception("[LongTermInfo] Has no entries.");
if (node.ChildNodes.Count != 8)
throw new Exception("[LongTermInfo] Entries do not match.");
ConnLongTerm.Type = node.ChildNodes[0].InnerText;
ConnLongTerm.IP = node.ChildNodes[1].InnerText;
ConnLongTerm.Port = node.ChildNodes[2].InnerText;
ConnLongTerm.ID = node.ChildNodes[3].InnerText;
ConnLongTerm.PW = node.ChildNodes[4].InnerText;
ConnLongTerm.SCHEMA = node.ChildNodes[5].InnerText;
ConnLongTerm.MAC_ADDR = node.ChildNodes[6].InnerText;
ConnLongTerm.SSPI = node.ChildNodes[7].InnerText;
}
/*
else
{
PropertyInfo propFound = InfoType.GetProperty(strNodeName);
if (propFound != null)
propFound.SetValue(this, node.InnerText);
}
*/
}
fs.Close();
}
catch (Exception ex)
{
Console.WriteLine($"DB Connection Info. Reading Error : {ex.Message}");
return false;
}
return true;
}
public string GetConnectionStatement(eDbType eType, eConnCategory eConn)
{
string strStatement = string.Empty;
bool bSSPI = true;
string IP_ADDRESS = string.Empty;
string PORT_NUMBER = string.Empty;
string CONN_SCHEMA = string.Empty;
string IDENTIFIER = string.Empty;
string PASSWORD = string.Empty;
switch (eConn)
{
case eConnCategory.Main:
{
if (ConnMain.SSPI.IndexOf("False") >= 0) bSSPI = false;
IP_ADDRESS = ConnMain.IP;
PORT_NUMBER = ConnMain.Port;
CONN_SCHEMA = ConnMain.SCHEMA;
IDENTIFIER = ConnMain.ID;
PASSWORD = ConnMain.PW;
}
break;
case eConnCategory.ShortTerm:
{
if (ConnShortTerm.SSPI.IndexOf("False") >= 0) bSSPI = false;
IP_ADDRESS = ConnShortTerm.IP;
PORT_NUMBER = ConnShortTerm.Port;
CONN_SCHEMA = ConnShortTerm.SCHEMA;
IDENTIFIER = ConnShortTerm.ID;
PASSWORD = ConnShortTerm.PW;
}
break;
case eConnCategory.LongTerm:
{
if (ConnLongTerm.SSPI.IndexOf("False") >= 0) bSSPI = false;
IP_ADDRESS = ConnLongTerm.IP;
PORT_NUMBER = ConnLongTerm.Port;
CONN_SCHEMA = ConnLongTerm.SCHEMA;
IDENTIFIER = ConnLongTerm.ID;
PASSWORD = ConnLongTerm.PW;
}
break;
}
switch (eType)
{
case eDbType.MS_SQL:
if (bSSPI == false)
strStatement = $"Data Source = {IP_ADDRESS},{PORT_NUMBER}; Initial Catalog = {CONN_SCHEMA}; User ID = {IDENTIFIER}; Password = {PASSWORD}; MultipleActiveResultSets=True;";
else
strStatement = $"Data Source = localhost; Initial Catalog = {CONN_SCHEMA}; Integrated Security = SSPI; MultipleActiveResultSets=True;";
break;
default:
break;
}
return strStatement;
}
}
}