/** * @RDE_HEADER@ * ISM Object Instrumentation Asset * $Id$ * $HeadURL$ * $Author$ * Created by Iuliana Ojog, SLSE, 2016-11-26 */ #include "object_instrumentation_asset.h" //------------------------------------------------------------------------------------------------------------- namespace InfrastructureManagement { ObjectInstrumentationAsset::ObjectInstrumentationAsset(MainHandler *mainHandler) : Base(mainHandler, getLogger("ObjectInstrumentationAsset")) { } //------------------------------------------------------------------------------------------------------------- ObjectInstrumentationAsset::~ObjectInstrumentationAsset() { } //------------------------------------------------------------------------------------------------------------- bool ObjectInstrumentationAsset::isValid() const { return m_data.id() > 0; } //------------------------------------------------------------------------------------------------------------- bool ObjectInstrumentationAsset::isUsed() const { return m_data.isUsed(); } //------------------------------------------------------------------------------------------------------------- Core::FunctionReplyObject ObjectInstrumentationAsset::createObject(const InstrumentationAsset &data) { m_data = data; if (m_data.id() <= 0) { m_data.isUsed(false); Database::IsmAsset dbData; dbData = toDbData(data); dbData.id = 0; if (!db()->insert(dbData)) return Core::FunctionReplyObject(0, tr_lts("dds", "Error inserting IsmAsset-data into database")); m_data.id(dbData.id); DEBUG_LOG(m_logger) << "New Id: " << m_data.id(); } // Publish Data via DTS onPublishData(); return Core::FunctionReplyObject(m_data.id()); } //------------------------------------------------------------------------------------------------------------- Core::FunctionReplyObject ObjectInstrumentationAsset::updateObject(const InstrumentationAsset &data) { if (!isValid()) return Core::FunctionReplyObject(data.id(), tr_lts("dds", "Object not valid/blocked")); Database::IsmAsset dbData; dbData = toDbData(data); if (!db()->update(dbData)) return Core::FunctionReplyObject(data.id(), tr_lts("dds", "Error updating IsmAsset-data into database")); m_data = data; DEBUG_LOG(m_logger) << "Data changed for Id: " << m_data.id(); // Publish Data via DTS onPublishData(); return Core::FunctionReplyObject(m_data.id()); } //------------------------------------------------------------------------------------------------------------- Core::FunctionReplyObject ObjectInstrumentationAsset::setUsed(bool isUsed) { if (!isValid()) return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "Trying to update an already removed IsmAsset object")); m_data.isUsed(isUsed); // Publish Data via DTS onPublishData(); return Core::FunctionReplyObject(m_data.id()); } //------------------------------------------------------------------------------------------------------------- Core::FunctionReplyObject ObjectInstrumentationAsset::removeObject() { if (isUsed()) return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "Asset still in use")); if (!db()->removeIsmAsset(m_data.id())) return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "Asset with id %1 can not be removed from DB")).arg(m_data.id()); if (!dts()->removeInstrumentationAssetByKey(m_data.id())) return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "Asset with id %1 can not be removed from DDS")).arg(m_data.id()); return Core::FunctionReplyObject(m_data.id()); } //------------------------------------------------------------------------------------------------------------- InfrastructureManagement::InstrumentationAsset InfrastructureManagement::ObjectInstrumentationAsset::getData() const { return m_data; } //------------------------------------------------------------------------------------------------------------- void ObjectInstrumentationAsset::onPublishData() { INFO_LOG(m_logger) << "Publish IsmAsset-data to dds (" << m_data.id() << ") ..."; if (!dts()->publish(m_data)) ERROR_LOG(m_logger) << "Error publishing IsmAsset-data to dds"; } // ------------------------------------------------------------------------------------------------------- // convert methods // ------------------------------------------------------------------------------------------------------- // InfrastructureManagement::Asset => Database::IsmAsset Database::IsmAsset ObjectInstrumentationAsset::toDbData(const InstrumentationAsset &ddsData) { Database::IsmAsset dbData; dbData.id = ddsData.id(); dbData.name = QString::fromStdString(ddsData.name()); dbData.mountingPointTypeId = ddsData.mountingPointTypeId(); dbData.barcode = QString::fromStdString(ddsData.barcode()); dbData.hostname = QString::fromStdString(ddsData.hostname()); dbData.properties = QString::fromStdString(ddsData.properties()); dbData.assetStateId = ddsData.assetStateId(); dbData.availableInExercise = LtsUtils::IntArray(ddsData.availableInExercise()); dbData.lastUpdated = QDateTime::fromMSecsSinceEpoch(ddsData.lastUpdated()); return dbData; } // ------------------------------------------------------------------------------------------------------- // Database::IsmAsset => InfrastructureManagement::Asset InstrumentationAsset ObjectInstrumentationAsset::toDdsData(const Database::IsmAsset &dbData) { InstrumentationAsset ddsData; ddsData.id(dbData.id); ddsData.name(dbData.name.toStdString()); ddsData.mountingPointTypeId(dbData.mountingPointTypeId); ddsData.barcode(dbData.barcode.toStdString()); ddsData.hostname(dbData.hostname.toStdString()); ddsData.properties(dbData.properties.toStdString()); ddsData.assetStateId(dbData.assetStateId); ddsData.availableInExercise(dbData.availableInExercise()); ddsData.lastUpdated(dbData.lastUpdated.toMSecsSinceEpoch()); // init data not in db ddsData.isDeleted(false); ddsData.isUsed(false); return ddsData; } // ------------------------------------------------------------------------------------------------------- } // Namespace InfrastructureManagement