/** * The TemplateHandler class manages all template related function topics and holds classes for * further tempalte data. * $Id$ * $HeadURL$ * $Author$ * Created by Hannes Baeuerle, SLSE, 2016-07-27 */ #include "template_handler.h" #include "template.h" #include "main_handler.h" #include #include #include #include #include namespace ParticipantManagement { namespace TemplateHandling { TemplateHandler::TemplateHandler(MainHandler *mainHandler) : Interface::Fts::ModifyTemplateDataRequestHandler(mainHandler->exerciseId() <= 0 ? mainHandler->fts() : nullptr) , m_mainHandler(mainHandler) , m_logger(getLogger("TemplateHandler")) {} TemplateHandler::~TemplateHandler() { qDeleteAll(m_templates); } bool TemplateHandler::init() { auto cb = [this](const Database::PpmTemplate ¤tTemplate) { Template *newTemplate = new Template(currentTemplate); m_templates.insert(newTemplate->id(), newTemplate); }; if (!m_mainHandler->db()->select(cb)) { ERROR_LOG(m_logger) << "Error while reading template data from database"; return false; } // build hierarchy an publish m_mainHandler->exAnyDts()->enableTemplateParticipant(); for (auto it = m_templates.begin(); it != m_templates.end(); ++it) { it.value()->hasNewInferiorStructure(inferiorIdsForTemplate(it.key())); m_mainHandler->exAnyDts()->publish(it.value()->toDdsTemplateParticipant()); } return true; } void TemplateHandler::onModifyTemplateDataRequest(const rti::core::SampleIdentity &cookie, const ParticipantManagement::ModifyTemplateDataRequest &request) { DEBUG_LOG(m_logger) << "onModifyTemplateDataRequest: " << request; const auto ret = modifyTemplateDataRequest(request); if (ret.error()) WARNING_LOG(m_logger) << ret(); m_mainHandler->fts()->modifyTemplateDataReply(cookie, ret); } Core::FunctionReplyObject TemplateHandler::modifyTemplateDataRequest(const ParticipantManagement::ModifyTemplateDataRequest &request) { QVector