BUILD_RTI=OFF: 1902/1902 Targets erfolgreich, DDS-Stubs vervollständigt

Neue Stub-Header für BUILD_RTI=OFF Konfiguration:
- include/DDS/Generic/generic_base.h: Topic-Name-Templates, Helper-Funktionen
- include/DDS/Generic/generic_logger.h: Logger-Wrapper mit DataType-Enum
- include/DDS/Generic/ddsgen_export.h: Export-Makros (leer für OFF)
- include/DDS/Generic/generic_data_reader.h: Data Reader Template-Stub
- include/DDS/DTC/generic_dtc.h: Minimale DDS-Typen für DTC
- include/LtsUtils/LtsUtilsCore/data_modification_enum.h: DataModification Enum
- include/FileManagement/flm_dtc_impl.h: Virtuelle Methoden für Name-Helper
- include/OperatorManagement/opm_dtc_impl.h: DtcImpl ohne Q_OBJECT

Wichtige Änderungen:
- QObject-Basisklasse entfernt für DatabaseInterfaceImpl und DtcImpl (BUILD_RTI=OFF)
- Logger-Stub verwendet Qt-Logging (qDebug/qWarning/qCritical)
- FileStatus als int-Alias statt enum class für BUILD_RTI=OFF
- CMake: DDS-Bibliotheken als leere INTERFACE-Targets für BUILD_RTI=OFF
- std::optional: is_set() → has_value(), get() → value()
- QList → std::vector Konversionen korrigiert
- qAsConst-Fehler mit rvalue expressions behoben

Build-Status: 1902/1902 Targets erfolgreich (BUILD_RTI=OFF)
Tests: Nicht ausführbar ohne RTI Connext DDS (BUILD_RTI=ON erforderlich)
This commit is contained in:
torsten committed 2026-08-30 10:36:47 +02:00
1 parent eafbbbbbe9
commit 851d47e114
17 files changed
+606 -40

No files matched your search

