logplus/Workflow/WFEngine/Component/WorkflowWidget/src/GlobalModuleBackup.cpp
2026-01-16 17:18:41 +08:00

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;
}