/** * * TrainingArea object * $Id$ * $HeadURL$ * $Author$ * Created by Hanna E. Rathje, SLSE, 2016-03-04 */ #include "object_training_area.h" #include "main_handler.h" //------------------------------------------------------------------------------ namespace AssetManagement { ObjectTrainingArea::ObjectTrainingArea(MainHandler *mainHandler) : m_mainHandler(mainHandler) , m_logger(getLogger("ObjectTrainingArea")) { } //------------------------------------------------------------------------------ ObjectTrainingArea::~ObjectTrainingArea() { if (isValid()) m_mainHandler->dds()->dts()->removeTrainingAreaByKey(m_data.id()); } //------------------------------------------------------------------------------ bool ObjectTrainingArea::isValid() const { return m_data.id() > 0; } //------------------------------------------------------------------------------ bool ObjectTrainingArea::isUsed() const { return m_data.isUsed(); } //------------------------------------------------------------------------------ Core::FunctionReplyObject ObjectTrainingArea::createObject(const TrainingArea &data) { m_data = data; if (m_data.id() <= 0) { m_data.isUsed(false); Database::AsmTrainingArea dbData(toDbData(data)); if (!m_mainHandler->db()->insert(dbData)) return Core::FunctionReplyObject(0, tr_lts("dds", "Error inserting AsmTrainingArea-data into database")); m_data.id(dbData.id); DEBUG_LOG(m_logger) << "New mapId: " << m_data.id(); } // Publish Data via DTS onPublishData(); return Core::FunctionReplyObject(m_data.id()); } //------------------------------------------------------------------------------ Core::FunctionReplyObject ObjectTrainingArea::updateObject(const TrainingArea &data) { if (!isValid()) return Core::FunctionReplyObject(data.id(), tr_lts("dds", "Object not valid/blocked")); Database::AsmTrainingArea dbData; dbData = toDbData(data); if (!m_mainHandler->db()->update(dbData)) return Core::FunctionReplyObject(data.id(), tr_lts("dds", "Error updating AsmTrainingArea-data into database")); m_data = data; DEBUG_LOG(m_logger) << "Data changed for mapId: " << m_data.id(); // Publish Data via DTS onPublishData(); return Core::FunctionReplyObject(m_data.id()); } //------------------------------------------------------------------------------ Core::FunctionReplyObject ObjectTrainingArea::setUsed(bool isUsed) { if (!isValid()) return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "Trying to update an already removed AsmTrainingArea object")); m_data.isUsed(isUsed); // Publish Data via DTS onPublishData(); return Core::FunctionReplyObject(m_data.id()); } //------------------------------------------------------------------------------ Core::FunctionReplyObject ObjectTrainingArea::removeObject() { if (isUsed()) return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "TrainingArea still in use")); if (!m_mainHandler->db()->removeAsmTrainingArea(m_data.id())) return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "TrainingArea with id %1 can not be removed from DB")).arg(m_data.id()); if (!m_mainHandler->dds()->dts()->removeTrainingAreaByKey(m_data.id())) return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "TrainingArea with id %1 can not be removed from DDS")).arg(m_data.id()); return Core::FunctionReplyObject(m_data.id()); } //------------------------------------------------------------------------------ void ObjectTrainingArea::onPublishData() { INFO_LOG(m_logger) << "Publish AsmTrainingArea-data to dds (" << m_data.id() << ") ..."; if (!m_mainHandler->dds()->dts()->publish(m_data)) ERROR_LOG(m_logger) << "Error publishing AsmTrainingArea-data to dds"; } // ------------------------------------------------------------------------------------------------------- // convert methods // ------------------------------------------------------------------------------------------------------- // AssetManagement::TrainingArea => Database::AsmTrainingArea Database::AsmTrainingArea ObjectTrainingArea::toDbData(const TrainingArea &ddsData) { Database::AsmTrainingArea dbData; dbData.id = ddsData.id(); dbData.name = QString::fromStdString(ddsData.name()); dbData.bottomLeft = QPointF(ddsData.bottomLeft().lon(), ddsData.bottomLeft().lat()); dbData.height = ddsData.height(); dbData.width = ddsData.width(); dbData.image = QByteArray::fromRawData(reinterpret_cast(&ddsData.image()[0]), ddsData.image().size()); return dbData; } // ------------------------------------------------------------------------------------------------------- } // Namespace AssetManagement