You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

227 lines
6.9 KiB

//-----------------------------------------------------------------------
// <copyright file="CustomizeDBMgr.cs" company="Origtek">
// CustomizeDBMgr belongs to Copyright (c) Origtek. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------
namespace SoldierDataEntity
{
using System.Collections.Generic;
using OT.COM.ArsenalDB;
using OT.COM.LogisticsUtil;
using System;
using SoldierData;
using System.Configuration;
/// <summary>
/// Customize handle database
/// </summary>
public partial class CustomizeDBMgr
{
/// <summary>
/// Main database connection string
/// </summary>
public CustomizeDBMgr()
{
init();
}
private Dictionary<string,string> _dicConnections = null;
public int ModifyConnections(string i_sConnectionID, string i_sConnectionData)
{
int nRes = -1;
do
{
if(_dicConnections.ContainsKey(i_sConnectionID))
{
_dicConnections[i_sConnectionID] = i_sConnectionData;
}
else
{
_dicConnections.Add(i_sConnectionID, i_sConnectionData);
}
nRes = 0;
}
while (false);
return nRes;
}
public string GetConnectString(string i_sConnectionID)
{
return _dicConnections[i_sConnectionID];
}
public TableInfo GetTableInfo(Type i_tORMType, string i_sConnectionID = null)
{
TableInfo tiRes = new TableInfo()
{
ConnectString = (i_sConnectionID != null)?_dicConnections[i_sConnectionID] : null,
TargetTable = i_tORMType,
ConnectionMap = new CustomizeDBMgr().GetConnectMap()
};
//new TableInfo()
// {
// TargetTable = i_tORMType,
// ConnectionMap = new CustomizeDBMgr().GetConnectMap()
// };
//if (_dicConnections.ContainsKey(i_sConnectionID) == true)
//{
// string[] sa = i_sConnectionID.Split('_');
// tiRes = new TableInfo()
// {
// ConnectString = _dicConnections[i_sConnectionID],
// TargetTable = i_tORMType,
// ConnectionMap = new CustomizeDBMgr().GetConnectMap()
// };
// string[] saNames = Enum.GetNames(typeof(Command.DBTYPE));
// string name = string.Empty;
// foreach (string s in saNames)
// {
// if (-1 != s.IndexOf(sa[0]))
// {
// name = s;
// break;
// }
// }
// //tiRes.DBType = (Command.DBTYPE)Enum.Parse(typeof(Command.DBTYPE),name);
//}
return tiRes;
}
protected void init()
{
Util u = new Util();
if(_dicConnections == null)
{
_dicConnections = new Dictionary<string,string>();
bool bUseSecret = u.GetSettingBoolean("USESECRET");
if (bUseSecret == false)
{
string [] sKeys = ConfigurationManager.AppSettings.AllKeys;
foreach (string sKey in sKeys)
{
if (sKey.IndexOf("_ConnectString") != -1)
{
_dicConnections.Add(sKey, u.GetSettingString(sKey));
}
}
}
else
{
SecretData sd = new SecretData();
Dictionary<string,string> dicData = null;
string sRes = sd.GetData(out dicData);
if(sRes == null)
{
foreach(string sKey in dicData.Keys)
{
if (sKey.IndexOf("_ConnectString") != -1)
{
_dicConnections.Add(sKey, dicData[sKey]);
}
}
}
}
}
}
public Dictionary<string, DBConnectionInfo> GetConnectMap()
{
Util util = new Util();
string sAllConnections = util.GetSettingString("AllConnections");
string[] saConnections = sAllConnections.Split(":;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
Dictionary<string, DBConnectionInfo> dicConnection = new Dictionary<string, DBConnectionInfo>();
for (int i = 0; i < saConnections.Length; i = i + 2)
{
try
{
DBConnectionInfo dbci = new DBConnectionInfo() { Name = saConnections[i] };
string sKey = saConnections[i + 1];
dbci.ConnectString = _dicConnections[sKey];
dbci.DBTYPE = sKey.Split('_')[0];
dicConnection.Add(saConnections[i], dbci);
}
catch
{ }
}
return dicConnection;
}
public string GetFullEntityName(string i_sEntityName)
{
return (i_sEntityName.IndexOf(".") != -1) ? "SoldierData." + i_sEntityName : "SoldierData.syserp." + i_sEntityName;
}
public Type GetEntityType(string i_sEntityName)
{
ClassHelper ch = new ClassHelper();
string sEntityName = GetFullEntityName(i_sEntityName);
return Type.GetType(sEntityName + ",SoldierData");
}
public string SingleConnection
{
get
{
string sRes = string.Empty;
Util u = new Util();
bool bUseSecret = u.GetSettingBoolean("USESECRET");
if (bUseSecret == false)
{
sRes = u.GetSettingString("UseSingleConnect");
if(string.IsNullOrEmpty(sRes) == true)
{
sRes = string.Empty;
}
}
else
{
SecretData sd = new SecretData();
Dictionary<string, string> dicData = null;
string sMsg = sd.GetData(out dicData);
if (dicData.ContainsKey("UseSingleConnect") == true)
{
sRes = dicData["UseSingleConnect"];
}
else
{
sRes = string.Empty;
}
}
return sRes;
}
}
}
}