#include "StdAfx.h"
|
#include "MBWatchMgr.h"
|
|
|
CMBWatchMgr::CMBWatchMgr(void)
|
{
|
m_bFirstLoadBackupCmd = true;
|
}
|
|
|
CMBWatchMgr::~CMBWatchMgr(void)
|
{
|
}
|
|
BOOL CMBWatchMgr::Init( CString strLogin, CString strPassword, CString strServerID, BOOL &bFirstDB, CString &strErrInfo,BOOL bCheckFile )
|
{
|
if( !InitDB( strLogin, strPassword, strServerID, bFirstDB,bCheckFile ) )
|
return FALSE;
|
|
if( !InitBackupDirInfo( strErrInfo ) )
|
return FALSE;
|
|
return TRUE;
|
}
|
|
BOOL CMBWatchMgr::InitDB( CString strLogin, CString strPassword, CString strServerID, BOOL &bFirstDB,BOOL bCheckFile )
|
{
|
if (!m_WatchDBMgr.Logined(strLogin,strPassword, strServerID,bFirstDB))
|
{
|
return FALSE;
|
}
|
|
CString strClass, strName;
|
CString strPropValue = _T("");
|
CString strPropExtValue = _T("");
|
int nPropVer = 0;
|
strClass = CLASS_SYSTEM;
|
strName = _T("LoginName");
|
strPropValue= strPassword;
|
m_WatchDBMgr.UpdatePropStringData(strClass,strName, nPropVer,strPropValue,strPropExtValue);
|
|
return TRUE;
|
}
|
|
|
BOOL CMBWatchMgr::InitBackupDirInfo( CString &strErrInfo )
|
{
|
m_mapBackupDirInfo.RemoveAll();
|
|
|
SYNCDIR_ITEM itemSyncDir;
|
CString strKey;
|
CArraySyncDirInfo arBackupDirInfo;
|
arBackupDirInfo.RemoveAll();
|
m_WatchDBMgr.GetBackupDirInfo(arBackupDirInfo);
|
for(int i = 0; i < arBackupDirInfo.GetCount() ;i++)
|
{
|
itemSyncDir = arBackupDirInfo.GetAt(i);
|
strKey.Format(_T("%s_%d"),itemSyncDir.strGUID,itemSyncDir.nType);
|
strKey.MakeLower();
|
m_mapBackupDirInfo.SetAt(strKey, itemSyncDir);
|
}
|
|
return TRUE;
|
}
|
|
BOOL CMBWatchMgr::NewBackupDirInfo(CString strSvrPath, CString strCatalogID,CString strName,int nType, CString strDir)
|
{
|
CString strKey;
|
if( m_WatchDBMgr.NewBackupDirInfoToDB(strSvrPath,strCatalogID,strName,nType,strDir))
|
{
|
SYNCDIR_ITEM itemSyncDir;
|
itemSyncDir.strGUID = strCatalogID;
|
itemSyncDir.nType = nType;
|
itemSyncDir.strFileDir = strDir;
|
itemSyncDir.strRootGUID = strSvrPath;
|
itemSyncDir.strName = strName;
|
strKey.Format(_T("%s_%d"),itemSyncDir.strGUID,itemSyncDir.nType);
|
strKey.MakeLower();
|
m_mapBackupDirInfo.SetAt(strKey,itemSyncDir);
|
return TRUE;
|
}
|
return FALSE;
|
}
|
|
BOOL CMBWatchMgr::FindBackupDirInfo( CString strDir,CString strSvrPath, CString strCatalogID,int &nType)
|
{
|
SYNCDIR_ITEM itemSyncDir;
|
CString strKey;
|
POSITION pos;
|
BOOL bRet = FALSE;
|
|
|
strCatalogID = _T("");
|
for(pos = m_mapBackupDirInfo.GetStartPosition(); pos;pos)
|
{
|
m_mapBackupDirInfo.GetNextAssoc(pos,strKey,itemSyncDir );
|
if(itemSyncDir.strFileDir.CompareNoCase(strDir) == 0 )
|
{
|
strCatalogID = itemSyncDir.strGUID;
|
nType = itemSyncDir.nType;
|
bRet = TRUE;
|
break;
|
}
|
}
|
return bRet;
|
}
|
|
|
BOOL CMBWatchMgr::GetBackupDirChangeCMD(CArraySyncDirCmd &arBackupDirCmd )
|
{
|
if( m_bFirstLoadBackupCmd)
|
{
|
m_bFirstLoadBackupCmd = false;
|
return m_WatchDBMgr.GetBackupDirChangeCMD(arBackupDirCmd,true);
|
}
|
return m_WatchDBMgr.GetBackupDirChangeCMD(arBackupDirCmd);
|
}
|
|
BOOL CMBWatchMgr::CheckBackupDirCMD(CArraySyncDirCmd &arBackupDirCmd,int nStartPos)
|
{
|
SYNCDIR_CMDITEM itemTemp;
|
CArraySyncDirCmd arTempBackupDirCmd;
|
CString strFilePath;
|
SYNCDIR_CMDITEM itemStart;
|
CString strNewFilePath = _T("");
|
|
arTempBackupDirCmd.RemoveAll();
|
if(nStartPos < 0 || nStartPos >= arBackupDirCmd.GetCount() - 1)
|
return FALSE;
|
itemStart = arBackupDirCmd.GetAt(nStartPos) ;
|
strFilePath = itemStart.strFileName;
|
if(itemStart.strOpType == CMD_BACKUPDIR_RENAME)
|
{
|
strFilePath = itemStart.strParam;
|
}
|
for( int i= nStartPos + 1; i < arBackupDirCmd.GetCount();i++ )
|
{
|
itemTemp = arBackupDirCmd.GetAt(i);
|
if(itemTemp.strFileName.CompareNoCase(strFilePath) == 0)
|
{
|
arTempBackupDirCmd.Add(itemTemp);
|
//itemStart = itemTemp;
|
if(itemTemp.strOpType == CMD_BACKUPDIR_RENAME)
|
{
|
strFilePath = itemTemp.strParam;
|
strNewFilePath = strFilePath;
|
}
|
}
|
}
|
arTempBackupDirCmd.InsertAt(0,itemStart);
|
if(arTempBackupDirCmd.GetCount() < 2)
|
return TRUE;
|
SYNCDIR_CMDITEM itemCmd2;
|
SYNCDIR_CMDITEM itemRenameCmd;
|
itemStart = arTempBackupDirCmd.GetAt(0);
|
for( int i = arTempBackupDirCmd.GetCount() - 1;i >= 0; i-- )
|
{
|
itemTemp = arTempBackupDirCmd.GetAt(i);
|
if(itemTemp.strOpType == CMD_BACKUPDIR_RENAME)
|
{
|
itemRenameCmd = itemTemp;
|
break;
|
}
|
}
|
itemTemp = arTempBackupDirCmd.GetAt(arTempBackupDirCmd.GetCount() -1);
|
int nPos;
|
nPos = arTempBackupDirCmd.GetCount() -1;
|
while(nPos > 0)
|
{
|
if(itemTemp.strOpType == CMD_BACKUPDIR_NEW)
|
{
|
itemCmd2 = itemTemp;
|
if(nPos == arTempBackupDirCmd.GetCount() -1)
|
{
|
if(itemStart.strOpType == CMD_BACKUPDIR_NEW)
|
{
|
itemRenameCmd.strGUID = _T("");
|
}
|
else
|
{
|
if( !itemRenameCmd.strGUID.IsEmpty())
|
{
|
itemRenameCmd.strOpType = CMD_BACKUPDIR_RENAME;
|
itemRenameCmd.strFileName = itemStart.strFileName;
|
itemCmd2.strFileName = itemRenameCmd.strParam;
|
}
|
itemCmd2.strOpType = CMD_BACKUPDIR_MODIFY;
|
}
|
}
|
else
|
{
|
if(itemStart.strOpType == CMD_BACKUPDIR_NEW)
|
{
|
itemCmd2.strFileName = itemRenameCmd.strParam;
|
itemCmd2.strOpType = CMD_BACKUPDIR_NEW;
|
itemRenameCmd.strGUID = _T("");
|
}
|
else
|
{
|
itemCmd2.strOpType = CMD_BACKUPDIR_MODIFY;
|
itemCmd2.strFileName = itemRenameCmd.strParam;
|
|
itemRenameCmd.strFileName = itemStart.strFileName;
|
itemRenameCmd.strOpType = CMD_BACKUPDIR_RENAME;
|
}
|
//itemCmd2.strFileName = itemRenameCmd.strParam;
|
}
|
break;
|
}
|
else if(itemTemp.strOpType == CMD_BACKUPDIR_MODIFY)
|
{
|
itemCmd2 = itemTemp;
|
if(nPos == arTempBackupDirCmd.GetCount() -1)
|
{
|
if(itemStart.strOpType == CMD_BACKUPDIR_NEW)
|
{
|
itemCmd2.strOpType = CMD_BACKUPDIR_NEW;
|
itemRenameCmd.strGUID = _T("");
|
}
|
else
|
{
|
if( !itemRenameCmd.strGUID.IsEmpty())
|
{
|
itemRenameCmd.strGUID = arTempBackupDirCmd.GetAt(nPos - 1).strGUID;
|
itemRenameCmd.strOpType = CMD_BACKUPDIR_RENAME;
|
itemCmd2.strFileName = itemRenameCmd.strParam;
|
}
|
}
|
|
}
|
else
|
{
|
if(itemStart.strOpType == CMD_BACKUPDIR_NEW)
|
{
|
itemCmd2.strFileName = itemRenameCmd.strParam;
|
itemCmd2.strOpType = CMD_BACKUPDIR_NEW;
|
itemRenameCmd.strGUID = _T("");
|
}
|
else
|
{
|
itemCmd2.strFileName = itemRenameCmd.strParam;
|
itemRenameCmd.strFileName = itemStart.strFileName;
|
itemRenameCmd.strOpType = CMD_BACKUPDIR_RENAME;
|
}
|
}
|
break;
|
}
|
else if(itemTemp.strOpType == CMD_BACKUPDIR_DELETE)
|
{
|
itemCmd2 = itemTemp;
|
if(nPos == arTempBackupDirCmd.GetCount() -1)
|
{
|
itemRenameCmd.strGUID = _T("");
|
if(itemStart.strOpType == CMD_BACKUPDIR_NEW)
|
{
|
itemCmd2.strGUID = _T("");
|
}
|
else
|
{
|
if( !itemRenameCmd.strGUID.IsEmpty())
|
{
|
itemCmd2.strFileName = itemStart.strFileName;
|
}
|
}
|
}
|
else
|
{
|
itemCmd2.strGUID = _T("");
|
itemRenameCmd.strGUID = _T("");
|
}
|
break;
|
}
|
else if(itemTemp.strOpType == CMD_BACKUPDIR_RENAME)
|
{
|
nPos--;
|
itemTemp = arTempBackupDirCmd.GetAt(nPos);
|
}
|
}
|
if( itemCmd2.strGUID.IsEmpty())
|
{
|
if(itemStart.strOpType == CMD_BACKUPDIR_NEW)
|
{
|
itemCmd2 = itemStart;
|
if( !itemRenameCmd.strGUID.IsEmpty())
|
{
|
itemCmd2.strFileName = itemRenameCmd.strParam;
|
itemRenameCmd.strGUID = _T("");
|
}
|
}
|
else if(itemStart.strOpType == CMD_BACKUPDIR_MODIFY)
|
{
|
itemCmd2 = itemStart;
|
if( !itemRenameCmd.strGUID.IsEmpty())
|
{
|
itemCmd2.strFileName = itemRenameCmd.strParam;
|
itemCmd2.strGUID = itemRenameCmd.strGUID;
|
}
|
}
|
}
|
if( !itemRenameCmd.strGUID.IsEmpty())
|
{
|
if(itemRenameCmd.strFileName.CompareNoCase(itemRenameCmd.strParam) ==0)
|
itemRenameCmd.strGUID = _T("");
|
else
|
itemRenameCmd.strGUID = itemStart.strGUID;
|
}
|
CStringArray arSQL;
|
CString strSQL;
|
for( int i= 0; i < arTempBackupDirCmd.GetCount();i++ )
|
{
|
itemTemp = arTempBackupDirCmd.GetAt(i);
|
if(itemTemp.strGUID != itemCmd2.strGUID && itemTemp.strGUID != itemRenameCmd.strGUID )
|
{
|
strSQL.Format(_T("DELETE FROM TN_ND_BACKUPDIR_FILE WHERE CN_G_ID= '%s' "),itemTemp.strGUID );
|
arSQL.Add(strSQL);
|
RemoveCMDFromArray(itemTemp.strGUID , arBackupDirCmd );
|
}
|
}
|
if( !itemCmd2.strGUID.IsEmpty())
|
{
|
strSQL.Format(_T("UPDATE TN_ND_BACKUPDIR_FILE SET CN_S_FILE_PATH= '%s',CN_S_OP_TYPE = '%s',CN_S_PARAM_VALUE= '%s',CN_N_STATE= 0 WHERE CN_G_ID ='%s'"),
|
CStrFileUtils::GetDBReplaceStr( itemCmd2.strFileName ),CStrFileUtils::GetDBReplaceStr( itemCmd2.strOpType ),CStrFileUtils::GetDBReplaceStr( itemCmd2.strParam ),itemCmd2.strGUID);
|
arSQL.Add(strSQL);
|
ResetCMDArray(itemCmd2, arBackupDirCmd );
|
}
|
if( !itemRenameCmd.strGUID.IsEmpty())
|
{
|
strSQL.Format(_T("UPDATE TN_ND_BACKUPDIR_FILE SET CN_S_FILE_PATH= '%s',CN_S_OP_TYPE = '%s',CN_S_PARAM_VALUE= '%s',CN_N_STATE= 0 WHERE CN_G_ID ='%s'"),
|
CStrFileUtils::GetDBReplaceStr( itemRenameCmd.strFileName ),CStrFileUtils::GetDBReplaceStr( itemRenameCmd.strOpType ),CStrFileUtils::GetDBReplaceStr( itemRenameCmd.strParam ),itemRenameCmd.strGUID);
|
arSQL.Add(strSQL);
|
ResetCMDArray(itemRenameCmd, arBackupDirCmd );
|
}
|
return m_WatchDBMgr.BatchRunSQL(arSQL);
|
//return TRUE;
|
}
|
|
|
BOOL CMBWatchMgr::GetBackupDirChangeFailedCMD(CArraySyncDirCmd &arBackupDirCmd )
|
{
|
return m_WatchDBMgr.GetBackupDirChangeFailedCMD(arBackupDirCmd);
|
}
|
|
BOOL CMBWatchMgr::InsertAfterCMDArray(CString strGUID,SYNCDIR_CMDITEM &item, CArraySyncDirCmd &arBackupDirCmd )
|
{
|
SYNCDIR_CMDITEM itemTemp;
|
for( int i= 0; i < arBackupDirCmd.GetCount();i++ )
|
{
|
itemTemp = arBackupDirCmd.GetAt(i);
|
if(itemTemp.strGUID.CompareNoCase(strGUID) == 0)
|
{
|
arBackupDirCmd.InsertAt(i + 1,item );
|
break;
|
}
|
}
|
return TRUE;
|
}
|
BOOL CMBWatchMgr::ResetCMDArray(SYNCDIR_CMDITEM &item, CArraySyncDirCmd &arBackupDirCmd )
|
{
|
SYNCDIR_CMDITEM itemTemp;
|
for( int i= 0; i < arBackupDirCmd.GetCount();i++ )
|
{
|
itemTemp = arBackupDirCmd.GetAt(i);
|
if(itemTemp.strGUID.CompareNoCase(item.strGUID) == 0)
|
{
|
arBackupDirCmd.SetAt(i,item );
|
break;
|
}
|
}
|
return TRUE;
|
}
|
BOOL CMBWatchMgr::RemoveCMDFromArray(CString strGUID, CArraySyncDirCmd &arBackupDirCmd )
|
{
|
SYNCDIR_CMDITEM item;
|
for( int i= 0; i < arBackupDirCmd.GetCount();i++ )
|
{
|
item = arBackupDirCmd.GetAt(i);
|
if(item.strGUID.CompareNoCase(strGUID) == 0)
|
{
|
arBackupDirCmd.RemoveAt(i);
|
break;
|
}
|
}
|
return TRUE;
|
}
|
|
BOOL CMBWatchMgr::UpdateBackupDirChangeCMD( CString strGUID, int nState, CString strErr, int nErrID)
|
{
|
if(CMD_BACKUPDIR_FINISH == nState)
|
return m_WatchDBMgr.RemoveBackupDirChangeCMD(strGUID);
|
if(nState == CMD_BACKUPDIR_DEALERROR)
|
{
|
CString strLog;
|
strLog.Format(_T("CSTKNetDiskDataMgr::BackupDirChangeCMDʧ°Ü£º%s"), strErr );
|
//m_WatchDBMgr.WriteLog(strLog);
|
}
|
return m_WatchDBMgr.UpdateBackupDirChangeCMD(strGUID,nState, strErr,nErrID);
|
}
|
|
BOOL CMBWatchMgr::RemoveBackupDirChangeCMD( CString strGUID)
|
{
|
return m_WatchDBMgr.RemoveBackupDirChangeCMD(strGUID);
|
}
|
BOOL CMBWatchMgr::RemoveBackupDirCMD( CString strDir)
|
{
|
return m_WatchDBMgr.RemoveBackupDirCMD(strDir);
|
}
|
BOOL CMBWatchMgr::RemoveAllBackupDirFailedCMD( )
|
{
|
return m_WatchDBMgr.RemoveAllBackupDirFailedCMD();
|
}
|
BOOL CMBWatchMgr::ResetAllBackupDirFailedCMD( )
|
{
|
return m_WatchDBMgr.ResetAllBackupDirFailedCMD();
|
}
|
BOOL CMBWatchMgr::InsertChangeDirCMD(CString strFilePath, CString strOperateType, CString strFileParam )
|
{
|
return m_WatchDBMgr.InsertChangeDirCMD(strFilePath,strOperateType,strFileParam);
|
}
|
BOOL CMBWatchMgr::ResetBackupDirCMDInitState( CString strGUID)
|
{
|
return m_WatchDBMgr.ResetBackupDirCMDInitState(strGUID);
|
}
|
BOOL CMBWatchMgr::ResetBackupDirAllCMD( )
|
{
|
return m_WatchDBMgr.ResetBackupDirAllCMD();
|
}
|
|
BOOL CMBWatchMgr::RemoveBackupDirInfo( CString strRootGUID, CString strGUID,int nType)
|
{
|
if( m_WatchDBMgr.RemoveBackupDirInfo(strRootGUID,strGUID,nType))
|
{
|
SYNCDIR_ITEM itemSyncDir;
|
CString strKey;
|
strKey.Format(_T("%s_%d"),strGUID,nType);
|
strKey.MakeLower();
|
m_mapBackupDirInfo.RemoveKey(strKey);
|
return TRUE;
|
}
|
return FALSE;
|
}
|
|
BOOL CMBWatchMgr::RenameBackupDirInfo(CString strGUID,CString strName,int nType)
|
{
|
SYNCDIR_ITEM itemSyncDir;
|
CString strKey;
|
|
strKey.Format(_T("%s_%d"),strGUID,nType);
|
strKey.MakeLower();
|
if ( m_mapBackupDirInfo.Lookup(strKey,itemSyncDir))
|
{
|
if(itemSyncDir.strName == strName)
|
return TRUE;
|
itemSyncDir.strName = strName;
|
m_mapBackupDirInfo.SetAt(strKey,itemSyncDir);
|
return m_WatchDBMgr.RenameBackupDirInfo(itemSyncDir.strRootGUID,strGUID,strName,nType);
|
}
|
return TRUE;
|
}
|
|
BOOL CMBWatchMgr::FindBackupDirInfo1( CString &strFileDir, CString &strSvrPath, CString &strCatlog,int &nType)
|
{
|
SYNCDIR_ITEM itemSyncDir;
|
CString strKey;
|
POSITION pos;
|
BOOL bRet = FALSE;
|
|
for(pos = m_mapBackupDirInfo.GetStartPosition(); pos;pos)
|
{
|
m_mapBackupDirInfo.GetNextAssoc(pos,strKey,itemSyncDir );
|
|
strSvrPath = itemSyncDir.strRootGUID;
|
strCatlog = itemSyncDir.strGUID;
|
nType = itemSyncDir.nType;
|
strFileDir = itemSyncDir.strFileDir;
|
bRet = TRUE;
|
break;
|
|
}
|
return bRet;
|
}
|
|
BOOL CMBWatchMgr::FindBackupDirInfo2( CString strDir,CString &strRootGUID, CString &strGUID,int &nType)
|
{
|
SYNCDIR_ITEM itemSyncDir;
|
CString strKey;
|
POSITION pos;
|
BOOL bRet = FALSE;
|
|
|
strGUID = _T("");
|
for(pos = m_mapBackupDirInfo.GetStartPosition(); pos;pos)
|
{
|
m_mapBackupDirInfo.GetNextAssoc(pos,strKey,itemSyncDir );
|
if(itemSyncDir.strFileDir.CompareNoCase(strDir) == 0 )
|
{
|
strGUID = itemSyncDir.strGUID;
|
nType = itemSyncDir.nType;
|
bRet = TRUE;
|
break;
|
}
|
}
|
return bRet;
|
}
|
|
BOOL CMBWatchMgr::FindBackupDirInfo3( CString strFilePath,CString &strName)
|
{
|
SYNCDIR_ITEM itemSyncDir;
|
CString strKey;
|
CString strDir;
|
POSITION pos;
|
BOOL bRet = FALSE;
|
strDir = CBaseCommFun::GetPathName( strFilePath );
|
if(strDir.IsEmpty())
|
return FALSE;
|
strDir.MakeLower();
|
for(pos = m_mapBackupDirInfo.GetStartPosition(); pos;pos)
|
{
|
m_mapBackupDirInfo.GetNextAssoc(pos,strKey,itemSyncDir );
|
itemSyncDir.strFileDir.MakeLower();
|
if(strDir.Find(itemSyncDir.strFileDir) == 0 )
|
{
|
if(itemSyncDir.strName.IsEmpty())
|
itemSyncDir.strName = _T("δ֪±¸·ÝĿ¼");
|
if(itemSyncDir.nType == FOLDER_TYPE_FOLDER)
|
{
|
strName.Format(_T("¸öÈËÎĵµ\\%s"),itemSyncDir.strName);
|
}
|
else if(itemSyncDir.nType == FOLDER_TYPE_CABINET || itemSyncDir.nType == FOLDER_TYPE_CATALOG)
|
{
|
//CString strCabinetName = GetCabinetName(itemSyncDir.strRootGUID,FOLDER_TYPE_CABINET);
|
CString strCabinetName;
|
if(strCabinetName.IsEmpty())
|
strName.Format(_T("δ֪Îĵµ¹ñ\\%s"),itemSyncDir.strName);
|
else
|
strName.Format(_T("%s\\%s"),strCabinetName,itemSyncDir.strName);
|
}
|
else
|
{
|
strName.Format(_T("δ֪\\%s"),itemSyncDir.strName);
|
}
|
bRet = TRUE;
|
break;
|
}
|
}
|
return bRet;
|
}
|
|
int CMBWatchMgr::GetBackupDirCount( )
|
{
|
return m_mapBackupDirInfo.GetCount() ;
|
}
|
|
//BOOL CMBWatchMgr::NewBackupCatalog( CString strGUID, int nType, CString strName,CString strParGUID)
|
//{
|
// return m_WatchDBMgr.NewBackupCatalog(strGUID,nType,strName,strParGUID );
|
//}
|
//
|
//BOOL CMBWatchMgr::RenameBackupCatalog( CString strGUID, int nType,CString strName)
|
//{
|
// return m_WatchDBMgr.RenameBackupCatalog(strGUID,nType,strName);
|
//}
|
//
|
//BOOL CMBWatchMgr::DeleteBackupCatalog( CString strGUID, int nType)
|
//{
|
// return m_WatchDBMgr.DeleteBackupCatalog(strGUID,nType);
|
//}
|
//
|
//BOOL CMBWatchMgr::MoveBackupCatalog(CString strGUID, int nType,CString strNewParGUID )
|
//{
|
// return m_WatchDBMgr.MoveBackupCatalog(strGUID,nType,strNewParGUID);
|
//}
|
//BOOL CMBWatchMgr::GetGUIDByCatalogName(CString strParGuid, int nType, CString strName, CString &strGuid)
|
//{
|
// return m_WatchDBMgr.GetGUIDByCatalogName(strParGuid,nType, strName,strGuid );
|
//}
|
//
|