/** * Handler TargetAreaAssignments (L400) * $Id$ * $HeadURL$ * $Author$ * Created by N. Thoden, NLE, 06.04.2020 */ #include "object_target_area_assignment.h" #include "main_handler.h" //------------------------------------------------------------------------------ namespace TargetManagement { ObjectTargetAreaAssignment::ObjectTargetAreaAssignment(MainHandler *mainHandler) : m_mainHandler(mainHandler) , m_logger(getLogger("ObjectTargetAreaAssignment")) { TRACE_LOG(m_logger) << LOGFUNCTION << " START"; TRACE_LOG(m_logger) << LOGFUNCTION << " END"; } //------------------------------------------------------------------------------ ObjectTargetAreaAssignment::~ObjectTargetAreaAssignment() { TRACE_LOG(m_logger) << LOGFUNCTION << " START"; if (isValid()) m_mainHandler->dds()->dtsTgt()->removeTargetAreaAssignmentByKey(m_data.id()); TRACE_LOG(m_logger) << LOGFUNCTION << " END"; } //------------------------------------------------------------------------------ bool ObjectTargetAreaAssignment::isValid() const { return m_data.id() > 0; } //------------------------------------------------------------------------------ bool ObjectTargetAreaAssignment::isUsed() const { return m_data.isUsed(); } //------------------------------------------------------------------------------ Core::FunctionReplyObject ObjectTargetAreaAssignment::createObject(const TargetAreaAssignment &data) { TRACE_LOG(m_logger) << LOGFUNCTION << " START"; m_data = data; if (m_data.id() <= 0) { m_data.isUsed(false); Database::TgtTargetAreaAssignment dbData(toDbData(data)); if (!m_mainHandler->db()->insert(dbData)) { QString errText = m_mainHandler->db()->getLastError().nativeErrorCode(); ERROR_LOG(m_logger) << "Error inserting TargetAreaAssignment into database: " << m_mainHandler->db()->getLastError().text(); if (errText.contains(QStringLiteral("23505"))) return Core::FunctionReplyObject(0, tr_lts("dds", "Error inserting TargetAreaAssignment into database: unique key violation for '%1'")).arg(m_data.name()); else return Core::FunctionReplyObject(0, tr_lts("dds", "Error inserting TargetAreaAssignment with name %1 into database: %2")).arg(m_data.name()).arg(errText); } m_data.id(dbData.id); DEBUG_LOG(m_logger) << "New TgtTargetAreaAssignment: " << m_data.id(); } // Publish Data via DTS onPublishData(); TRACE_LOG(m_logger) << LOGFUNCTION << " END"; return Core::FunctionReplyObject(m_data.id()); } //------------------------------------------------------------------------------ Core::FunctionReplyObject ObjectTargetAreaAssignment::updateObject(const TargetAreaAssignment &data) { TRACE_LOG(m_logger) << LOGFUNCTION << " START"; if (!isValid()) return Core::FunctionReplyObject(data.id(), tr_lts("dds", "Object not valid/blocked")); Database::TgtTargetAreaAssignment dbData; dbData = toDbData(data); if (!m_mainHandler->db()->update(dbData)) return Core::FunctionReplyObject(data.id(), tr_lts("dds", "Error updating TargetAreaAssignment-data into database")); m_data = data; DEBUG_LOG(m_logger) << "Data changed for TargetAreaAssignmentId: " << m_data.id(); // Publish Data via DTS onPublishData(); TRACE_LOG(m_logger) << LOGFUNCTION << " END"; return Core::FunctionReplyObject(m_data.id()); } //------------------------------------------------------------------------------ Core::FunctionReplyObject ObjectTargetAreaAssignment::setUsed(bool isUsed) { if (!isValid()) return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "Trying to update an already removed TargetAreaAssignment object")); m_data.isUsed(isUsed); // Publish Data via DTS onPublishData(); return Core::FunctionReplyObject(m_data.id()); } //------------------------------------------------------------------------------ Core::FunctionReplyObject ObjectTargetAreaAssignment::removeObject() { TRACE_LOG(m_logger) << LOGFUNCTION << " START"; if (isUsed()) return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "TargetAreaAssignment still in use")); if (!m_mainHandler->db()->removeTgtTargetAreaAssignment(m_data.id())) return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "TargetAreaAssignment with id %1 can not be removed from DB")).arg(m_data.id()); if (!m_mainHandler->dds()->dtsTgt()->removeTargetAreaAssignmentByKey(m_data.id())) return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "TargetAreaAssignment with id %1 can not be removed from DDS")).arg(m_data.id()); TRACE_LOG(m_logger) << LOGFUNCTION << " END"; return Core::FunctionReplyObject(m_data.id()); } //------------------------------------------------------------------------------ void ObjectTargetAreaAssignment::onPublishData() { TRACE_LOG(m_logger) << "Publish TargetAreaAssignment-data to dds (" << m_data.id() << ") ..."; if (!m_mainHandler->dds()->dtsTgt()->publish(m_data)) ERROR_LOG(m_logger) << "Error publishing TargetAreaAssignment-data to dds"; } // ------------------------------------------------------------------------------------------------------- // convert methods // ------------------------------------------------------------------------------------------------------- // TargetManagement::TargetAreaAssignment => Database::TgtTargetAreaAssignment Database::TgtTargetAreaAssignment ObjectTargetAreaAssignment::toDbData(const TargetAreaAssignment &ddsData) { Database::TgtTargetAreaAssignment dbData; dbData.id = ddsData.id(); dbData.name = QString::fromStdString(ddsData.name()); dbData.areaId = ddsData.areaId(); dbData.targetParticipantId = ddsData.targetParticipantId(); dbData.isActive = ddsData.isActive(); dbData.interval1 = ddsData.configuration().interval1(); dbData.effect1 = ddsData.configuration().effect1(); dbData.flash1 = ddsData.configuration().flash1(); dbData.interval2 = ddsData.configuration().interval2(); dbData.effect2 = ddsData.configuration().effect2(); dbData.flash2 = ddsData.configuration().flash2(); return dbData; } // ------------------------------------------------------------------------------------------------------- // Database::TgtTargetAreaAssignment => TargetManagement::TargetAreaAssignment TargetAreaAssignment ObjectTargetAreaAssignment::toDdsData(const Database::TgtTargetAreaAssignment &dbData) { TargetAreaAssignment ddsData; ddsData.id(dbData.id); ddsData.name(dbData.name.toStdString()); ddsData.areaId(dbData.areaId); ddsData.targetParticipantId(dbData.targetParticipantId); ddsData.isActive(dbData.isActive); ShootbackConfiguration conf; conf.interval1(dbData.interval1); conf.effect1(dbData.effect1); conf.flash1(dbData.flash1); conf.interval2(dbData.interval2); conf.effect2(dbData.effect2); conf.flash2(dbData.flash2); ddsData.configuration(conf); // init data not in db ddsData.isDeleted(false); ddsData.isUsed(false); return ddsData; } // ------------------------------------------------------------------------------------------------------- } // Namespace TargetManagement