147 lines
3.8 KiB
C++
147 lines
3.8 KiB
C++
/*
|
|
* @file GlobalModuleBackup.cpp
|
|
* @brief 模块信息备份类
|
|
*/
|
|
|
|
#include "GlobalModuleBackup.h"
|
|
#include "ModuleInformation.h"
|
|
|
|
|
|
using namespace pai::graphics2d;
|
|
using namespace pai::workflow;
|
|
|
|
GlobalModuleBackup::GlobalModuleBackup()
|
|
{
|
|
|
|
}
|
|
|
|
GlobalModuleBackup::~GlobalModuleBackup()
|
|
{
|
|
m_ModuleInfo.clear();
|
|
}
|
|
|
|
CModuleInformation *GlobalModuleBackup::GetBackupModule(const QUuid& workflowID, CModuleInformation *pModule) const
|
|
{
|
|
if(!pModule)
|
|
{
|
|
return NULL;
|
|
}
|
|
if (m_ModuleInfo.contains(workflowID) == false)
|
|
{
|
|
return NULL;
|
|
}
|
|
return m_ModuleInfo.value(workflowID).value(pModule);
|
|
}
|
|
|
|
bool GlobalModuleBackup::InsertBackupModule(const QUuid& workflowID, CModuleInformation *pModule)
|
|
{
|
|
if(!pModule)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if(m_ModuleInfo.contains(workflowID) == true && m_ModuleInfo.value(workflowID).contains(pModule))
|
|
{
|
|
return false;
|
|
}
|
|
CModuleInformation *pBackupModule = new CModuleInformation( *pModule);
|
|
m_ModuleInfo[workflowID].insert(pModule, pBackupModule);
|
|
return true;
|
|
}
|
|
bool GlobalModuleBackup::RemoveBackupModulesInWorkflow(const QUuid& workflowID)
|
|
{
|
|
if (m_ModuleInfo.contains(workflowID) == false)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
QList<CModuleInformation *> values = m_ModuleInfo.value(workflowID).values();
|
|
qDeleteAll(values);
|
|
m_ModuleInfo.remove(workflowID);
|
|
return true;
|
|
}
|
|
bool GlobalModuleBackup::RemoveBackupModule(const QUuid& workflowID, CModuleInformation *pModule)
|
|
{
|
|
if(!pModule)
|
|
{
|
|
return false;
|
|
}
|
|
if (m_ModuleInfo.contains(workflowID) == false || m_ModuleInfo.value(workflowID).contains(pModule) == false)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
delete m_ModuleInfo.value(workflowID).value(pModule);
|
|
m_ModuleInfo[workflowID].remove(pModule);
|
|
return true;
|
|
}
|
|
void GlobalModuleBackup::UpDateBackupModule(const QUuid& workflowID)
|
|
{
|
|
QList<QUuid> workflowIDs = m_ModuleInfo.keys();
|
|
foreach(QUuid wkID, workflowIDs)
|
|
{
|
|
if (wkID == workflowID)
|
|
{
|
|
QList<CModuleInformation *> keys = m_ModuleInfo.value(wkID).keys();
|
|
foreach(CModuleInformation *newModule, keys)
|
|
{
|
|
CModuleInformation *backModule = new CModuleInformation(*newModule);
|
|
delete m_ModuleInfo[wkID][newModule];
|
|
m_ModuleInfo[wkID][newModule] = backModule;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
bool GlobalModuleBackup::HasModified(const QUuid& workflowID, CModuleInformation* pSrcModule) const
|
|
{
|
|
CModuleInformation* pBackupModule = GetBackupModule(workflowID, pSrcModule);
|
|
if((pBackupModule != NULL) && (pSrcModule != NULL))
|
|
{
|
|
if (!pBackupModule->GetModuleParameter() && !pSrcModule->GetModuleParameter())
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if(pBackupModule->GetModuleParameter() && pSrcModule->GetModuleParameter())
|
|
{
|
|
return !(*(pBackupModule->GetModuleParameter()) == *(pSrcModule->GetModuleParameter()));
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
bool GlobalModuleBackup::UpdateBackupModuleStepIDs(const QUuid &workflowID)
|
|
{
|
|
if (!m_ModuleInfo.contains(workflowID))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
QMap<CModuleInformation*, CModuleInformation*> backupModuleMap = m_ModuleInfo.value(workflowID);
|
|
QMapIterator<CModuleInformation*, CModuleInformation*> iter(backupModuleMap);
|
|
while (iter.hasNext())
|
|
{
|
|
iter.next();
|
|
if (iter.key() && iter.value())
|
|
{
|
|
int id = iter.key()->GetStepID();
|
|
if (id != iter.value()->GetStepID())
|
|
{
|
|
iter.value()->SetStepID(id);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
pai::graphics2d::GlobalModuleBackup *GetGlobalModuleBackup()
|
|
{
|
|
static GlobalModuleBackup* pModuleBack = new GlobalModuleBackup();
|
|
return pModuleBack;
|
|
}
|