/** * Marker object * $Id$ * $HeadURL$ * $Author$ * Created by hjl, SLSE, 2016-04-12 */ #include "object_snapshot.h" #include "dds_handler.h" namespace MarkerManagement { ObjectSnapshot::ObjectSnapshot(const std::shared_ptr &ddsHandler, const std::shared_ptr &db) : m_ddsHandler(ddsHandler) , m_db(db) , m_logger(getLogger("ObjectSnapshot")) { } // end of ctor() //----------------------------------------------------------------------------- ObjectSnapshot::~ObjectSnapshot() { m_ddsHandler->dts()->removeSnapshotByKey(m_dataSnapshot.id()); } // end of dtor() //----------------------------------------------------------------------------- Core::FunctionReplyObject ObjectSnapshot::createObject(const MarkerManagement::Snapshot &data) { m_dataSnapshot = data; Database::MrkSnapshot dbDataSnapshot = toDbData(data); if (dbDataSnapshot.id <= 0) { if (!m_db->insert(dbDataSnapshot)) return Core::FunctionReplyObject(0, tr_lts("dds", "Error inserting Snapshot-data into database")); } // Neue DB Id in lokale Struktur uebernehmen m_dataSnapshot.id(dbDataSnapshot.id); DEBUG_LOG(m_logger) << "New SnapshotrId: " << dbDataSnapshot.id; // Publish Data via DTS onPublishData(); return Core::FunctionReplyObject(m_dataSnapshot.id()); } // end of createObject() //----------------------------------------------------------------------------- Core::FunctionReplyObject ObjectSnapshot::updateObject(const Snapshot &data) { if (!isValid()) return Core::FunctionReplyObject(data.id(), tr_lts("dds", "Object not valid")); Database::MrkSnapshot dbDataSnapshot = toDbData(data); if (!m_db->update(dbDataSnapshot)) return Core::FunctionReplyObject(data.id(), tr_lts("dds", "Error updating MrkSnapshot-data into database")); m_dataSnapshot = data; DEBUG_LOG(m_logger) << "Data changed for snapshotId: " << m_dataSnapshot.id(); // Publish Data via DTS onPublishData(); return Core::FunctionReplyObject(m_dataSnapshot.id()); } // end of updateObject() //----------------------------------------------------------------------------- Core::FunctionReplyObject ObjectSnapshot::removeObject() { if (!m_db->removeMrkSnapshot(m_dataSnapshot.id())) return Core::FunctionReplyObject(m_dataSnapshot.id(), tr_lts("dds", "Snapshot with id %1 can not be removed")).arg(m_dataSnapshot.id()); //m_ddsHandler->dts()->startTransaction(); m_ddsHandler->dts()->removeSnapshotByKey(m_dataSnapshot.id()); return Core::FunctionReplyObject(m_dataSnapshot.id()); } // end of removeObject() //----------------------------------------------------------------------------- bool ObjectSnapshot::isValid() const { return m_dataSnapshot.id() > 0; } // end of isValid() //----------------------------------------------------------------------------- void ObjectSnapshot::onPublishData() { INFO_LOG(m_logger) << "Publish MrkSnapshot -data to dds snapshotId:" << m_dataSnapshot.id() ; if (!m_ddsHandler->dts()->publish(m_dataSnapshot)) ERROR_LOG(m_logger) << "Error publishing MrkMarker-data to dds"; } // end of onPublishData() //----------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // convert methods // ---------------------------------------------------------------------------- // MarkerManagement::Snapshot => Database::MrkSnapshot Database::MrkSnapshot ObjectSnapshot::toDbData(const Snapshot &ddsData) { Database::MrkSnapshot dbData; dbData.id = ddsData.id(); dbData.operatorId = ddsData.operatorId(); dbData.name = QString::fromStdString(ddsData.name()); dbData.description = QString::fromStdString(ddsData.description()); dbData.fileContentId = ddsData.fileContentId(); dbData.timeStamp = ddsData.timeStamp(); dbData.mapSettings = QString::fromStdString(ddsData.mapSettings()); dbData.movementTracks = QString::fromStdString(ddsData.movementTracks()); dbData.filter = QString::fromStdString(ddsData.filter()); dbData.planOverlay = QString::fromStdString(ddsData.planOverlay()); return dbData; } // end of toDbData() //----------------------------------------------------------------------------- //Database::MrkSnapshot => MarkerManagement::Snapshot Snapshot ObjectSnapshot::toDdsData(const Database::MrkSnapshot &dbData) { Snapshot ddsData; ddsData.id(dbData.id); ddsData.operatorId(dbData.operatorId); ddsData.name(dbData.name.toStdString()); ddsData.description(dbData.description.toStdString()); ddsData.fileContentId(dbData.fileContentId); ddsData.timeStamp(dbData.timeStamp); ddsData.mapSettings(dbData.mapSettings.toStdString()); ddsData.movementTracks(dbData.movementTracks.toStdString()); ddsData.filter(dbData.filter.toStdString()); ddsData.planOverlay(dbData.planOverlay.toStdString()); return ddsData; } // end of toDdsData() //----------------------------------------------------------------------------- } // namespace MarkerManagement