/** * Handler for all exercise objects * $Id$ * $HeadURL$ * $Author$ * Created by Hanna E. Rathje, SLSE, 2015-09-03 */ #include "handler_injury_model.h" #include "object_injury_model.h" #include "whg_db.h" namespace WarehouseGuez { HandlerInjuryModel::HandlerInjuryModel(MainHandler *mainHandler) : Interface::Fts::ModifyInjuryModelAgdusWhRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::RemoveInjuryModelAgdusWhRequestHandler(mainHandler->dds()->fts()) , m_mainHandler(mainHandler) , m_logger(getLogger("HandlerInjuryModel")) {} HandlerInjuryModel::~HandlerInjuryModel() { qDeleteAll(m_injurymodelObjMap); } bool HandlerInjuryModel::init() { bool bRet = true; // create InjuryModelAgdusWh objects auto cb = [this, &bRet](const Database::InjuryModelAgdusWh &data) { ObjectInjuryModel *ifs(new ObjectInjuryModel(m_mainHandler)); Core::FunctionReplyObject ret = ifs->createObject(data); if(ret.error()) { delete ifs; ERROR_LOG(m_logger) << ret(); bRet = false; return; } m_injurymodelObjMap.insert(ifs->getId(), ifs); }; if (!m_mainHandler->db()->select(cb) || !bRet) { ERROR_LOG(m_logger) << "Error reading data from database!"; return true; } DEBUG_LOG(m_logger) << "m_exeObjMap.size() = " << m_injurymodelObjMap.size(); return true; } void HandlerInjuryModel::onModifyInjuryModelAgdusWhRequest(const rti::core::SampleIdentity &cookie, const InjuryModelAgdusWh &request) { DEBUG_LOG(m_logger) << "onModifyInjuryModelAgdusWhRequest() id:" << request.id(); Core::FunctionReplyObject ret; if (request.id() <= 0) { Database::InjuryModelAgdusWh data; data.id = request.id(); data.name = QString::fromStdString(request.name()); data.version = QString::fromStdString(request.version()); data.beschreibung = QString::fromStdString(request.description()); ObjectInjuryModel *ifs(new ObjectInjuryModel(m_mainHandler)); ret = ifs->createObject(data); if (ret.error()) { delete ifs; ifs = nullptr; ERROR_LOG(m_logger) << ret(); } else m_injurymodelObjMap.insert(ifs->getId(), ifs); } else { ObjectInjuryModel *ifs = m_injurymodelObjMap.value(request.id()); if (ifs == nullptr) { ret = Core::FunctionReplyObject(request.id(), tr_lts("dds", "InjuryModel with id %1 not found")).arg(request.id()); m_mainHandler->dds()->fts()->modifyInjuryModelAgdusWhReply(cookie, ret); return; } Database::InjuryModelAgdusWh data = ifs->getData(); data.name = QString::fromStdString(request.name()); data.version = QString::fromStdString(request.version()); data.beschreibung = QString::fromStdString(request.description()); ret = ifs->updateObject(data); } if (ret.error()) ERROR_LOG(m_logger) << ret(); m_mainHandler->dds()->fts()->modifyInjuryModelAgdusWhReply(cookie, ret); } void HandlerInjuryModel::onRemoveInjuryModelAgdusWhRequest(const rti::core::SampleIdentity &cookie, const Core::RemoveElementRequest &request) { DEBUG_LOG(m_logger) << "onRemoveInjuryModelAgdusWhRequest() id:" << request.id(); Core::FunctionReplyObject ret; ObjectInjuryModel *ifs = m_injurymodelObjMap.value(request.id()); if (ifs == nullptr) { ret = Core::FunctionReplyObject(request.id(), tr_lts("dds", "InjuryModel with id %1 not found")).arg(request.id()); m_mainHandler->dds()->fts()->removeInjuryModelAgdusWhReply(cookie, ret); return; } ret = ifs->removeObject(); if (ret.error()) ERROR_LOG(m_logger) << ret(); else { // delete ObjectInjuryModel delete ifs; m_injurymodelObjMap.remove(request.id()); } m_mainHandler->dds()->fts()->removeInjuryModelAgdusWhReply(cookie, ret); } } // Namespace WarehouseGuez