#include "StdAfx.h"
#include "MultiDBInterface.h"

CMultiDBInterface::CMultiDBInterface(void)
{
}

CMultiDBInterface::~CMultiDBInterface(void)
{
	RemoveAllCatalog();
}

void CMultiDBInterface::RemoveAllCatalog()
{
	CCatalogObj *pCatalog = NULL;
	for ( MULTCATALOG::iterator it = m_vtMulitCatalog.begin(); it != m_vtMulitCatalog.end();)
	{
		pCatalog = *it;
		it = m_vtMulitCatalog.erase(it);

		delete pCatalog;
		pCatalog = NULL;
	}
}

BOOL CMultiDBInterface::IsCatalogExists(IN LPCTSTR lpConnectString)
{
	CCatalogObj *pCatalog = NULL;
	for ( MULTCATALOG::iterator it = m_vtMulitCatalog.begin(); it != m_vtMulitCatalog.end();it++)
	{
		pCatalog = *it;
		if ( _tcscmp(pCatalog->GetConnectString(),lpConnectString) == 0 )
		{
			return TRUE;
			//break;
		}
	}

	return FALSE;
}

BOOL CMultiDBInterface::AddCatalog(IN CONST DWORD &dwCatalogPort, IN LPCTSTR lpCatalogSource, IN LPCTSTR lpCatalogAccount, IN LPCTSTR lpCatalogPsw, IN LPCTSTR lpCatalogName)
{
	TCHAR szConnectString[MAX_PATH] = _T("");
	if (dwCatalogPort)
	{
		_stprintf_s(szConnectString, _T("driver={SQL Server};Server=%s,%d;database=%s;uid=%s;pwd=%s"),
			lpCatalogSource, dwCatalogPort, lpCatalogName, lpCatalogAccount, lpCatalogPsw);
	}
	else
	{
		_stprintf_s(szConnectString, _T("driver={SQL Server};Server=%s;database=%s;uid=%s;pwd=%s"),
			lpCatalogSource, lpCatalogName, lpCatalogAccount, lpCatalogPsw);
	}

	if ( IsCatalogExists(szConnectString) )
	{
		return FALSE;
	}

	CCatalogObj *pCatalog = new CCatalogObj;
	if ( pCatalog == NULL )
	{
		return FALSE;
	}

	pCatalog->SetConn(szConnectString);
	if( !pCatalog->OpenCatalog() )
	{
		delete pCatalog;
		pCatalog = NULL;

		return FALSE;
	}

	return TRUE;
}