/* * @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 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 workflowIDs = m_ModuleInfo.keys(); foreach(QUuid wkID, workflowIDs) { if (wkID == workflowID) { QList 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 backupModuleMap = m_ModuleInfo.value(workflowID); QMapIterator 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; }