Initial commit

This commit is contained in:
torsten committed 2026-08-13 18:33:10 +02:00
commit b7d90b9afe
16245 files changed
+3396666

No files matched your search

@@ -0,0 +1,132 @@
/**
* Handler for infrastructure data
* $Id$
* $HeadURL$
* $Author:
* Created by Christian Roeskens, NLSE, 2018-05-02
*/
#include "handler_equipment_error_registration.h"
#include "web_socket_server.h"
#include "settings.h"
#include "eem_db.h"
#include <OcSituationServer/oss.hpp>
#include <ProjectDataManagement/pdm_enums.hpp>
#include <QSet>
#include <QtCore/QThread>
#include <QJsonArray>
#include <QJsonObject>
#include <QJsonDocument>
#include <QTimer>
using namespace ExerciseEventManagement;
HandlerEquipmentErrorRegistration::HandlerEquipmentErrorRegistration(MainHandler *mainHandler,
const std::shared_ptr<DdsHandler> &ddsHandler,
const std::shared_ptr<DbHandler> &db,
const std::shared_ptr<WebSocketEventServer> &eventServer)
: m_mainHandler(mainHandler)
, m_ddsHandler(ddsHandler)
, m_dbHandler(db)
, m_eventServer(eventServer)
, m_ossDtc(nullptr)
, m_logger(getLogger("HandlerEquipmentErrorRegistration"))
{
} // end of ctor()
//-----------------------------------------------------------------------------
HandlerEquipmentErrorRegistration::~HandlerEquipmentErrorRegistration()
{
} // end of dtor()
//-----------------------------------------------------------------------------
bool HandlerEquipmentErrorRegistration::init()
{
INFO_LOG(m_logger) << "start init() DTC OcSituationServer ";
// DTC OcSituationServer
m_ossDtc = OcSituationServer::Interface::Dtc::create(m_ddsHandler->ddsConnector());
if (m_ossDtc == nullptr)
{
ERROR_LOG(m_logger) << "Could not create DTC OcSituationServer";
return false;
}
// Subsribe for EquipmentErrorRegistration
connect(m_ossDtc.get(), &OcSituationServer::Interface::Dtc::equipmentErrorRegistrationChanged,
this, &HandlerEquipmentErrorRegistration::onEquipmentErrorRegistrationChanged);
if (!m_ossDtc->enableEquipmentErrorRegistration())
{
ERROR_LOG(m_logger) << "init() DTC OcSituationServer failed";
return false;
}
return true;
}
// end of init()
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void HandlerEquipmentErrorRegistration::onEquipmentErrorRegistrationChanged(const OcSituationServer::EquipmentErrorRegistration &data, DataModification modType)
{
INFO_LOG(m_logger) << "onEquipmentErrorRegistrationChanged()"
<< ", equipmentNr: " << data.equipmentNumber()
<< ", text: " << QString::fromStdString(data.text());
if (modType == DataModification::eRemoved)
return;
Database::EemEvent eData;
eData.sampleTime = data.sampleTime();
eData.equipmentNumber = data.equipmentNumber();
eData.eventTypeId = ProjectDataManagement::EventType_def::EquipmentErrorReport;
QJsonObject obj;
obj[QStringLiteral("text")] = QString::fromStdString(data.text());
obj[QStringLiteral("device")] = QString::fromStdString(data.device());
obj[QStringLiteral("participant")] = QString::fromStdString(data.participant());
eData.properties = QString::fromUtf8(QJsonDocument(obj).toJson(QJsonDocument::Compact));
if (!m_dbHandler->db()->insert(eData))
ERROR_LOG(m_logger) << "Error while inserting event into database";
else
publishData(eData);
}// end of onEquipmentErrorRegistrationChanged()
//-----------------------------------------------------------------------------
void HandlerEquipmentErrorRegistration::publishData(const Database::EemEvent &data)
{
m_eventServer->sendEvent(Database::toJson(data));
ExerciseEventManagement::Event ddsData = toDdsData(data);
if (!m_ddsHandler->dts()->publish(ddsData))
ERROR_LOG(m_logger) << "Error publishing event-data to dds";
// take data from dds-bus after 10s, we need just to make sure the recording service got it
m_mainHandler->addEventIdToRemove(ddsData.id());
}
ExerciseEventManagement::Event HandlerEquipmentErrorRegistration::toDdsData(const Database::EemEvent &data)
{
ExerciseEventManagement::Event ddsData;
ddsData.id(data.id);
ddsData.sampleTime(data.sampleTime);
ddsData.participantId(data.participantId);
ddsData.partyId(data.partyId);
ddsData.equipmentNumber(data.equipmentNumber);
ddsData.eventTypeId(data.eventTypeId);
ddsData.properties(data.properties.toStdString());
ddsData.position(Core::GeoPosition(data.position.x(), data.position.y(), data.position.z()));
return ddsData;
}