#include "StdAfx.h"
#include "MBVaultDbMgr.h"
#include "StrFileUtils.h"
#include "MBStrObjMgr.h"
CMBVaultDbMgr::CMBVaultDbMgr(void):m_hWnd(NULL)
{
m_bSyncInit = false;
m_bDbInit = false;
m_nPort = 0;
m_pAppExtParm = new CMBFireAppExtParam();
m_pNDWebCMgr = NULL;
m_pThreadSyncDb = new CMBThreadSyncDb();
m_pThreadFireSyncDb = new CMBThreadFireSyncDb();
}
CMBVaultDbMgr::~CMBVaultDbMgr(void)
{
if( NULL != m_pThreadSyncDb )
{
delete m_pThreadSyncDb;
m_pThreadSyncDb = NULL;
}
if( NULL != m_pThreadFireSyncDb )
{
delete m_pThreadFireSyncDb;
m_pThreadFireSyncDb = NULL;
}
if( NULL != m_pAppExtParm )
{
delete m_pAppExtParm;
m_pAppExtParm = NULL;
}
}
void CMBVaultDbMgr::SetUserSessionID( CString strUserSessionID )
{
m_strUserSessionID = strUserSessionID;
}
void CMBVaultDbMgr::SetSvrInfo( CString strSvrIP,int nPort,CString strUserID,CString strUserName,CString strPwd )
{
m_strUserID = strUserID;
m_strUserName = strUserName;
m_strPwd = strPwd;
m_strSvrIP = strSvrIP;
m_nPort = nPort;
}
// ÉèÖÃ×ÊԴ·¾¶
void CMBVaultDbMgr::SetDbPath(CString strExePath,CString strCfgPath)
{
m_strExePath = strExePath;
m_strCfgPath = strCfgPath;
CString strExtParamPath,strErrInfo;
strExtParamPath.Format(_T("%s\\AreaExtParam.json"),m_strCfgPath);
CStrFileUtils::GetStrFromFile( strExtParamPath, m_strParam );
m_pAppExtParm->ParseJson(m_strParam,strErrInfo);
}
CString CMBVaultDbMgr::GetExePath()
{
return m_strExePath;
}
CString CMBVaultDbMgr::GetCfgPath()
{
return m_strCfgPath;
}
void CMBVaultDbMgr::SetParam(CString strParam)
{
strParam.Replace(_T("\\"),_T(""));
m_strParam = strParam;
}
CString CMBVaultDbMgr::GetFireParam()
{
return m_strParam;
}
bool CMBVaultDbMgr::DbInit(CString &strErrInfo)
{
if( m_bDbInit )
return true;
CString strDBFile,strSrcFile,strSrcFireExeFile,strFireExeFile;
strSrcFile.Format(_T("%s\\data\\mbc_vault.db"),m_strExePath); // ÔÊý¾Ý²Ö¿âËùÔڵķ¾¶
strDBFile.Format(_T("%s\\mbc_vault.db"),m_strCfgPath); // Ä¿±êÊý¾Ý²Ö¿âËùÔڵķ¾¶
/*strSrcFireExeFile.Format(_T("%s\\data\\Hangcha_CDD20_AC1S_1298_1220_140117_12_0_1.exe"),m_strExePath);
strFireExeFile.Format(_T("%s\\Hangcha_CDD20_AC1S_1298_1220_140117_12_0_1.exe"),m_strCfgPath); */
if( !CStrFileUtils::IsExist( strDBFile) )
CStrFileUtils::CopySqliteDb3(strSrcFile,strDBFile);
/*if( !CStrFileUtils::IsExist( strFireExeFile) )
CStrFileUtils::CopySqliteDb3(strSrcFireExeFile,strFireExeFile); */
try{
m_db.Close();
// ´ò¿ªÊý¾Ý¿â
if( !m_db.Open( strDBFile ))
{
strErrInfo = _T("´ò¿ªsqliteʧ°Ü£¡");
return false;
}
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
m_bDbInit = true;
return true;
}
// ɾ³ýÊý¾Ý
bool CMBVaultDbMgr::DelDb( CString &strErrInfo )
{
m_bDbInit = false;
m_db.Close();
CString strExtendPath,strFileRootPath;
strExtendPath = m_strExePath + _T("\\mbc_extend");
strFileRootPath = m_strExePath + _T("\\FileRoot");
CStrFileUtils::DoRemoveDirectory(strExtendPath);
CStrFileUtils::DoRemoveDirectory(strFileRootPath);
return true;
}
// ÉèÖòÎÊý
void CMBVaultDbMgr::SetParam( HWND hWnd,CMBNetDiskWebCMgr *pNDWebCMgr )
{
m_hWnd = hWnd;
m_pNDWebCMgr = pNDWebCMgr;
m_pThreadSyncDb->SetParam( hWnd,this,pNDWebCMgr );
m_pThreadFireSyncDb->SetParam( hWnd,this,pNDWebCMgr );
}
bool CMBVaultDbMgr::SyncInit( CString &strErrInfo )
{
CString strUserSessionID,strRootList;
if( !m_strUserSessionID.IsEmpty() )
{
m_pNDWebCMgr->SetUserInfo( m_strUserID, m_strUserName );
m_pNDWebCMgr->SetServerInfo( m_strSvrIP, m_nPort);
m_pNDWebCMgr->SetUserSessionID( m_strUserSessionID );
if(!m_pNDWebCMgr->SignIn( strRootList,strErrInfo )) // SessionID
return false;
}else{
m_pNDWebCMgr->SetUserInfo( m_strUserID, m_strUserName );
m_pNDWebCMgr->SetServerInfo( m_strSvrIP, m_nPort);
if(!m_pNDWebCMgr->SignIn(m_strPwd,strUserSessionID, strRootList,strErrInfo))
return false;
}
m_bSyncInit = true;
return true;
}
bool CMBVaultDbMgr::SyncDb( CString &strErrInfo )
{
if( !m_bSyncInit )
{
strErrInfo = _T("ÇëÏȽøÐÐͬ²½³õʼ»¯£¡");
return false;
}
if( !m_bDbInit )
{
strErrInfo = _T("ÇëÏȽøÐÐÊý¾Ý¿â³õʼ»¯£¡");
return false;
}
m_pThreadSyncDb->StartThread();
// ÓÃÒ»¸öÏß³ÌÀ´×ö
return true;
}
// µ÷Óýӿڣ¬Í¬²½±¾µØÊý¾Ý¿â
bool CMBVaultDbMgr::FireSyncDb( CString strParam,CString &strErrInfo )
{
CString strExtParamPath;
if( !m_bSyncInit )
{
strErrInfo = _T("ÇëÏȽøÐÐͬ²½³õʼ»¯£¡");
return false;
}
if( !m_bDbInit )
{
strErrInfo = _T("ÇëÏȽøÐÐÊý¾Ý¿â³õʼ»¯£¡");
return false;
}
SetParam(strParam);
strExtParamPath.Format(_T("%s\\AreaExtParam.json"),m_strCfgPath);
if(!CStrFileUtils::WriteFile(strExtParamPath,m_strParam,strErrInfo ))
return false;
if(!m_pAppExtParm->ParseJson(m_strParam,strErrInfo))
return false;
m_pThreadFireSyncDb->SetJsonParm( strParam );
m_pThreadFireSyncDb->StartThread();
// ÓÃÒ»¸öÏß³ÌÀ´×ö
return true;
}
// ÉèÖÃVaultµ½Db
bool CMBVaultDbMgr::SetVaultToDb(CMBVault *pVault,CString &strErrInfo)
{
if( NULL == pVault )
return false;
bool bExsit = IsExsitVaultInDb( pVault->m_strID,strErrInfo );
if( bExsit ) // ´æÔÚ¸üÐÂ
{
if( !UpdateVaultToDb(pVault,strErrInfo) )
return false;
}
else // ²»´æÔÚ£¬´´½¨
{
if(!InsertVaultToDb(pVault,strErrInfo) )
return false;
}
return true;
}
// ´æÔÚµç×Ó²Ö¿â
bool CMBVaultDbMgr::IsExsitVaultInDb( CString strVaultID,CString &strErrInfo )
{
CString strSql;
CDBRecord dbRecord;
long nRecordCount = 0;
try{
strSql.Format(_T("select * from OI_VAULT where CN_G_ID='%s'"),strVaultID);
if(!dbRecord.Open(&m_db,strSql))
return false;
nRecordCount = dbRecord.GetRecordCount();
if( 0 == nRecordCount )
return false;
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
return true;
}
// ²åÈëOI_VAULT
bool CMBVaultDbMgr::InsertVaultToDb(CMBVault *pVault,CString &strErrInfo)
{
if( NULL == pVault )
return false;
CString strSql;
strSql.Format(_T("insert into OI_VAULT(CN_G_ID,CN_S_NAME,CN_S_BAK,CN_S_CLS_ID,CN_S_ADMINSTRATOR,CN_S_ADMINSTRATOR_ID, \
CN_C_ACE,CN_S_CREATOR_NAME,CN_T_CREATE,CN_S_P_NAME,CN_N_BK_COLOR,CN_S_IMG_FONT_STYLE, \
CN_S_QUERY_CLSATTR,CN_S_EXT_ADMIN, CN_S_EXTPARAMTER) \
VALUES(\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\", \
\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\", \
\"%s\",\"%s\",\"%s\")"),
pVault->m_strID,pVault->m_strName,pVault->m_strBAK,pVault->m_strClsID,pVault->m_strAdminstrator, pVault->m_strAdminstratorID,
pVault->m_strAce, pVault->m_strCreatorName,pVault->m_strTCreate, pVault->m_strPName, pVault->m_nBkColor, pVault->m_strImgFontStyle,
pVault->m_strQueryClsAttr,pVault->m_strExtAdmin,pVault->m_strExtParamter);
try{
int nRet = CDBSQLiteCommFun::RunSQL(strSql, &m_db );
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
return true;
}
// ¸üÐÂOI_VAULT
bool CMBVaultDbMgr::UpdateVaultToDb(CMBVault *pVault,CString &strErrInfo)
{
CString strSql;
strSql.Format(_T("UPDATE OI_VAULT SET CN_S_NAME=\"%s\",CN_S_BAK=\"%s\",CN_S_CLS_ID=\"%s\",CN_S_ADMINSTRATOR=\"%s\",CN_S_ADMINSTRATOR_ID=\"%s\", \
CN_C_ACE=\"%s\",CN_S_CREATOR_NAME=\"%s\",CN_T_CREATE=\"%s\",CN_S_P_NAME=\"%s\",CN_N_BK_COLOR=\"%s\",CN_S_IMG_FONT_STYLE=\"%s\", \
CN_S_QUERY_CLSATTR=\"%s\",CN_S_EXT_ADMIN=\"%s\", CN_S_EXTPARAMTER=\"%s\" where CN_G_ID='%s'"),
pVault->m_strName,pVault->m_strBAK,pVault->m_strClsID,pVault->m_strAdminstrator, pVault->m_strAdminstratorID,
pVault->m_strAce, pVault->m_strCreatorName,pVault->m_strTCreate, pVault->m_strPName, pVault->m_nBkColor, pVault->m_strImgFontStyle,
pVault->m_strQueryClsAttr,pVault->m_strExtAdmin,pVault->m_strExtParamter,pVault->m_strID);
try{
int nRet = CDBSQLiteCommFun::RunSQL(strSql, &m_db );
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
return true;
}
// ÉèÖÃVaultCatalogµ½Db
bool CMBVaultDbMgr::SetVaultCatalogToDb(CMBVaultCatalog *pVaultCatalog,CString &strErrInfo)
{
if( NULL == pVaultCatalog )
return false;
bool bExsit = IsExsitVaultCatalogInDb( pVaultCatalog->m_strID,strErrInfo );
if( bExsit ) // ´æÔÚ¸üÐÂ
{
if( !UpdateVaultCatalogToDb(pVaultCatalog,strErrInfo) )
return false;
}
else // ²»´æÔÚ£¬´´½¨
{
if(!InsertVaultCatalogToDb(pVaultCatalog,strErrInfo) )
return false;
}
return true;
}
bool CMBVaultDbMgr::IsExsitVaultCatalogInDb( CString strVaultCatalogID,CString &strErrInfo )
{
CString strSql;
CDBRecord dbRecord;
long nRecordCount = 0;
try{
strSql.Format(_T("select * from OI_VAULT_CATALOG where CN_G_ID='%s'"),strVaultCatalogID);
if(!dbRecord.Open(&m_db,strSql))
return false;
nRecordCount = dbRecord.GetRecordCount();
if( 0 == nRecordCount )
return false;
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
return true;
}
// ²åÈëVaultCatalog
bool CMBVaultDbMgr::InsertVaultCatalogToDb(CMBVaultCatalog *pVaultCatalog,CString &strErrInfo)
{
if( NULL == pVaultCatalog )
return false;
CString strSql;
strSql.Format(_T("insert into OI_VAULT_CATALOG(CN_G_ID,CN_S_NAME,CN_S_DESC,CN_S_CREATOR_NAME,CN_T_CREATE,CN_C_ACE, \
CN_N_ORDER,CN_S_MASTER_ID,CN_S_MASTER_NAME,CN_G_PARENT_ID,CN_G_VAULT_ID) VALUES(\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\", \
\"%d\",\"%s\",\"%s\",\"%s\",\"%s\")"),
pVaultCatalog->m_strID,pVaultCatalog->m_strName,pVaultCatalog->m_strDesc,pVaultCatalog->m_strCreatorName,pVaultCatalog->m_strTCreate, pVaultCatalog->m_strAce,
pVaultCatalog->m_nOrder,pVaultCatalog->m_strMastrID,pVaultCatalog->m_strMastrName,pVaultCatalog->m_strParentID,pVaultCatalog->m_strVaultID );
try{
int nRet = CDBSQLiteCommFun::RunSQL(strSql, &m_db );
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
return true;
}
// ¸üÐÂVaultCatalog
bool CMBVaultDbMgr::UpdateVaultCatalogToDb(CMBVaultCatalog *pVaultCatalog,CString &strErrInfo)
{
CString strSql;
strSql.Format(_T("UPDATE OI_VAULT_CATALOG SET CN_S_NAME=\"%s\",CN_S_DESC=\"%s\",CN_S_CREATOR_NAME=\"%s\",CN_T_CREATE=\"%s\",CN_C_ACE=\"%s\", \
CN_N_ORDER=\"%d\",CN_S_MASTER_ID=\"%s\",CN_S_MASTER_NAME=\"%s\",CN_G_PARENT_ID=\"%s\",CN_G_VAULT_ID=\"%s\" where CN_G_ID='%s'"),
pVaultCatalog->m_strName,pVaultCatalog->m_strDesc,pVaultCatalog->m_strCreatorName,pVaultCatalog->m_strTCreate, pVaultCatalog->m_strAce,
pVaultCatalog->m_nOrder,pVaultCatalog->m_strMastrID,pVaultCatalog->m_strMastrName,pVaultCatalog->m_strParentID,pVaultCatalog->m_strVaultID,pVaultCatalog->m_strID );
try{
int nRet = CDBSQLiteCommFun::RunSQL(strSql, &m_db );
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
return true;
}
// ÅжϱíÊÇ·ñ´æÔÚ
bool CMBVaultDbMgr::IsExsitTableInDb( CString strTableName,CString &strErrInfo )
{
CString strSql;
CDBRecord dbRecord;
long nRecordCount = 0;
try{
strSql.Format(_T("SELECT * FROM sqlite_master WHERE type='table' and name='%s'"),strTableName);
if(!dbRecord.Open(&m_db,strSql))
return false;
nRecordCount = dbRecord.GetRecordCount();
if( 0 == nRecordCount )
return false;
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
return true;
}
// ɾ³ý±í
bool CMBVaultDbMgr::DropTableInDb( CString strTableName,CString &strErrInfo )
{
CString strSql;
strSql.Format(_T("DROP TABLE %s"),strTableName );
try{
int nRet = CDBSQLiteCommFun::RunSQL(strSql, &m_db );
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
return true;
}
// ´´½¨±í
bool CMBVaultDbMgr::CreateTableInDb( CString strTableName,CString strTableSql,CString &strErrInfo )
{
bool bExsit = IsExsitTableInDb(strTableName,strErrInfo);
if( bExsit )
{
/*if(!DropTableInDb( strTableName,strErrInfo ))
return false; */
return true;
}
/// ´´½¨
if(!CreateTableInDb( strTableSql,strErrInfo ))
return false;
return true;
}
bool CMBVaultDbMgr::CreateTableInDb2( CString strTableName,CString strTableSql,CString &strErrInfo )
{
bool bExsit = IsExsitTableInDb(strTableName,strErrInfo);
if( bExsit )
{
return true;
}
/// ´´½¨
if(!CreateTableInDb( strTableSql,strErrInfo ))
return false;
return true;
}
// ´´½¨±í
bool CMBVaultDbMgr::CreateTableInDb( CString strTableSql,CString &strErrInfo )
{
try{
int nRet = CDBSQLiteCommFun::RunSQL(strTableSql, &m_db );
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
return true;
}
// ²åÈë±í
bool CMBVaultDbMgr::InsertTableInDb( CString strInsertSql,CString &strErrInfo )
{
try{
int nRet = CDBSQLiteCommFun::RunSQL(strInsertSql, &m_db );
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
return true;
}
bool CMBVaultDbMgr::RunSQLInDb(CString strSql,CString &strErrInfo)
{
try{
int nRet = CDBSQLiteCommFun::RunSQL(strSql, &m_db );
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
return true;
}
bool CMBVaultDbMgr::IsExsitDataInDb(CString strSql,CString &strErrInfo)
{
CDBRecord dbRecord;
long nRecordCount = 0;
try{
if(!dbRecord.Open(&m_db,strSql))
return false;
nRecordCount = dbRecord.GetRecordCount();
if( 0 == nRecordCount )
return false;
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
return true;
}
bool CMBVaultDbMgr::DelVaultCatalogHlink( CString &strErrInfo )
{
CString strSql;
try{
strSql.Format(_T("delete from OI_VAULT_CATALOG_HLINK"));
int nRet = CDBSQLiteCommFun::RunSQL(strSql, &m_db );
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
return true;
}
bool CMBVaultDbMgr::InsertVaultCatalogHlink( CMBVaultCatalogHlink *pVaultCatalogHlink,CString &strErrInfo )
{
if( NULL == pVaultCatalogHlink )
return false;
CString strSql;
strSql.Format(_T("insert into OI_VAULT_CATALOG_HLINK(CN_G_CATALOG_ID,CN_S_CLS_ID,CN_G_OBJ_ID,CN_G_VID,CN_S_DISPLAY_NAME, \
CN_S_EXTATTR,CN_S_CREATOR,CN_T_LINK,CN_N_ORDER,CN_G_VAULT_ID, \
CN_S_TAGS) VALUES(\"%s\",\"%s\",\"%s\",\"%s\",\"%s\", \
\"%s\",\"%s\",\"%s\",\"%d\",\"%s\",\"%s\")"),
pVaultCatalogHlink->m_strCatalogID,pVaultCatalogHlink->m_strClsID,pVaultCatalogHlink->m_strObjID,pVaultCatalogHlink->m_strVID, pVaultCatalogHlink->m_strDisplayName,
pVaultCatalogHlink->m_strExtAttr, pVaultCatalogHlink->m_strCreator,pVaultCatalogHlink->m_strTLink,pVaultCatalogHlink->m_nOrder,pVaultCatalogHlink->m_strVaultID,
pVaultCatalogHlink->m_strTags );
try{
int nRet = CDBSQLiteCommFun::RunSQL(strSql, &m_db );
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
return true;
}
///////////////////////////////////////////////////////////////////////////////
bool CMBVaultDbMgr::VaultCatalogSubCount(CString strVaultID,CString strCatalogID,int &nSubCount,CString &strErrInfo)
{
CString strSql;
CDBRecord dbRecord;
long nRecordCount = 0;
strSql.Format(_T("select (select count(1) from OI_VAULT_CATALOG where CN_G_PARENT_ID='%s' and CN_G_VAULT_ID='%s') AS SumCount"),strCatalogID,strVaultID);
try{
if(!dbRecord.Open(&m_db,strSql))
{
strErrInfo = _T("´ò¿ª±íOI_VAULT_CATALOGʧ°Ü£¡");
return false;
}
HRESULT hR = dbRecord.MoveFirst();
if(S_OK== hR )
{
dbRecord.GetValue(_T("SumCount"),nRecordCount);
}
nSubCount = nRecordCount;
dbRecord.Close();
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
return true;
}
bool CMBVaultDbMgr::VaultCatalogObjCount(CString strVaultID,CString strCatalogID,int &nObjCount,CString &strErrInfo)
{
CString strSql;
CDBRecord dbRecord;
long nRecordCount = 0;
strSql.Format(_T("select (select count(1) from OI_VAULT_CATALOG_HLINK where CN_G_CATALOG_ID='%s' and CN_G_VAULT_ID='%s') AS SumCount"),strCatalogID,strVaultID);
try{
if(!dbRecord.Open(&m_db,strSql))
{
strErrInfo = _T("´ò¿ª±íOI_VAULT_CATALOG_HLINKʧ°Ü£¡");
return false;
}
HRESULT hR = dbRecord.MoveFirst();
if(S_OK== hR )
{
dbRecord.GetValue(_T("SumCount"),nRecordCount);
}
nObjCount = nRecordCount;
dbRecord.Close();
}
catch(...)
{
CDBSQliteException sqliteException(m_db.m_pDB);
strErrInfo = sqliteException.GetErrInfo();
return false;
}
return true;
}
bool CMBVaultDbMgr::VaultCatalogSubAndObjCount(CString strVaultID,CMBVaultCatalogMgr *pVaultCatalogMgr,CString &strErrInfo )
{
if( NULL == pVaultCatalogMgr )
return false;
int nSubCount = 0;
int nObjCount = 0;
CMBVaultCatalogVector::iterator it;
CMBVaultCatalog *pVaultCatalog = NULL;
CMBVaultCatalogVector vectorCatalog;
pVaultCatalogMgr->GetVaultCatalogVector( vectorCatalog );
for( it = vectorCatalog.begin();it != vectorCatalog.end();it++ )
{
pVaultCatalog = *it;
VaultCatalogSubCount(strVaultID,pVaultCatalog->m_strID,nSubCount,strErrInfo);
VaultCatalogObjCount(strVaultID,pVaultCatalog->m_strID,nObjCount,strErrInfo);
pVaultCatalog->m_nSubCount = nSubCount;
pVaultCatalog->m_nObjCount = nObjCount;
}
return true;
}
bool CMBVaultDbMgr::VaultSubAndObjCount(CMBVaultMgr *pVaultMgr,CString &strErrInfo )
{
if( NULL == pVaultMgr )
return false;
int nSubCount = 0;
int nObjCount = 0;
CMBVaultVector vector;
CMBVaultVector::iterator it;
CMBVault *pVault = NULL;
pVaultMgr->GetVaultVector( vector );
for( it = vector.begin();it != vector.end();it++ )
{
pVault = *it;
VaultCatalogSubCount(pVault->m_strID,_T(""),nSubCount,strErrInfo);
/*VaultCatalogObjCount(pVault->m_strID,_T(""),nObjCount,strErrInfo);*/
pVault->m_nSubCount = nSubCount;
pVault->m_nObjCount = nObjCount;
}
return true;
}
bool CMBVaultDbMgr::LoadVaultCataLog( CDBRecord &dbRecord,CMBVaultCatalogMgr *pVaultCatalogMgr, CString &strErrInfo )
{
if( pVaultCatalogMgr == NULL ){
strErrInfo = _T("CMBVaultCatalogMgr£¬¶ÔÏóδ³õʼ»¯");
return false;
}
int nCount = dbRecord.GetRecordCount();
if( 0 == nCount )
return true;
HRESULT hR = dbRecord.MoveFirst();
while(S_OK== hR )
{
CMBVaultCatalog *pVaultCatalog = new CMBVaultCatalog();
dbRecord.GetValue(_T("CN_G_ID"),pVaultCatalog->m_strID);
dbRecord.GetValue(_T("CN_S_NAME"),pVaultCatalog->m_strName);
dbRecord.GetValue(_T("CN_S_DESC"),pVaultCatalog->m_strDesc);
//dbRecord.GetValue(_T("CN_S_CREATOR_ID"),pVaultCatalog->m_strCreatorID);
dbRecord.GetValue(_T("CN_S_CREATOR_NAME"),pVaultCatalog->m_strCreatorName);
dbRecord.GetValue(_T("CN_T_CREATE"),pVaultCatalog->m_strTCreate);
dbRecord.GetValue(_T("CN_C_ACE"),pVaultCatalog->m_strAce);
dbRecord.GetValue(_T("CN_N_ORDER"),pVaultCatalog->m_nOrder);
dbRecord.GetValue(_T("CN_S_MASTER_ID"),pVaultCatalog->m_strMastrID);
dbRecord.GetValue(_T("CN_T_CREATE"),pVaultCatalog->m_strTCreate);
dbRecord.GetValue(_T("CN_S_MASTER_NAME"),pVaultCatalog->m_strMastrName);
dbRecord.GetValue(_T("CN_G_PARENT_ID"),pVaultCatalog->m_strParentID);
dbRecord.GetValue(_T("CN_G_VAULT_ID"),pVaultCatalog->m_strVaultID);
if(!pVaultCatalogMgr->AddVaultCatalog(pVaultCatalog))
{
delete pVaultCatalog;
pVaultCatalog = NULL;
}
hR = dbRecord.MoveNext();
}
return true;
}
bool CMBVaultDbMgr::LoadVault( CDBRecord &dbRecord,CMBVault *pVault, CString &strErrInfo )
{
if( pVault == NULL ){
strErrInfo = _T("CMBVault,¶ÔÏóδ³õʼ»¯");
return false;
}
int nCount = dbRecord.GetRecordCount();
if( 0 == nCount )
return true;
HRESULT hR = dbRecord.MoveFirst();
while(S_OK== hR )
{
dbRecord.GetValue(_T("CN_G_ID"),pVault->m_strID);
dbRecord.GetValue(_T("CN_S_NAME"),pVault->m_strName);
dbRecord.GetValue(_T("CN_S_BAK"),pVault->m_strBAK);
dbRecord.GetValue(_T("CN_S_CLS_ID"),pVault->m_strClsID);
dbRecord.GetValue(_T("CN_S_ADMINSTRATOR"),pVault->m_strAdminstrator);
dbRecord.GetValue(_T("CN_S_ADMINSTRATOR_ID"),pVault->m_strAdminstratorID);
dbRecord.GetValue(_T("CN_C_ACE"),pVault->m_strAce);
dbRecord.GetValue(_T("CN_S_CREATOR_NAME"),pVault->m_strCreatorName);
dbRecord.GetValue(_T("CN_T_CREATE"),pVault->m_strTCreate);
dbRecord.GetValue(_T("CN_S_P_NAME"),pVault->m_strPName);
dbRecord.GetValue(_T("CN_N_BK_COLOR"),pVault->m_nBkColor);
dbRecord.GetValue(_T("CN_S_IMG_FONT_STYLE"),pVault->m_strImgFontStyle);
dbRecord.GetValue(_T("CN_S_QUERY_CLSATTR"),pVault->m_strQueryClsAttr);
dbRecord.GetValue(_T("CN_S_EXT_ADMIN"),pVault->m_strExtAdmin);
dbRecord.GetValue(_T("CN_S_EXTPARAMTER"),pVault->m_strExtParamter);
hR = dbRecord.MoveNext();
}
return true;
}
bool CMBVaultDbMgr::LoadVault( CDBRecord &dbRecord,CMBVaultMgr *pVaultMgr, CString &strErrInfo )
{
if( pVaultMgr == NULL ){
strErrInfo = _T("CMBVault,¶ÔÏóδ³õʼ»¯");
return false;
}
int nCount = dbRecord.GetRecordCount();
if( 0 == nCount )
return true;
HRESULT hR = dbRecord.MoveFirst();
while(S_OK== hR )
{
CMBVault *pVault = new CMBVault();
dbRecord.GetValue(_T("CN_G_ID"),pVault->m_strID);
dbRecord.GetValue(_T("CN_S_NAME"),pVault->m_strName);
dbRecord.GetValue(_T("CN_S_BAK"),pVault->m_strBAK);
dbRecord.GetValue(_T("CN_S_CLS_ID"),pVault->m_strClsID);
dbRecord.GetValue(_T("CN_S_ADMINSTRATOR"),pVault->m_strAdminstrator);
dbRecord.GetValue(_T("CN_S_ADMINSTRATOR_ID"),pVault->m_strAdminstratorID);
dbRecord.GetValue(_T("CN_C_ACE"),pVault->m_strAce);
dbRecord.GetValue(_T("CN_S_CREATOR_NAME"),pVault->m_strCreatorName);
dbRecord.GetValue(_T("CN_T_CREATE"),pVault->m_strTCreate);
dbRecord.GetValue(_T("CN_S_P_NAME"),pVault->m_strPName);
dbRecord.GetValue(_T("CN_N_BK_COLOR"),pVault->m_nBkColor);
dbRecord.GetValue(_T("CN_S_IMG_FONT_STYLE"),pVault->m_strImgFontStyle);
dbRecord.GetValue(_T("CN_S_QUERY_CLSATTR"),pVault->m_strQueryClsAttr);
dbRecord.GetValue(_T("CN_S_EXT_ADMIN"),pVault->m_strExtAdmin);
dbRecord.GetValue(_T("CN_S_EXTPARAMTER"),pVault->m_strExtParamter);
if( !pVaultMgr->AddVault(pVault) )
{
delete pVault;
pVault = NULL;
}
hR = dbRecord.MoveNext();
}
return true;
}
bool CMBVaultDbMgr::LoadTNXXXObj( CDBRecord &dbRecord,CString &strTNXXXXml, CString &strErrInfo )
{
CString strFieldVaule,strFieldName,strIDFieldVaule;
CString strObjXml,strObjsXml,strAttrXml,strAttrsXml;
int nCount = dbRecord.GetRecordCount();
if( 0 == nCount )
return true;
HRESULT hR = dbRecord.MoveFirst();
while(S_OK== hR )
{
int nColsCount = dbRecord.GetColsCount();
strAttrsXml = _T("");
for( int i = 1;i <= nColsCount;i++ )
{
strFieldName = dbRecord.GetFieldName(i);
dbRecord.GetValue( i, strFieldVaule);
if( strFieldName == _T("S_ID") )
{
strIDFieldVaule = strFieldVaule;
}else{
strAttrXml.Format(_T("