/** * Asset object * $Id$ * $HeadURL$ * $Author$ * Created by Iuliana Ojog, SLSE, 2017-09-20 */ #include "object_relay_info.h" #include "main_handler.h" #include //------------------------------------------------------------------------------ namespace AssetManagement { ObjectRelayInfo::ObjectRelayInfo(MainHandler *mainHandler) : m_mainHandler(mainHandler) , m_logger(getLogger("ObjectRelayInfo")) { } //------------------------------------------------------------------------------ ObjectRelayInfo::~ObjectRelayInfo() { if (isValid()) m_mainHandler->dds()->dts()->removeRelayInfoByKey(m_data.id); } //------------------------------------------------------------------------------ bool ObjectRelayInfo::isValid() const { return m_data.id > 0; } //------------------------------------------------------------------------------ bool ObjectRelayInfo::isUsed() const { return m_data.isUsed; } //------------------------------------------------------------------------------ Core::FunctionReplyObject ObjectRelayInfo::createObject(const RelayInfo &data) { m_data = data; if (m_data.id < 0) { m_data.isUsed = false; Database::AsmEgcuRelayInfo dbData(toDbData(data)); if (!m_mainHandler->db()->insert(dbData)) return Core::FunctionReplyObject(0, tr_lts("dds", "Error inserting AsmEgcuRelayInfo-data into database")); m_data.id = dbData.id; DEBUG_LOG(m_logger) << "New relayInfo Id: " << m_data.id; } // Publish Data via DTS onPublishData(); return Core::FunctionReplyObject(m_data.id); } //------------------------------------------------------------------------------ Core::FunctionReplyObject ObjectRelayInfo::updateObject(const RelayInfo &data) { if (!isValid()) return Core::FunctionReplyObject(data.id, tr_lts("dds", "Object not valid/blocked")); Database::AsmEgcuRelayInfo dbData; dbData = toDbData(data); if (!m_mainHandler->db()->update(dbData)) return Core::FunctionReplyObject(data.id, tr_lts("dds", "Error updating AsmEgcuRelayInfo-data into database")); m_data = data; DEBUG_LOG(m_logger) << "Data changed for relayInfo Id: " << m_data.id; // Publish Data via DTS onPublishData(); return Core::FunctionReplyObject(m_data.id); } //------------------------------------------------------------------------------ Core::FunctionReplyObject ObjectRelayInfo::setUsed(bool isUsed) { if (!isValid()) return Core::FunctionReplyObject(m_data.id, tr_lts("dds", "Trying to update an already removed AsmEgcuRelayInfo object")); m_data.isUsed = isUsed; // Publish Data via DTS onPublishData(); return Core::FunctionReplyObject(m_data.id); } //------------------------------------------------------------------------------ Core::FunctionReplyObject ObjectRelayInfo::removeObject() { if (isUsed()) return Core::FunctionReplyObject(m_data.id, tr_lts("dds", "RelayInfo still in use")); if (!m_mainHandler->db()->removeAsmEgcuRelayInfo(m_data.id)) return Core::FunctionReplyObject(m_data.id, tr_lts("dds", "RelayInfo with id %1 can not be removed from DB")).arg(m_data.id); if (!m_mainHandler->dds()->dts()->removeRelayInfoByKey(m_data.id)) return Core::FunctionReplyObject(m_data.id, tr_lts("dds", "RelayInfo with id %1 can not be removed from DDS")).arg(m_data.id); return Core::FunctionReplyObject(m_data.id); } //------------------------------------------------------------------------------ void ObjectRelayInfo::onPublishData() { INFO_LOG(m_logger) << "Publish AsmEgcuRelayInfo-data to dds (" << m_data.id << ") ..."; if (!m_mainHandler->dds()->dts()->publish(m_data)) ERROR_LOG(m_logger) << "Error publishing AsmEgcuRelayInfo-data to dds"; } // ------------------------------------------------------------------------------------------------------- // convert methods // ------------------------------------------------------------------------------------------------------- // AssetManagement::RelayInfo => Database::AsmEgcuRelayInfo Database::AsmEgcuRelayInfo ObjectRelayInfo::toDbData(const RelayInfo &ddsData) { Database::AsmEgcuRelayInfo dbData; dbData.id = ddsData.id; dbData.relayId = ddsData.id; dbData.name = QString::fromStdString(ddsData.name); dbData.description = QString::fromStdString(ddsData.description); dbData.properties = QString::fromStdString(ddsData.property); return dbData; } // ------------------------------------------------------------------------------------------------------- // Database::AsmEgcuRelayInfo => AssetManagement::RelayInfo RelayInfo ObjectRelayInfo::toDdsData(const Database::AsmEgcuRelayInfo &dbData) { RelayInfo ddsData; ddsData.id = dbData.relayId; ddsData.name = dbData.name.toStdString(); ddsData.description = dbData.description.toStdString(); ddsData.property = dbData.properties.toStdString(); // init data not in db ddsData.isDeleted = false; ddsData.isUsed = false; return ddsData; } // ------------------------------------------------------------------------------------------------------- } // Namespace AssetManagement