@@ -13,8 +13,10 @@
#include <QJsonObject>
#include <QVariantList>
#include <QtCore/QVector>
#if BUILD_RTI
#include <DDS/DTC/generic_dtc.h>
#include <DDS/Generic/generic_data_reader.h>
#endif
namespace OperatorManagement
{
@@ -25,12 +27,12 @@ DtcImplCustom::DtcImplCustom(const std::shared_ptr<DDSConnector::DdsConnector> &
{
}
QVector<int> DtcImplCustom::getOperatorsByOperatorRight(int operatorRight)
std::vector<int> DtcImplCustom::getOperatorsByOperatorRight(int operatorRight)
{
QVector<int> ret;
std::vector<int> ret;
DEBUG_LOG(m_logger) << "OperatorRight: " << operatorRight;
for (const User &user : qAsConst(m_userCont))
for (const User &user : std::as_const(m_userCont))
{
for (int acl : user.effectiveAcls())
{
@@ -38,7 +40,7 @@ QVector<int> DtcImplCustom::getOperatorsByOperatorRight(int operatorRight)
continue;
DEBUG_LOG(m_logger) << "Found acl in Operator " << user.id() << ", operatorRight=" << operatorRight << ", acl=" << acl;
ret.append(user.id());
ret.push_back(user.id());
break;
}
}
@@ -46,13 +48,13 @@ QVector<int> DtcImplCustom::getOperatorsByOperatorRight(int operatorRight)
return ret;
}
QVector<int> DtcImplCustom::operatorForExerciseParty(int exerciseId, int partyId)
std::vector<int> DtcImplCustom::operatorForExerciseParty(int exerciseId, int partyId)
{
QVector<int> ret = {};
std::vector<int> ret;
DEBUG_LOG(m_logger) << LOGFUNCTION << " exerciseId: " << exerciseId << ", partyId: " << partyId;
for (const User &user : qAsConst(m_userCont))
for (const User &user : std::as_const(m_userCont))
{
const auto visiblePartiesByExercise = user.visiblePartiesByExercise();
for (const auto &pbe : visiblePartiesByExercise)
@@ -60,14 +62,17 @@ QVector<int> DtcImplCustom::operatorForExerciseParty(int exerciseId, int partyId
if (pbe.exerciseId() != exerciseId)
continue;
if (!pbe.visibleParties().is_set())
if (!pbe.visibleParties().has_value())
continue;
std::vector<int32_t> hiddenParties = {};
if (pbe.hiddenParties().is_set())
hiddenParties = pbe.hiddenParties().get();
std::vector<int> hiddenParties;
if (pbe.hiddenParties().has_value())
{
const auto& hiddenQVec = pbe.hiddenParties().value();
hiddenParties = std::vector<int>(hiddenQVec.begin(), hiddenQVec.end());
}
for (const auto &id : pbe.visibleParties().get())
for (const auto &id : pbe.visibleParties().value())
{
if (id != partyId)
continue;
@@ -81,7 +86,7 @@ QVector<int> DtcImplCustom::operatorForExerciseParty(int exerciseId, int partyId
}
if (!isHidden)
ret.append(user.id());
ret.push_back(user.id());
}
}
}
@@ -113,7 +118,7 @@ bool DtcImplCustom::sendAdlerNotification(const QString &jsonStr, const int exer
DEBUG_LOG(m_logger) << "sendAdlerNotification";
const QJsonArray &exercisesArr = doc.object().value(QStringLiteral("Exercises")).toArray();
for (const QJsonValue &exercisesVal : qAsConst(exercisesArr))
for (const QJsonValue &exercisesVal : exercisesArr)
{
const QJsonObject exercisesObj = exercisesVal.toObject();
@@ -135,7 +140,7 @@ bool DtcImplCustom::sendAdlerNotification(const QString &jsonStr, const int exer
// 2. Array durchlaufen
QJsonArray notifications = exercisesObj.value(QStringLiteral("suppressNotifications")).toArray();
for (const QJsonValue &val : qAsConst(notifications))
for (const QJsonValue &val : notifications)
{
DEBUG_LOG(m_logger) << "sendAdlerNotification notifications";
const QJsonObject entry = val.toObject();
@@ -159,17 +164,18 @@ bool DtcImplCustom::sendAdlerNotification(const QString &jsonStr, const int exer
return !found;
}
QVector<int> DtcImplCustom::getNotificationRecipents(const int exerciseId, const int partyId, const int operatorRight, const int notificationType)
std::vector<int> DtcImplCustom::getNotificationRecipents(const int exerciseId, const int partyId, const int operatorRight, const int notificationType)
{
const QVector<int> operatorsByOperatorRight = getOperatorsByOperatorRight(operatorRight);
QVector<int> operatorIds;
const std::vector<int> operatorsByOperatorRight = getOperatorsByOperatorRight(operatorRight);
std::vector<int> operatorIds;
for (const auto &userId : operatorsByOperatorRight)
{
bool inExercise = false;
const auto user = m_userCont.value(userId);
// Only include operators who are assigned to the exercise.
for (const auto &exerciseIdUser : qAsConst(user.exerciseIds()))
const auto& exerciseIds = user.exerciseIds();
for (const auto &exerciseIdUser : exerciseIds)
{
if (exerciseIdUser == exerciseId)
{
@@ -184,7 +190,7 @@ QVector<int> DtcImplCustom::getNotificationRecipents(const int exerciseId, const
}
DEBUG_LOG(m_logger) << "getNotificationRecipents OperatorId" << user.id() << ", Name=" << user.name() << ", properties=" << user.properties();
if (isAdlerAllowedParty(exerciseId, partyId, user.id()) &&
sendAdlerNotification(QString::fromStdString(user.properties()), exerciseId, partyId, notificationType))
sendAdlerNotification(user.properties(), exerciseId, partyId, notificationType))
operatorIds.push_back(user.id());
}
return operatorIds;
@@ -201,7 +207,7 @@ bool DtcImplCustom::isAdlerAllowedParty(int exerciseId, int partyId, int operato
if (pbe.exerciseId() != exerciseId)
continue;
const QJsonObject propsObj(QJsonDocument::fromJson(QByteArray::fromStdString(pbe.properties())).object());
const QJsonObject propsObj(QJsonDocument::fromJson(pbe.properties().toUtf8()).object());
const QJsonArray parties = propsObj.value(QStringLiteral("adlerAllowed")).toArray();
for (const QJsonValue &val : parties)
@@ -19,15 +19,13 @@ namespace Interface
{
class DtcImplCustom final : public Interface::DtcImpl
{
Q_OBJECT
public:
explicit DtcImplCustom(const std::shared_ptr<DDSConnector::DdsConnector> &ddsConnector);
// custom procs, body must be implemented by user
QVector<int> getOperatorsByOperatorRight(int operatorRight) override;
QVector<int> operatorForExerciseParty(int exerciseId, int partyId) override;
QVector<int> getNotificationRecipents (const int exerciseId, const int partyId, const int operatorRight, const int notificationType) override;
std::vector<int> getOperatorsByOperatorRight(int operatorRight) override;
std::vector<int> operatorForExerciseParty(int exerciseId, int partyId) override;
std::vector<int> getNotificationRecipents (const int exerciseId, const int partyId, const int operatorRight, const int notificationType) override;
bool isAdlerAllowedParty(int exerciseId, int partyId, int operatorId) override;
private: