Migrates AreaEffectSimulation to generated rtiddsgen API

Converts accessor calls to plain member access across aes service and plugin.
This commit is contained in:
berrux-dev committed 2026-09-21 02:45:07 +02:00
1 parent e8d07af320
commit 472f537313
102 files changed
+3307 -3313

No files matched your search

@@ -36,7 +36,6 @@ class AesInfoDialog : public LtsWidgets::LtsDialog,
} }
private: private:
NGL::INGLLogger& m_logger;
void retranslate() override; void retranslate() override;
void handleNContamination(const AesItemView& aesItemView); void handleNContamination(const AesItemView& aesItemView);
@@ -57,9 +57,9 @@ bool AbstractFiringStrategy::calculateDispersionTrajectory()
LtsUtils::QPoint3D newTarget = intendendTrajectory.last().position; LtsUtils::QPoint3D newTarget = intendendTrajectory.last().position;
const int scatterLength = qRound(m_effector->effectorData().mhpScatterLenght()); const int scatterLength = qRound(m_effector->effectorData().mhpScatterLenght);
const int randomValueX = QRandomGenerator::global()->bounded(-scatterLength, scatterLength + 1); const int randomValueX = QRandomGenerator::global()->bounded(-scatterLength, scatterLength + 1);
const int scatterWidth = qRound(m_effector->effectorData().mhpScatterWidth()); const int scatterWidth = qRound(m_effector->effectorData().mhpScatterWidth);
const int randomValueY = QRandomGenerator::global()->bounded(-scatterWidth, scatterWidth + 1); const int randomValueY = QRandomGenerator::global()->bounded(-scatterWidth, scatterWidth + 1);
newTarget.setX(newTarget.x() + randomValueX); newTarget.setX(newTarget.x() + randomValueX);
newTarget.setY(newTarget.y() + randomValueY); newTarget.setY(newTarget.y() + randomValueY);
@@ -90,7 +90,7 @@ std::vector<Core::GeoPositionRelativeTime> AbstractFiringStrategy::buildTrajecto
// setup some vars of effector, which is used as launch position: // setup some vars of effector, which is used as launch position:
Core::GeoPosition effectorPositionGeo = participantPosition(m_effector->participantId()); Core::GeoPosition effectorPositionGeo = participantPosition(m_effector->participantId());
const LtsCoordTrans::UtmCoordinate &launchUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(effectorPositionGeo.lon(), effectorPositionGeo.lat()); const LtsCoordTrans::UtmCoordinate &launchUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(effectorPositionGeo.lon, effectorPositionGeo.lat);
std::vector<Core::GeoPositionRelativeTime> geometry; std::vector<Core::GeoPositionRelativeTime> geometry;
@@ -112,7 +112,7 @@ std::vector<Core::GeoPositionRelativeTime> AbstractFiringStrategy::buildTrajecto
const QPointF &trajPntAbsGeo = trajPntAbsUtm.geographic(); const QPointF &trajPntAbsGeo = trajPntAbsUtm.geographic();
// Position des Participants mit der m_participantId // Position des Participants mit der m_participantId
const double zValue = effectorPositionGeo.z() + trajPntRelPos.position.z(); // trajPntRelPos.position.z() ist die Hoehe const double zValue = effectorPositionGeo.z + trajPntRelPos.position.z(); // trajPntRelPos.position.z() ist die Hoehe
DEBUG_LOG(m_logger) << "trajPntAbsUtm :" << trajPntAbsUtm << ", trajPntAbsGeo :" << trajPntAbsGeo; DEBUG_LOG(m_logger) << "trajPntAbsUtm :" << trajPntAbsUtm << ", trajPntAbsGeo :" << trajPntAbsGeo;
geometry.emplace_back(Core::GeoPositionRelativeTime(trajPntAbsGeo.x(), trajPntAbsGeo.y(), zValue, trajPntRelPos.time)); geometry.emplace_back(Core::GeoPositionRelativeTime(trajPntAbsGeo.x(), trajPntAbsGeo.y(), zValue, trajPntRelPos.time));
@@ -131,13 +131,13 @@ TrajectoryTimeAware AbstractFiringStrategy::buildTrajectoryTimeAware(const std::
} }
TrajectoryTimeAware trajectory; TrajectoryTimeAware trajectory;
trajectory.trajectoryStartTime(trajectoryStartTime); trajectory.trajectoryStartTime = trajectoryStartTime;
trajectory.index(index); // see SituationMap : charge_effect_to_map ::updateSingleTrajectory() trajectory.index = index; // see SituationMap : charge_effect_to_map ::updateSingleTrajectory()
// [E01562-259] use originatorId, originatorTypeId (instead of aesItemId, aesTypeId) // [E01562-259] use originatorId, originatorTypeId (instead of aesItemId, aesTypeId)
trajectory.originatorId(m_effector->aesItemId()); trajectory.originatorId = m_effector->aesItemId();
trajectory.originatorTypeId(ProjectDataManagement::StateChangeOriginator::ChargeEffect); trajectory.originatorTypeId = ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_ChargeEffect;
trajectory.geometry(trajectoryGeometry); trajectory.geometry = trajectoryGeometry;
return trajectory; return trajectory;
} }
@@ -145,7 +145,7 @@ int AbstractFiringStrategy::sendChargeEffect(const TrajectoryTimeAware &trajecto
{ {
DEBUG_LOG(m_logger) << "sendChargeEffect"; DEBUG_LOG(m_logger) << "sendChargeEffect";
const auto trajGeometry = trajectoryTimeAware.geometry(); const auto trajGeometry = trajectoryTimeAware.geometry;
// sanity check: // sanity check:
if (trajGeometry.size() < 2) if (trajGeometry.size() < 2)
@@ -155,24 +155,24 @@ int AbstractFiringStrategy::sendChargeEffect(const TrajectoryTimeAware &trajecto
return -1; return -1;
} }
const qint64 trajectoryStartTime = trajectoryTimeAware.trajectoryStartTime(); const qint64 trajectoryStartTime = trajectoryTimeAware.trajectoryStartTime;
ChargeEffectModifyRequest chargeEffect; ChargeEffectModifyRequest chargeEffect;
chargeEffect.id(0); chargeEffect.id = 0;
chargeEffect.effectDuration(3000); chargeEffect.effectDuration = 3000;
chargeEffect.name("Schuss"); chargeEffect.name = "Schuss";
chargeEffect.chargeTypeId(m_effector->effectorData().chargeStruct().chargeTypeId()); chargeEffect.chargeTypeId = m_effector->effectorData().chargeStruct.chargeTypeId;
chargeEffect.effectStart(trajectoryStartTime + trajectoryTimeAware.geometry().back().relativeTime()); // Einschlag Zeit chargeEffect.effectStart = trajectoryStartTime + trajectoryTimeAware.geometry.back().relativeTime; // Einschlag Zeit
chargeEffect.igniterTypeId(m_effector->effectorData().chargeStruct().igniterTypeId()); chargeEffect.igniterTypeId = m_effector->effectorData().chargeStruct.igniterTypeId;
chargeEffect.gearTypeId(gearTypeId(m_effector->effectorData().chargeStruct().chargeTypeId(), m_effector->participantId())); chargeEffect.gearTypeId(gearTypeId(m_effector->effectorData().chargeStruct.chargeTypeId, m_effector->participantId()));
chargeEffect.originatorId(m_effector->aesItemId()); chargeEffect.originatorId = m_effector->aesItemId();
chargeEffect.originatorTypeId(ProjectDataManagement::StateChangeOriginator::AreaEffectSimulation); chargeEffect.originatorTypeId = ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_AreaEffectSimulation;
chargeEffect.properties(QJsonDocument(properties).toJson().toStdString()); chargeEffect.properties = QJsonDocument(properties).toJson().toStdString();
const Core::GeoPosition &impactPosition = trajGeometry.back(); const Core::GeoPosition &impactPosition = trajGeometry.back();
chargeEffect.position(impactPosition); // Impact Position chargeEffect.position = impactPosition; // Impact Position
chargeEffect.trajectoryTimeAware(trajectoryTimeAware); chargeEffect.trajectoryTimeAware = trajectoryTimeAware;
const auto &reply = m_effector->mainHandler()->chargeEffectHandler()->createChargeEffect(chargeEffect); const auto &reply = m_effector->mainHandler()->chargeEffectHandler()->createChargeEffect(chargeEffect);
DEBUG_LOG(m_logger) << LOGFUNCTION << " reply.id=" << reply.id() << ", str:" << reply.str() << ", uniqueId:" << reply.uniqueId(); DEBUG_LOG(m_logger) << LOGFUNCTION << " reply.id=" << reply.id() << ", str:" << reply.str() << ", uniqueId:" << reply.uniqueId();
@@ -183,7 +183,7 @@ Core::GeoPosition AbstractFiringStrategy::participantPosition(int participantId)
{ {
m_effector->mainHandler()->dds()->ppmDtc()->enableParticipantPosition(true); m_effector->mainHandler()->dds()->ppmDtc()->enableParticipantPosition(true);
const ParticipantManagement::ParticipantPosition &pos = m_effector->mainHandler()->dds()->ppmDtc()->participantPosition(participantId); const ParticipantManagement::ParticipantPosition &pos = m_effector->mainHandler()->dds()->ppmDtc()->participantPosition(participantId);
return pos.pos(); return pos.pos;
} }
int32_t AbstractFiringStrategy::gearTypeId(int chargeTypeId, int participantId) int32_t AbstractFiringStrategy::gearTypeId(int chargeTypeId, int participantId)
@@ -194,17 +194,17 @@ int32_t AbstractFiringStrategy::gearTypeId(int chargeTypeId, int participantId)
m_effector->mainHandler()->dds()->ppmDtc()->enableDynamicParticipantData(true); m_effector->mainHandler()->dds()->ppmDtc()->enableDynamicParticipantData(true);
m_effector->mainHandler()->dds()->ppmDtc()->waitForHistoricalDataDynamicParticipantData(1000); m_effector->mainHandler()->dds()->ppmDtc()->waitForHistoricalDataDynamicParticipantData(1000);
const ParticipantManagement::DynamicParticipantData &dynamicParticipantData = m_effector->mainHandler()->dds()->ppmDtc()->dynamicParticipantData(participantId); const ParticipantManagement::DynamicParticipantData &dynamicParticipantData = m_effector->mainHandler()->dds()->ppmDtc()->dynamicParticipantData(participantId);
DEBUG_LOG(m_logger) << "gearSize " << dynamicParticipantData.gear().size(); DEBUG_LOG(m_logger) << "gearSize " << dynamicParticipantData.gear.size();
const auto& participantData_gear = dynamicParticipantData.gear(); const auto& participantData_gear = dynamicParticipantData.gear;
for (const auto &gear : qAsConst(participantData_gear)) for (const auto &gear : qAsConst(participantData_gear))
{ {
DEBUG_LOG(m_logger) << "gear.chargeTypeId(): " << gear.chargeTypeId() << ", chargeTypeId:" << chargeTypeId; DEBUG_LOG(m_logger) << "gear.chargeTypeId(): " << gear.chargeTypeId << ", chargeTypeId:" << chargeTypeId;
if (gear.chargeTypeId() == chargeTypeId) if (gear.chargeTypeId == chargeTypeId)
{ {
DEBUG_LOG(m_logger) << "getGearTypeId return: " << gear.gearTypeId(); DEBUG_LOG(m_logger) << "getGearTypeId return: " << gear.gearTypeId;
if (gear.gearTypeId() != 0) if (gear.gearTypeId != 0)
return gear.gearTypeId(); return gear.gearTypeId;
else else
return 701; // MALTE XKCD return 701; // MALTE XKCD
} }
@@ -54,7 +54,7 @@ bool DefaultFiringStrategy::doFiring()
// 3b: buildTrajectoryTimeAware // 3b: buildTrajectoryTimeAware
const auto trajTimeAware = buildTrajectoryTimeAware(geometry, trajectoryStartTime); const auto trajTimeAware = buildTrajectoryTimeAware(geometry, trajectoryStartTime);
// to be bullet-proof: // to be bullet-proof:
if (trajTimeAware.geometry().size() < 2) if (trajTimeAware.geometry.size() < 2)
{ {
ERROR_LOG(m_logger) << LOGFUNCTION << " trajTimeAware is empty"; ERROR_LOG(m_logger) << LOGFUNCTION << " trajTimeAware is empty";
return false; return false;
@@ -79,12 +79,12 @@ void Dm72FiringStrategy::init()
bool bOk = false; bool bOk = false;
WirkmittelFeuerkommandoRakete wirkmittel; WirkmittelFeuerkommandoRakete wirkmittel;
const std::string propertiesStdStr = m_effector->effectorData().properties(); const std::string propertiesStdStr = m_effector->effectorData().properties;
DEBUG_LOG(m_logger) << LOGFUNCTION << " START" << ", propertiesStdStr= '" << propertiesStdStr << "'"; DEBUG_LOG(m_logger) << LOGFUNCTION << " START" << ", propertiesStdStr= '" << propertiesStdStr << "'";
const QJsonObject properties = QJsonDocument::fromJson(QByteArray::fromStdString(propertiesStdStr)).object(); const QJsonObject properties = QJsonDocument::fromJson(QByteArray::fromStdString(propertiesStdStr)).object();
const Core::GeoPosition geoStartPos = participantPosition(m_effector->participantId()); const Core::GeoPosition geoStartPos = participantPosition(m_effector->participantId());
const UtmCoordinate utmStartPos = UtmCoordinate::fromGeographic(geoStartPos.lon(), geoStartPos.lat()); const UtmCoordinate utmStartPos = UtmCoordinate::fromGeographic(geoStartPos.lon, geoStartPos.lat);
wirkmittelFeuerkommandoRaketeFromJson(properties, wirkmittel, bOk); wirkmittelFeuerkommandoRaketeFromJson(properties, wirkmittel, bOk);
@@ -129,9 +129,9 @@ QVector<QPointF> Dm72FiringStrategy::mineLayingCentroids() const
{ {
using namespace LtsCoordTrans; using namespace LtsCoordTrans;
const int chargeTypeId = m_effector->effectorData().chargeStruct().chargeTypeId(); const int chargeTypeId = m_effector->effectorData().chargeStruct.chargeTypeId;
const ProjectDataManagement::ChargeType &chargeType = m_effector->mainHandler()->dds()->pdmDtc()->chargeType(chargeTypeId); const ProjectDataManagement::ChargeType &chargeType = m_effector->mainHandler()->dds()->pdmDtc()->chargeType(chargeTypeId);
const QJsonObject chargeTypeProperties = QJsonDocument::fromJson(QByteArray::fromStdString(chargeType.properties())).object(); const QJsonObject chargeTypeProperties = QJsonDocument::fromJson(QByteArray::fromStdString(chargeType.properties)).object();
const QJsonObject mineLaying = chargeTypeProperties.value(QStringLiteral("mineLaying")).toObject(); const QJsonObject mineLaying = chargeTypeProperties.value(QStringLiteral("mineLaying")).toObject();
const QJsonArray mineLayingPattern = mineLaying.value(QStringLiteral("pattern")).toArray(); const QJsonArray mineLayingPattern = mineLaying.value(QStringLiteral("pattern")).toArray();
/* QMap is used here because it sort its entries by key. /* QMap is used here because it sort its entries by key.
@@ -139,8 +139,8 @@ QVector<QPointF> Dm72FiringStrategy::mineLayingCentroids() const
* automatically sorts the pattern. * automatically sorts the pattern.
*/ */
QMap<int, QPointF> centroidsMap; QMap<int, QPointF> centroidsMap;
const UtmCoordinate mhpUtm = UtmCoordinate::fromGeographic(m_effector->effectorData().mhpPosition().lon(), const UtmCoordinate mhpUtm = UtmCoordinate::fromGeographic(m_effector->effectorData().mhpPosition.lon,
m_effector->effectorData().mhpPosition().lat()); m_effector->effectorData().mhpPosition.lat);
const double rotationAngle = angleToMhpUtm(mhpUtm.toPoint()); const double rotationAngle = angleToMhpUtm(mhpUtm.toPoint());
QTransform rotation; QTransform rotation;
@@ -193,7 +193,7 @@ QVector<QPointF> Dm72FiringStrategy::mineLayingCentroids() const
double Dm72FiringStrategy::angleToMhpUtm(const QPointF &mhpUtm) const double Dm72FiringStrategy::angleToMhpUtm(const QPointF &mhpUtm) const
{ {
const ParticipantManagement::ParticipantPosition &ownPosition = m_effector->mainHandler()->dds()->ppmDtc()->participantPosition(m_effector->participantId()); const ParticipantManagement::ParticipantPosition &ownPosition = m_effector->mainHandler()->dds()->ppmDtc()->participantPosition(m_effector->participantId());
const LtsCoordTrans::UtmCoordinate ownPositionUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(ownPosition.pos().lon(), ownPosition.pos().lat()); const LtsCoordTrans::UtmCoordinate ownPositionUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(ownPosition.pos.lon, ownPosition.pos.lat);
const double angle = QLineF(mhpUtm, ownPositionUtm.toPoint()).angle(); const double angle = QLineF(mhpUtm, ownPositionUtm.toPoint()).angle();
double northAngle = 90 - angle; double northAngle = 90 - angle;
@@ -30,19 +30,19 @@ AbstractFiringStrategy *createFiringStrategy(ObjectEffector *parent)
if (!parent) if (!parent)
return nullptr; return nullptr;
const ChargeStruct &cs = parent->effectorData().chargeStruct(); const ChargeStruct &cs = parent->effectorData().chargeStruct;
DEBUG_LOG(logger) << LOGFUNCTION << " ChargeStruct = " << cs; DEBUG_LOG(logger) << LOGFUNCTION << " ChargeStruct = " << cs;
// GMLRS // GMLRS
if (parent->mainHandler()->dds()->pdmDtc()->isGmlrs(cs.chargeTypeId())) if (parent->mainHandler()->dds()->pdmDtc()->isGmlrs(cs.chargeTypeId))
{ {
TRACE_LOG(logger) << LOGFUNCTION << " END"; TRACE_LOG(logger) << LOGFUNCTION << " END";
return new GmlrsFiringStrategy(parent); return new GmlrsFiringStrategy(parent);
} }
// SMArt // SMArt
const bool bIsSmart = parent->mainHandler()->dds()->pdmDtc()->isSmart(cs.chargeTypeId(), cs.igniterTypeId(), cs.igniterFunctionId()); const bool bIsSmart = parent->mainHandler()->dds()->pdmDtc()->isSmart(cs.chargeTypeId, cs.igniterTypeId, cs.igniterFunctionId);
if (bIsSmart) if (bIsSmart)
{ {
TRACE_LOG(logger) << LOGFUNCTION << " END"; TRACE_LOG(logger) << LOGFUNCTION << " END";
@@ -50,7 +50,7 @@ AbstractFiringStrategy *createFiringStrategy(ObjectEffector *parent)
} }
// DM72 // DM72
if (parent->mainHandler()->dds()->pdmDtc()->isDm72(cs.chargeTypeId())) if (parent->mainHandler()->dds()->pdmDtc()->isDm72(cs.chargeTypeId))
{ {
TRACE_LOG(logger) << LOGFUNCTION << " END"; TRACE_LOG(logger) << LOGFUNCTION << " END";
return new Dm72FiringStrategy(parent); return new Dm72FiringStrategy(parent);
@@ -66,9 +66,9 @@ void GmlrsFiringStrategy::init()
m_impactPointIndex = 0; m_impactPointIndex = 0;
m_impactPoints.clear(); m_impactPoints.clear();
const QJsonObject &properties = QJsonDocument::fromJson(QByteArray::fromStdString(m_effector->effectorData().properties())).object(); const QJsonObject &properties = QJsonDocument::fromJson(QByteArray::fromStdString(m_effector->effectorData().properties)).object();
const Core::GeoPosition &geoStartPos = participantPosition(m_effector->participantId()); const Core::GeoPosition &geoStartPos = participantPosition(m_effector->participantId());
const LtsCoordTrans::UtmCoordinate &utmStartPos = LtsCoordTrans::UtmCoordinate::fromGeographic(geoStartPos.lon(), geoStartPos.lat()); const LtsCoordTrans::UtmCoordinate &utmStartPos = LtsCoordTrans::UtmCoordinate::fromGeographic(geoStartPos.lon, geoStartPos.lat);
bool bOk = false; bool bOk = false;
WirkmittelFeuerkommandoRakete wirkmittel; WirkmittelFeuerkommandoRakete wirkmittel;
@@ -61,13 +61,13 @@ double distanceMeter(const LtsCoordTrans::UtmCoordinate &utmCoord1, const LtsCoo
double distanceMeter(const Core::GeoPosition &geoPos, const LtsCoordTrans::UtmCoordinate &utmCoord) double distanceMeter(const Core::GeoPosition &geoPos, const LtsCoordTrans::UtmCoordinate &utmCoord)
{ {
const LtsCoordTrans::UtmCoordinate &utmPos = LtsCoordTrans::UtmCoordinate::fromGeographic(geoPos.lon(), geoPos.lat()); const LtsCoordTrans::UtmCoordinate &utmPos = LtsCoordTrans::UtmCoordinate::fromGeographic(geoPos.lon, geoPos.lat);
return distanceMeter(utmPos, utmCoord); return distanceMeter(utmPos, utmCoord);
} }
double distanceMeter(const Core::GeoPosition2D &geoPos2D, const LtsCoordTrans::UtmCoordinate &utmCoord) double distanceMeter(const Core::GeoPosition2D &geoPos2D, const LtsCoordTrans::UtmCoordinate &utmCoord)
{ {
const LtsCoordTrans::UtmCoordinate &utmPos = LtsCoordTrans::UtmCoordinate::fromGeographic(geoPos2D.lon(), geoPos2D.lat()); const LtsCoordTrans::UtmCoordinate &utmPos = LtsCoordTrans::UtmCoordinate::fromGeographic(geoPos2D.lon, geoPos2D.lat);
return distanceMeter(utmPos, utmCoord); return distanceMeter(utmPos, utmCoord);
} }
@@ -136,10 +136,10 @@ void ModuleTestEffectCluster::onModifyParticipantDataReply(const Core::FunctionR
int participantId = it->toInt(); int participantId = it->toInt();
DEBUG_LOG(m_logger) << "participantId=" << participantId; DEBUG_LOG(m_logger) << "participantId=" << participantId;
ParticipantManagement::Participant participant = m_ppmDtc->participant(participantId); ParticipantManagement::Participant participant = m_ppmDtc->participant(participantId);
if (m_ppmDtc->type(participant.typeId()).typeClass().underlying() != ParticipantManagement::TypeClass::Unit) if (m_ppmDtc->type(participant.typeId).typeClass != ParticipantManagement::TypeClass::Unit)
{ {
DEBUG_LOG(m_logger) << "m_participant1.id=" << participantId; DEBUG_LOG(m_logger) << "m_participant1.id=" << participantId;
m_participant1.id(participantId); // wichtig zum loeschen m_participant1.id = participantId; // wichtig zum loeschen
DEBUG_LOG(m_logger) << "m_participantId keine Unit=" << participantId; DEBUG_LOG(m_logger) << "m_participantId keine Unit=" << participantId;
setParticipantPos(participantId); setParticipantPos(participantId);
setEquipmentGearCharge(participantId); setEquipmentGearCharge(participantId);
@@ -151,7 +151,7 @@ void ModuleTestEffectCluster::onModifyParticipantDataReply(const Core::FunctionR
else else
{ {
DEBUG_LOG(m_logger) << "m_participant0.id=" << participantId; DEBUG_LOG(m_logger) << "m_participant0.id=" << participantId;
m_participant0.id(participantId); // wichtig zum loeschen m_participant0.id = participantId; // wichtig zum loeschen
} }
} }
} }
@@ -161,23 +161,23 @@ void ModuleTestEffectCluster::onAesItemViewChanged(const AesItemView &aesItemVie
if (modType == DataModification::eRemoved) if (modType == DataModification::eRemoved)
return; return;
AreaEffectSimulation::AesType_def::type aesType = aesItemView.aesTypeId().underlying(); AreaEffectSimulation::AesType::type aesType = aesItemView.aesTypeId().underlying();
if (aesType != AreaEffectSimulation::AesType_def::AtEffectCluster) if (aesType != AreaEffectSimulation::AesType::AtEffectCluster)
return; return;
if (aesItemView.aesItemId() != m_aesItemId) if (aesItemView.aesItemId != m_aesItemId)
return; return;
DEBUG_LOG(m_logger) << " got onAesItemViewChanged: " DEBUG_LOG(m_logger) << " got onAesItemViewChanged: "
<< ", aesItemId=" << aesItemView.aesItemId() << ", aesType=" << aesType << ", effectStateId=" << aesItemView.effectStateId(); << ", aesItemId=" << aesItemView.aesItemId << ", aesType=" << aesType << ", effectStateId=" << aesItemView.effectStateId;
QCOMPARE(aesItemView.effectStateId(), m_effectStates[m_effectStateCounter]); QCOMPARE(aesItemView.effectStateId, m_effectStates[m_effectStateCounter]);
m_effectStateCounter++; m_effectStateCounter++;
if (aesItemView.effectStateId() == AreaEffectSimulation::AesEffectState::EsReceived) if (aesItemView.effectStateId == AreaEffectSimulation::AesEffectState::EsReceived)
{ {
DEBUG_LOG(m_logger) << "sendAcknowledgeExternalAesItemRequest aesItemId=" << aesItemView.aesItemId(); DEBUG_LOG(m_logger) << "sendAcknowledgeExternalAesItemRequest aesItemId=" << aesItemView.aesItemId;
sendAcknowledgeExternalAesItemRequest(aesItemView.aesItemId()); sendAcknowledgeExternalAesItemRequest(aesItemView.aesItemId);
} }
} }
@@ -185,11 +185,11 @@ void ModuleTestEffectCluster::sendTabExFire()
{ {
DEBUG_LOG(m_logger) << "sendTabExFire"; DEBUG_LOG(m_logger) << "sendTabExFire";
TrainingAreaBase::EX_Fire exFire; TrainingAreaBase::EX_Fire exFire;
exFire.effectorId(m_effectorId); // Kenner z.B B1 exFire.effectorId = m_effectorId; // Kenner z.B B1
exFire.identifier(m_identifier.toStdString()); // Verein z.B 451100 exFire.identifier = m_identifier.toStdString(); // Verein z.B 451100
exFire.reference(m_reference.toStdString()); // UUID Feuerkampf exFire.reference = m_reference.toStdString(); // UUID Feuerkampf
exFire.equipmentNumber(m_participant1.id() * -1); exFire.equipmentNumber = m_participant1.id * -1;
exFire.sampleTime(QDateTime::currentMSecsSinceEpoch() + 500); exFire.sampleTime = QDateTime::currentMSecsSinceEpoch() + 500;
m_tabDts->publish(exFire); m_tabDts->publish(exFire);
} }
@@ -198,8 +198,8 @@ void ModuleTestEffectCluster::onEffectsChanged(const Effects &effects, DataModif
{ {
if (modType == DataModification::eRemoved) if (modType == DataModification::eRemoved)
return; return;
AreaEffectSimulation::AesType_def::type aesType = effects.aesTypeId().underlying(); AreaEffectSimulation::AesType::type aesType = effects.aesTypeId().underlying();
DEBUG_LOG(m_logger) << " got onEffectsChanged - m_data: " << m_data.id() << ", aesType=" << aesType; DEBUG_LOG(m_logger) << " got onEffectsChanged - m_data: " << m_data.id << ", aesType=" << aesType;
++m_counterDds.cntEffectClusterEffects; ++m_counterDds.cntEffectClusterEffects;
m_effects = effects; m_effects = effects;
@@ -208,22 +208,22 @@ void ModuleTestEffectCluster::onEffectsChanged(const Effects &effects, DataModif
void ModuleTestEffectCluster::onChargeEffectChanged(const ChargeEffect &chargeEffect, DataModification modType) void ModuleTestEffectCluster::onChargeEffectChanged(const ChargeEffect &chargeEffect, DataModification modType)
{ {
DEBUG_LOG(m_logger) << "onChargeEffectChanged state=" << chargeEffect.state(); DEBUG_LOG(m_logger) << "onChargeEffectChanged state=" << chargeEffect.state;
if (modType == DataModification::eRemoved) if (modType == DataModification::eRemoved)
return; return;
if (chargeEffect.state() == AreaEffectSimulation::AesEffectState::EsActivated) if (chargeEffect.state == AreaEffectSimulation::AesEffectState::EsActivated)
{ {
// Compare Position // Compare Position
// mhpPosition.lon(0.201958); // mhpPosition.lon(0.201958);
// mhpPosition.lat(0.915263); // mhpPosition.lat(0.915263);
// mhpPosition.z(88.0); // mhpPosition.z(88.0);
double lon = qRound64(chargeEffect.position().lon() * 100000) / 100000.0; // Nur die ersten 5 Nachkommastellen beruecksichtigen double lon = qRound64(chargeEffect.position.lon * 100000) / 100000.0; // Nur die ersten 5 Nachkommastellen beruecksichtigen
double lat = qRound64(chargeEffect.position().lat() * 100000) / 100000.0; double lat = qRound64(chargeEffect.position.lat * 100000) / 100000.0;
QCOMPARE(lon, 0.20196); QCOMPARE(lon, 0.20196);
QCOMPARE(lat, 0.91526); QCOMPARE(lat, 0.91526);
QCOMPARE(chargeEffect.position().z(), 88.0); QCOMPARE(chargeEffect.position.z, 88.0);
} }
else if (chargeEffect.state() == AreaEffectSimulation::AesEffectState::EsExpired) else if (chargeEffect.state == AreaEffectSimulation::AesEffectState::EsExpired)
participantDeleteRequest(); participantDeleteRequest();
DEBUG_LOG(m_logger) << " got onEffectsChanged - m_effects: " << m_effects; DEBUG_LOG(m_logger) << " got onEffectsChanged - m_effects: " << m_effects;
} }
@@ -231,12 +231,12 @@ void ModuleTestEffectCluster::onChargeEffectChanged(const ChargeEffect &chargeEf
void ModuleTestEffectCluster::onTrajectoryTimeAwareChanged(const TrajectoryTimeAware &data, DataModification modType) void ModuleTestEffectCluster::onTrajectoryTimeAwareChanged(const TrajectoryTimeAware &data, DataModification modType)
{ {
Q_UNUSED(modType); Q_UNUSED(modType);
if (data.id() == -1) if (data.id == -1)
return; return;
++m_counterDds.cntTrajectory; ++m_counterDds.cntTrajectory;
DEBUG_LOG(m_logger) << " got TrajectoryTimeAwareChanged - data: " << data.id() << ", cntTrajectory=" << m_counterDds.cntTrajectory; DEBUG_LOG(m_logger) << " got TrajectoryTimeAwareChanged - data: " << data.id << ", cntTrajectory=" << m_counterDds.cntTrajectory;
} }
void ModuleTestEffectCluster::dumpCnt() void ModuleTestEffectCluster::dumpCnt()
@@ -269,24 +269,24 @@ bool ModuleTestEffectCluster::waitForData(const std::function<bool()> &func, int
EffectCluster ModuleTestEffectCluster::getEcForTneVerification(const QString &eaName, double rotation) EffectCluster ModuleTestEffectCluster::getEcForTneVerification(const QString &eaName, double rotation)
{ {
AreaEffectSimulation::EffectCluster eaData; AreaEffectSimulation::EffectCluster eaData;
eaData.id(0); eaData.id = 0;
eaData.effectStart((time(nullptr) + 30) * 1000); // msec eaData.effectStart = (time(nullptr) + 30) * 1000; // msec
QString name(eaName); QString name(eaName);
name += QString::number(eaData.effectStart().get()); name += QString::number(eaData.effectStart.get());
eaData.name(name.toStdString()); eaData.name = name.toStdString();
eaData.effectDuration(10000); // 10 seconds eaData.effectDuration = 10000; // 10 seconds
// eaData.chargeStruct().chargeTypeId(s_ChargeTypeId1); // eaData.chargeStruct().chargeTypeId(s_ChargeTypeId1);
// eaData.chargeStruct().igniterTypeId(s_IgniterTypeProximity); // eaData.chargeStruct().igniterTypeId(s_IgniterTypeProximity);
eaData.partyId(2); eaData.partyId = 2;
eaData.participantId(7); eaData.participantId = 7;
// SubStruct FlightCurve // SubStruct FlightCurve
FlightCurve fc; FlightCurve fc;
fc.requestedRelativePeakHeight(100); fc.requestedRelativePeakHeight = 100;
// siehe auch: GUEZE-2311 Verifikation des Algorithmus bzgl. MTPs zw. TNE und EXCON. // siehe auch: GUEZE-2311 Verifikation des Algorithmus bzgl. MTPs zw. TNE und EXCON.
const double height = 100; // Y const double height = 100; // Y
@@ -301,15 +301,15 @@ EffectCluster ModuleTestEffectCluster::getEcForTneVerification(const QString &ea
DEBUG_LOG(m_logger) << " bottomLeft" << bottomLeft; DEBUG_LOG(m_logger) << " bottomLeft" << bottomLeft;
eaData.area().cornerBottomLeft(Core::GeoPosition(bottomLeft.x(), bottomLeft.y(), 0.0)); eaData.area.cornerBottomLeft(Core::GeoPosition(bottomLeft.x(), bottomLeft.y(), 0.0));
eaData.area().height(height); eaData.area.height = height;
eaData.area().width(width); eaData.area.width = width;
eaData.area().rotation(rot); eaData.area.rotation = rot;
eaData.explosionGeometry(AreaEffectSimulation::AesExplosionGeometry_def::EgArea); eaData.explosionGeometry = AreaEffectSimulation::AesExplosionGeometry::EgArea;
eaData.tla(0); // aka zop eaData.tla = 0; // aka zop
eaData.externalId(0); eaData.externalId = 0;
return eaData; return eaData;
} }
@@ -349,17 +349,17 @@ std::vector<Core::RelativePositionRelativeTime> ModuleTestEffectCluster::parseTr
QString val = xml.readElementText(); QString val = xml.readElementText();
if (name == QStringLiteral("lon")) if (name == QStringLiteral("lon"))
p.offsetX(val.toDouble()); p.offsetX = val.toDouble();
else if (name == QStringLiteral("lat")) else if (name == QStringLiteral("lat"))
p.offsetY(val.toDouble()); p.offsetY = val.toDouble();
else if (name == QStringLiteral("z")) else if (name == QStringLiteral("z"))
p.offsetZ(val.toDouble()); p.offsetZ = val.toDouble();
else if (name == QStringLiteral("relativeTime")) else if (name == QStringLiteral("relativeTime"))
p.relativeTime(val.toDouble()); p.relativeTime = val.toDouble();
} }
} }
points.push_back(p); points.push_back(p);
DEBUG_LOG(m_logger) << "Punkt gelesen: offsetY" << p.offsetX() << ", offsetY" << p.offsetY() << ", offsetZ" << p.offsetZ() << ", time=" << p.relativeTime(); DEBUG_LOG(m_logger) << "Punkt gelesen: offsetY" << p.offsetX << ", offsetY" << p.offsetY << ", offsetZ" << p.offsetZ << ", time=" << p.relativeTime;
} }
} }
@@ -386,14 +386,14 @@ int ModuleTestEffectCluster::doEffectClusterModifyRequest()
QString dateTimeString = QDateTime::currentDateTime().toString(QStringLiteral("dd.MM.yyyy hh:mm")); QString dateTimeString = QDateTime::currentDateTime().toString(QStringLiteral("dd.MM.yyyy hh:mm"));
m_reference = dateTimeString; m_reference = dateTimeString;
if (eaData.effectStart().is_set()) if (eaData.effectStart.is_set())
INFO_LOG(m_logger) << " effectClusterModifyRequest with effectStart: " << QDateTime::fromMSecsSinceEpoch(eaData.effectStart().get()).toString(); INFO_LOG(m_logger) << " effectClusterModifyRequest with effectStart: " << QDateTime::fromMSecsSinceEpoch(eaData.effectStart.get()).toString();
else else
INFO_LOG(m_logger) << " effectClusterModifyRequest with effectStart: not set "; INFO_LOG(m_logger) << " effectClusterModifyRequest with effectStart: not set ";
FlightCurve fc; FlightCurve fc;
// if (eaData.flightCurve().is_set()) // if (eaData.flightCurve.is_set())
// fc = eaData.flightCurve().get(); // fc = eaData.flightCurve.get();
QJsonObject obj; QJsonObject obj;
obj[QStringLiteral("effectSource")] = 1; obj[QStringLiteral("effectSource")] = 1;
@@ -410,49 +410,49 @@ int ModuleTestEffectCluster::doEffectClusterModifyRequest()
QString propertiesStr = QString::fromStdString(QJsonDocument(obj).toJson(QJsonDocument::Compact).toStdString()); QString propertiesStr = QString::fromStdString(QJsonDocument(obj).toJson(QJsonDocument::Compact).toStdString());
eaData.properties(propertiesStr.toStdString()); eaData.properties = propertiesStr.toStdString();
AreaEffectSimulation::ChargeStruct chargeStruct; AreaEffectSimulation::ChargeStruct chargeStruct;
chargeStruct.chargeTypeId(367); chargeStruct.chargeTypeId = 367;
chargeStruct.igniterTypeId(1); chargeStruct.igniterTypeId = 1;
chargeStruct.igniterFunctionId(2); chargeStruct.igniterFunctionId = 2;
Core::GeoPosition mhpPosition; Core::GeoPosition mhpPosition;
mhpPosition.lon(0.201958); mhpPosition.lon = 0.201958;
mhpPosition.lat(0.915263); mhpPosition.lat = 0.915263;
mhpPosition.z(88.0); mhpPosition.z = 88.0;
Core::GeoPosition2D cornerBottomLeft; Core::GeoPosition2D cornerBottomLeft;
cornerBottomLeft.lon(0.201951); cornerBottomLeft.lon = 0.201951;
cornerBottomLeft.lat(0.915259); cornerBottomLeft.lat = 0.915259;
AreaEffectSimulation::Area area; AreaEffectSimulation::Area area;
area.cornerBottomLeft(cornerBottomLeft); area.cornerBottomLeft = cornerBottomLeft;
area.width(50); area.width = 50;
area.height(50); area.height = 50;
area.rotation(0); area.rotation = 0;
eaData.area(area); eaData.area = area;
eaData.explosionGeometry(AreaEffectSimulation::AesExplosionGeometry::EgPoint); eaData.explosionGeometry = AreaEffectSimulation::AesExplosionGeometry::EgPoint;
std::vector<Core::RelativePositionRelativeTime> trajectory = parseTrajectory(s_REQUEST_SPL_FILE); std::vector<Core::RelativePositionRelativeTime> trajectory = parseTrajectory(s_REQUEST_SPL_FILE);
AreaEffectSimulation::EffectorData effector; AreaEffectSimulation::EffectorData effector;
effector.angleOfFall(0); effector.angleOfFall = 0;
effector.participantId(m_participant1.id()); // Participant effector.participantId = m_participant1.id; // Participant
DEBUG_LOG(m_logger) << "effector.participantId(m_participant1.id()=" << m_participant1.id(); DEBUG_LOG(m_logger) << "effector.participantId(m_participant1.id()=" << m_participant1.id;
effector.flightTime(39526.3); effector.flightTime = 39526.3;
effector.peakHeight(2002.0); effector.peakHeight = 2002.0;
effector.interval(0); effector.interval = 0;
effector.chargeStruct(chargeStruct); effector.chargeStruct = chargeStruct;
effector.chargeAmount(1); effector.chargeAmount = 1;
effector.mhpScatterLenght(3.08314e-316); effector.mhpScatterLenght = 3.08314e-316;
effector.mhpScatterWidth(8.76302e-315); effector.mhpScatterWidth = 8.76302e-315;
effector.mhpScatterLengthDetonationHeight(9.69057e-316); effector.mhpScatterLengthDetonationHeight = 9.69057e-316;
effector.mhpScatterWidthDetonationHeight(8.76638e-315); effector.mhpScatterWidthDetonationHeight = 8.76638e-315;
effector.mhpRotation(-45.4373); effector.mhpRotation = -45.4373;
effector.mhpPosition(mhpPosition); effector.mhpPosition = mhpPosition;
effector.trajectoryRelative(trajectory); effector.trajectoryRelative = trajectory;
DEBUG_LOG(m_logger) << "effector"; DEBUG_LOG(m_logger) << "effector";
@@ -461,37 +461,37 @@ int ModuleTestEffectCluster::doEffectClusterModifyRequest()
DEBUG_LOG(m_logger) << "Nach effector"; DEBUG_LOG(m_logger) << "Nach effector";
eaData.id(0); eaData.id = 0;
eaData.effectSourceId(ProjectDataManagement::EffectSource::ES_ADLER); eaData.effectSourceId = ProjectDataManagement::EffectSource::ES_ADLER;
eaData.firePurposeId(2); eaData.firePurposeId = 2;
eaData.partyId(4); eaData.partyId = 4;
eaData.participantId(m_participant0.id()); // Unit eaData.participantId = m_participant0.id; // Unit
DEBUG_LOG(m_logger) << "eaData.participantId(m_participant0.id()=" << m_participant0.id(); DEBUG_LOG(m_logger) << "eaData.participantId(m_participant0.id()=" << m_participant0.id;
eaData.externalId(7); eaData.externalId = 7;
eaData.effectMarkingInTa(1); eaData.effectMarkingInTa = 1;
eaData.name(dateTimeString.toStdString()); eaData.name = dateTimeString.toStdString();
eaData.element(dateTimeString.toStdString()); eaData.element = dateTimeString.toStdString();
DEBUG_LOG(m_logger) << "Vor send effectClusterModifyRequest"; DEBUG_LOG(m_logger) << "Vor send effectClusterModifyRequest";
int ret = m_aesFtc->effectClusterModifyRequest(EffectClusterModifyRequest(eaData.id(), int ret = m_aesFtc->effectClusterModifyRequest(EffectClusterModifyRequest(eaData.id,
eaData.name(), eaData.name,
eaData.element(), eaData.element,
eaData.effectStart(), eaData.effectStart,
eaData.effectDuration(), eaData.effectDuration,
eaData.effectSourceId(), eaData.effectSourceId,
eaData.area(), eaData.area,
eaData.explosionGeometry(), // AimPoint, Radial, Area, Line, Point eaData.explosionGeometry, // AimPoint, Radial, Area, Line, Point
eaData.tla(), // ZielOrtungsGenauigkeit eaData.tla, // ZielOrtungsGenauigkeit
effectors, effectors,
eaData.firePurposeId(), // FirePurpose: blenden, niederhalten, vernichten eaData.firePurposeId, // FirePurpose: blenden, niederhalten, vernichten
eaData.partyId(), eaData.partyId,
eaData.participantId(), eaData.participantId,
{}, // esmParticipantIds {}, // esmParticipantIds
eaData.externalId(), eaData.externalId,
eaData.effectMarkingInTa(), eaData.effectMarkingInTa,
eaData.properties()), eaData.properties),
this); this);
DEBUG_LOG(m_logger) << "send effectClusterModifyRequest ret=" << ret; DEBUG_LOG(m_logger) << "send effectClusterModifyRequest ret=" << ret;
return ret; return ret;
@@ -508,25 +508,25 @@ void ModuleTestEffectCluster::waitForEffectStates(int lineNumber, int durPrep, i
} }
INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsPrepared..."; INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsPrepared...";
if (!waitForData([this]() { return m_data.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsPrepared; }, durPrep)) if (!waitForData([this]() { return m_data.effectStateId == AreaEffectSimulation::AesEffectState::EsPrepared; }, durPrep))
{ {
ERROR_LOG(m_logger) << "Timeout waiting for EsPrepared of explosion cluster with id " << m_data.id() << ", lineNumber = " << lineNumber; ERROR_LOG(m_logger) << "Timeout waiting for EsPrepared of explosion cluster with id " << m_data.id << ", lineNumber = " << lineNumber;
QVERIFY2(false, "ERROR, exit"); QVERIFY2(false, "ERROR, exit");
return; return;
} }
INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsActivated..."; INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsActivated...";
if (!waitForData([this]() { return m_data.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsActivated; }, durAct)) if (!waitForData([this]() { return m_data.effectStateId == AreaEffectSimulation::AesEffectState::EsActivated; }, durAct))
{ {
ERROR_LOG(m_logger) << "Timeout waiting for EsActivated of explosion cluster with id " << m_data.id() << ", lineNumber = " << lineNumber; ERROR_LOG(m_logger) << "Timeout waiting for EsActivated of explosion cluster with id " << m_data.id << ", lineNumber = " << lineNumber;
QVERIFY2(false, "ERROR, exit"); QVERIFY2(false, "ERROR, exit");
return; return;
} }
INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsExpired..."; INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsExpired...";
if (!waitForData([this]() { return m_data.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsExpired; }, durExp)) if (!waitForData([this]() { return m_data.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired; }, durExp))
{ {
ERROR_LOG(m_logger) << "Timeout waiting for EsExpired of explosion cluster with id " << m_data.id() << ", lineNumber = " << lineNumber; ERROR_LOG(m_logger) << "Timeout waiting for EsExpired of explosion cluster with id " << m_data.id << ", lineNumber = " << lineNumber;
QVERIFY2(false, "ERROR, exit"); QVERIFY2(false, "ERROR, exit");
return; return;
} }
@@ -538,24 +538,24 @@ void ModuleTestEffectCluster::disconnectFromParty()
ParticipantManagement::Party party; ParticipantManagement::Party party;
party.name("GREEN"); party.name = "GREEN";
party.role(ParticipantManagement::Role::Neutral); party.role = ParticipantManagement::Role::Neutral;
party.color(-16711936); party.color = -16711936;
party.fadingColor(-6553701); party.fadingColor = -6553701;
ModifyPartyDataRequest req; ModifyPartyDataRequest req;
req.id(m_partyId); req.id = m_partyId;
req.name(party.name()); req.name = party.name;
req.color(party.color()); req.color = party.color;
req.fadingColor(party.fadingColor()); req.fadingColor = party.fadingColor;
req.role(party.role()); req.role = party.role;
req.isUsedBy(true); req.isUsedBy = true;
req.sampleTime(QDateTime::currentMSecsSinceEpoch()); req.sampleTime = QDateTime::currentMSecsSinceEpoch();
const HlaForceIdentifierEnum hlaId = HlaForceIdentifierEnum::Neutral_1; const HlaForceIdentifierEnum hlaId = HlaForceIdentifierEnum::Neutral_1;
req.hlaForceIdentifier(hlaId); req.hlaForceIdentifier = hlaId;
QString properties = QStringLiteral("{\"Adler\": {\"wsId\": 3, \"SaaName\": \"UI Test\", \"assetId\": -1, \"saaName\": \"SAA1@GUEZ.DE\", \"szenarName\": \"UI Test\", " QString properties = QStringLiteral("{\"Adler\": {\"wsId\": 3, \"SaaName\": \"UI Test\", \"assetId\": -1, \"saaName\": \"SAA1@GUEZ.DE\", \"szenarName\": \"UI Test\", "
"\"isSaaConnected\": 1, \"saaConnectedState\": 2}}"); "\"isSaaConnected\": 1, \"saaConnectedState\": 2}}");
req.properties(properties.toStdString()); req.properties = properties.toStdString();
if (!m_ppmFtc->modifyPartyDataRequest(req, this)) if (!m_ppmFtc->modifyPartyDataRequest(req, this))
{ {
@@ -570,25 +570,25 @@ void ModuleTestEffectCluster::connectToParty()
ParticipantManagement::Party party; ParticipantManagement::Party party;
party.name("GREEN"); party.name = "GREEN";
party.role(ParticipantManagement::Role::Neutral); party.role = ParticipantManagement::Role::Neutral;
party.color(-16711936); party.color = -16711936;
party.fadingColor(-6553701); party.fadingColor = -6553701;
ModifyPartyDataRequest req; ModifyPartyDataRequest req;
req.id(m_partyId); req.id = m_partyId;
req.name(party.name()); req.name = party.name;
req.color(party.color()); req.color = party.color;
req.fadingColor(party.fadingColor()); req.fadingColor = party.fadingColor;
req.role(party.role()); req.role = party.role;
req.isUsedBy(true); req.isUsedBy = true;
req.sampleTime(QDateTime::currentMSecsSinceEpoch()); req.sampleTime = QDateTime::currentMSecsSinceEpoch();
const HlaForceIdentifierEnum hlaId = HlaForceIdentifierEnum::Neutral_1; const HlaForceIdentifierEnum hlaId = HlaForceIdentifierEnum::Neutral_1;
req.hlaForceIdentifier(hlaId); req.hlaForceIdentifier = hlaId;
QString properties = QStringLiteral("{\"Adler\": {\"wsId\": 3, \"SaaName\": \"UI Test\", \"assetId\": -1, \"saaName\": \"SAA1@GUEZ.DE\", \"szenarName\": \"UI Test\", " QString properties = QStringLiteral("{\"Adler\": {\"wsId\": 3, \"SaaName\": \"UI Test\", \"assetId\": -1, \"saaName\": \"SAA1@GUEZ.DE\", \"szenarName\": \"UI Test\", "
"\"isSaaConnected\": 2, \"isVerbund\": true, \"saaConnectedState\": 4}}"); "\"isSaaConnected\": 2, \"isVerbund\": true, \"saaConnectedState\": 4}}");
req.properties(properties.toStdString()); req.properties = properties.toStdString();
if (!m_ppmFtc->modifyPartyDataRequest(req, this)) if (!m_ppmFtc->modifyPartyDataRequest(req, this))
{ {
@@ -601,46 +601,46 @@ void ModuleTestEffectCluster::participantChangeRequest()
{ {
DEBUG_LOG(m_logger) << "PPM::participantChangerequest"; DEBUG_LOG(m_logger) << "PPM::participantChangerequest";
m_participant0.id(0); m_participant0.id = 0;
m_participant0.partyId(4); m_participant0.partyId = 4;
m_participant0.hierarchyNumber(1); m_participant0.hierarchyNumber = 1;
m_participant0.typeId(182); m_participant0.typeId = 182;
m_participant0.externalId(0); m_participant0.externalId = 0;
m_participant0.symbol(QStringLiteral("AP6D|CMPL|10011000001308000000").toStdString()); m_participant0.symbol = QStringLiteral("AP6D|CMPL|10011000001308000000").toStdString();
m_participant0.name(QStringLiteral("451200").toStdString()); m_participant0.name = QStringLiteral("451200").toStdString();
m_participant0.identification(QStringLiteral("").toStdString()); m_participant0.identification = QStringLiteral("").toStdString();
m_participant0.designator(QStringLiteral("451200").toStdString()), m_participant0.tacticalIdentifier(QStringLiteral("451200").toStdString()); m_participant0.designator = QStringLiteral("451200").toStdString(), m_participant0.tacticalIdentifier = QStringLiteral("451200").toStdString();
m_participant0.info(QStringLiteral("").toStdString()); m_participant0.info = QStringLiteral("").toStdString();
m_participant0.assignState(ParticipantManagement::ParticipantAssignState::NotAssigned); m_participant0.assignState = ParticipantManagement::ParticipantAssignState::NotAssigned;
m_participant0.isSimulated(false); m_participant0.isSimulated = false;
m_participant0.isDeleted(false); m_participant0.isDeleted = false;
m_participant0.properties(QStringLiteral("").toStdString()); m_participant0.properties = QStringLiteral("").toStdString();
m_participant0.modId(1138783559); m_participant0.modId = 1138783559;
m_participant0.superiorModId(0); m_participant0.superiorModId = 0;
m_participant1.id(0); m_participant1.id = 0;
m_participant1.partyId(4); m_participant1.partyId = 4;
m_participant1.hierarchyNumber(1); m_participant1.hierarchyNumber = 1;
m_participant1.typeId(188); m_participant1.typeId = 188;
m_participant1.externalId(0); m_participant1.externalId = 0;
m_participant1.symbol(QStringLiteral("AP6D|CMPL|10011500001114020000").toStdString()); m_participant1.symbol = QStringLiteral("AP6D|CMPL|10011500001114020000").toStdString();
m_participant1.name(QStringLiteral("C3").toStdString()); m_participant1.name = QStringLiteral("C3").toStdString();
m_participant1.identification(QStringLiteral("").toStdString()); m_participant1.identification = QStringLiteral("").toStdString();
m_participant1.designator(QStringLiteral("C3").toStdString()), m_participant1.tacticalIdentifier(QStringLiteral("451200").toStdString()); m_participant1.designator = QStringLiteral("C3").toStdString(), m_participant1.tacticalIdentifier = QStringLiteral("451200").toStdString();
m_participant1.info(QStringLiteral("").toStdString()); m_participant1.info = QStringLiteral("").toStdString();
m_participant1.assignState(ParticipantManagement::ParticipantAssignState::NotAssigned); m_participant1.assignState = ParticipantManagement::ParticipantAssignState::NotAssigned;
m_participant1.isSimulated(false); m_participant1.isSimulated = false;
m_participant1.isDeleted(false); m_participant1.isDeleted = false;
m_participant1.properties(QStringLiteral("").toStdString()); m_participant1.properties = QStringLiteral("").toStdString();
m_participant1.modId(1390608527); m_participant1.modId = 1390608527;
m_participant1.superiorModId(1138783559); m_participant1.superiorModId = 1138783559;
ModifyParticipantDataRequest req; ModifyParticipantDataRequest req;
std::vector<ParticipantManagement::ParticipantData> data; std::vector<ParticipantManagement::ParticipantData> data;
data.push_back(m_participant0); data.push_back(m_participant0);
data.push_back(m_participant1); data.push_back(m_participant1);
req.requestId(548288706); req.requestId = 548288706;
req.data(data); req.data = data;
if (!m_ppmFtc->modifyParticipantDataRequest(req, this)) if (!m_ppmFtc->modifyParticipantDataRequest(req, this))
{ {
ERROR_LOG(m_logger) << "Error creating party data"; ERROR_LOG(m_logger) << "Error creating party data";
@@ -652,16 +652,16 @@ void ModuleTestEffectCluster::participantDeleteRequest()
{ {
DEBUG_LOG(m_logger) << "PPM::participantDeleteRequest"; DEBUG_LOG(m_logger) << "PPM::participantDeleteRequest";
m_participant0.isDeleted(true); m_participant0.isDeleted = true;
m_participant1.isDeleted(true); m_participant1.isDeleted = true;
ModifyParticipantDataRequest req; ModifyParticipantDataRequest req;
std::vector<ParticipantManagement::ParticipantData> data; std::vector<ParticipantManagement::ParticipantData> data;
data.push_back(m_participant0); data.push_back(m_participant0);
data.push_back(m_participant1); data.push_back(m_participant1);
req.requestId(548288707); req.requestId = 548288707;
req.data(data); req.data = data;
if (!m_ppmFtc->modifyParticipantDataRequest(req, this)) if (!m_ppmFtc->modifyParticipantDataRequest(req, this))
{ {
ERROR_LOG(m_logger) << "Error creating party data"; ERROR_LOG(m_logger) << "Error creating party data";
@@ -676,16 +676,16 @@ void ModuleTestEffectCluster::setParticipantPos(int participantId)
Core::GeoPosition geoPos; Core::GeoPosition geoPos;
TrainingAreaBase::EquipmentPosition pos; TrainingAreaBase::EquipmentPosition pos;
geoPos.lon(0.20110363); geoPos.lon = 0.20110363;
geoPos.lat(0.91579597); geoPos.lat = 0.91579597;
geoPos.z(0.0); geoPos.z = 0.0;
DEBUG_LOG(m_logger) << " initTestCase_data1 ..."; DEBUG_LOG(m_logger) << " initTestCase_data1 ...";
pos.equipmentNumber(participantId * -1); // ParticipantId pos.equipmentNumber = participantId * -1; // ParticipantId
pos.sampleTime(QDateTime::currentMSecsSinceEpoch()); pos.sampleTime = QDateTime::currentMSecsSinceEpoch();
position.reportingSource(Core::PositionReportingSource::SetByOperator); position.reportingSource = Core::PositionReportingSource::SetByOperator;
position.position(geoPos); position.position = geoPos;
pos.position(position); pos.position = position;
m_tabDts->publish(pos); m_tabDts->publish(pos);
} }
@@ -696,34 +696,34 @@ void ModuleTestEffectCluster::setEquipmentGearCharge(int participantId)
TrainingAreaBase::GearCharge charge; TrainingAreaBase::GearCharge charge;
std::vector<TrainingAreaBase::GearCharge> charges; std::vector<TrainingAreaBase::GearCharge> charges;
egs.equipmentNumber(participantId * -1); // ParticipantId egs.equipmentNumber = participantId * -1; // ParticipantId
egs.sampleTime(QDateTime::currentMSecsSinceEpoch()); egs.sampleTime = QDateTime::currentMSecsSinceEpoch();
charges.resize(7); charges.resize(7);
charge.gearId(138); charge.gearId = 138;
charge.gearTypeId(801); charge.gearTypeId = 801;
charge.chargeTypeId(367); charge.chargeTypeId = 367;
charge.remain(50); charge.remain = 50;
charges.push_back(charge); // 0 charges.push_back(charge); // 0
charge.chargeTypeId(366); charge.chargeTypeId = 366;
charges.push_back(charge); // 1 charges.push_back(charge); // 1
charge.chargeTypeId(361); charge.chargeTypeId = 361;
charges.push_back(charge); // 2 charges.push_back(charge); // 2
charge.chargeTypeId(362); charge.chargeTypeId = 362;
charges.push_back(charge); // 3 charges.push_back(charge); // 3
charge.chargeTypeId(363); charge.chargeTypeId = 363;
charges.push_back(charge); // 4 charges.push_back(charge); // 4
charge.chargeTypeId(364); charge.chargeTypeId = 364;
charges.push_back(charge); // 5 charges.push_back(charge); // 5
charge.chargeTypeId(365); charge.chargeTypeId = 365;
charges.push_back(charge); // 6 charges.push_back(charge); // 6
egs.charge(charges); egs.charge = charges;
m_tabDts->publish(egs); m_tabDts->publish(egs);
} }
@@ -736,17 +736,17 @@ void ModuleTestEffectCluster::onPartyChanged(const ParticipantManagement::Party
return; return;
} }
if (data.id() != m_partyId) if (data.id != m_partyId)
{ {
return; return;
} }
DEBUG_LOG(m_logger) << "onPartyChanged id= " << data.id(); DEBUG_LOG(m_logger) << "onPartyChanged id= " << data.id;
if (m_ppmDtc->saaConnectedState(data.id()) == ParticipantManagement::ConnectState::Connected) if (m_ppmDtc->saaConnectedState(data.id) == ParticipantManagement::ConnectState::Connected)
{ {
DEBUG_LOG(m_logger) << "onPartyChanged saaConnectedState == connected"; DEBUG_LOG(m_logger) << "onPartyChanged saaConnectedState == connected";
} }
else if (m_ppmDtc->saaConnectedState(data.id()) == ParticipantManagement::ConnectState::Disconnected) else if (m_ppmDtc->saaConnectedState(data.id) == ParticipantManagement::ConnectState::Disconnected)
{ {
DEBUG_LOG(m_logger) << "onPartyChanged saaConnectedState == disconnected => connectToParty"; DEBUG_LOG(m_logger) << "onPartyChanged saaConnectedState == disconnected => connectToParty";
connectToParty(); connectToParty();
@@ -835,8 +835,8 @@ void ModuleTestEffectCluster::initTestCase()
DEBUG_LOG(m_logger) << " waitForHistoricalDataExercise... Done"; DEBUG_LOG(m_logger) << " waitForHistoricalDataExercise... Done";
const ExerciseManagement::Exercise &exercise = m_exmDtc->exercise(m_exerciseId); const ExerciseManagement::Exercise &exercise = m_exmDtc->exercise(m_exerciseId);
QVERIFY2(exercise.id() == m_exerciseId, "ERROR, exercise failed!!"); QVERIFY2(exercise.id == m_exerciseId, "ERROR, exercise failed!!");
m_traingAreaId = exercise.trainingAreaId(); m_traingAreaId = exercise.trainingAreaId;
DEBUG_LOG(m_logger) << " ExerciseManagement" DEBUG_LOG(m_logger) << " ExerciseManagement"
<< ", m_traingAreaId = " << m_traingAreaId; << ", m_traingAreaId = " << m_traingAreaId;
@@ -59,7 +59,7 @@ void ModuleTestLimits::testExplosionClusterCentral()
for (int i = 0; i < m_maxExplosionsCentral + s_offset; ++i) for (int i = 0; i < m_maxExplosionsCentral + s_offset; ++i)
{ {
QString name = QStringLiteral("TEST_EC") + QStringLiteral("_CEN_") + QString::number(i); QString name = QStringLiteral("TEST_EC") + QStringLiteral("_CEN_") + QString::number(i);
explosionCluster.name(name.toStdString()); explosionCluster.name = name.toStdString();
QTest::qWait(50); QTest::qWait(50);
int ret = m_aesFtc->explosionClusterModifyRequest(explosionCluster, this); int ret = m_aesFtc->explosionClusterModifyRequest(explosionCluster, this);
if (i < m_maxExplosionsCentral) if (i < m_maxExplosionsCentral)
@@ -73,7 +73,7 @@ void ModuleTestLimits::testExplosionClusterCentral()
const auto &items = m_aesDtc->explosionClusters(); const auto &items = m_aesDtc->explosionClusters();
for (const auto &item : qAsConst(items)) for (const auto &item : qAsConst(items))
{ {
if (item.effectStateId() == AesEffectState::EsPrepared && item.isCentral() == true) if (item.effectStateId == AesEffectState::EsPrepared && item.isCentral == true)
++counter; ++counter;
} }
@@ -93,7 +93,7 @@ void ModuleTestLimits::testExplosionClusterDecentral()
for (int i = 0; i < m_maxExplosionsDecentral + s_offset; ++i) for (int i = 0; i < m_maxExplosionsDecentral + s_offset; ++i)
{ {
QString name = QStringLiteral("TEST_EC") + QStringLiteral("_DEC_") + QString::number(i); QString name = QStringLiteral("TEST_EC") + QStringLiteral("_DEC_") + QString::number(i);
explosionCluster.name(name.toStdString()); explosionCluster.name = name.toStdString();
QTest::qWait(50); QTest::qWait(50);
int ret = m_aesFtc->explosionClusterModifyRequest(explosionCluster, this); int ret = m_aesFtc->explosionClusterModifyRequest(explosionCluster, this);
if (i < m_maxExplosionsDecentral) if (i < m_maxExplosionsDecentral)
@@ -106,7 +106,7 @@ void ModuleTestLimits::testExplosionClusterDecentral()
const auto &items = m_aesDtc->explosionClusters(); const auto &items = m_aesDtc->explosionClusters();
for (const auto &item : qAsConst(items)) for (const auto &item : qAsConst(items))
{ {
if ((item.effectStateId() == AesEffectState::EsPrepared) && (item.isCentral() == false)) if ((item.effectStateId == AesEffectState::EsPrepared) && (item.isCentral == false))
++counter; ++counter;
} }
@@ -127,7 +127,7 @@ void ModuleTestLimits::testAirSupports()
for (int i = 0; i < m_maxAirSupports + s_offset; ++i) for (int i = 0; i < m_maxAirSupports + s_offset; ++i)
{ {
QString name = QStringLiteral("TEST_AS") + QStringLiteral("_CEN_") + QString::number(i); QString name = QStringLiteral("TEST_AS") + QStringLiteral("_CEN_") + QString::number(i);
airSupport.name(name.toStdString()); airSupport.name = name.toStdString();
QTest::qWait(50); QTest::qWait(50);
int ret = m_aesFtc->explosionClusterModifyRequest(airSupport, this); int ret = m_aesFtc->explosionClusterModifyRequest(airSupport, this);
if (i < m_maxAirSupports) if (i < m_maxAirSupports)
@@ -142,7 +142,7 @@ void ModuleTestLimits::testAirSupports()
const auto &items = m_aesDtc->explosionClusters(); const auto &items = m_aesDtc->explosionClusters();
for (const auto &item : qAsConst(items)) for (const auto &item : qAsConst(items))
{ {
if (item.effectStateId() == AesEffectState::EsPrepared && item.isCentral() && m_pdmDtc->gearClassFromChargeTypeId(item.chargeStruct().chargeTypeId()) == ProjectDataManagement::GearClass::AirSupport) if (item.effectStateId == AesEffectState::EsPrepared && item.isCentral && m_pdmDtc->gearClassFromChargeTypeId(item.chargeStruct.chargeTypeId) == ProjectDataManagement::GearClass::GearClass_AirSupport)
++counter; ++counter;
} }
@@ -158,11 +158,11 @@ void ModuleTestLimits::testMineAreaCentral()
QVERIFY2(m_aesFtc, "ERROR, No Aes Ftc available!!"); QVERIFY2(m_aesFtc, "ERROR, No Aes Ftc available!!");
auto mineArea = getMa(); auto mineArea = getMa();
mineArea.segments(m_segmentsCentral); mineArea.segments = m_segmentsCentral;
for (int i = 0; i < m_maxMineAreasCentral + s_offset; ++i) for (int i = 0; i < m_maxMineAreasCentral + s_offset; ++i)
{ {
QString name = QStringLiteral("TEST_MA") + QStringLiteral("_CEN_") + QString::number(i); QString name = QStringLiteral("TEST_MA") + QStringLiteral("_CEN_") + QString::number(i);
mineArea.name(name.toStdString()); mineArea.name = name.toStdString();
QTest::qWait(50); QTest::qWait(50);
int ret = m_aesFtc->mineAreaModifyRequest(mineArea, this); int ret = m_aesFtc->mineAreaModifyRequest(mineArea, this);
if (i < m_maxMineAreasCentral) if (i < m_maxMineAreasCentral)
@@ -175,7 +175,7 @@ void ModuleTestLimits::testMineAreaCentral()
const auto &items = m_aesDtc->mineAreas(); const auto &items = m_aesDtc->mineAreas();
for (const auto &item : qAsConst(items)) for (const auto &item : qAsConst(items))
{ {
if ((item.effectStateId() == AesEffectState::EsPrepared) && (item.isCentral() == true)) if ((item.effectStateId == AesEffectState::EsPrepared) && (item.isCentral == true))
++counter; ++counter;
} }
@@ -191,11 +191,11 @@ void ModuleTestLimits::testMineAreaDecentral()
QVERIFY2(m_aesFtc, "ERROR, No Aes Ftc available!!"); QVERIFY2(m_aesFtc, "ERROR, No Aes Ftc available!!");
auto mineArea = getMa(); auto mineArea = getMa();
mineArea.segments(m_segmentsDecentral); mineArea.segments = m_segmentsDecentral;
for (int i = 0; i < m_maxMineAreasDecentral - m_maxSafePzAbwSafe + s_offset; ++i) for (int i = 0; i < m_maxMineAreasDecentral - m_maxSafePzAbwSafe + s_offset; ++i)
{ {
QString name = QStringLiteral("TEST_MA") + QStringLiteral("_DEC_") + QString::number(i); QString name = QStringLiteral("TEST_MA") + QStringLiteral("_DEC_") + QString::number(i);
mineArea.name(name.toStdString()); mineArea.name = name.toStdString();
QTest::qWait(50); QTest::qWait(50);
int ret = m_aesFtc->mineAreaModifyRequest(mineArea, this); int ret = m_aesFtc->mineAreaModifyRequest(mineArea, this);
if (i < (m_maxMineAreasDecentral - m_maxSafePzAbwSafe)) if (i < (m_maxMineAreasDecentral - m_maxSafePzAbwSafe))
@@ -209,7 +209,7 @@ void ModuleTestLimits::testMineAreaDecentral()
const auto &items = m_aesDtc->mineAreas(); const auto &items = m_aesDtc->mineAreas();
for (const auto &curMineArea : qAsConst(items)) for (const auto &curMineArea : qAsConst(items))
{ {
if ((curMineArea.effectStateId() == AesEffectState::EsPrepared) && (curMineArea.isCentral() == false)) if ((curMineArea.effectStateId == AesEffectState::EsPrepared) && (curMineArea.isCentral == false))
++counter; ++counter;
} }
@@ -218,11 +218,11 @@ void ModuleTestLimits::testMineAreaDecentral()
// QVERIFY2(counter == m_maxMineAreasDecentral, "Too few mine areas"); // QVERIFY2(counter == m_maxMineAreasDecentral, "Too few mine areas");
mineArea.layingProcedureType(AreaEffectSimulation::AesMaLayingProcedureType_def::LptArtillery); mineArea.layingProcedureType = AreaEffectSimulation::AesMaLayingProcedureType::LptArtillery;
for (int i = 0; i < m_maxSafePzAbwSafe + s_offset; ++i) for (int i = 0; i < m_maxSafePzAbwSafe + s_offset; ++i)
{ {
QString name = QStringLiteral("TEST_MA_ART") + QStringLiteral("_DEC_") + QString::number(i); QString name = QStringLiteral("TEST_MA_ART") + QStringLiteral("_DEC_") + QString::number(i);
mineArea.name(name.toStdString()); mineArea.name = name.toStdString();
QTest::qWait(50); QTest::qWait(50);
int ret = m_aesFtc->mineAreaModifyRequest(mineArea, this); int ret = m_aesFtc->mineAreaModifyRequest(mineArea, this);
if (i < m_maxSafePzAbwSafe) if (i < m_maxSafePzAbwSafe)
@@ -236,9 +236,9 @@ void ModuleTestLimits::testMineAreaDecentral()
const auto &mineAreas = m_aesDtc->mineAreas(); const auto &mineAreas = m_aesDtc->mineAreas();
for (const auto &item : qAsConst(mineAreas)) for (const auto &item : qAsConst(mineAreas))
{ {
if ((item.effectStateId() == AesEffectState::EsPrepared) && if ((item.effectStateId == AesEffectState::EsPrepared) &&
!item.isCentral() && !item.isCentral &&
(item.layingProcedureType() == AreaEffectSimulation::AesMaLayingProcedureType_def::LptArtillery)) (item.layingProcedureType == AreaEffectSimulation::AesMaLayingProcedureType::LptArtillery))
++counter2; ++counter2;
} }
@@ -252,12 +252,12 @@ void ModuleTestLimits::testNBCCentral()
QVERIFY2(m_aesFtc, "ERROR, No Aes Ftc available!!"); QVERIFY2(m_aesFtc, "ERROR, No Aes Ftc available!!");
auto nbContamination = getNBC(); auto nbContamination = getNBC();
nbContamination.impactPosition(m_centralPoint); nbContamination.impactPosition = m_centralPoint;
for (int i = 0; i < m_maxNBCCentral + s_offset; ++i) for (int i = 0; i < m_maxNBCCentral + s_offset; ++i)
{ {
QString name = QStringLiteral("TEST_NBC") + QStringLiteral("_CEN_") + QString::number(i); QString name = QStringLiteral("TEST_NBC") + QStringLiteral("_CEN_") + QString::number(i);
nbContamination.name(name.toStdString()); nbContamination.name = name.toStdString();
QTest::qWait(50); QTest::qWait(50);
int ret = m_aesFtc->nContaminationModifyRequest(nbContamination, this); int ret = m_aesFtc->nContaminationModifyRequest(nbContamination, this);
if (i < m_maxNBCCentral) if (i < m_maxNBCCentral)
@@ -272,7 +272,7 @@ void ModuleTestLimits::testNBCCentral()
const auto &items = m_aesDtc->nContaminations(); const auto &items = m_aesDtc->nContaminations();
for (const auto &item : qAsConst(items)) for (const auto &item : qAsConst(items))
{ {
if (item.effectStateId() == AesEffectState::EsPrepared && item.isCentral() == true) if (item.effectStateId == AesEffectState::EsPrepared && item.isCentral == true)
++counter; ++counter;
} }
@@ -288,12 +288,12 @@ void ModuleTestLimits::testNBCDecentral()
QVERIFY2(m_aesFtc, "ERROR, No Aes Ftc available!!"); QVERIFY2(m_aesFtc, "ERROR, No Aes Ftc available!!");
auto nbContamination = getNBC(); auto nbContamination = getNBC();
nbContamination.impactPosition(m_decentralPoint); nbContamination.impactPosition = m_decentralPoint;
for (int i = 0; i < m_maxNBCDecentral + s_offset; ++i) for (int i = 0; i < m_maxNBCDecentral + s_offset; ++i)
{ {
QString name = QStringLiteral("TEST_NBC") + QStringLiteral("_DEC_") + QString::number(i); QString name = QStringLiteral("TEST_NBC") + QStringLiteral("_DEC_") + QString::number(i);
nbContamination.name(name.toStdString()); nbContamination.name = name.toStdString();
QTest::qWait(50); QTest::qWait(50);
int ret = m_aesFtc->nContaminationModifyRequest(nbContamination, this); int ret = m_aesFtc->nContaminationModifyRequest(nbContamination, this);
if (i < m_maxNBCDecentral) if (i < m_maxNBCDecentral)
@@ -307,7 +307,7 @@ void ModuleTestLimits::testNBCDecentral()
const auto &items = m_aesDtc->nContaminations(); const auto &items = m_aesDtc->nContaminations();
for (const auto &item : qAsConst(items)) for (const auto &item : qAsConst(items))
{ {
if (item.effectStateId() == AesEffectState::EsPrepared && item.isCentral() == false) if (item.effectStateId == AesEffectState::EsPrepared && item.isCentral == false)
++counter; ++counter;
} }
@@ -325,7 +325,7 @@ void ModuleTestLimits::testOffRouteMines()
for (int i = 0; i < m_maxOffRouteMines + s_offset; ++i) for (int i = 0; i < m_maxOffRouteMines + s_offset; ++i)
{ {
QString name = QStringLiteral("TEST_ORM") + QStringLiteral("_") + QString::number(i); QString name = QStringLiteral("TEST_ORM") + QStringLiteral("_") + QString::number(i);
offRouteMine.name(name.toStdString()); offRouteMine.name = name.toStdString();
QTest::qWait(50); QTest::qWait(50);
int ret = m_aesFtc->offRouteMineModifyRequest(offRouteMine, this); int ret = m_aesFtc->offRouteMineModifyRequest(offRouteMine, this);
if (i < m_maxOffRouteMines) if (i < m_maxOffRouteMines)
@@ -339,7 +339,7 @@ void ModuleTestLimits::testOffRouteMines()
const auto &items = m_aesDtc->offRouteMines(); const auto &items = m_aesDtc->offRouteMines();
for (const auto &item : qAsConst(items)) for (const auto &item : qAsConst(items))
{ {
if (item.effectStateId() == AesEffectState::EsPrepared && item.isCentral() == true) if (item.effectStateId == AesEffectState::EsPrepared && item.isCentral == true)
++counter; ++counter;
} }
@@ -358,7 +358,7 @@ void ModuleTestLimits::testBoobyTraps()
for (int i = 0; i < m_maxBoobyTraps + s_offset; ++i) for (int i = 0; i < m_maxBoobyTraps + s_offset; ++i)
{ {
QString name = QStringLiteral("TEST_BT") + QStringLiteral("_") + QString::number(i); QString name = QStringLiteral("TEST_BT") + QStringLiteral("_") + QString::number(i);
boobyTrap.name(name.toStdString()); boobyTrap.name = name.toStdString();
QTest::qWait(50); QTest::qWait(50);
int ret = m_aesFtc->boobyTrapModifyRequest(boobyTrap, this); int ret = m_aesFtc->boobyTrapModifyRequest(boobyTrap, this);
if (i < m_maxBoobyTraps) if (i < m_maxBoobyTraps)
@@ -371,7 +371,7 @@ void ModuleTestLimits::testBoobyTraps()
const auto &items = m_aesDtc->boobyTraps(); const auto &items = m_aesDtc->boobyTraps();
for (const auto &item : qAsConst(items)) for (const auto &item : qAsConst(items))
{ {
if (item.effectStateId() == AesEffectState::EsPrepared && item.isCentral() == true) if (item.effectStateId == AesEffectState::EsPrepared && item.isCentral == true)
++counter; ++counter;
} }
@@ -386,12 +386,12 @@ void ModuleTestLimits::testBCCCentral()
QVERIFY2(m_aesFtc, "ERROR, No Aes Ftc available!!"); QVERIFY2(m_aesFtc, "ERROR, No Aes Ftc available!!");
auto bcContamination = getBCC(); auto bcContamination = getBCC();
bcContamination.impactPosition(m_centralPoint); bcContamination.impactPosition = m_centralPoint;
for (int i = 0; i < m_maxNBCCentral + s_offset; ++i) for (int i = 0; i < m_maxNBCCentral + s_offset; ++i)
{ {
QString name = QStringLiteral("TEST_BCC") + QStringLiteral("_CEN_") + QString::number(i); QString name = QStringLiteral("TEST_BCC") + QStringLiteral("_CEN_") + QString::number(i);
bcContamination.name(name.toStdString()); bcContamination.name = name.toStdString();
QTest::qWait(50); QTest::qWait(50);
int ret = m_aesFtc->bCContaminationModifyRequest(bcContamination, this); int ret = m_aesFtc->bCContaminationModifyRequest(bcContamination, this);
if (i < m_maxNBCCentral) if (i < m_maxNBCCentral)
@@ -406,7 +406,7 @@ void ModuleTestLimits::testBCCCentral()
const auto &items = m_aesDtc->bCContaminations(); const auto &items = m_aesDtc->bCContaminations();
for (const auto &item : qAsConst(items)) for (const auto &item : qAsConst(items))
{ {
if (item.effectStateId() == AesEffectState::EsPrepared && item.isCentral() == true) if (item.effectStateId == AesEffectState::EsPrepared && item.isCentral == true)
++counter; ++counter;
} }
@@ -421,12 +421,12 @@ void ModuleTestLimits::testBCCDecentral()
QVERIFY2(m_aesFtc, "ERROR, No Aes Ftc available!!"); QVERIFY2(m_aesFtc, "ERROR, No Aes Ftc available!!");
auto bcContamination = getBCC(); auto bcContamination = getBCC();
bcContamination.impactPosition(m_decentralPoint); bcContamination.impactPosition = m_decentralPoint;
for (int i = 0; i < m_maxNBCDecentral + s_offset; ++i) for (int i = 0; i < m_maxNBCDecentral + s_offset; ++i)
{ {
QString name = QStringLiteral("TEST_BCC") + QStringLiteral("_DEC_") + QString::number(i); QString name = QStringLiteral("TEST_BCC") + QStringLiteral("_DEC_") + QString::number(i);
bcContamination.name(name.toStdString()); bcContamination.name = name.toStdString();
QTest::qWait(50); QTest::qWait(50);
int ret = m_aesFtc->bCContaminationModifyRequest(bcContamination, this); int ret = m_aesFtc->bCContaminationModifyRequest(bcContamination, this);
if (i < m_maxNBCDecentral) if (i < m_maxNBCDecentral)
@@ -441,7 +441,7 @@ void ModuleTestLimits::testBCCDecentral()
const auto &items = m_aesDtc->bCContaminations(); const auto &items = m_aesDtc->bCContaminations();
for (const auto &item : qAsConst(items)) for (const auto &item : qAsConst(items))
{ {
if (item.effectStateId() == AesEffectState::EsPrepared && item.isCentral() == false) if (item.effectStateId == AesEffectState::EsPrepared && item.isCentral == false)
++counter; ++counter;
} }
@@ -456,12 +456,12 @@ void ModuleTestLimits::testFADecentral()
QVERIFY2(m_aesFtc, "ERROR, No Aes Ftc available!!"); QVERIFY2(m_aesFtc, "ERROR, No Aes Ftc available!!");
auto functionArea = getFA(); auto functionArea = getFA();
functionArea.area().cornerBottomLeft(m_decentralPoint); functionArea.area.cornerBottomLeft = m_decentralPoint;
for (int i = 0; i < m_maxFunctionalAreaDec + s_offset; ++i) for (int i = 0; i < m_maxFunctionalAreaDec + s_offset; ++i)
{ {
QString name = QStringLiteral("TEST_FA") + QStringLiteral("_DEC_") + QString::number(i); QString name = QStringLiteral("TEST_FA") + QStringLiteral("_DEC_") + QString::number(i);
functionArea.name(name.toStdString()); functionArea.name = name.toStdString();
QTest::qWait(50); QTest::qWait(50);
int ret = m_aesFtc->functionalAreaModifyRequest(functionArea, this); int ret = m_aesFtc->functionalAreaModifyRequest(functionArea, this);
if (i < m_maxFunctionalAreaDec) if (i < m_maxFunctionalAreaDec)
@@ -476,7 +476,7 @@ void ModuleTestLimits::testFADecentral()
const auto &items = m_aesDtc->functionalAreas(); const auto &items = m_aesDtc->functionalAreas();
for (const auto &item : qAsConst(items)) for (const auto &item : qAsConst(items))
{ {
if (item.effectStateId() == AesEffectState::EsPrepared && item.isCentral() == false) if (item.effectStateId == AesEffectState::EsPrepared && item.isCentral == false)
++counter; ++counter;
} }
@@ -492,12 +492,12 @@ void ModuleTestLimits::testFACentral()
QVERIFY2(m_aesFtc, "ERROR, No Aes Ftc available!!"); QVERIFY2(m_aesFtc, "ERROR, No Aes Ftc available!!");
auto functionArea = getFA(); auto functionArea = getFA();
functionArea.area().cornerBottomLeft(m_centralPoint); functionArea.area.cornerBottomLeft = m_centralPoint;
for (int i = 0; i < m_maxFunctionalAreaCentral + s_offset; ++i) for (int i = 0; i < m_maxFunctionalAreaCentral + s_offset; ++i)
{ {
QString name = QStringLiteral("TEST_FA") + QStringLiteral("_CEN_") + QString::number(i); QString name = QStringLiteral("TEST_FA") + QStringLiteral("_CEN_") + QString::number(i);
functionArea.name(name.toStdString()); functionArea.name = name.toStdString();
QTest::qWait(50); QTest::qWait(50);
int ret = m_aesFtc->functionalAreaModifyRequest(functionArea, this); int ret = m_aesFtc->functionalAreaModifyRequest(functionArea, this);
if (i < m_maxFunctionalAreaCentral) if (i < m_maxFunctionalAreaCentral)
@@ -513,7 +513,7 @@ void ModuleTestLimits::testFACentral()
for (const auto &item : qAsConst(items)) for (const auto &item : qAsConst(items))
{ {
if (item.effectStateId() == AesEffectState::EsPrepared && item.isCentral() == true) if (item.effectStateId == AesEffectState::EsPrepared && item.isCentral == true)
++counter; ++counter;
} }
@@ -608,26 +608,26 @@ ExplosionClusterModifyRequest ModuleTestLimits::getEc(const Core::GeoPosition2D
{ {
AreaEffectSimulation::ExplosionClusterModifyRequest eaReq; AreaEffectSimulation::ExplosionClusterModifyRequest eaReq;
eaReq.id(0); eaReq.id = 0;
eaReq.effectStart((time(nullptr) + 30) * 1000); // msec eaReq.effectStart = (time(nullptr) + 30) * 1000; // msec
QString name(QStringLiteral("Test_EC")); QString name(QStringLiteral("Test_EC"));
eaReq.name(name.toStdString()); eaReq.name = name.toStdString();
eaReq.effectDuration(100000); // 10 seconds eaReq.effectDuration = 100000; // 10 seconds
eaReq.effectStart(QDateTime::currentMSecsSinceEpoch() + 3000000000); eaReq.effectStart = QDateTime::currentMSecsSinceEpoch() + 3000000000;
eaReq.chargeStruct().chargeTypeId(s_ChargeTypeId1); eaReq.chargeStruct.chargeTypeId = s_ChargeTypeId1;
eaReq.chargeStruct().igniterTypeId(s_IgniterTypeId); eaReq.chargeStruct.igniterTypeId = s_IgniterTypeId;
eaReq.partyId(2); eaReq.partyId = 2;
eaReq.participantId(6); eaReq.participantId = 6;
eaReq.mhpCount(4); eaReq.mhpCount = 4;
eaReq.impactCount(4); eaReq.impactCount = 4;
eaReq.peakHeight(500); eaReq.peakHeight = 500;
eaReq.firePurposeId(1); // 1=Blenden, 2=Blenden mit IR, eaReq.firePurposeId = 1; // 1=Blenden, 2=Blenden mit IR,
const double height = 10; const double height = 10;
const double width = 20; const double width = 20;
@@ -635,15 +635,15 @@ ExplosionClusterModifyRequest ModuleTestLimits::getEc(const Core::GeoPosition2D
// NOTICE_LOG(m_logger) << "getEc: default SpecicalArea Bottom Left" << m_specialArea.boundingBoxBottomLeft(); // NOTICE_LOG(m_logger) << "getEc: default SpecicalArea Bottom Left" << m_specialArea.boundingBoxBottomLeft();
// eaReq.area().cornerBottomLeft(m_specialArea.boundingBoxBottomLeft()); // eaReq.area().cornerBottomLeft(m_specialArea.boundingBoxBottomLeft());
eaReq.area().cornerBottomLeft(cornerBottomLeft); eaReq.area.cornerBottomLeft = cornerBottomLeft;
eaReq.area().height(height); eaReq.area.height = height;
eaReq.area().width(width); eaReq.area.width = width;
eaReq.area().rotation(rot); eaReq.area.rotation = rot;
eaReq.explosionGeometry(AreaEffectSimulation::AesExplosionGeometry_def::EgArea); eaReq.explosionGeometry = AreaEffectSimulation::AesExplosionGeometry::EgArea;
eaReq.tla(0); // aka zog / ZielOrtungsGenauigkeit eaReq.tla = 0; // aka zog / ZielOrtungsGenauigkeit
eaReq.externalId(0); eaReq.externalId = 0;
return eaReq; return eaReq;
} }
@@ -651,26 +651,26 @@ ExplosionClusterModifyRequest ModuleTestLimits::getEc(const Core::GeoPosition2D
ExplosionClusterModifyRequest ModuleTestLimits::getAs() ExplosionClusterModifyRequest ModuleTestLimits::getAs()
{ {
AreaEffectSimulation::ExplosionClusterModifyRequest eaReq; AreaEffectSimulation::ExplosionClusterModifyRequest eaReq;
eaReq.id(0); eaReq.id = 0;
eaReq.effectStart((time(nullptr) + 30) * 1000); // msec eaReq.effectStart = (time(nullptr) + 30) * 1000; // msec
QString name(QStringLiteral("Test_EC")); QString name(QStringLiteral("Test_EC"));
eaReq.name(name.toStdString()); eaReq.name = name.toStdString();
eaReq.effectDuration(100000); // 10 seconds eaReq.effectDuration = 100000; // 10 seconds
eaReq.effectStart(QDateTime::currentMSecsSinceEpoch() + 3000000000); eaReq.effectStart = QDateTime::currentMSecsSinceEpoch() + 3000000000;
eaReq.chargeStruct().chargeTypeId(450); //PGM GBU 31 eaReq.chargeStruct.chargeTypeId = 450; //PGM GBU 31
eaReq.chargeStruct().igniterTypeId(s_IgniterTypeId); eaReq.chargeStruct.igniterTypeId = s_IgniterTypeId;
eaReq.partyId(2); eaReq.partyId = 2;
eaReq.participantId(6); eaReq.participantId = 6;
eaReq.mhpCount(1); eaReq.mhpCount = 1;
eaReq.impactCount(1); eaReq.impactCount = 1;
eaReq.peakHeight(500); eaReq.peakHeight = 500;
eaReq.firePurposeId(1); // 1=Blenden, 2=Blenden mit IR, eaReq.firePurposeId = 1; // 1=Blenden, 2=Blenden mit IR,
const double height = 10; const double height = 10;
const double width = 20; const double width = 20;
@@ -678,15 +678,15 @@ ExplosionClusterModifyRequest ModuleTestLimits::getAs()
// NOTICE_LOG(m_logger) << "getAs: Default is SpecialArea Bottom Left" << m_specialArea.boundingBoxBottomLeft(); // NOTICE_LOG(m_logger) << "getAs: Default is SpecialArea Bottom Left" << m_specialArea.boundingBoxBottomLeft();
// eaReq.area().cornerBottomLeft(m_specialArea.boundingBoxBottomLeft()); // eaReq.area().cornerBottomLeft(m_specialArea.boundingBoxBottomLeft());
eaReq.area().cornerBottomLeft(m_centralPoint); eaReq.area.cornerBottomLeft = m_centralPoint;
eaReq.area().height(height); eaReq.area.height = height;
eaReq.area().width(width); eaReq.area.width = width;
eaReq.area().rotation(rot); eaReq.area.rotation = rot;
eaReq.explosionGeometry(AreaEffectSimulation::AesExplosionGeometry_def::EgPoint); // AirSupport -> EgPoint eaReq.explosionGeometry = AreaEffectSimulation::AesExplosionGeometry::EgPoint; // AirSupport -> EgPoint
eaReq.tla(0); // aka zog / ZielOrtungsGenauigkeit eaReq.tla = 0; // aka zog / ZielOrtungsGenauigkeit
eaReq.externalId(0); eaReq.externalId = 0;
return eaReq; return eaReq;
} }
@@ -696,15 +696,15 @@ ExplosionAreaModifyRequest ModuleTestLimits::getEa()
auto ea = ExplosionAreaModifyRequest(); auto ea = ExplosionAreaModifyRequest();
ea.area(AreaEffectSimulation::Area(m_decentralPoint, 500, 600, 70)); ea.area(AreaEffectSimulation::Area(m_decentralPoint, 500, 600, 70));
ea.name(QStringLiteral("Test_AE__").toStdString()); ea.name = QStringLiteral("Test_AE__").toStdString();
ea.id(0); ea.id = 0;
ea.cannonCount(10); ea.cannonCount = 10;
ea.cannonRounds(10); ea.cannonRounds = 10;
ea.chargeTypeId(s_ChargeTypeId1); ea.chargeTypeId = s_ChargeTypeId1;
ea.effectDuration(400000); ea.effectDuration = 400000;
ea.effectStart(QDateTime::currentMSecsSinceEpoch() + 30000000); ea.effectStart = QDateTime::currentMSecsSinceEpoch() + 30000000;
ea.partyId(2); ea.partyId = 2;
ea.externalId(2); ea.externalId = 2;
return ea; return ea;
} }
@@ -712,13 +712,13 @@ ExplosionAreaModifyRequest ModuleTestLimits::getEa()
ExplosionSingleModifyRequest ModuleTestLimits::getEs() ExplosionSingleModifyRequest ModuleTestLimits::getEs()
{ {
auto es = ExplosionSingleModifyRequest(); auto es = ExplosionSingleModifyRequest();
es.impactPosition(m_decentralPoint); es.impactPosition = m_decentralPoint;
es.name(QStringLiteral("Test_AE__").toStdString()); es.name = QStringLiteral("Test_AE__").toStdString();
es.id(0); es.id = 0;
es.chargeTypeId(s_ChargeTypeId1); es.chargeTypeId = s_ChargeTypeId1;
es.effectStart(QDateTime::currentMSecsSinceEpoch() + 30000000); es.effectStart = QDateTime::currentMSecsSinceEpoch() + 30000000;
es.partyId(2); es.partyId = 2;
es.externalId(2); es.externalId = 2;
return es; return es;
} }
@@ -727,18 +727,18 @@ MineAreaModifyRequest ModuleTestLimits::getMa()
{ {
auto ma = MineAreaModifyRequest(); auto ma = MineAreaModifyRequest();
ma.id(0); ma.id = 0;
ma.name(QStringLiteral("Test_MA_").toStdString()); ma.name = QStringLiteral("Test_MA_").toStdString();
ma.effectStart(QDateTime::currentMSecsSinceEpoch() + 30000000); ma.effectStart = QDateTime::currentMSecsSinceEpoch() + 30000000;
ma.effectDuration(400000); ma.effectDuration = 400000;
ma.density(0.5); ma.density = 0.5;
ma.width(169.58); ma.width = 169.58;
ma.partyId(2); ma.partyId = 2;
ma.chargeStruct().chargeTypeId(216); ma.chargeStruct.chargeTypeId = 216;
ma.isCenterLine(false); ma.isCenterLine = false;
ma.isLaidHidden(false); ma.isLaidHidden = false;
ma.distance(500.0); ma.distance = 500.0;
ma.layingProcedureType(AreaEffectSimulation::AesMaLayingProcedureType_def::LptPioneer); ma.layingProcedureType = AreaEffectSimulation::AesMaLayingProcedureType::LptPioneer;
return ma; return ma;
@@ -747,20 +747,20 @@ MineAreaModifyRequest ModuleTestLimits::getMa()
NContaminationModifyRequest ModuleTestLimits::getNBC() NContaminationModifyRequest ModuleTestLimits::getNBC()
{ {
auto nbc = NContaminationModifyRequest(); auto nbc = NContaminationModifyRequest();
nbc.id(0); nbc.id = 0;
nbc.name("Test_NBC_"); nbc.name = "Test_NBC_";
nbc.effectStart(QDateTime::currentMSecsSinceEpoch() + 30000000); // msec nbc.effectStart = QDateTime::currentMSecsSinceEpoch() + 30000000; // msec
nbc.effectDuration(10000); // 10 sec nbc.effectDuration = 10000; // 10 sec
nbc.chargeTypeId(321); nbc.chargeTypeId = 321;
nbc.impactPosition(m_decentralPoint); nbc.impactPosition = m_decentralPoint;
nbc.borderLengthInner(1000); // 1km nbc.borderLengthInner = 1000; // 1km
nbc.borderLengthOuter(2000); // 2km nbc.borderLengthOuter = 2000; // 2km
nbc.impactRadius(500); // 500m nbc.impactRadius = 500; // 500m
nbc.spanAngle(31); nbc.spanAngle = 31;
nbc.rotationAngle(57); nbc.rotationAngle = 57;
nbc.detonationValue(1000); // kt, only cosmetical nbc.detonationValue = 1000; // kt, only cosmetical
nbc.partyId(2); nbc.partyId = 2;
nbc.externalId(0); nbc.externalId = 0;
return nbc; return nbc;
} }
@@ -768,68 +768,68 @@ NContaminationModifyRequest ModuleTestLimits::getNBC()
OffRouteMineModifyRequest ModuleTestLimits::getORM() OffRouteMineModifyRequest ModuleTestLimits::getORM()
{ {
auto orm = OffRouteMineModifyRequest(); auto orm = OffRouteMineModifyRequest();
orm.id(0); orm.id = 0;
orm.effectStart(QDateTime::currentMSecsSinceEpoch() + 300000000); // msec orm.effectStart = QDateTime::currentMSecsSinceEpoch() + 300000000; // msec
orm.effectDuration(100000); // 10 sec orm.effectDuration = 100000; // 10 sec
orm.chargeTypeId(253); orm.chargeTypeId = 253;
orm.name("Test_ORM_"); orm.name = "Test_ORM_";
orm.area().cornerBottomLeft(m_decentralPoint); orm.area.cornerBottomLeft = m_decentralPoint;
orm.area().width(1000);//(20); orm.area.width = 1000;//(20);
orm.area().height(200);//(15); orm.area.height = 200;//(15);
orm.area().rotation(0.0);//(20.5); orm.area.rotation = 0.0;//(20.5);
orm.impactRadius(100); // 100m orm.impactRadius = 100; // 100m
orm.partyId(2); orm.partyId = 2;
return orm; return orm;
} }
BoobyTrapModifyRequest ModuleTestLimits::getBT() BoobyTrapModifyRequest ModuleTestLimits::getBT()
{ {
auto bt = BoobyTrapModifyRequest(); auto bt = BoobyTrapModifyRequest();
bt.id(0); bt.id = 0;
bt.effectStart(QDateTime::currentMSecsSinceEpoch() + 30000000); // msec bt.effectStart = QDateTime::currentMSecsSinceEpoch() + 30000000; // msec
bt.effectDuration(100000); // 10 sec bt.effectDuration = 100000; // 10 sec
bt.chargeTypeId(251); bt.chargeTypeId = 251;
bt.name("Test_BT_"); bt.name = "Test_BT_";
bt.impactPosition(m_decentralPoint); bt.impactPosition = m_decentralPoint;
bt.centralAngle(90); bt.centralAngle = 90;
bt.rotationAngle(120); bt.rotationAngle = 120;
bt.impactRadius(100); // 100m bt.impactRadius = 100; // 100m
bt.triggerRadius(200); bt.triggerRadius = 200;
bt.partyId(2); bt.partyId = 2;
return bt; return bt;
} }
BCContaminationModifyRequest ModuleTestLimits::getBCC() BCContaminationModifyRequest ModuleTestLimits::getBCC()
{ {
auto bcc = BCContaminationModifyRequest(); auto bcc = BCContaminationModifyRequest();
bcc.id(0); bcc.id = 0;
bcc.effectStart(QDateTime::currentMSecsSinceEpoch() + 30000000); // msec bcc.effectStart = QDateTime::currentMSecsSinceEpoch() + 30000000; // msec
bcc.effectDuration(100000); // 10 sec bcc.effectDuration = 100000; // 10 sec
bcc.impactRadius(100); // 100m bcc.impactRadius = 100; // 100m
bcc.partyId(2); bcc.partyId = 2;
bcc.upperOffset(6.0); bcc.upperOffset = 6.0;
bcc.lowerOffset(-1000.0); bcc.lowerOffset = -1000.0;
bcc.impactPosition(m_decentralPoint); bcc.impactPosition = m_decentralPoint;
bcc.chargeTypeId(341); bcc.chargeTypeId = 341;
bcc.weatherSource(AesWeatherSource::AwsStatic); bcc.weatherSource = AesWeatherSource::AwsStatic;
return bcc; return bcc;
} }
FunctionalAreaModifyRequest ModuleTestLimits::getFA() FunctionalAreaModifyRequest ModuleTestLimits::getFA()
{ {
auto fa = FunctionalAreaModifyRequest(); auto fa = FunctionalAreaModifyRequest();
fa.id(0); fa.id = 0;
fa.effectStart(QDateTime::currentMSecsSinceEpoch() + 30000000); fa.effectStart = QDateTime::currentMSecsSinceEpoch() + 30000000;
fa.effectDuration(100000); fa.effectDuration = 100000;
fa.area(AreaEffectSimulation::Area(m_decentralPoint, 500, 600, 70)); fa.area(AreaEffectSimulation::Area(m_decentralPoint, 500, 600, 70));
fa.chargeTypeId(311); fa.chargeTypeId = 311;
fa.partyId(2); fa.partyId = 2;
fa.deconMode(AreaEffectSimulation::AesOperatingMode::OmWaitingTime); fa.deconMode = AreaEffectSimulation::AesOperatingMode::OmWaitingTime;
fa.deconTime(200000); fa.deconTime = 200000;
fa.maintMode(AreaEffectSimulation::AesOperatingMode::OmWaitingTime); fa.maintMode = AreaEffectSimulation::AesOperatingMode::OmWaitingTime;
fa.maintTime(200000); fa.maintTime = 200000;
fa.medicMode(AreaEffectSimulation::AesOperatingMode::OmWaitingTime); fa.medicMode = AreaEffectSimulation::AesOperatingMode::OmWaitingTime;
fa.medicTime(200000); fa.medicTime = 200000;
return fa; return fa;
} }
@@ -837,9 +837,9 @@ FunctionalAreaModifyRequest ModuleTestLimits::getFA()
TechnicalAreaModifyRequest ModuleTestLimits::getTA() TechnicalAreaModifyRequest ModuleTestLimits::getTA()
{ {
auto ta = TechnicalAreaModifyRequest(); auto ta = TechnicalAreaModifyRequest();
ta.id(0); ta.id = 0;
ta.area(AreaEffectSimulation::Area(m_decentralPoint, 500, 600, 70)); ta.area(AreaEffectSimulation::Area(m_decentralPoint, 500, 600, 70));
ta.type(AreaEffectSimulation::AesTechnicalAreaType::TatRestingAreaVehicle); ta.type = AreaEffectSimulation::AesTechnicalAreaType::TatRestingAreaVehicle;
return ta; return ta;
} }
@@ -896,8 +896,8 @@ void ModuleTestLimits::initTestCase()
std::cout << " waitForHistoricalDataExercise... Done" << std::endl; std::cout << " waitForHistoricalDataExercise... Done" << std::endl;
const ExerciseManagement::Exercise &exercise = m_exmDtc->exercise(m_exerciseId); const ExerciseManagement::Exercise &exercise = m_exmDtc->exercise(m_exerciseId);
QVERIFY2(exercise.id() == m_exerciseId, "ERROR, exercise failed!!: "); QVERIFY2(exercise.id == m_exerciseId, "ERROR, exercise failed!!: ");
m_traingAreaId = exercise.trainingAreaId(); m_traingAreaId = exercise.trainingAreaId;
std::cout << " ExerciseManagement" std::cout << " ExerciseManagement"
<< ", m_traingAreaId = " << m_traingAreaId << std::endl; << ", m_traingAreaId = " << m_traingAreaId << std::endl;
@@ -937,7 +937,7 @@ void ModuleTestLimits::initTestCase()
m_ismDtc->waitForHistoricalDataSpecialArea(1000); m_ismDtc->waitForHistoricalDataSpecialArea(1000);
if (m_exmDtc->exercise(m_exerciseId).trainingAreaId() == s_TraingAreaId_Altmark) if (m_exmDtc->exercise(m_exerciseId).trainingAreaId == s_TraingAreaId_Altmark)
{ {
m_centralPoint = m_centralAltmark; m_centralPoint = m_centralAltmark;
m_decentralPoint = m_decentralAltmark; m_decentralPoint = m_decentralAltmark;
@@ -1143,9 +1143,9 @@ void ModuleTestLimits::setupParticipant()
ParticipantManagement::SetSimulatedPosition req; ParticipantManagement::SetSimulatedPosition req;
req.participantId(6); // according testDB req.participantId = 6; // according testDB
req.onlyOutdatedParticipants(false); req.onlyOutdatedParticipants = false;
req.position(Core::GeoPosition(m_partPos.lon(), m_partPos.lat(), 0.0)); req.position(Core::GeoPosition(m_partPos.lon, m_partPos.lat, 0.0));
INFO_LOG(m_logger) << " setSimulatedPositionRequest ..."; INFO_LOG(m_logger) << " setSimulatedPositionRequest ...";
m_replyError = true; m_replyError = true;
@@ -1169,10 +1169,10 @@ void ModuleTestLimits::setupCharges()
{ {
QVERIFY2(m_aesFtc, "ERROR, no m_aesFtc"); QVERIFY2(m_aesFtc, "ERROR, no m_aesFtc");
ChargeAdministrationModifyRequest req; ChargeAdministrationModifyRequest req;
req.id(0); req.id = 0;
req.chargeTypeId(371); req.chargeTypeId = 371;
req.partyId(2); req.partyId = 2;
req.amount(9999999); req.amount = 9999999;
m_aesFtc->chargeAdministrationModifyRequest(req, this); m_aesFtc->chargeAdministrationModifyRequest(req, this);
} }
@@ -1194,80 +1194,80 @@ void ModuleTestLimits::deleteAesAreas()
auto clusters = m_aesDtc->explosionClusters(); auto clusters = m_aesDtc->explosionClusters();
for (auto cluster : qAsConst(clusters)) for (auto cluster : qAsConst(clusters))
{ {
if (!sts.contains(cluster.effectStateId().underlying())) if (!sts.contains(cluster.effectStateId))
{ {
auto removeReq = Core::RemoveElementRequest(); auto removeReq = Core::RemoveElementRequest();
removeReq.id(cluster.id()); removeReq.id = cluster.id;
m_aesFtc->explosionClusterRemoveRequest(removeReq, this); m_aesFtc->explosionClusterRemoveRequest(removeReq, this);
} }
} }
auto nbcs = m_aesDtc->nContaminations(); auto nbcs = m_aesDtc->nContaminations();
for (auto nbc : qAsConst(nbcs)) for (auto nbc : qAsConst(nbcs))
{ {
if (!sts.contains(nbc.effectStateId().underlying())) if (!sts.contains(nbc.effectStateId))
{ {
auto removeReq = Core::RemoveElementRequest(); auto removeReq = Core::RemoveElementRequest();
removeReq.id(nbc.id()); removeReq.id = nbc.id;
m_aesFtc->nContaminationRemoveRequest(removeReq, this); m_aesFtc->nContaminationRemoveRequest(removeReq, this);
} }
} }
auto orms = m_aesDtc->offRouteMines(); auto orms = m_aesDtc->offRouteMines();
for (auto orm : qAsConst(orms)) for (auto orm : qAsConst(orms))
{ {
if (!sts.contains(orm.effectStateId().underlying())) if (!sts.contains(orm.effectStateId))
{ {
auto removeReq = Core::RemoveElementRequest(); auto removeReq = Core::RemoveElementRequest();
removeReq.id(orm.id()); removeReq.id = orm.id;
m_aesFtc->offRouteMineRemoveRequest(removeReq, this); m_aesFtc->offRouteMineRemoveRequest(removeReq, this);
} }
} }
auto bts = m_aesDtc->boobyTraps(); auto bts = m_aesDtc->boobyTraps();
for (auto bt : qAsConst(bts)) for (auto bt : qAsConst(bts))
{ {
if (!sts.contains(bt.effectStateId().underlying())) if (!sts.contains(bt.effectStateId))
{ {
auto removeReq = Core::RemoveElementRequest(); auto removeReq = Core::RemoveElementRequest();
removeReq.id(bt.id()); removeReq.id = bt.id;
m_aesFtc->boobyTrapRemoveRequest(removeReq, this); m_aesFtc->boobyTrapRemoveRequest(removeReq, this);
} }
} }
auto mas = m_aesDtc->mineAreas(); auto mas = m_aesDtc->mineAreas();
for (auto ma : qAsConst(mas)) for (auto ma : qAsConst(mas))
{ {
if (!sts.contains(ma.effectStateId().underlying())) if (!sts.contains(ma.effectStateId))
{ {
auto removeReq = Core::RemoveElementRequest(); auto removeReq = Core::RemoveElementRequest();
removeReq.id(ma.id()); removeReq.id = ma.id;
m_aesFtc->mineAreaRemoveRequest(removeReq, this); m_aesFtc->mineAreaRemoveRequest(removeReq, this);
} }
} }
auto bccs = m_aesDtc->bCContaminations(); auto bccs = m_aesDtc->bCContaminations();
for (auto bcc : qAsConst(bccs)) for (auto bcc : qAsConst(bccs))
{ {
if (!sts.contains(bcc.effectStateId().underlying())) if (!sts.contains(bcc.effectStateId))
{ {
auto removeReq = Core::RemoveElementRequest(); auto removeReq = Core::RemoveElementRequest();
removeReq.id(bcc.id()); removeReq.id = bcc.id;
m_aesFtc->bCContaminationRemoveRequest(removeReq, this); m_aesFtc->bCContaminationRemoveRequest(removeReq, this);
} }
} }
auto fas = m_aesDtc->functionalAreas(); auto fas = m_aesDtc->functionalAreas();
for (auto fa : qAsConst(fas)) for (auto fa : qAsConst(fas))
{ {
if (!sts.contains(fa.effectStateId().underlying())) if (!sts.contains(fa.effectStateId))
{ {
auto removeReq = Core::RemoveElementRequest(); auto removeReq = Core::RemoveElementRequest();
removeReq.id(fa.id()); removeReq.id = fa.id;
m_aesFtc->functionalAreaRemoveRequest(removeReq, this); m_aesFtc->functionalAreaRemoveRequest(removeReq, this);
} }
} }
auto tas = m_aesDtc->technicalAreas(); auto tas = m_aesDtc->technicalAreas();
for (auto ta : qAsConst(tas)) for (auto ta : qAsConst(tas))
{ {
if (!sts.contains(ta.effectStateId().underlying())) if (!sts.contains(ta.effectStateId))
{ {
auto removeReq = Core::RemoveElementRequest(); auto removeReq = Core::RemoveElementRequest();
removeReq.id(ta.id()); removeReq.id = ta.id;
m_aesFtc->technicalAreaRemoveRequest(removeReq, this); m_aesFtc->technicalAreaRemoveRequest(removeReq, this);
} }
} }
@@ -1275,10 +1275,10 @@ void ModuleTestLimits::deleteAesAreas()
auto eas = m_aesDtc->explosionAreas(); auto eas = m_aesDtc->explosionAreas();
for (auto ea : qAsConst(eas)) for (auto ea : qAsConst(eas))
{ {
if (!sts.contains(ea.effectStateId().underlying())) if (!sts.contains(ea.effectStateId))
{ {
auto removeReq = Core::RemoveElementRequest(); auto removeReq = Core::RemoveElementRequest();
removeReq.id(ea.id()); removeReq.id = ea.id;
m_aesFtc->explosionAreaRemoveRequest(removeReq, this); m_aesFtc->explosionAreaRemoveRequest(removeReq, this);
} }
} }
@@ -1286,10 +1286,10 @@ void ModuleTestLimits::deleteAesAreas()
auto ess = m_aesDtc->explosionSingles(); auto ess = m_aesDtc->explosionSingles();
for (auto es : qAsConst(ess)) for (auto es : qAsConst(ess))
{ {
if (!sts.contains(es.effectStateId().underlying())) if (!sts.contains(es.effectStateId))
{ {
auto removeReq = Core::RemoveElementRequest(); auto removeReq = Core::RemoveElementRequest();
removeReq.id(es.id()); removeReq.id = es.id;
m_aesFtc->explosionSingleRemoveRequest(removeReq, this); m_aesFtc->explosionSingleRemoveRequest(removeReq, this);
} }
} }
@@ -59,13 +59,13 @@ double distanceMeter(const LtsCoordTrans::UtmCoordinate &utmCoord1, const LtsCoo
double distanceMeter(const Core::GeoPosition &geoPos, const LtsCoordTrans::UtmCoordinate &utmCoord) double distanceMeter(const Core::GeoPosition &geoPos, const LtsCoordTrans::UtmCoordinate &utmCoord)
{ {
const LtsCoordTrans::UtmCoordinate &utmPos = LtsCoordTrans::UtmCoordinate::fromGeographic(geoPos.lon(), geoPos.lat()); const LtsCoordTrans::UtmCoordinate &utmPos = LtsCoordTrans::UtmCoordinate::fromGeographic(geoPos.lon, geoPos.lat);
return distanceMeter(utmPos, utmCoord); return distanceMeter(utmPos, utmCoord);
} }
double distanceMeter(const Core::GeoPosition2D &geoPos2D, const LtsCoordTrans::UtmCoordinate &utmCoord) double distanceMeter(const Core::GeoPosition2D &geoPos2D, const LtsCoordTrans::UtmCoordinate &utmCoord)
{ {
const LtsCoordTrans::UtmCoordinate &utmPos = LtsCoordTrans::UtmCoordinate::fromGeographic(geoPos2D.lon(), geoPos2D.lat()); const LtsCoordTrans::UtmCoordinate &utmPos = LtsCoordTrans::UtmCoordinate::fromGeographic(geoPos2D.lon, geoPos2D.lat);
return distanceMeter(utmPos, utmCoord); return distanceMeter(utmPos, utmCoord);
} }
@@ -118,17 +118,17 @@ void ModuleTestAesOthers::onOffRouteMineRemoveReply(const Core::FunctionReplyObj
void ModuleTestAesOthers::boobyTrapChanged(const BoobyTrap &data, DataModification modType) void ModuleTestAesOthers::boobyTrapChanged(const BoobyTrap &data, DataModification modType)
{ {
Q_UNUSED(modType); Q_UNUSED(modType);
if (data.id() == -1) if (data.id == -1)
return; return;
++m_counterDds.cntBoobyTrap; ++m_counterDds.cntBoobyTrap;
m_dataBoobyTrap = data; m_dataBoobyTrap = data;
qint64 startTimeMsec = -1; qint64 startTimeMsec = -1;
if (m_dataBoobyTrap.effectStart().is_set()) if (m_dataBoobyTrap.effectStart.is_set())
startTimeMsec = m_dataBoobyTrap.effectStart().get(); startTimeMsec = m_dataBoobyTrap.effectStart.get();
DEBUG_LOG(m_logger) << " got changed - m_dataBoobyTrap: " << m_dataBoobyTrap.id() << ", state=" << m_dataBoobyTrap.effectStateId() DEBUG_LOG(m_logger) << " got changed - m_dataBoobyTrap: " << m_dataBoobyTrap.id << ", state=" << m_dataBoobyTrap.effectStateId
<< ", startTimeMsec=" << startTimeMsec << ", startTimeMsec=" << startTimeMsec
<< ", cntBoobyTrap=" << m_counterDds.cntBoobyTrap; << ", cntBoobyTrap=" << m_counterDds.cntBoobyTrap;
TRACE_LOG(m_logger) << " got changed - m_dataBoobyTrap: " << m_dataBoobyTrap; TRACE_LOG(m_logger) << " got changed - m_dataBoobyTrap: " << m_dataBoobyTrap;
@@ -137,17 +137,17 @@ void ModuleTestAesOthers::boobyTrapChanged(const BoobyTrap &data, DataModificati
void ModuleTestAesOthers::offRouteMineChanged(const OffRouteMine &data, DataModification modType) void ModuleTestAesOthers::offRouteMineChanged(const OffRouteMine &data, DataModification modType)
{ {
Q_UNUSED(modType); Q_UNUSED(modType);
if (data.id() == -1) if (data.id == -1)
return; return;
++m_counterDds.cntOffRouteMine; ++m_counterDds.cntOffRouteMine;
m_dataOffRouteMine = data; m_dataOffRouteMine = data;
qint64 startTimeMsec = -1; qint64 startTimeMsec = -1;
if (m_dataOffRouteMine.effectStart().is_set()) if (m_dataOffRouteMine.effectStart.is_set())
startTimeMsec = m_dataOffRouteMine.effectStart().get(); startTimeMsec = m_dataOffRouteMine.effectStart.get();
DEBUG_LOG(m_logger) << " got changed - m_dataOffRouteMine: " << m_dataOffRouteMine.id() << ", state=" << m_dataOffRouteMine.effectStateId() DEBUG_LOG(m_logger) << " got changed - m_dataOffRouteMine: " << m_dataOffRouteMine.id << ", state=" << m_dataOffRouteMine.effectStateId
<< ", startTimeMsec=" << startTimeMsec << ", startTimeMsec=" << startTimeMsec
<< ", cntOffRouteMine=" << m_counterDds.cntOffRouteMine; << ", cntOffRouteMine=" << m_counterDds.cntOffRouteMine;
TRACE_LOG(m_logger) << " got changed - m_dataOffRouteMine: " << m_dataOffRouteMine; TRACE_LOG(m_logger) << " got changed - m_dataOffRouteMine: " << m_dataOffRouteMine;
@@ -159,15 +159,15 @@ void ModuleTestAesOthers::onAesItemViewChanged(const AesItemView &aesItemView, D
if (modType == DataModification::eRemoved) if (modType == DataModification::eRemoved)
return; return;
AreaEffectSimulation::AesType_def::type aesType = aesItemView.aesTypeId().underlying(); AreaEffectSimulation::AesType::type aesType = aesItemView.aesTypeId().underlying();
DEBUG_LOG(m_logger) << " got onAesItemViewChanged, aesType=" << aesType; DEBUG_LOG(m_logger) << " got onAesItemViewChanged, aesType=" << aesType;
switch (aesType) switch (aesType)
{ {
case AreaEffectSimulation::AesType_def::AtBoobyTrap: case AreaEffectSimulation::AesType::AtBoobyTrap:
case AreaEffectSimulation::AesType_def::AtBoobyTrapSecondary: case AreaEffectSimulation::AesType::AtBoobyTrapSecondary:
case AreaEffectSimulation::AesType_def::AtOffRouteMine: case AreaEffectSimulation::AesType::AtOffRouteMine:
case AreaEffectSimulation::AesType_def::AtOffRouteMineSecondary: case AreaEffectSimulation::AesType::AtOffRouteMineSecondary:
++m_counterDds.cntItemView; ++m_counterDds.cntItemView;
break; break;
default: default:
@@ -215,18 +215,18 @@ void ModuleTestAesOthers::waitForEffectStatesBT(int lineNumber, int durPrep, int
} }
INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsPrepared..."; INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsPrepared...";
if (!waitForData([this]() { return m_dataBoobyTrap.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsPrepared;}, durPrep)) if (!waitForData([this]() { return m_dataBoobyTrap.effectStateId == AreaEffectSimulation::AesEffectState::EsPrepared;}, durPrep))
{ {
ERROR_LOG(m_logger) << "Timeout waiting for EsPrepared of m_dataBoobyTrap with id " << m_dataBoobyTrap.id() ERROR_LOG(m_logger) << "Timeout waiting for EsPrepared of m_dataBoobyTrap with id " << m_dataBoobyTrap.id
<< ", lineNumber = " << lineNumber; << ", lineNumber = " << lineNumber;
QVERIFY2(false, "ERROR, exit"); QVERIFY2(false, "ERROR, exit");
return; return;
} }
INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsActivated..."; INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsActivated...";
if (!waitForData([this]() { return m_dataBoobyTrap.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsActivated;}, durAct)) if (!waitForData([this]() { return m_dataBoobyTrap.effectStateId == AreaEffectSimulation::AesEffectState::EsActivated;}, durAct))
{ {
ERROR_LOG(m_logger) << "Timeout waiting for EsActivated of m_dataBoobyTrapr with id " << m_dataBoobyTrap.id() ERROR_LOG(m_logger) << "Timeout waiting for EsActivated of m_dataBoobyTrapr with id " << m_dataBoobyTrap.id
<< ", lineNumber = " << lineNumber; << ", lineNumber = " << lineNumber;
QVERIFY2(false, "ERROR, exit"); QVERIFY2(false, "ERROR, exit");
return; return;
@@ -235,9 +235,9 @@ void ModuleTestAesOthers::waitForEffectStatesBT(int lineNumber, int durPrep, int
if (durExp > 0) if (durExp > 0)
{ {
INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsExpired..."; INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsExpired...";
if (!waitForData([this]() { return m_dataBoobyTrap.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsExpired;}, durExp)) if (!waitForData([this]() { return m_dataBoobyTrap.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired;}, durExp))
{ {
ERROR_LOG(m_logger) << "Timeout waiting for EsExpired of m_dataBoobyTrap with id " << m_dataBoobyTrap.id() ERROR_LOG(m_logger) << "Timeout waiting for EsExpired of m_dataBoobyTrap with id " << m_dataBoobyTrap.id
<< ", lineNumber = " << lineNumber; << ", lineNumber = " << lineNumber;
QVERIFY2(false, "ERROR, exit"); QVERIFY2(false, "ERROR, exit");
return; return;
@@ -255,18 +255,18 @@ void ModuleTestAesOthers::waitForEffectStatesORM(int lineNumber, int durPrep, in
} }
INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsPrepared..."; INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsPrepared...";
if (!waitForData([this]() { return m_dataOffRouteMine.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsPrepared;}, durPrep)) if (!waitForData([this]() { return m_dataOffRouteMine.effectStateId == AreaEffectSimulation::AesEffectState::EsPrepared;}, durPrep))
{ {
ERROR_LOG(m_logger) << "Timeout waiting for EsPrepared of m_dataOffRouteMine with id " << m_dataOffRouteMine.id() ERROR_LOG(m_logger) << "Timeout waiting for EsPrepared of m_dataOffRouteMine with id " << m_dataOffRouteMine.id
<< ", lineNumber = " << lineNumber; << ", lineNumber = " << lineNumber;
QVERIFY2(false, "ERROR, exit"); QVERIFY2(false, "ERROR, exit");
return; return;
} }
INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsActivated..."; INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsActivated...";
if (!waitForData([this]() { return m_dataOffRouteMine.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsActivated;}, durAct)) if (!waitForData([this]() { return m_dataOffRouteMine.effectStateId == AreaEffectSimulation::AesEffectState::EsActivated;}, durAct))
{ {
ERROR_LOG(m_logger) << "Timeout waiting for EsActivated of m_dataOffRouteMine with id " << m_dataOffRouteMine.id() ERROR_LOG(m_logger) << "Timeout waiting for EsActivated of m_dataOffRouteMine with id " << m_dataOffRouteMine.id
<< ", lineNumber = " << lineNumber; << ", lineNumber = " << lineNumber;
QVERIFY2(false, "ERROR, exit"); QVERIFY2(false, "ERROR, exit");
return; return;
@@ -275,9 +275,9 @@ void ModuleTestAesOthers::waitForEffectStatesORM(int lineNumber, int durPrep, in
if (durExp > 0) if (durExp > 0)
{ {
INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsExpired..."; INFO_LOG(m_logger) << LOGFUNCTION << " waiting for EsExpired...";
if (!waitForData([this]() { return m_dataOffRouteMine.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsExpired;}, durExp)) if (!waitForData([this]() { return m_dataOffRouteMine.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired;}, durExp))
{ {
ERROR_LOG(m_logger) << "Timeout waiting for EsExpired of m_dataOffRouteMine with id " << m_dataOffRouteMine.id() ERROR_LOG(m_logger) << "Timeout waiting for EsExpired of m_dataOffRouteMine with id " << m_dataOffRouteMine.id
<< ", lineNumber = " << lineNumber; << ", lineNumber = " << lineNumber;
QVERIFY2(false, "ERROR, exit"); QVERIFY2(false, "ERROR, exit");
return; return;
@@ -296,8 +296,8 @@ void ModuleTestAesOthers::setupParticipants()
ParticipantManagement::SetSimulatedPosition req; ParticipantManagement::SetSimulatedPosition req;
{ {
req.participantId(18); // according testDB req.participantId = 18; // according testDB
req.onlyOutdatedParticipants(false); req.onlyOutdatedParticipants = false;
const LtsCoordTrans::UtmCoordinate &utmPos = const LtsCoordTrans::UtmCoordinate &utmPos =
LtsCoordTrans::UtmCoordinate::fromMgrs(QStringLiteral("32UPD7690018100")); // 32U PD 76900 18100 LtsCoordTrans::UtmCoordinate::fromMgrs(QStringLiteral("32UPD7690018100")); // 32U PD 76900 18100
@@ -323,7 +323,7 @@ bool ModuleTestAesOthers::checkParticipant_18()
// soll: QStringLiteral("32UPD7690018000")); // 32U PD 76900 18000 // soll: QStringLiteral("32UPD7690018000")); // 32U PD 76900 18000
const int partId = 18; const int partId = 18;
const ParticipantManagement::ParticipantPosition &pos = m_ppmDtc->participantPosition(partId); const ParticipantManagement::ParticipantPosition &pos = m_ppmDtc->participantPosition(partId);
QString mgrsStr = LtsCoordTrans::mgrsFromGeographic(pos.pos().lon(), pos.pos().lat()); QString mgrsStr = LtsCoordTrans::mgrsFromGeographic(pos.pos.lon, pos.pos.lat);
INFO_LOG(m_logger) << " for partId = '" << partId << "', we got position: " << mgrsStr; INFO_LOG(m_logger) << " for partId = '" << partId << "', we got position: " << mgrsStr;
return mgrsStr == QStringLiteral("32U PD 76900 18100"); return mgrsStr == QStringLiteral("32U PD 76900 18100");
@@ -337,8 +337,8 @@ bool ModuleTestAesOthers::tryRemoveOldBoobyTraps()
for (const auto &bt : btMap) for (const auto &bt : btMap)
{ {
qCritical() << " bt.name" << bt.name().c_str(); qCritical() << " bt.name" << bt.name.c_str();
int ret = m_aesFtc->boobyTrapRemoveRequest(Core::RemoveElementRequest(bt.id())); int ret = m_aesFtc->boobyTrapRemoveRequest(Core::RemoveElementRequest(bt.id));
qCritical() << " bt.name -> " << ret; qCritical() << " bt.name -> " << ret;
} }
return true; return true;
@@ -347,17 +347,17 @@ bool ModuleTestAesOthers::tryRemoveOldBoobyTraps()
int ModuleTestAesOthers::doBoobyTrapModifyRequest(const BoobyTrap &btData) int ModuleTestAesOthers::doBoobyTrapModifyRequest(const BoobyTrap &btData)
{ {
BoobyTrapModifyRequest req(btData.id(), BoobyTrapModifyRequest req(btData.id,
btData.name(), btData.name,
btData.effectDuration(), btData.effectDuration,
btData.chargeStruct().chargeTypeId(), btData.chargeStruct.chargeTypeId,
btData.impactPosition(), btData.impactPosition,
btData.impactRadius(), btData.impactRadius,
btData.triggerRadius(), btData.triggerRadius,
btData.rotationAngle(), btData.rotationAngle,
btData.centralAngle(), btData.centralAngle,
btData.effectStart(), btData.effectStart,
btData.partyId() btData.partyId
); );
int ret = m_aesFtc->boobyTrapModifyRequest(req, this); int ret = m_aesFtc->boobyTrapModifyRequest(req, this);
@@ -366,14 +366,14 @@ int ModuleTestAesOthers::doBoobyTrapModifyRequest(const BoobyTrap &btData)
int ModuleTestAesOthers::doOffRouteMineModifyRequest(const OffRouteMine &offRouteMine) int ModuleTestAesOthers::doOffRouteMineModifyRequest(const OffRouteMine &offRouteMine)
{ {
OffRouteMineModifyRequest req(offRouteMine.id(), OffRouteMineModifyRequest req(offRouteMine.id,
offRouteMine.name(), offRouteMine.name,
offRouteMine.effectDuration(), offRouteMine.effectDuration,
offRouteMine.chargeStruct().chargeTypeId(), offRouteMine.chargeStruct.chargeTypeId,
offRouteMine.area(), offRouteMine.area,
offRouteMine.impactRadius(), offRouteMine.impactRadius,
offRouteMine.effectStart(), offRouteMine.effectStart,
offRouteMine.partyId() offRouteMine.partyId
); );
int ret = m_aesFtc->offRouteMineModifyRequest(req, this); int ret = m_aesFtc->offRouteMineModifyRequest(req, this);
@@ -384,8 +384,8 @@ int ModuleTestAesOthers::doMoveParticipant(int participantId, const QString &new
{ {
ParticipantManagement::SetSimulatedPosition req; ParticipantManagement::SetSimulatedPosition req;
{ {
req.participantId(participantId); // according testDB req.participantId = participantId; // according testDB
req.onlyOutdatedParticipants(false); req.onlyOutdatedParticipants = false;
const LtsCoordTrans::UtmCoordinate &utmPos = const LtsCoordTrans::UtmCoordinate &utmPos =
LtsCoordTrans::UtmCoordinate::fromMgrs(newPositionMGRS); // 32U PD 76900 18100 LtsCoordTrans::UtmCoordinate::fromMgrs(newPositionMGRS); // 32U PD 76900 18100
@@ -481,8 +481,8 @@ void ModuleTestAesOthers::initTestCase()
std::cout << " waitForHistoricalDataExercise... Done" << std::endl; std::cout << " waitForHistoricalDataExercise... Done" << std::endl;
const ExerciseManagement::Exercise &exercise = m_exmDtc->exercise(m_exerciseId); const ExerciseManagement::Exercise &exercise = m_exmDtc->exercise(m_exerciseId);
QVERIFY2(exercise.id() == m_exerciseId, "ERROR, exercise failed!!"); QVERIFY2(exercise.id == m_exerciseId, "ERROR, exercise failed!!");
m_traingAreaId = exercise.trainingAreaId(); m_traingAreaId = exercise.trainingAreaId;
std::cout << " ExerciseManagement" std::cout << " ExerciseManagement"
<< ", m_traingAreaId = " << m_traingAreaId << std::endl; << ", m_traingAreaId = " << m_traingAreaId << std::endl;
@@ -549,22 +549,22 @@ void ModuleTestAesOthers::test_boobyTrap_01()
QVERIFY2(checkParticipant_18(), "ERROR, checkParticipant_5 failed!!"); QVERIFY2(checkParticipant_18(), "ERROR, checkParticipant_5 failed!!");
AreaEffectSimulation::BoobyTrap bt; AreaEffectSimulation::BoobyTrap bt;
bt.id(0); bt.id = 0;
bt.name(QString(QStringLiteral("ModuleTest_BoobyTrap01")).toStdString()); bt.name = QString(QStringLiteral("ModuleTest_BoobyTrap01")).toStdString();
bt.chargeStruct().chargeTypeId(252); bt.chargeStruct.chargeTypeId = 252;
bt.effectDuration(60000); bt.effectDuration = 60000;
bt.partyId(2); bt.partyId = 2;
bt.impactRadius(10); bt.impactRadius = 10;
bt.triggerRadius(5); bt.triggerRadius = 5;
// Type1 == SchAbwMi ohne rotationAngle, centralAngle // Type1 == SchAbwMi ohne rotationAngle, centralAngle
// Type2 == SchAbwRiMi mit rotationAngle, centralAngle // Type2 == SchAbwRiMi mit rotationAngle, centralAngle
LtsCoordinate lts = LtsCoordinate::fromUtmCoordinate(UtmCoordinate::fromMgrs(QStringLiteral("32U PD 77000 18100")), 0.0); LtsCoordinate lts = LtsCoordinate::fromUtmCoordinate(UtmCoordinate::fromMgrs(QStringLiteral("32U PD 77000 18100")), 0.0);
bt.impactPosition(lts.geoPosition2D()); bt.impactPosition = lts.geoPosition2D();
bt.effectStart((time(nullptr) + 10) * 1000); // msec bt.effectStart = (time(nullptr) + 10) * 1000; // msec
m_replyError = true; m_replyError = true;
m_dataBoobyTrap = AreaEffectSimulation::BoobyTrap(); m_dataBoobyTrap = AreaEffectSimulation::BoobyTrap();
@@ -573,7 +573,7 @@ void ModuleTestAesOthers::test_boobyTrap_01()
QVERIFY2(ret != 0, "ERROR, doBoobyTrapModifyRequest failed!!"); QVERIFY2(ret != 0, "ERROR, doBoobyTrapModifyRequest failed!!");
waitForEffectStatesBT(__LINE__, 5, 15, 0); // do _not_ wait for expired! waitForEffectStatesBT(__LINE__, 5, 15, 0); // do _not_ wait for expired!
QVERIFY2(m_dataBoobyTrap.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsActivated, "ERROR, effectStateId failed!!"); QVERIFY2(m_dataBoobyTrap.effectStateId == AreaEffectSimulation::AesEffectState::EsActivated, "ERROR, effectStateId failed!!");
dumpCnt(); dumpCnt();
QVERIFY2(m_counterDds.cntBoobyTrap == 2, "ERROR, cnt failed!!"); // EsPrepared, EsActivated, QVERIFY2(m_counterDds.cntBoobyTrap == 2, "ERROR, cnt failed!!"); // EsPrepared, EsActivated,
QVERIFY2(m_counterDds.cntItemView == 4, "ERROR, cnt failed!!"); // QVERIFY2(m_counterDds.cntItemView == 4, "ERROR, cnt failed!!"); //
@@ -588,9 +588,9 @@ void ModuleTestAesOthers::test_boobyTrap_01()
doMoveParticipant(18, QStringLiteral("32U PD 77002 18103")); doMoveParticipant(18, QStringLiteral("32U PD 77002 18103"));
// wait until expired: // wait until expired:
waitForData([this]() { return m_dataBoobyTrap.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsExpired; }, 60); waitForData([this]() { return m_dataBoobyTrap.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired; }, 60);
QVERIFY2(m_dataBoobyTrap.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsExpired, "ERROR, effectStateId failed!!"); QVERIFY2(m_dataBoobyTrap.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired, "ERROR, effectStateId failed!!");
// wait to let it disappear: // wait to let it disappear:
waitForData([]() { return false; }, 15); waitForData([]() { return false; }, 15);
@@ -619,22 +619,22 @@ void ModuleTestAesOthers::test_boobyTrap_02_IMPL(const QString &name,
QVERIFY2(checkParticipant_18(), "ERROR, checkParticipant_5 failed!!"); QVERIFY2(checkParticipant_18(), "ERROR, checkParticipant_5 failed!!");
AreaEffectSimulation::BoobyTrap bt; AreaEffectSimulation::BoobyTrap bt;
bt.id(0); bt.id = 0;
bt.name(name.toStdString()); bt.name = name.toStdString();
bt.chargeStruct().chargeTypeId(252); bt.chargeStruct.chargeTypeId = 252;
bt.effectDuration(600000); bt.effectDuration = 600000;
bt.partyId(2); bt.partyId = 2;
bt.impactRadius(10); bt.impactRadius = 10;
bt.triggerRadius(5); bt.triggerRadius = 5;
bt.impactPosition(impactCoord.geoPosition()); bt.impactPosition = impactCoord.geoPosition();
// Type1 == SchAbwMi ohne rotationAngle, centralAngle // Type1 == SchAbwMi ohne rotationAngle, centralAngle
// Type2 == SchAbwRiMi mit rotationAngle, centralAngle // Type2 == SchAbwRiMi mit rotationAngle, centralAngle
bt.rotationAngle(toOptional(rotationAngle)); // Q1: 30 bt.rotationAngle = toOptional(rotationAngle); // Q1: 30
bt.centralAngle(toOptional(90.0)); bt.centralAngle = toOptional(90.0);
bt.effectStart((time(nullptr) + 10) * 1000); // msec bt.effectStart = (time(nullptr) + 10) * 1000; // msec
m_replyError = true; m_replyError = true;
m_dataBoobyTrap = AreaEffectSimulation::BoobyTrap(); m_dataBoobyTrap = AreaEffectSimulation::BoobyTrap();
@@ -643,7 +643,7 @@ void ModuleTestAesOthers::test_boobyTrap_02_IMPL(const QString &name,
QVERIFY2(ret != 0, "ERROR, doBoobyTrapModifyRequest failed!!"); QVERIFY2(ret != 0, "ERROR, doBoobyTrapModifyRequest failed!!");
waitForEffectStatesBT(__LINE__, 5, 15, 0); // do _not_ wait for expired! waitForEffectStatesBT(__LINE__, 5, 15, 0); // do _not_ wait for expired!
QVERIFY2(m_dataBoobyTrap.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsActivated, "ERROR, m_dataBoobyTrap effectStateId failed!!"); QVERIFY2(m_dataBoobyTrap.effectStateId == AreaEffectSimulation::AesEffectState::EsActivated, "ERROR, m_dataBoobyTrap effectStateId failed!!");
dumpCnt(); dumpCnt();
QVERIFY2(m_counterDds.cntBoobyTrap == 2, "ERROR, cnt failed!!"); // EsPrepared, EsActivated, QVERIFY2(m_counterDds.cntBoobyTrap == 2, "ERROR, cnt failed!!"); // EsPrepared, EsActivated,
QVERIFY2(m_counterDds.cntItemView == 4, "ERROR, cnt failed!!"); // QVERIFY2(m_counterDds.cntItemView == 4, "ERROR, cnt failed!!"); //
@@ -660,9 +660,9 @@ void ModuleTestAesOthers::test_boobyTrap_02_IMPL(const QString &name,
doMoveParticipant(18, particpantCoord.mgrs()); doMoveParticipant(18, particpantCoord.mgrs());
// wait until expired: // wait until expired:
waitForData([this]() { return m_dataBoobyTrap.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsExpired; }, 60); waitForData([this]() { return m_dataBoobyTrap.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired; }, 60);
QVERIFY2(m_dataBoobyTrap.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsExpired, "ERROR, effectStateId failed!!"); QVERIFY2(m_dataBoobyTrap.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired, "ERROR, effectStateId failed!!");
// wait to let it disappear: // wait to let it disappear:
waitForData([]() { return false; }, 15); waitForData([]() { return false; }, 15);
@@ -721,21 +721,21 @@ void ModuleTestAesOthers::test_offRouteMine_02()
// offRouteMine2 = 254; // MIT impactRadius // offRouteMine2 = 254; // MIT impactRadius
AreaEffectSimulation::OffRouteMine orm; AreaEffectSimulation::OffRouteMine orm;
orm.id(0); orm.id = 0;
orm.name(QString(QStringLiteral("test_offRouteMine_02")).toStdString()); orm.name = QString(QStringLiteral("test_offRouteMine_02")).toStdString();
orm.chargeStruct().chargeTypeId(254); orm.chargeStruct.chargeTypeId = 254;
orm.effectDuration(600000); orm.effectDuration = 600000;
orm.partyId(2); orm.partyId = 2;
orm.impactRadius(10); // 254 -> MIT impactRadius -> mit 3DSphere/Kugel orm.impactRadius = 10; // 254 -> MIT impactRadius -> mit 3DSphere/Kugel
const LtsCoordinate &coord = const LtsCoordinate &coord =
LtsCoordinate::fromUtmCoordinate(UtmCoordinate::fromMgrs(QStringLiteral("32U PD 77000 18100")), 0.0); LtsCoordinate::fromUtmCoordinate(UtmCoordinate::fromMgrs(QStringLiteral("32U PD 77000 18100")), 0.0);
orm.area().cornerBottomLeft(coord.geoPosition()); orm.area.cornerBottomLeft = coord.geoPosition();
orm.area().height(50); orm.area.height = 50;
orm.area().width(1); orm.area.width = 1;
orm.area().rotation(85); orm.area.rotation = 85;
orm.effectStart((time(nullptr) + 10) * 1000); // msec orm.effectStart = (time(nullptr) + 10) * 1000; // msec
m_replyError = true; m_replyError = true;
m_dataOffRouteMine = AreaEffectSimulation::OffRouteMine(); m_dataOffRouteMine = AreaEffectSimulation::OffRouteMine();
@@ -744,7 +744,7 @@ void ModuleTestAesOthers::test_offRouteMine_02()
QVERIFY2(ret != 0, "ERROR, doOffRouteMineModifyRequest failed!!"); QVERIFY2(ret != 0, "ERROR, doOffRouteMineModifyRequest failed!!");
waitForEffectStatesORM(__LINE__, 5, 15, 0); // do _not_ wait for expired! waitForEffectStatesORM(__LINE__, 5, 15, 0); // do _not_ wait for expired!
QVERIFY2(m_dataOffRouteMine.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsActivated, "ERROR, effectStateId failed!!"); QVERIFY2(m_dataOffRouteMine.effectStateId == AreaEffectSimulation::AesEffectState::EsActivated, "ERROR, effectStateId failed!!");
dumpCnt(); dumpCnt();
QVERIFY2(m_counterDds.cntOffRouteMine == 2, "ERROR, cnt failed!!"); // EsPrepared, EsActivated, QVERIFY2(m_counterDds.cntOffRouteMine == 2, "ERROR, cnt failed!!"); // EsPrepared, EsActivated,
QVERIFY2(m_counterDds.cntItemView == 4, "ERROR, cnt failed!!"); // QVERIFY2(m_counterDds.cntItemView == 4, "ERROR, cnt failed!!"); //
@@ -761,13 +761,13 @@ void ModuleTestAesOthers::test_offRouteMine_02()
doMoveParticipant(18, QStringLiteral("32U PD 77020 18095")); doMoveParticipant(18, QStringLiteral("32U PD 77020 18095"));
// wait until expired: // wait until expired:
waitForData([this]() { return m_dataOffRouteMine.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsExpired; }, 60); waitForData([this]() { return m_dataOffRouteMine.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired; }, 60);
QVERIFY2(m_dataOffRouteMine.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsExpired, "ERROR, m_dataOffRouteMine effectStateId failed!!"); QVERIFY2(m_dataOffRouteMine.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired, "ERROR, m_dataOffRouteMine effectStateId failed!!");
// wait to let it disappear: // wait to let it disappear:
waitForData([]() { return false; }, 15); waitForData([]() { return false; }, 15);
INFO_LOG(m_logger) << LOGFUNCTION << " END" << ", name =" << orm.name() << "'"; INFO_LOG(m_logger) << LOGFUNCTION << " END" << ", name =" << orm.name << "'";
} }
void ModuleTestAesOthers::cleanupTestCase() void ModuleTestAesOthers::cleanupTestCase()
@@ -138,7 +138,7 @@ void TestAirSupportImpact::tryModify()
{ {
INFO_LOG(m_logger) << "trying to send modify request"; INFO_LOG(m_logger) << "trying to send modify request";
m_asData.name("chris2"); m_asData.name("chris2");
m_asData.effectStart(m_asData.effectStart().get() + 2000); m_asData.effectStart(m_asData.effectStart.get() + 2000);
m_asData.chargeStruct().chargeTypeId(s_ChargeTypeId2); m_asData.chargeStruct().chargeTypeId(s_ChargeTypeId2);
m_asData.impactPosition(Core::GeoPosition2D(0.15525, 0.92607)); m_asData.impactPosition(Core::GeoPosition2D(0.15525, 0.92607));
m_asData.partyId(8); m_asData.partyId(8);
@@ -22,7 +22,7 @@ TestBase::TestBase(const char *loggerName, QObject *parent)
, m_replyError(false) , m_replyError(false)
, m_bTestsSuccessful(true) , m_bTestsSuccessful(true)
, m_testId(0) , m_testId(0)
, m_aesTypeName(QString::fromLatin1(loggerName).splitRef(QLatin1Char('.')).last().toString()) , m_aesTypeName(QString::fromLatin1(loggerName).split(QLatin1Char('.')).last().toString())
, m_logger(getLogger(loggerName)) , m_logger(getLogger(loggerName))
{} {}
@@ -65,29 +65,29 @@ bool TestBase::waitForData(const std::function<bool()> &func)
bool TestBase::checkAesItem(const AreaEffectSimulation::AesItem &a, bool TestBase::checkAesItem(const AreaEffectSimulation::AesItem &a,
const AreaEffectSimulation::AesItem &b) const const AreaEffectSimulation::AesItem &b) const
{ {
if (a.name() != b.name()) if (a.name != b.name)
{ {
WARNING_LOG(m_logger) << "name does not match: " << a.name() << " - " << b.name(); WARNING_LOG(m_logger) << "name does not match: " << a.name << " - " << b.name;
return false; return false;
} }
if (a.effectStart() != b.effectStart()) if (a.effectStart != b.effectStart)
{ {
WARNING_LOG(m_logger) << "effectStart does not match: " << a.effectStart() << " - " << b.effectStart(); WARNING_LOG(m_logger) << "effectStart does not match: " << a.effectStart << " - " << b.effectStart;
return false; return false;
} }
if (a.chargeStruct().chargeTypeId() != b.chargeStruct().chargeTypeId()) if (a.chargeStruct.chargeTypeId != b.chargeStruct.chargeTypeId)
{ {
WARNING_LOG(m_logger) << "chargeTypeId does not match: " << a.chargeStruct().chargeTypeId() << " - " << b.chargeStruct().chargeTypeId(); WARNING_LOG(m_logger) << "chargeTypeId does not match: " << a.chargeStruct.chargeTypeId << " - " << b.chargeStruct.chargeTypeId;
return false; return false;
} }
if (a.partyId() != b.partyId()) if (a.partyId != b.partyId)
{ {
WARNING_LOG(m_logger) << "partyId does not match: " << a.partyId() << " - " << b.partyId(); WARNING_LOG(m_logger) << "partyId does not match: " << a.partyId << " - " << b.partyId;
return false; return false;
} }
if (a.participantId() != b.participantId()) if (a.participantId != b.participantId)
{ {
WARNING_LOG(m_logger) << "participantId does not match: " << a.participantId() << " - " << b.participantId(); WARNING_LOG(m_logger) << "participantId does not match: " << a.participantId << " - " << b.participantId;
return false; return false;
} }
return true; return true;
@@ -166,7 +166,7 @@ void TestBCContamination::tryModifyBCContamination()
{ {
INFO_LOG(m_logger) << "trying to send modify request"; INFO_LOG(m_logger) << "trying to send modify request";
m_bcData.name("chris2"); m_bcData.name("chris2");
m_bcData.effectStart(m_bcData.effectStart().get() + 2000); m_bcData.effectStart(m_bcData.effectStart.get() + 2000);
m_bcData.effectDuration(3200); // msec m_bcData.effectDuration(3200); // msec
m_bcData.chargeStruct().chargeTypeId(s_ChargeTypeId2); m_bcData.chargeStruct().chargeTypeId(s_ChargeTypeId2);
m_bcData.impactPosition(Core::GeoPosition2D(0.17, 0.93)); m_bcData.impactPosition(Core::GeoPosition2D(0.17, 0.93));
@@ -89,10 +89,10 @@ void TestBoobyTrap::tryCreateBoobyTrap()
btData.impactPosition(), btData.impactPosition(),
btData.impactRadius(), btData.impactRadius(),
btData.triggerRadius(), btData.triggerRadius(),
btData.rotationAngle().get(), btData.rotationAngle.get(),
btData.centralAngle().get(), btData.centralAngle.get(),
btData.effectStart().get(), btData.effectStart.get(),
btData.partyId().get()), btData.partyId.get()),
this)) this))
{ {
ERROR_LOG(m_logger) << "Error during BoobyTrapCreateRequest()"; ERROR_LOG(m_logger) << "Error during BoobyTrapCreateRequest()";
@@ -122,10 +122,10 @@ void TestBoobyTrap::tryCreateBoobyTrap()
btData.impactPosition(), btData.impactPosition(),
btData.impactRadius(), btData.impactRadius(),
btData.triggerRadius(), btData.triggerRadius(),
btData.rotationAngle().get(), btData.rotationAngle.get(),
btData.centralAngle().get(), btData.centralAngle.get(),
btData.effectStart().get(), btData.effectStart.get(),
btData.partyId().get()), btData.partyId.get()),
this)) this))
{ {
ERROR_LOG(m_logger) << "Error during BoobyTrapCreateRequest()"; ERROR_LOG(m_logger) << "Error during BoobyTrapCreateRequest()";
@@ -153,7 +153,7 @@ void TestBoobyTrap::tryModifyBoobyTrap()
{ {
INFO_LOG(m_logger) << "trying to send modify request"; INFO_LOG(m_logger) << "trying to send modify request";
m_btData.name("Booby Trap 2"); m_btData.name("Booby Trap 2");
m_btData.effectStart(m_btData.effectStart().get() + 2000); m_btData.effectStart(m_btData.effectStart.get() + 2000);
m_btData.effectDuration(3200); // msec m_btData.effectDuration(3200); // msec
m_btData.chargeStruct().chargeTypeId(s_ChargeTypeId2); m_btData.chargeStruct().chargeTypeId(s_ChargeTypeId2);
m_btData.impactPosition(Core::GeoPosition2D(0.1547, 0.926)); m_btData.impactPosition(Core::GeoPosition2D(0.1547, 0.926));
@@ -173,10 +173,10 @@ void TestBoobyTrap::tryModifyBoobyTrap()
btData.impactPosition(), btData.impactPosition(),
btData.impactRadius(), btData.impactRadius(),
btData.triggerRadius(), btData.triggerRadius(),
btData.rotationAngle().get(), btData.rotationAngle.get(),
btData.centralAngle().get(), btData.centralAngle.get(),
btData.effectStart().get(), btData.effectStart.get(),
btData.partyId().get()), btData.partyId.get()),
this)) this))
{ {
ERROR_LOG(m_logger) << "Error requesting modify data"; ERROR_LOG(m_logger) << "Error requesting modify data";
@@ -252,10 +252,10 @@ void TestBoobyTrap::tryRemoveBoobyTrap()
btData.impactPosition(), btData.impactPosition(),
btData.impactRadius(), btData.impactRadius(),
btData.triggerRadius(), btData.triggerRadius(),
btData.rotationAngle().get(), btData.rotationAngle.get(),
btData.centralAngle().get(), btData.centralAngle.get(),
btData.effectStart().get(), btData.effectStart.get(),
btData.partyId().get()), btData.partyId.get()),
this)) this))
{ {
ERROR_LOG(m_logger) << "Error during BoobyTrapModifyRequest()"; ERROR_LOG(m_logger) << "Error during BoobyTrapModifyRequest()";
@@ -167,7 +167,7 @@ void TestExplosionArea::tryModifyExplosionArea()
{ {
INFO_LOG(m_logger) << "tryModifyExplosionArea start"; INFO_LOG(m_logger) << "tryModifyExplosionArea start";
m_eaData.name("af2"); m_eaData.name("af2");
m_eaData.effectStart(m_eaData.effectStart().get() + 3000); m_eaData.effectStart(m_eaData.effectStart.get() + 3000);
m_eaData.effectDuration(9000); // 9 sec m_eaData.effectDuration(9000); // 9 sec
m_eaData.chargeStruct().chargeTypeId(s_ChargeTypeId2); m_eaData.chargeStruct().chargeTypeId(s_ChargeTypeId2);
m_eaData.area(AreaEffectSimulation::Area(Core::GeoPosition2D(0.165, 0.921), 50, 60, 70)); m_eaData.area(AreaEffectSimulation::Area(Core::GeoPosition2D(0.165, 0.921), 50, 60, 70));
@@ -148,7 +148,7 @@ void TestExplosionAreaBulk::tryModifyExplosionArea()
{ {
INFO_LOG(m_logger) << "tryModifyExplosionArea start"; INFO_LOG(m_logger) << "tryModifyExplosionArea start";
m_eaData.name("af2"); m_eaData.name("af2");
m_eaData.effectStart(m_eaData.effectStart().get() + 3000); m_eaData.effectStart(m_eaData.effectStart.get() + 3000);
m_eaData.effectDuration(9000); // 9 sec m_eaData.effectDuration(9000); // 9 sec
m_eaData.chargeStruct().chargeTypeId(s_ChargeTypeId2); m_eaData.chargeStruct().chargeTypeId(s_ChargeTypeId2);
m_eaData.area(AreaEffectSimulation::Area(Core::GeoPosition2D(0.165, 0.921), 50, 60, 70)); m_eaData.area(AreaEffectSimulation::Area(Core::GeoPosition2D(0.165, 0.921), 50, 60, 70));
@@ -69,7 +69,7 @@ void TestExplosionCluster::tryCreateExplosionCluster()
eaData.effectStart((time(nullptr) + 30) * 1000); // msec eaData.effectStart((time(nullptr) + 30) * 1000); // msec
QString name(QStringLiteral("ec__")); QString name(QStringLiteral("ec__"));
name += QString::number(eaData.effectStart().get()); name += QString::number(eaData.effectStart.get());
eaData.name(name.toStdString()); eaData.name(name.toStdString());
eaData.effectDuration(10000); // 10 seconds eaData.effectDuration(10000); // 10 seconds
@@ -214,7 +214,7 @@ void TestExplosionCluster::tryModifyExplosionCluster()
{ {
INFO_LOG(m_logger) << "tryModifyExplosionCluster start"; INFO_LOG(m_logger) << "tryModifyExplosionCluster start";
m_ecData.name("af2"); m_ecData.name("af2");
m_ecData.effectStart(m_ecData.effectStart().get() + 3000); m_ecData.effectStart(m_ecData.effectStart.get() + 3000);
m_ecData.effectDuration(9000); // 9 sec m_ecData.effectDuration(9000); // 9 sec
m_ecData.chargeTypeId(s_ChargeTypeId2); m_ecData.chargeTypeId(s_ChargeTypeId2);
@@ -147,7 +147,7 @@ void TestExplosionSingle::tryModifyExplosionSingle()
{ {
INFO_LOG(m_logger) << "trying to send modify request"; INFO_LOG(m_logger) << "trying to send modify request";
m_esData.name("chris2"); m_esData.name("chris2");
m_esData.effectStart(m_esData.effectStart().get() + 2000); m_esData.effectStart(m_esData.effectStart.get() + 2000);
m_esData.chargeStruct().chargeTypeId(s_ChargeTypeId2); m_esData.chargeStruct().chargeTypeId(s_ChargeTypeId2);
m_esData.impactPosition(Core::GeoPosition2D(0.17, 0.93)); m_esData.impactPosition(Core::GeoPosition2D(0.17, 0.93));
m_esData.partyId(3); m_esData.partyId(3);
@@ -433,7 +433,7 @@ void TestMineArea::tryModifyMineArea()
{ {
INFO_LOG(m_logger) << "trying to send modify request"; INFO_LOG(m_logger) << "trying to send modify request";
m_maData.name("chris2"); m_maData.name("chris2");
m_maData.effectStart(m_maData.effectStart().get() + 2000); m_maData.effectStart(m_maData.effectStart.get() + 2000);
m_maData.chargeStruct().chargeTypeId(s_ChargeTypeId2); m_maData.chargeStruct().chargeTypeId(s_ChargeTypeId2);
m_maData.effectDuration(4 * 1000); m_maData.effectDuration(4 * 1000);
m_maData.density(0.2); m_maData.density(0.2);
@@ -645,7 +645,7 @@ void TestMineArea::tryTriggerDusMineInBoth()
INFO_LOG(m_logger) << "trying to send mineTriggeredRequest()"; INFO_LOG(m_logger) << "trying to send mineTriggeredRequest()";
m_replyError = true; m_replyError = true;
if (!m_ftc->mineTriggeredRequest(MineTriggeredRequest(mtr.mineAreaId(), mtr.mineId(), mtr.position().get(), mtr.chargeTypeId().get()), this)) if (!m_ftc->mineTriggeredRequest(MineTriggeredRequest(mtr.mineAreaId(), mtr.mineId(), mtr.position.get(), mtr.chargeTypeId.get()), this))
{ {
ERROR_LOG(m_logger) << "Error during mineTriggeredRequest()"; ERROR_LOG(m_logger) << "Error during mineTriggeredRequest()";
failExit(); failExit();
@@ -87,9 +87,9 @@ void TestOffRouteMine::tryCreateOffRouteMine()
ormData.effectDuration(), ormData.effectDuration(),
ormData.chargeStruct().chargeTypeId(), ormData.chargeStruct().chargeTypeId(),
ormData.area(), ormData.area(),
ormData.impactRadius().get(), ormData.impactRadius.get(),
ormData.effectStart().get(), ormData.effectStart.get(),
ormData.partyId().get()), ormData.partyId.get()),
this)) this))
{ {
ERROR_LOG(m_logger) << "Error during OffRouteMineCreateRequest()"; ERROR_LOG(m_logger) << "Error during OffRouteMineCreateRequest()";
@@ -117,9 +117,9 @@ void TestOffRouteMine::tryCreateOffRouteMine()
ormData.effectDuration(), ormData.effectDuration(),
ormData.chargeStruct().chargeTypeId(), ormData.chargeStruct().chargeTypeId(),
ormData.area(), ormData.area(),
ormData.impactRadius().get(), ormData.impactRadius.get(),
ormData.effectStart().get(), ormData.effectStart.get(),
ormData.partyId().get()), ormData.partyId.get()),
this)) this))
{ {
ERROR_LOG(m_logger) << "Error during OffRouteMineCreateRequest()"; ERROR_LOG(m_logger) << "Error during OffRouteMineCreateRequest()";
@@ -147,7 +147,7 @@ void TestOffRouteMine::tryModifyOffRouteMine()
{ {
INFO_LOG(m_logger) << "trying to send modify request"; INFO_LOG(m_logger) << "trying to send modify request";
m_ormData.name("OffRouteMine 2"); m_ormData.name("OffRouteMine 2");
m_ormData.effectStart(m_ormData.effectStart().get() + 2000); m_ormData.effectStart(m_ormData.effectStart.get() + 2000);
m_ormData.effectDuration(3200); // msec m_ormData.effectDuration(3200); // msec
m_ormData.chargeStruct().chargeTypeId(s_ChargeTypeId2); m_ormData.chargeStruct().chargeTypeId(s_ChargeTypeId2);
m_ormData.area().cornerBottomLeft(Core::GeoPosition2D(0.154, 0.926)); m_ormData.area().cornerBottomLeft(Core::GeoPosition2D(0.154, 0.926));
@@ -168,9 +168,9 @@ void TestOffRouteMine::tryModifyOffRouteMine()
ormData.effectDuration(), ormData.effectDuration(),
ormData.chargeStruct().chargeTypeId(), ormData.chargeStruct().chargeTypeId(),
ormData.area(), ormData.area(),
ormData.impactRadius().get(), ormData.impactRadius.get(),
ormData.effectStart().get(), ormData.effectStart.get(),
ormData.partyId().get()), ormData.partyId.get()),
this)) this))
{ {
ERROR_LOG(m_logger) << "Error requesting modify data"; ERROR_LOG(m_logger) << "Error requesting modify data";
@@ -243,9 +243,9 @@ void TestOffRouteMine::tryRemoveOffRouteMine()
ormData.effectDuration(), ormData.effectDuration(),
ormData.chargeStruct().chargeTypeId(), ormData.chargeStruct().chargeTypeId(),
ormData.area(), ormData.area(),
ormData.impactRadius().get(), ormData.impactRadius.get(),
ormData.effectStart().get(), ormData.effectStart.get(),
ormData.partyId().get()), ormData.partyId.get()),
this)) this))
{ {
ERROR_LOG(m_logger) << "Error during OffRouteMineModifyRequest()"; ERROR_LOG(m_logger) << "Error during OffRouteMineModifyRequest()";
@@ -59,7 +59,7 @@ bool RecordReplayPluginCustom::setReplayStartTime(NSqlQuery &q, qint64 startTime
{ {
for (const auto &valie : copyTW.values(key)) for (const auto &valie : copyTW.values(key))
{ {
if (valie.trajectoryStartTime() < startTime - 210*1000) if (valie.trajectoryStartTime < startTime - 210*1000)
{ {
m_trajectoryTimeAwareMap.remove(key, valie); m_trajectoryTimeAwareMap.remove(key, valie);
} }
@@ -264,7 +264,7 @@ bool RecordReplayPluginCustom::setReplayStartTime(NSqlQuery &q, qint64 startTime
{ {
for (const auto &valie : copyTI.values(key)) for (const auto &valie : copyTI.values(key))
{ {
if (valie.sampleTime() < startTime - 210*1000) if (valie.sampleTime < startTime - 210*1000)
m_triggeredImpactsMap.remove(key, valie); m_triggeredImpactsMap.remove(key, valie);
} }
} }
@@ -295,7 +295,7 @@ bool RecordReplayPluginCustom::setReplayStartTime(NSqlQuery &q, qint64 startTime
{ {
for (const auto &valie : copy.values(key)) for (const auto &valie : copy.values(key))
{ {
if( m_explosionClusterKeys.find(valie.aesItemId()) != m_explosionClusterKeys.end()) if( m_explosionClusterKeys.find(valie.aesItemId) != m_explosionClusterKeys.end())
{ {
m_effectsMap.remove(key, valie); m_effectsMap.remove(key, valie);
continue; continue;
@@ -316,34 +316,34 @@ bool RecordReplayPluginCustom::setReplayStartTime(NSqlQuery &q, qint64 startTime
{ {
for (const auto &value : copy.values(key)) for (const auto &value : copy.values(key))
{ {
if (value.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsCreated if (value.effectStateId == AreaEffectSimulation::AesEffectState::EsCreated
|| value.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsFired || value.effectStateId == AreaEffectSimulation::AesEffectState::EsFired
|| value.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsReceived || value.effectStateId == AreaEffectSimulation::AesEffectState::EsReceived
|| value.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsPrepared || value.effectStateId == AreaEffectSimulation::AesEffectState::EsPrepared
|| value.effectStateId() == AreaEffectSimulation::AesEffectState_def::EsActivated || value.effectStateId == AreaEffectSimulation::AesEffectState::EsActivated
) )
continue; continue;
// check regarding _Explosion_Cluster // check regarding _Explosion_Cluster
{ {
static QVector<AesType_def::type> relavantAesTypeIds = {AesType_def::AtExplosionClusterGunToTargetLine, AesType_def::AtExplosionClusterSingleTrajectory}; static QVector<AesType> relavantAesTypeIds = {AesType::AtExplosionClusterGunToTargetLine, AesType::AtExplosionClusterSingleTrajectory};
if (relavantAesTypeIds.contains(value.aesTypeId().underlying())) if (relavantAesTypeIds.contains(value.aesTypeId))
{ {
if (m_explosionClusterKeys.find(value.aesItemId()) != m_explosionClusterKeys.end() ) //contains not available until cpp 20 if (m_explosionClusterKeys.find(value.aesItemId) != m_explosionClusterKeys.end() ) //contains not available until cpp 20
continue; continue;
} }
} }
// E01562-E343 EffectCluster: GunToTargetLines fehlen im Replay&Snapshot // E01562-E343 EffectCluster: GunToTargetLines fehlen im Replay&Snapshot
{ {
static QVector<AesType_def::type> relavantAesTypeIds = {AesType_def::AtEffectClusterGunToTargetLine, AesType_def::AtEffectClusterGunToTargetLine}; static QVector<AesType> relavantAesTypeIds = {AesType::AtEffectClusterGunToTargetLine, AesType::AtEffectClusterGunToTargetLine};
if (relavantAesTypeIds.contains(value.aesTypeId().underlying())) if (relavantAesTypeIds.contains(value.aesTypeId))
{ {
if (m_effectClusterKeys.find(value.aesItemId()) != m_effectClusterKeys.end() ) //contains not available until cpp 20 if (m_effectClusterKeys.find(value.aesItemId) != m_effectClusterKeys.end() ) //contains not available until cpp 20
continue; continue;
} }
} }
if (value.effectStateId() == AesEffectState_def::EsRemoved || value.effectStart() < startTime - 210*1000) if (value.effectStateId == AesEffectState::EsRemoved || value.effectStart < startTime - 210*1000)
{ {
m_aesItemViewMap.remove(key, value); m_aesItemViewMap.remove(key, value);
} }
@@ -369,16 +369,16 @@ void RecordReplayPluginCustom::removeOld(QMultiMap<long long, T> &map, qint64 de
for (const auto &inner : map.values(item)) for (const auto &inner : map.values(item))
{ {
// Remove delted ones // Remove delted ones
if (inner.isDeleted()) if (inner.isDeleted)
{ {
map.remove(item, inner); map.remove(item, inner);
continue; continue;
} }
// keep planned // keep planned
if (!inner.effectStart().is_set()) if (!inner.effectStart.is_set())
continue; continue;
// Remove to old ones // Remove to old ones
if (inner.effectStart().get()+inner.effectDuration() < desiredTime - 210*1000 ) if (inner.effectStart.get()+inner.effectDuration < desiredTime - 210*1000 )
map.remove(item, inner); map.remove(item, inner);
} }
} }
@@ -9,7 +9,7 @@
#include <AreaEffectSimulation/aes_record_replay_plugin.h> #include <AreaEffectSimulation/aes_record_replay_plugin.h>
#include <AreaEffectSimulation/aes_dts.h> #include <AreaEffectSimulation/aes_dts.h>
// fixup include path on 42.3 -> missing interface // fixup include path on 42.3 -> missing interface
#include <../../Common/PluginInterfaces/record_replay_plugin.h> #include <Common/PluginInterfaces/record_replay_plugin.h>
namespace AreaEffectSimulation namespace AreaEffectSimulation
@@ -525,16 +525,16 @@ void UnitTestTrajectory::test_realStartPoint()
bool myFuzzyCompare2D(const Core::GeoPosition& v1, const QPoint3D& v2) bool myFuzzyCompare2D(const Core::GeoPosition& v1, const QPoint3D& v2)
{ {
return return
qFuzzyCompare(v1.lon(), v2.x()) && qFuzzyCompare(v1.lon, v2.x()) &&
qFuzzyCompare(v1.lat(), v2.y()); qFuzzyCompare(v1.lat, v2.y());
} }
bool myFuzzyCompare3D(const Core::GeoPosition& v1, const QPoint3D& v2) bool myFuzzyCompare3D(const Core::GeoPosition& v1, const QPoint3D& v2)
{ {
return return
qFuzzyCompare(v1.lon(), v2.x()) && qFuzzyCompare(v1.lon, v2.x()) &&
qFuzzyCompare(v1.lat(), v2.y()) && qFuzzyCompare(v1.lat, v2.y()) &&
qFuzzyCompare(v1.z(), v2.z()); qFuzzyCompare(v1.z, v2.z());
} }
void UnitTestTrajectory::test_generateTrajectoryBiedziak() void UnitTestTrajectory::test_generateTrajectoryBiedziak()
@@ -581,18 +581,18 @@ void UnitTestTrajectory::test_generateTrajectoryBiedziak()
{ {
const auto &item35 = trajectoryOut[35]; const auto &item35 = trajectoryOut[35];
INFO_LOG(m_logger) << "iqtem35 = " << item35; INFO_LOG(m_logger) << "iqtem35 = " << item35;
QVERIFY2(qFuzzyCompare(item35.z(), 148.044675655973), "TrajectoryGenerator::trajectoryOut failed"); QVERIFY2(qFuzzyCompare(item35.z, 148.044675655973), "TrajectoryGenerator::trajectoryOut failed");
} }
{ {
// Hier ist der Scheitelpunkt: // Hier ist der Scheitelpunkt:
const auto &item36 = trajectoryOut[36]; const auto &item36 = trajectoryOut[36];
INFO_LOG(m_logger) << "item36 = " << item36; INFO_LOG(m_logger) << "item36 = " << item36;
QVERIFY2(qFuzzyCompare(item36.z(), 148.087567297406), "TrajectoryGenerator::trajectoryOut failed"); QVERIFY2(qFuzzyCompare(item36.z, 148.087567297406), "TrajectoryGenerator::trajectoryOut failed");
} }
{ {
const auto &item37 = trajectoryOut[37]; const auto &item37 = trajectoryOut[37];
INFO_LOG(m_logger) << "item37 = " << item37; INFO_LOG(m_logger) << "item37 = " << item37;
QVERIFY2(qFuzzyCompare(item37.z(), 147.905786767084), "TrajectoryGenerator::trajectoryOut failed"); QVERIFY2(qFuzzyCompare(item37.z, 147.905786767084), "TrajectoryGenerator::trajectoryOut failed");
} }
} }
} }
@@ -16,7 +16,7 @@
#include <LtsCoordTrans/lts_coord_trans.h> #include <LtsCoordTrans/lts_coord_trans.h>
#include <LtsUtilsCore/qpoint3d.h> #include <LtsUtilsCore/qpoint3d.h>
#include <QtCore/QVector> #include <QtCore/QVector>
#include <Qt6GuiCore/QVector2D> #include <QtGui/QVector2D>
#include <cmath> #include <cmath>
#include <iomanip> // std::setprecision #include <iomanip> // std::setprecision
@@ -125,7 +125,7 @@ protected:
for (const auto &posTimeAware : trajectory) for (const auto &posTimeAware : trajectory)
{ {
relativeTimes.append(posTimeAware.relativeTime()); relativeTimes.append(posTimeAware.relativeTime);
} }
std::sort(relativeTimes.begin(), relativeTimes.end()); std::sort(relativeTimes.begin(), relativeTimes.end());
@@ -154,7 +154,7 @@ protected:
{ {
for (const auto &posTimeAware : trajectory) for (const auto &posTimeAware : trajectory)
{ {
const qint64 currentTime = posTimeAware.relativeTime(); const qint64 currentTime = posTimeAware.relativeTime;
if (duplicateRelativeTime == currentTime) if (duplicateRelativeTime == currentTime)
{ {
@@ -172,11 +172,11 @@ protected:
qint64 currentTime = std::numeric_limits<qint64>::min(); qint64 currentTime = std::numeric_limits<qint64>::min();
for (const auto &posTimeAware : trajectory) for (const auto &posTimeAware : trajectory)
{ {
if (posTimeAware.relativeTime() < currentTime) if (posTimeAware.relativeTime < currentTime)
{ {
break; break;
} }
currentTime = posTimeAware.relativeTime(); currentTime = posTimeAware.relativeTime;
++idx; ++idx;
} // for } // for
} }
@@ -61,8 +61,8 @@ void UnitTestBasics::test_operator_equal_1()
AesItemView aesItem1, aesItem2; AesItemView aesItem1, aesItem2;
QVERIFY2(aesItem1 == aesItem2, "AesItemView::operator== failed"); QVERIFY2(aesItem1 == aesItem2, "AesItemView::operator== failed");
aesItem1.id(1); aesItem1.id = 1;
aesItem2.id(1); aesItem2.id = 1;
QVERIFY2(aesItem1 == aesItem2, "AesItemView::operator== failed"); QVERIFY2(aesItem1 == aesItem2, "AesItemView::operator== failed");
@@ -71,18 +71,18 @@ void UnitTestBasics::test_operator_equal_1()
for (int i=1; i< 100; ++i) for (int i=1; i< 100; ++i)
formVec.emplace_back(Core::GeoPosition(i*0.001, 100/i, 100/i)); formVec.emplace_back(Core::GeoPosition(i*0.001, 100/i, 100/i));
aesItem1.aesItemId(12); aesItem1.aesItemId = 12;
aesItem1.sampleTime(12345567); aesItem1.sampleTime = 12345567;
aesItem1.chargeStruct().chargeTypeId(123); aesItem1.chargeStruct.chargeTypeId = 123;
aesItem1.effectStart(123456789); aesItem1.effectStart = 123456789;
aesItem1.form(formVec); aesItem1.form = formVec;
aesItem1.boundingBoxBottomLeft(Core::GeoPosition2D(0.1, 0.2)); aesItem1.boundingBoxBottomLeft = Core::GeoPosition2D(0.1, 0.2);
aesItem1.boundingBoxTopRight(Core::GeoPosition2D(1.1, 1.2)); aesItem1.boundingBoxTopRight = Core::GeoPosition2D(1.1, 1.2);
aesItem1.aesTypeId(AreaEffectSimulation::AesType_def::AtBoobyTrap); aesItem1.aesTypeId = AreaEffectSimulation::AesType::AtBoobyTrap;
aesItem1.effectStateId(AreaEffectSimulation::AesEffectState_def::EsActivated); aesItem1.effectStateId = AreaEffectSimulation::AesEffectState::EsActivated;
aesItem1.partyId(2); aesItem1.partyId = 2;
aesItem1.setId(2334); aesItem1.setId = 2334;
aesItem2 = aesItem1; aesItem2 = aesItem1;
QVERIFY2(aesItem1 == aesItem2, "AesItemView::operator== failed"); QVERIFY2(aesItem1 == aesItem2, "AesItemView::operator== failed");
@@ -54,19 +54,19 @@ void StateMachineTest::staticTests()
const time_t tNow = time(nullptr); const time_t tNow = time(nullptr);
// newly created, nothing set -> checkEnterNewState() should switch to created // newly created, nothing set -> checkEnterNewState() should switch to created
QCOMPARE(m_dummyAesObject->checkEnterNewState().underlying(), AesEffectState::EsCreated); QCOMPARE(m_dummyAesObject->checkEnterNewState(), AesEffectState::EsCreated);
// now we set a activation time -> Prepared // now we set a activation time -> Prepared
m_dummyAesObject->setActivationTime(tNow + 5); m_dummyAesObject->setActivationTime(tNow + 5);
QCOMPARE(m_dummyAesObject->checkEnterNewState().underlying(), AesEffectState::EsPrepared); QCOMPARE(m_dummyAesObject->checkEnterNewState(), AesEffectState::EsPrepared);
// now back to created // now back to created
m_dummyAesObject->setActivationTime(0); m_dummyAesObject->setActivationTime(0);
QCOMPARE(m_dummyAesObject->checkEnterNewState().underlying(), AesEffectState::EsCreated); QCOMPARE(m_dummyAesObject->checkEnterNewState(), AesEffectState::EsCreated);
// directly to activated // directly to activated
m_dummyAesObject->setActivationTime(tNow); m_dummyAesObject->setActivationTime(tNow);
QCOMPARE(m_dummyAesObject->checkEnterNewState().underlying(), AesEffectState::EsActivated); QCOMPARE(m_dummyAesObject->checkEnterNewState(), AesEffectState::EsActivated);
// pause not possible // pause not possible
m_dummyAesObject->setSupportsPausing(false); m_dummyAesObject->setSupportsPausing(false);
@@ -89,7 +89,7 @@ void StateMachineTest::staticTests()
{ {
QTest::qWait(15); QTest::qWait(15);
} }
QCOMPARE(m_dummyAesObject->checkEnterNewState().underlying(), AesEffectState::EsExpired); QCOMPARE(m_dummyAesObject->checkEnterNewState(), AesEffectState::EsExpired);
// try to delete it // try to delete it
QCOMPARE(m_dummyAesObject->trySwitchToRemoved(), false); QCOMPARE(m_dummyAesObject->trySwitchToRemoved(), false);
@@ -102,7 +102,7 @@ void StateMachineTest::staticTests()
m_dummyAesObject->setAesEffectState(AesEffectState::EsPaused); m_dummyAesObject->setAesEffectState(AesEffectState::EsPaused);
QCOMPARE(m_dummyAesObject->trySwitchToRemoved(), true); QCOMPARE(m_dummyAesObject->trySwitchToRemoved(), true);
// an active/paused object must not set to deleted but to expired // an active/paused object must not set to deleted but to expired
QCOMPARE(m_dummyAesObject->effectState().underlying(), AesEffectState::EsExpired); QCOMPARE(m_dummyAesObject->effectState(), AesEffectState::EsExpired);
QCOMPARE(m_dummyAesObject->trySwitchToCreated(), false); QCOMPARE(m_dummyAesObject->trySwitchToCreated(), false);
} }
@@ -121,7 +121,7 @@ void StateMachineTest::dynamicTests()
m_dummyAesObject->setDurationSec(2); m_dummyAesObject->setDurationSec(2);
QCOMPARE(m_dummyAesObject->isEndTimeSet(), true); QCOMPARE(m_dummyAesObject->isEndTimeSet(), true);
QCOMPARE(m_dummyAesObject->checkEnterNewState().underlying(), AesEffectState::EsPrepared); QCOMPARE(m_dummyAesObject->checkEnterNewState(), AesEffectState::EsPrepared);
QCOMPARE(spy.count(), 2); // Created, Prepared QCOMPARE(spy.count(), 2); // Created, Prepared
spy.clear(); spy.clear();
@@ -132,7 +132,7 @@ void StateMachineTest::dynamicTests()
if (m_dummyAesObject->effectState() == AesEffectState::EsActivated) if (m_dummyAesObject->effectState() == AesEffectState::EsActivated)
break; break;
} }
QCOMPARE(m_dummyAesObject->effectState().underlying(), AesEffectState::EsActivated); QCOMPARE(m_dummyAesObject->effectState(), AesEffectState::EsActivated);
qDebug() << "Waiting for end time"; qDebug() << "Waiting for end time";
for (int i = 0; i < 200; ++i) for (int i = 0; i < 200; ++i)
@@ -142,7 +142,7 @@ void StateMachineTest::dynamicTests()
break; break;
} }
AreaEffectSimulation::AesEffectState state = m_dummyAesObject->effectState(); AreaEffectSimulation::AesEffectState state = m_dummyAesObject->effectState();
QCOMPARE(state.underlying(), AesEffectState::EsExpired); QCOMPARE(state, AesEffectState::EsExpired);
QCOMPARE(spy.count(), 2); // Activated, Done QCOMPARE(spy.count(), 2); // Activated, Done
spy.clear(); spy.clear();
@@ -48,10 +48,10 @@ inline std::string toString(const std::vector<Core::RelativePositionRelativeTime
for (const auto &coordinate : trajectoryRelative) for (const auto &coordinate : trajectoryRelative)
{ {
QJsonObject coordObj; QJsonObject coordObj;
coordObj[QStringLiteral("offsetX")] = coordinate.offsetX(); coordObj[QStringLiteral("offsetX")] = coordinate.offsetX;
coordObj[QStringLiteral("offsetY")] = coordinate.offsetY(); coordObj[QStringLiteral("offsetY")] = coordinate.offsetY;
coordObj[QStringLiteral("offsetZ")] = coordinate.offsetZ(); coordObj[QStringLiteral("offsetZ")] = coordinate.offsetZ;
coordObj[QStringLiteral("relativeTime")] = coordinate.relativeTime(); coordObj[QStringLiteral("relativeTime")] = static_cast<qint64>(coordinate.relativeTime);
arr.append(coordObj); arr.append(coordObj);
} }
obj[TRAJECTORY_RELATIVE_KEYWORD] = arr; obj[TRAJECTORY_RELATIVE_KEYWORD] = arr;
@@ -83,10 +83,10 @@ inline std::vector<Core::RelativePositionRelativeTime> fromString(const QString
return {}; return {};
Core::RelativePositionRelativeTime coord; Core::RelativePositionRelativeTime coord;
coord.offsetX() = coordinate[QStringLiteral("offsetX")].toDouble(); coord.offsetX = coordinate[QStringLiteral("offsetX")].toDouble();
coord.offsetY() = coordinate[QStringLiteral("offsetY")].toDouble(); coord.offsetY = coordinate[QStringLiteral("offsetY")].toDouble();
coord.offsetZ() = coordinate[QStringLiteral("offsetZ")].toDouble(); coord.offsetZ = coordinate[QStringLiteral("offsetZ")].toDouble();
coord.relativeTime() = coordinate[QStringLiteral("relativeTime")].toInt(); coord.relativeTime = coordinate[QStringLiteral("relativeTime")].toInt();
ret.push_back(coord); ret.push_back(coord);
} }
@@ -119,8 +119,8 @@ inline double getAngleDegreeNorth(const QPointF &p1, const QPointF &p2)
inline bool isPointSimilar(AreaEffectSimulation::AesExplosionGeometry geometry) inline bool isPointSimilar(AreaEffectSimulation::AesExplosionGeometry geometry)
{ {
return (geometry.underlying() == AreaEffectSimulation::AesExplosionGeometry_def::EgAimPoint) || return (geometry == AreaEffectSimulation::AesExplosionGeometry::EgAimPoint) ||
(geometry.underlying() == AreaEffectSimulation::AesExplosionGeometry_def::EgPoint); (geometry == AreaEffectSimulation::AesExplosionGeometry::EgPoint);
} }
@@ -18,22 +18,22 @@ namespace DdsDbConvert
Database::AesNContamination nContamination(const AreaEffectSimulation::NContamination &src) Database::AesNContamination nContamination(const AreaEffectSimulation::NContamination &src)
{ {
Database::AesNContamination dst; Database::AesNContamination dst;
dst.id = src.id(); dst.id = src.id;
dst.chargeTypeId = src.chargeStruct().chargeTypeId(); dst.chargeTypeId = src.chargeStruct.chargeTypeId;
dst.effectStateId = src.effectStateId(); dst.effectStateId = src.effectStateId;
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.participantId = src.participantId().is_set() ? src.participantId().get() : 0; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0;
dst.effectDuration = src.effectDuration(); dst.effectDuration = src.effectDuration;
dst.effectStart = src.effectStart().is_set() ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.impactPosition.rx() = src.impactPosition().lon(); dst.impactPosition.rx() = src.impactPosition.lon;
dst.impactPosition.ry() = src.impactPosition().lat(); dst.impactPosition.ry() = src.impactPosition.lat;
dst.borderLengthInner = src.borderLengthInner(); dst.borderLengthInner = src.borderLengthInner;
dst.borderLengthOuter = src.borderLengthOuter(); dst.borderLengthOuter = src.borderLengthOuter;
dst.impactRadius = src.impactRadius(); dst.impactRadius = src.impactRadius;
dst.spanAngle = src.spanAngle(); dst.spanAngle = src.spanAngle;
dst.rotationAngle = src.rotationAngle(); dst.rotationAngle = src.rotationAngle;
dst.detonationValue = src.detonationValue(); dst.detonationValue = src.detonationValue;
// dst.priv_entityId; // dst.priv_entityId;
// dst.privNContaminationId; // dst.privNContaminationId;
return dst; return dst;
@@ -42,23 +42,23 @@ Database::AesNContamination nContamination(const AreaEffectSimulation::NContamin
Database::AesBCContamination bcContamination(const BCContamination &src) Database::AesBCContamination bcContamination(const BCContamination &src)
{ {
Database::AesBCContamination dst; Database::AesBCContamination dst;
dst.id = src.id(); dst.id = src.id;
dst.effectStateId = src.effectStateId(); dst.effectStateId = src.effectStateId;
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.participantId = src.participantId().is_set() ? src.participantId().get() : 0; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0;
dst.effectDuration = src.effectDuration(); dst.effectDuration = src.effectDuration;
dst.effectStart = src.effectStart().is_set() ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.impactPosition.rx() = src.impactPosition().lon(); dst.impactPosition.rx() = src.impactPosition.lon;
dst.impactPosition.ry() = src.impactPosition().lat(); dst.impactPosition.ry() = src.impactPosition.lat;
dst.impactRadius = src.impactRadius(); dst.impactRadius = src.impactRadius;
dst.chargeTypeId = src.chargeStruct().chargeTypeId(); dst.chargeTypeId = src.chargeStruct.chargeTypeId;
dst.windSpeed = src.windSpeed(); dst.windSpeed = src.windSpeed;
dst.weatherTimestamp = QDateTime::fromMSecsSinceEpoch(src.weatherTimestamp()); dst.weatherTimestamp = QDateTime::fromMSecsSinceEpoch(src.weatherTimestamp);
dst.propagationDirection = src.propagationDirection(); dst.propagationDirection = src.propagationDirection;
dst.weatherPosition = dst.impactPosition; // initial, is not used during update therefore it's ok here dst.weatherPosition = dst.impactPosition; // initial, is not used during update therefore it's ok here
dst.upperOffset = src.upperOffset(); dst.upperOffset = src.upperOffset;
dst.lowerOffset = src.lowerOffset(); dst.lowerOffset = src.lowerOffset;
// dst.expansionFactor; // dst.expansionFactor;
// dst.isDynamicWeather; // dst.isDynamicWeather;
// dst.priv_entityId; // dst.priv_entityId;
@@ -69,24 +69,24 @@ Database::AesBCContamination bcContamination(const BCContamination &src)
Database::AesExplosionArea explosionArea(const ExplosionArea &src) Database::AesExplosionArea explosionArea(const ExplosionArea &src)
{ {
Database::AesExplosionArea dst; Database::AesExplosionArea dst;
dst.id = src.id(); dst.id = src.id;
dst.effectStateId = src.effectStateId(); dst.effectStateId = src.effectStateId;
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.participantId = src.participantId().is_set() ? src.participantId().get() : 0; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0;
dst.effectDuration = src.effectDuration(); dst.effectDuration = src.effectDuration;
dst.effectStart = src.effectStart().is_set() && src.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.impactPosition.rx() = src.area().cornerBottomLeft().lon(); dst.impactPosition.rx() = src.area.cornerBottomLeft.lon;
dst.impactPosition.ry() = src.area().cornerBottomLeft().lat(); dst.impactPosition.ry() = src.area.cornerBottomLeft.lat;
dst.impactLength = src.area().height(); dst.impactLength = src.area.height;
dst.impactWidth = src.area().width(); dst.impactWidth = src.area.width;
dst.rotationAngle = src.area().rotation(); dst.rotationAngle = src.area.rotation;
dst.chargeTypeId = src.chargeStruct().chargeTypeId(); dst.chargeTypeId = src.chargeStruct.chargeTypeId;
dst.cannonCount = src.cannonCount(); dst.cannonCount = src.cannonCount;
dst.cannonRounds = src.cannonRounds(); dst.cannonRounds = src.cannonRounds;
dst.originalEffectStart = src.originalEffectStart() > 0 ? QDateTime::fromMSecsSinceEpoch(src.originalEffectStart()) : QDateTime(); dst.originalEffectStart = src.originalEffectStart > 0 ? QDateTime::fromMSecsSinceEpoch(src.originalEffectStart) : QDateTime();
dst.originalEffectDuration = src.originalEffectDuration(); dst.originalEffectDuration = src.originalEffectDuration;
dst.remainExplosionNumber = src.remainExplosionNumber(); dst.remainExplosionNumber = src.remainExplosionNumber;
// dst.firePurpose; // dst.firePurpose;
// dst.fireRequestTime; // dst.fireRequestTime;
// dst.priv_entityId; // dst.priv_entityId;
@@ -98,16 +98,16 @@ Database::AesExplosionArea explosionArea(const ExplosionArea &src)
Database::AesExplosionSingle explosionSingle(const ExplosionSingle &src) Database::AesExplosionSingle explosionSingle(const ExplosionSingle &src)
{ {
Database::AesExplosionSingle dst; Database::AesExplosionSingle dst;
dst.id = src.id(); dst.id = src.id;
dst.effectStateId = src.effectStateId(); dst.effectStateId = src.effectStateId;
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.participantId = src.participantId().is_set() ? src.participantId().get() : 0; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0;
dst.effectDuration = src.effectDuration(); dst.effectDuration = src.effectDuration;
dst.effectStart = src.effectStart().is_set() && src.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.impactPosition.rx() = src.impactPosition().lon(); dst.impactPosition.rx() = src.impactPosition.lon;
dst.impactPosition.ry() = src.impactPosition().lat(); dst.impactPosition.ry() = src.impactPosition.lat;
dst.chargeTypeId = src.chargeStruct().chargeTypeId(); dst.chargeTypeId = src.chargeStruct.chargeTypeId;
// dst.priv_entityId; // dst.priv_entityId;
// dst.priv_explosionId; // dst.priv_explosionId;
// dst.privExplosionSingleId; // dst.privExplosionSingleId;
@@ -117,19 +117,19 @@ Database::AesExplosionSingle explosionSingle(const ExplosionSingle &src)
Database::AesMineArea mineArea(const MineArea &src) Database::AesMineArea mineArea(const MineArea &src)
{ {
Database::AesMineArea dst; Database::AesMineArea dst;
dst.id = src.id(); dst.id = src.id;
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.effectStart = src.effectStart().is_set() && src.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.effectDuration = src.effectDuration(); dst.effectDuration = src.effectDuration;
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.chargeTypeId = src.chargeStruct().chargeTypeId(); dst.chargeTypeId = src.chargeStruct.chargeTypeId;
dst.participantId = src.participantId().is_set() ? src.participantId().get() : 0; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0;
dst.density = src.density(); dst.density = src.density;
dst.width = src.width(); dst.width = src.width;
dst.layingProcedureTypeId = src.layingProcedureType(); dst.layingProcedureTypeId = src.layingProcedureType;
dst.isLaidHidden = src.isLaidHidden(); dst.isLaidHidden = src.isLaidHidden;
dst.effectStateId = src.effectStateId(); dst.effectStateId = src.effectStateId;
dst.isCenterLine = src.isCenterLine(); dst.isCenterLine = src.isCenterLine;
// qint32 priv_entityId; // qint32 priv_entityId;
// qint32 priv_mineId; // qint32 priv_mineId;
// qint32 privMineAreaId; // qint32 privMineAreaId;
@@ -138,17 +138,17 @@ Database::AesMineArea mineArea(const MineArea &src)
QVector<Database::AesMineAreaSegment> mineAreaSegments(const MineArea &src) QVector<Database::AesMineAreaSegment> mineAreaSegments(const MineArea &src)
{ {
const std::vector<AreaEffectSimulation::MineSegment> &segments = src.segments(); const std::vector<AreaEffectSimulation::MineSegment> &segments = src.segments;
QVector<Database::AesMineAreaSegment> dbSegments; QVector<Database::AesMineAreaSegment> dbSegments;
dbSegments.reserve(segments.size()); dbSegments.reserve(segments.size());
for (size_t i = 0; i < segments.size(); ++i) for (size_t i = 0; i < segments.size(); ++i)
{ {
Database::AesMineAreaSegment newSegment; Database::AesMineAreaSegment newSegment;
newSegment.elementNumber = i; newSegment.elementNumber = i;
newSegment.mineAreaId = src.id(); // Todo: korrekt? newSegment.mineAreaId = src.id; // Todo: korrekt?
newSegment.id = 0; newSegment.id = 0;
newSegment.startPosition = QPointF(segments[i].positionStart().lon(), segments[i].positionStart().lat()); newSegment.startPosition = QPointF(segments[i].positionStart.lon, segments[i].positionStart.lat);
newSegment.endPosition = QPointF(segments[i].positionEnd().lon(), segments[i].positionEnd().lat()); newSegment.endPosition = QPointF(segments[i].positionEnd.lon, segments[i].positionEnd.lat);
dbSegments << newSegment; dbSegments << newSegment;
} }
return dbSegments; return dbSegments;
@@ -10,7 +10,6 @@
#include <aes.hpp> #include <aes.hpp>
#include <AreaEffectSimulation/logger.h> #include <AreaEffectSimulation/logger.h>
#include <ElevationMap/elevation_map.h>
#include <LtsCoordTrans/lts_coord_trans.h> #include <LtsCoordTrans/lts_coord_trans.h>
#include <LtsCoordinate/lts_coord_vector.h> #include <LtsCoordinate/lts_coord_vector.h>
#include <LtsCoordinate/lts_coordinate.h> #include <LtsCoordinate/lts_coordinate.h>
@@ -36,13 +35,9 @@
// Note: All polygones are open! // Note: All polygones are open!
std::ostream &operator<<(std::ostream &stream, const QVector<QPointF> &value) // operator<< for QVector<QPointF> removed: in Qt6 QVector is an alias of
{ // QList, so the inline operator<<(std::ostream&, const QList<QPointF>&) in
stream << "QVector<QPointF>(" << value.size() << "): "; // INGLLogger.h (pulled in via logger.h) has the identical signature.
for (const QPointF &item : value)
stream << item << ";";
return stream;
}
std::ostream &operator<<(std::ostream &stream, const QVector<LtsCoordTrans::UtmCoordinate> &value) std::ostream &operator<<(std::ostream &stream, const QVector<LtsCoordTrans::UtmCoordinate> &value)
{ {
@@ -86,8 +81,8 @@ namespace Polygons
// regarding ExplosionCluster: // regarding ExplosionCluster:
bool isPointSimilar(AreaEffectSimulation::AesExplosionGeometry geometry) bool isPointSimilar(AreaEffectSimulation::AesExplosionGeometry geometry)
{ {
return (geometry.underlying() == AreaEffectSimulation::AesExplosionGeometry_def::EgAimPoint) return (geometry == AreaEffectSimulation::AesExplosionGeometry::EgAimPoint)
|| (geometry.underlying() == AreaEffectSimulation::AesExplosionGeometry_def::EgPoint); || (geometry == AreaEffectSimulation::AesExplosionGeometry::EgPoint);
} }
// AreaBottomLeft : // AreaBottomLeft :
@@ -427,7 +422,7 @@ QPolygonF explosionClusterArea(const Database::AesExplosionCluster &explosionClu
QPolygonF poly; QPolygonF poly;
const bool bIsPointSimilar = isPointSimilar(explosionCluster.explosionGeometryId); const bool bIsPointSimilar = isPointSimilar(explosionCluster.explosionGeometryId);
if (bIsPointSimilar || explosionCluster.explosionGeometryId.underlying() == AreaEffectSimulation::AesExplosionGeometry_def::EgRadial) if (bIsPointSimilar || explosionCluster.explosionGeometryId == AreaEffectSimulation::AesExplosionGeometry::EgRadial)
{ {
// get center ... (zog isn´t relevant yet) // get center ... (zog isn´t relevant yet)
const double radius = explosionCluster.impactWidth / 2.0; const double radius = explosionCluster.impactWidth / 2.0;
@@ -626,7 +621,7 @@ QPolygonF effectClusterArea(const Database::AesEffectCluster &effectCluster)
QPolygonF poly; QPolygonF poly;
const bool bIsPointSimilar = isPointSimilar(effectCluster.explosionGeometryId); const bool bIsPointSimilar = isPointSimilar(effectCluster.explosionGeometryId);
if (bIsPointSimilar || effectCluster.explosionGeometryId.underlying() == AreaEffectSimulation::AesExplosionGeometry_def::EgRadial) if (bIsPointSimilar || effectCluster.explosionGeometryId == AreaEffectSimulation::AesExplosionGeometry::EgRadial)
{ {
// get center ... (zog isn´t relevant yet) // get center ... (zog isn´t relevant yet)
const double radius = effectCluster.impactWidth / 2.0; const double radius = effectCluster.impactWidth / 2.0;
@@ -962,7 +957,7 @@ QVector<QPointF> explosionClusterSingleExplosionsGAUSS_Mtp(const Database::AesEx
// //
// calculate the subAreas / mtps: // calculate the subAreas / mtps:
// //
if (explosionCluster.explosionGeometryId.underlying() == AreaEffectSimulation::AesExplosionGeometry_def::EgRadial) if (explosionCluster.explosionGeometryId == AreaEffectSimulation::AesExplosionGeometry::EgRadial)
mtps_asUtm = explosionClusterRadialToMtps(areaBlWithTla, numberOfMTPsRequested, firingOriginUtm, centerUtm, &singleWidthOut, &singleHeightOut); mtps_asUtm = explosionClusterRadialToMtps(areaBlWithTla, numberOfMTPsRequested, firingOriginUtm, centerUtm, &singleWidthOut, &singleHeightOut);
else else
mtps_asUtm = explosionClusterAreaToMtps(areaBlWithTla, numberOfMTPsRequested, &singleWidthOut, &singleHeightOut); mtps_asUtm = explosionClusterAreaToMtps(areaBlWithTla, numberOfMTPsRequested, &singleWidthOut, &singleHeightOut);
@@ -1662,14 +1657,14 @@ LtsUtils::QPoint3D calculateFiringUnitCenterNonRecursive(const std::shared_ptr<P
ppmDtc->waitForHistoricalDataParticipant(1000); ppmDtc->waitForHistoricalDataParticipant(1000);
const ParticipantManagement::Participant &partData = ppmDtc->participant(unitParticipantId); const ParticipantManagement::Participant &partData = ppmDtc->participant(unitParticipantId);
if (partData.id() != unitParticipantId) if (partData.id != unitParticipantId)
{ {
ERROR_LOG(logger) << LOGFUNCTION << " ERROR, participant failed for id =" << unitParticipantId; ERROR_LOG(logger) << LOGFUNCTION << " ERROR, participant failed for id =" << unitParticipantId;
return s_invalidPos; return s_invalidPos;
} }
ppmDtc->waitForHistoricalDataParticipantPosition(1000); ppmDtc->waitForHistoricalDataParticipantPosition(1000);
const std::vector<int> &childIds = partData.inferiorIds(); const std::vector<int> &childIds = partData.inferiorIds;
singlePositionsOut.clear(); singlePositionsOut.clear();
singlePositionsOut.reserve(childIds.size()); singlePositionsOut.reserve(childIds.size());
@@ -1681,21 +1676,21 @@ LtsUtils::QPoint3D calculateFiringUnitCenterNonRecursive(const std::shared_ptr<P
for (int childId : qAsConst(childIds)) for (int childId : qAsConst(childIds))
{ {
const ParticipantManagement::ParticipantPosition &childPos = ppmDtc->participantPosition(childId); const ParticipantManagement::ParticipantPosition &childPos = ppmDtc->participantPosition(childId);
if (childPos.participantId() != childId) if (childPos.participantId != childId)
{ {
// may happen in real life: so ERROR_LOG to DEBUG_LOG // may happen in real life: so ERROR_LOG to DEBUG_LOG
DEBUG_LOG(logger) << LOGFUNCTION << " ERROR, participantPosition failed for id =" << childId; DEBUG_LOG(logger) << LOGFUNCTION << " ERROR, participantPosition failed for id =" << childId;
return s_invalidPos; return s_invalidPos;
} }
const Core::GeoPosition &childGeoPos = childPos.pos(); const Core::GeoPosition &childGeoPos = childPos.pos;
singlePositionsOut.emplace_back(childGeoPos); singlePositionsOut.emplace_back(childGeoPos);
const auto utm = LtsCoordTrans::UtmCoordinate::fromGeographic(childGeoPos.lon(), childGeoPos.lat(), utmZone); const auto utm = LtsCoordTrans::UtmCoordinate::fromGeographic(childGeoPos.lon, childGeoPos.lat, utmZone);
if (utmZone == -1) if (utmZone == -1)
utmZone = utm.zone; utmZone = utm.zone;
pos += LtsUtils::QPoint3D(utm.x, utm.y, childGeoPos.z()); pos += LtsUtils::QPoint3D(utm.x, utm.y, childGeoPos.z);
++childCount; ++childCount;
} // for } // for
@@ -1743,7 +1738,7 @@ QVector<LtsCoordTrans::UtmCoordinate> geoVecToUtm(const std::vector<Core::GeoPos
utmVec.reserve(vecPos.size()); utmVec.reserve(vecPos.size());
for (const auto &pos : vecPos) for (const auto &pos : vecPos)
{ {
const auto utm = LtsCoordTrans::UtmCoordinate::fromGeographic(pos.lon(), pos.lat(), utmZone); const auto utm = LtsCoordTrans::UtmCoordinate::fromGeographic(pos.lon, pos.lat, utmZone);
if (utmZone == -1) if (utmZone == -1)
utmZone = utm.zone; utmZone = utm.zone;
utmVec.append(utm); utmVec.append(utm);
@@ -1757,7 +1752,7 @@ QVector<QPointF> geoVecToUtmPointF(const std::vector<Core::GeoPosition2D> &vecPo
points.reserve(vecPos.size()); points.reserve(vecPos.size());
for (const auto &pos : vecPos) for (const auto &pos : vecPos)
{ {
const auto utm = LtsCoordTrans::UtmCoordinate::fromGeographic(pos.lon(), pos.lat(), utmZone); const auto utm = LtsCoordTrans::UtmCoordinate::fromGeographic(pos.lon, pos.lat, utmZone);
if (utmZone == -1) if (utmZone == -1)
utmZone = utm.zone; utmZone = utm.zone;
points.append(QPointF(utm.x, utm.y)); points.append(QPointF(utm.x, utm.y));
@@ -69,14 +69,14 @@ static void fillData(const ExplosionSingleCentralModifyRequest &src, Database::A
fillGeometryData(src, dst); fillGeometryData(src, dst);
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name());
dst.effectStart = src.effectStart().is_set() && src.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.effectDuration = 1000; // 1sec dst.effectDuration = 1000; // 1sec
dst.chargeTypeId = src.chargeTypeId(); dst.chargeTypeId = src.chargeTypeId();
dst.altitude = src.altitude(); dst.altitude = src.altitude();
dst.firePurpose = QString::fromStdString(src.purpose()); dst.firePurpose = QString::fromStdString(src.purpose());
dst.fireRequestTime = QDateTime::fromMSecsSinceEpoch(src.fireRequestTime()); dst.fireRequestTime = QDateTime::fromMSecsSinceEpoch(src.fireRequestTime());
dst.effectMarkingInTa = src.effectMarkingInTa(); dst.effectMarkingInTa = src.effectMarkingInTa();
dst.externalId = src.externalId().is_set() ? src.externalId().get() : 0; dst.externalId = src.externalId.is_set() ? src.externalId.get() : 0;
dst.angle = src.angle(); dst.angle = src.angle();
dst.fuseTypeId = src.fuseType().underlying(); dst.fuseTypeId = src.fuseType().underlying();
dst.participantId = src.participantId(); dst.participantId = src.participantId();
@@ -28,8 +28,8 @@ bool DtcImplCustom::aesItemViewFromEntityId(int entityId, AesType aesType, AesIt
} }
for (const auto &sample : m_dtcAesItemView->readAlive()) for (const auto &sample : m_dtcAesItemView->readAlive())
{ {
if ( (sample.data().aesItemId() == entityId) && if ( (sample.data().aesItemId == entityId) &&
( (sample.data().aesTypeId() == aesType) || (aesType==AesType_def::AtUnknown) ) ( (sample.data().aesTypeId == aesType) || (aesType==AesType::AtUnknown) )
) )
{ {
aesItemView = sample.data(); aesItemView = sample.data();
@@ -42,71 +42,71 @@ bool DtcImplCustom::aesItemViewFromEntityId(int entityId, AesType aesType, AesIt
bool DtcImplCustom::aesItemFromId(int aesId, AesItem &aesItem) bool DtcImplCustom::aesItemFromId(int aesId, AesItem &aesItem)
{ {
aesItem = nContamination(aesId); aesItem = nContamination(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
aesItem = bCContamination(aesId); aesItem = bCContamination(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
aesItem = explosionArea(aesId); aesItem = explosionArea(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
aesItem = explosionCluster(aesId); aesItem = explosionCluster(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
aesItem = explosionSingle(aesId); aesItem = explosionSingle(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
aesItem = mineArea(aesId); aesItem = mineArea(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
aesItem = dangerArea(aesId); aesItem = dangerArea(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
aesItem = functionalArea(aesId); aesItem = functionalArea(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
aesItem = mineCorridor(aesId); aesItem = mineCorridor(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
aesItem = borderline(aesId); aesItem = borderline(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
aesItem = technicalArea(aesId); aesItem = technicalArea(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
aesItem = airSupportImpact(aesId); aesItem = airSupportImpact(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
aesItem = gasPipe(aesId); aesItem = gasPipe(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
aesItem = boobyTrap(aesId); aesItem = boobyTrap(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
aesItem = dusSingleMine(aesId); aesItem = dusSingleMine(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
aesItem = offRouteMine(aesId); aesItem = offRouteMine(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
aesItem = effectCluster(aesId); aesItem = effectCluster(aesId);
if (aesItem.id() > 0) if (aesItem.id > 0)
return true; return true;
DEBUG_LOG(m_logger) << "No aesItem for aesId=" << aesId << " found"; DEBUG_LOG(m_logger) << "No aesItem for aesId=" << aesId << " found";
@@ -122,76 +122,76 @@ AreaEffectSimulation::AesType DtcImplCustom::aesItemIdFromExternalId(long long e
aesItemId = 0; aesItemId = 0;
for (const AreaEffectSimulation::BCContamination &bcCont : qAsConst(bcConts)) for (const AreaEffectSimulation::BCContamination &bcCont : qAsConst(bcConts))
{ {
if (bcCont.externalId() == externalId) if (bcCont.externalId == externalId)
{ {
if (bcCont.id() > aesItemId) if (bcCont.id > aesItemId)
aesItemId = bcCont.id(); aesItemId = bcCont.id;
} }
} }
if (aesItemId > 0) if (aesItemId > 0)
return AreaEffectSimulation::AesType_def::AtBCContamination; return AreaEffectSimulation::AesType::AtBCContamination;
QMap<qint32, AreaEffectSimulation::NContamination> nConts = nContaminations(); QMap<qint32, AreaEffectSimulation::NContamination> nConts = nContaminations();
for (const AreaEffectSimulation::NContamination &nCont: qAsConst(nConts)) for (const AreaEffectSimulation::NContamination &nCont: qAsConst(nConts))
{ {
if (nCont.externalId() == externalId) if (nCont.externalId == externalId)
{ {
if (nCont.id() > aesItemId) if (nCont.id > aesItemId)
aesItemId = nCont.id(); aesItemId = nCont.id;
} }
} }
if (aesItemId > 0) if (aesItemId > 0)
return AreaEffectSimulation::AesType_def::AtNContamination; return AreaEffectSimulation::AesType::AtNContamination;
QMap<qint32, AreaEffectSimulation::ExplosionArea> explAreas = explosionAreas(); QMap<qint32, AreaEffectSimulation::ExplosionArea> explAreas = explosionAreas();
for (const AreaEffectSimulation::ExplosionArea &explArea : qAsConst(explAreas)) for (const AreaEffectSimulation::ExplosionArea &explArea : qAsConst(explAreas))
{ {
if (explArea.externalId() == externalId) if (explArea.externalId == externalId)
{ {
if (explArea.id() > aesItemId) if (explArea.id > aesItemId)
aesItemId = explArea.id(); aesItemId = explArea.id;
} }
} }
if (aesItemId > 0) if (aesItemId > 0)
return AreaEffectSimulation::AesType_def::AtExplosionArea; return AreaEffectSimulation::AesType::AtExplosionArea;
QMap<qint32, AreaEffectSimulation::ExplosionSingle> explSingles = explosionSingles(); QMap<qint32, AreaEffectSimulation::ExplosionSingle> explSingles = explosionSingles();
for (const AreaEffectSimulation::ExplosionSingle &explSingle : qAsConst(explSingles)) for (const AreaEffectSimulation::ExplosionSingle &explSingle : qAsConst(explSingles))
{ {
if (explSingle.externalId() == externalId) if (explSingle.externalId == externalId)
{ {
if (explSingle.id() > aesItemId) if (explSingle.id > aesItemId)
aesItemId = explSingle.id(); aesItemId = explSingle.id;
} }
} }
if (aesItemId > 0) if (aesItemId > 0)
return AreaEffectSimulation::AesType_def::AtExplosionSingle; return AreaEffectSimulation::AesType::AtExplosionSingle;
QMap<qint32, AreaEffectSimulation::MineArea> mAreas = mineAreas(); QMap<qint32, AreaEffectSimulation::MineArea> mAreas = mineAreas();
for(const AreaEffectSimulation::MineArea &mArea : qAsConst(mAreas)) for(const AreaEffectSimulation::MineArea &mArea : qAsConst(mAreas))
{ {
if (mArea.externalId() == externalId) if (mArea.externalId == externalId)
{ {
if (mArea.id() > aesItemId) if (mArea.id > aesItemId)
aesItemId = mArea.id(); aesItemId = mArea.id;
} }
} }
if (aesItemId > 0) if (aesItemId > 0)
return AreaEffectSimulation::AesType_def::AtMineArea; return AreaEffectSimulation::AesType::AtMineArea;
QMap<qint32, AreaEffectSimulation::MineCorridor> mCorridors = mineCorridors(); QMap<qint32, AreaEffectSimulation::MineCorridor> mCorridors = mineCorridors();
for (const AreaEffectSimulation::MineCorridor &mCorridor : qAsConst(mCorridors)) for (const AreaEffectSimulation::MineCorridor &mCorridor : qAsConst(mCorridors))
{ {
if (mCorridor.externalId() == externalId) if (mCorridor.externalId == externalId)
{ {
if (mCorridor.id() > aesItemId) if (mCorridor.id > aesItemId)
aesItemId = mCorridor.id(); aesItemId = mCorridor.id;
} }
} }
if (aesItemId > 0) if (aesItemId > 0)
return AreaEffectSimulation::AesType_def::AtMineCorridor; return AreaEffectSimulation::AesType::AtMineCorridor;
return AreaEffectSimulation::AesType_def::AtUnknown; return AreaEffectSimulation::AesType::AtUnknown;
} }
bool DtcImplCustom::triggeredImpactsFromEntityId(int entityId, AesType aesType, TriggeredImpacts &triggeredImpacts) bool DtcImplCustom::triggeredImpactsFromEntityId(int entityId, AesType aesType, TriggeredImpacts &triggeredImpacts)
@@ -206,8 +206,8 @@ bool DtcImplCustom::triggeredImpactsFromEntityId(int entityId, AesType aesType,
} }
for (const auto &sample : m_dtcTriggeredImpacts->readAlive()) for (const auto &sample : m_dtcTriggeredImpacts->readAlive())
{ {
if ( (sample.data().aesItemId() == entityId) && if ( (sample.data().aesItemId == entityId) &&
( (sample.data().aesTypeId() == aesType) || (aesType==AesType_def::AtUnknown) ) ( (sample.data().aesTypeId == aesType) || (aesType==AesType::AtUnknown) )
) )
{ {
triggeredImpacts = sample.data(); triggeredImpacts = sample.data();
@@ -229,8 +229,8 @@ bool DtcImplCustom::effectsFromEntityId(int entityId, AesType aesType, Effects &
} }
for (const auto &sample : m_dtcEffects->readAlive()) for (const auto &sample : m_dtcEffects->readAlive())
{ {
if ( (sample.data().aesItemId() == entityId) && if ( (sample.data().aesItemId == entityId) &&
( (sample.data().aesTypeId() == aesType) || (aesType==AesType_def::AtUnknown) ) ( (sample.data().aesTypeId == aesType) || (aesType==AesType::AtUnknown) )
) )
{ {
effects = sample.data(); effects = sample.data();
@@ -244,14 +244,14 @@ int DtcImplCustom::partyForDusMine(int dusMineId) const
{ {
for (const auto &dms : m_dusMineStateCont) for (const auto &dms : m_dusMineStateCont)
{ {
for (const DusMine &dm : dms.mines()) for (const DusMine &dm : dms.mines)
{ {
if (dm.eqId() == dusMineId) if (dm.eqId == dusMineId)
{ {
auto it = m_mineAreaCont.find(dms.id()); auto it = m_mineAreaCont.find(dms.id);
if (it == m_mineAreaCont.end()) if (it == m_mineAreaCont.end())
return 1; return 1;
return it.value().partyId().is_set() ? it.value().partyId().get() : 1; return it.value().partyId.is_set() ? it.value().partyId.get() : 1;
} }
} }
} }
@@ -263,8 +263,8 @@ QString DtcImplCustom::aesItemNameFromEntityId(int entityId)
{ {
AreaEffectSimulation::AesItem aesItem; AreaEffectSimulation::AesItem aesItem;
aesItemFromId(entityId, aesItem); aesItemFromId(entityId, aesItem);
if (!aesItem.name().empty()) if (!aesItem.name.empty())
return QString::fromStdString(aesItem.name()); return QString::fromStdString(aesItem.name);
//else use DAO //else use DAO
if (!m_dao) if (!m_dao)
@@ -355,8 +355,8 @@ QVector<TrajectoryTimeAware> DtcImplCustom::trajectoriesTimeAwareFromOriginatorI
for (const AreaEffectSimulation::TrajectoryTimeAware &trajectoryTimeAware : qAsConst(trajectoryTimeAwareMap)) for (const AreaEffectSimulation::TrajectoryTimeAware &trajectoryTimeAware : qAsConst(trajectoryTimeAwareMap))
{ {
// be aware of: [E01562-259] use originatorId, originatorTypeId (instead of aesItemId, aesTypeId) // be aware of: [E01562-259] use originatorId, originatorTypeId (instead of aesItemId, aesTypeId)
if ((trajectoryTimeAware.originatorId() == originatorId) && if ((trajectoryTimeAware.originatorId == originatorId) &&
(trajectoryTimeAware.originatorTypeId() == originatorTypeId)) (trajectoryTimeAware.originatorTypeId == originatorTypeId))
foundTrajectories.append(trajectoryTimeAware); foundTrajectories.append(trajectoryTimeAware);
} }
return foundTrajectories; return foundTrajectories;
@@ -141,7 +141,7 @@ qint64 DdsHandler::currentPartitionTimeMSec() const
void DdsHandler::onPartitionTimeChanged(const Core::PartitionTime &currentTime) void DdsHandler::onPartitionTimeChanged(const Core::PartitionTime &currentTime)
{ {
m_elapsedTimer.restart(); m_elapsedTimer.restart();
m_currentTimeMSec = currentTime.timeStamp(); m_currentTimeMSec = currentTime.timeStamp;
} }
ProjectDataManagement::ChargeType DdsHandler::getChargeType(int chargeTypeId) ProjectDataManagement::ChargeType DdsHandler::getChargeType(int chargeTypeId)
@@ -91,7 +91,7 @@ void EffectorStateMachine::stopAllTimer()
QString EffectorStateMachine::getStateStr(AreaEffectSimulation::AesEffectorState state) QString EffectorStateMachine::getStateStr(AreaEffectSimulation::AesEffectorState state)
{ {
switch (state.underlying()) switch (state)
{ {
case AreaEffectSimulation::AesEffectorState::EsNotReadyToFire: case AreaEffectSimulation::AesEffectorState::EsNotReadyToFire:
return QStringLiteral("EstNotReadyToFire"); return QStringLiteral("EstNotReadyToFire");
@@ -12,7 +12,7 @@ namespace AreaEffectSimulation
{ {
HandlerAirSupportImpact::HandlerAirSupportImpact(MainHandler *mainHandler) HandlerAirSupportImpact::HandlerAirSupportImpact(MainHandler *mainHandler)
: HandlerBaseTmpl<ObjectAirSupportImpact>(mainHandler, QStringLiteral("AirSupportImpact"), s_areaCount[AesType::AtAirSupportImpact], s_areaCountCentral[AesType::AtAirSupportImpact]) : HandlerBaseTmpl<ObjectAirSupportImpact>(mainHandler, QStringLiteral("AirSupportImpact"), s_areaCount[static_cast<int>(AesType::AtAirSupportImpact)], s_areaCountCentral[static_cast<int>(AesType::AtAirSupportImpact)])
, Interface::Fts::AirSupportImpactModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::AirSupportImpactModifyRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::AirSupportImpactRemoveRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::AirSupportImpactRemoveRequestHandler(mainHandler->dds()->fts())
{} {}
@@ -39,7 +39,7 @@ bool HandlerAirSupportImpact::init()
ERROR_LOG(m_logger) << ret(); ERROR_LOG(m_logger) << ret();
return false; return false;
} }
if (totalAreas() >= s_maxActiveAreas[AesType::AtAirSupportImpact]) if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtAirSupportImpact)])
{ {
ERROR_LOG(m_logger) << "More active air support in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active air support in database than allowed - ignoring the rest!";
delete ifs; delete ifs;
@@ -57,29 +57,29 @@ bool HandlerAirSupportImpact::init()
int HandlerAirSupportImpact::totalAreas() const int HandlerAirSupportImpact::totalAreas() const
{ {
return s_areaCount[AesType::AtAirSupportImpact]; return s_areaCount[static_cast<int>(AesType::AtAirSupportImpact)];
} }
int HandlerAirSupportImpact::totalAreasCentral() const int HandlerAirSupportImpact::totalAreasCentral() const
{ {
return s_areaCountCentral[AesType::AtAirSupportImpact]; return s_areaCountCentral[static_cast<int>(AesType::AtAirSupportImpact)];
} }
static void fillData(const AirSupportImpactModifyRequest &src, Database::AesAirSupportImpact &dst) static void fillData(const AirSupportImpactModifyRequest &src, Database::AesAirSupportImpact &dst)
{ {
if (src.id() < 0) // is the id given as negative? set id -> used by OC-Laptop if (src.id < 0) // is the id given as negative? set id -> used by OC-Laptop
dst.id = src.id(); dst.id = src.id;
dst.impactPosition.rx() = src.impactPosition().lon(); dst.impactPosition.rx() = src.impactPosition.lon;
dst.impactPosition.ry() = src.impactPosition().lat(); dst.impactPosition.ry() = src.impactPosition.lat;
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.effectStart = src.effectStart().is_set() && src.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.effectDuration = 1000; // 1sec dst.effectDuration = 1000; // 1sec
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.chargeTypeId = src.chargeTypeId(); dst.chargeTypeId = src.chargeTypeId;
dst.participantId = src.participantId().is_set() ? src.participantId().get() : 0; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0;
dst.flightTime = src.flightTime(); dst.flightTime = src.flightTime;
dst.externalId = src.externalId().is_set() ? src.externalId().get() : 0; dst.externalId = src.externalId.is_set() ? src.externalId.get() : 0;
} }
void HandlerAirSupportImpact::onAirSupportImpactModifyRequest(const rti::core::SampleIdentity &cookie, void HandlerAirSupportImpact::onAirSupportImpactModifyRequest(const rti::core::SampleIdentity &cookie,
@@ -96,7 +96,7 @@ void HandlerAirSupportImpact::onAirSupportImpactModifyRequest(const rti::core::S
Core::FunctionReplyObject HandlerAirSupportImpact::airSupportImpactCreateRequest(const AirSupportImpactModifyRequest &request) Core::FunctionReplyObject HandlerAirSupportImpact::airSupportImpactCreateRequest(const AirSupportImpactModifyRequest &request)
{ {
if (totalAreas() >= s_maxActiveAreas[AesType::AtAirSupportImpact] && request.effectStart().is_set()) if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtAirSupportImpact)] && request.effectStart.is_set())
{ {
ERROR_LOG(m_logger) << LOGFUNCTION << " Too many active air support impacts, request:" << request; ERROR_LOG(m_logger) << LOGFUNCTION << " Too many active air support impacts, request:" << request;
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active air support impacts.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active air support impacts."));
@@ -135,13 +135,13 @@ Core::FunctionReplyObject HandlerAirSupportImpact::airSupportImpactCreateRequest
Core::FunctionReplyObject HandlerAirSupportImpact::airSupportImpactModifyRequest(const AirSupportImpactModifyRequest &request) Core::FunctionReplyObject HandlerAirSupportImpact::airSupportImpactModifyRequest(const AirSupportImpactModifyRequest &request)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
if (request.id() == 0 || ((request.id() < 0) && (getObjectFromMap(m_objectMap, std::abs(request.id()), ret) == nullptr))) if (request.id == 0 || ((request.id < 0) && (getObjectFromMap(m_objectMap, std::abs(request.id), ret) == nullptr)))
{ {
DEBUG_LOG(m_logger) << LOGFUNCTION << " handle as createRequest, request:" << request; DEBUG_LOG(m_logger) << LOGFUNCTION << " handle as createRequest, request:" << request;
return airSupportImpactCreateRequest(request); return airSupportImpactCreateRequest(request);
} }
ObjectAirSupportImpact *ifs = getObjectFromMap(m_objectMap, std::abs(request.id()), ret); ObjectAirSupportImpact *ifs = getObjectFromMap(m_objectMap, std::abs(request.id), ret);
if (ifs == nullptr) if (ifs == nullptr)
{ {
ERROR_LOG(m_logger) << LOGFUNCTION << " getObjectFromMap failed, request:" << request; ERROR_LOG(m_logger) << LOGFUNCTION << " getObjectFromMap failed, request:" << request;
@@ -150,8 +150,8 @@ Core::FunctionReplyObject HandlerAirSupportImpact::airSupportImpactModifyRequest
// Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war // Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war
// vorher noch ohne Wirkbeginn // vorher noch ohne Wirkbeginn
if (totalAreas() >= s_maxActiveAreas[AesType::AtAirSupportImpact] if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtAirSupportImpact)]
&& request.effectStart().is_set() && request.effectStart.is_set()
&& !ifs->isActivationTimeSet() && !ifs->isActivationTimeSet()
&& !ifs->isObjectModifiable()) && !ifs->isObjectModifiable())
{ {
@@ -161,7 +161,7 @@ Core::FunctionReplyObject HandlerAirSupportImpact::airSupportImpactModifyRequest
Database::AesAirSupportImpact aes(ifs->data()); Database::AesAirSupportImpact aes(ifs->data());
fillData(request, aes); fillData(request, aes);
if (request.id() < 0 && checkStateForSfm(ifs)) if (request.id < 0 && checkStateForSfm(ifs))
{ {
DEBUG_LOG(m_logger) << "Overwrite air support impact Effect State for OC"; DEBUG_LOG(m_logger) << "Overwrite air support impact Effect State for OC";
aes.effectStateId = AesEffectState::EsPrepared; aes.effectStateId = AesEffectState::EsPrepared;
@@ -70,10 +70,10 @@ HandlerBase::HandlerBase(MainHandler *mainHandler,
s_mineAreaCreationInterval = nglSettings->settings()->value( s_mineAreaCreationInterval = nglSettings->settings()->value(
QStringLiteral("AES/mineAreaCreationInterval"),20000).toInt(); QStringLiteral("AES/mineAreaCreationInterval"),20000).toInt();
s_maxActiveAreas[AesType::AtBCContamination] = nglSettings->settings()->value( s_maxActiveAreas[static_cast<int>(AesType::AtBCContamination)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralBCContamination"),defaultMaxDecBCNContaminations).toInt(); QStringLiteral("AES/maxActiveDecentralBCContamination"),defaultMaxDecBCNContaminations).toInt();
s_maxActiveAreas[AesType::AtNContamination] = nglSettings->settings()->value( s_maxActiveAreas[static_cast<int>(AesType::AtNContamination)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralNContamination"),defaultMaxDecBCNContaminations).toInt(); QStringLiteral("AES/maxActiveDecentralNContamination"),defaultMaxDecBCNContaminations).toInt();
// Keep equal as the totalAreas sums the actual active areas up and compares to either N or BC // Keep equal as the totalAreas sums the actual active areas up and compares to either N or BC
@@ -83,15 +83,15 @@ HandlerBase::HandlerBase(MainHandler *mainHandler,
// Keep equal as the totalAreas sums the actual active areas up and compares to either Area or Single // Keep equal as the totalAreas sums the actual active areas up and compares to either Area or Single
// It is not distinguished any more. Therefore 50 (as the sum) ist the actual value for All Explosion Areas // It is not distinguished any more. Therefore 50 (as the sum) ist the actual value for All Explosion Areas
s_maxActiveAreas[AesType::AtExplosionArea] = nglSettings->settings()->value( s_maxActiveAreas[static_cast<int>(AesType::AtExplosionArea)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralExplosionAreas"),defaultMaxDecExplosions).toInt(); QStringLiteral("AES/maxActiveDecentralExplosionAreas"),defaultMaxDecExplosions).toInt();
s_maxActiveAreas[AesType::AtExplosionSingle] = nglSettings->settings()->value( s_maxActiveAreas[static_cast<int>(AesType::AtExplosionSingle)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralExplosionSingle"),defaultMaxDecExplosions).toInt(); QStringLiteral("AES/maxActiveDecentralExplosionSingle"),defaultMaxDecExplosions).toInt();
s_maxActiveAreas[AesType::AtExplosionCluster] = nglSettings->settings()->value( s_maxActiveAreas[static_cast<int>(AesType::AtExplosionCluster)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralExplosionClusters"),defaultMaxDecExplosionCluster).toInt(); QStringLiteral("AES/maxActiveDecentralExplosionClusters"),defaultMaxDecExplosionCluster).toInt();
s_maxActiveAreas[AesType::AtMineArea] = nglSettings->settings()->value( s_maxActiveAreas[static_cast<int>(AesType::AtMineArea)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralMineAreas"),defaultMaxDecMineAreas).toInt(); QStringLiteral("AES/maxActiveDecentralMineAreas"),defaultMaxDecMineAreas).toInt();
@@ -105,60 +105,60 @@ HandlerBase::HandlerBase(MainHandler *mainHandler,
s_safePzAbwWMiCount = nglSettings->settings()->value( s_safePzAbwWMiCount = nglSettings->settings()->value(
QStringLiteral("AES/reservePzAbwWMi"),defaultReservePzAbwWMi).toInt(); QStringLiteral("AES/reservePzAbwWMi"),defaultReservePzAbwWMi).toInt();
s_maxActiveAreas[AesType::AtFunctionalArea] = nglSettings->settings()->value( s_maxActiveAreas[static_cast<int>(AesType::AtFunctionalArea)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralFunctionalAreas"),defaultMaxDecFunctionalAreas).toInt(); QStringLiteral("AES/maxActiveDecentralFunctionalAreas"),defaultMaxDecFunctionalAreas).toInt();
s_maxActiveAreas[AesType::AtTechnicalArea] = nglSettings->settings()->value( s_maxActiveAreas[static_cast<int>(AesType::AtTechnicalArea)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralTechnicalAreas"),defaultMaxDecTechnicalAreas).toInt(); QStringLiteral("AES/maxActiveDecentralTechnicalAreas"),defaultMaxDecTechnicalAreas).toInt();
s_maxActiveAreas[AesType::AtGasPipe] = nglSettings->settings()->value( s_maxActiveAreas[static_cast<int>(AesType::AtGasPipe)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralGasPipes"),defaultMaxDecGasPipes).toInt(); QStringLiteral("AES/maxActiveDecentralGasPipes"),defaultMaxDecGasPipes).toInt();
s_maxActiveAreas[AesType::AtDusSingleMine] = nglSettings->settings()->value( s_maxActiveAreas[static_cast<int>(AesType::AtDusSingleMine)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveDecentralDusSingleMines"),defaultMaxDecDusSingleMines).toInt(); QStringLiteral("AES/maxActiveDecentralDusSingleMines"),defaultMaxDecDusSingleMines).toInt();
s_maxActiveAreas[AesType::AtAirSupportImpact] = 2147483647; // unlimited s_maxActiveAreas[static_cast<int>(AesType::AtAirSupportImpact)] = 2147483647; // unlimited
// Central // Central
s_maxActiveAreasCentral[AesType::AtBoobyTrap] = nglSettings->settings()->value( s_maxActiveAreasCentral[static_cast<int>(AesType::AtBoobyTrap)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralBoobyTraps"),defaultMaxCenBoobyTraps).toInt(); QStringLiteral("AES/maxActiveCentralBoobyTraps"),defaultMaxCenBoobyTraps).toInt();
s_maxActiveAreasCentral[AesType::AtBCContamination] = nglSettings->settings()->value( s_maxActiveAreasCentral[static_cast<int>(AesType::AtBCContamination)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralBCContamination"),defaultMaxCenBCNContaminations).toInt(); QStringLiteral("AES/maxActiveCentralBCContamination"),defaultMaxCenBCNContaminations).toInt();
s_maxActiveAreasCentral[AesType::AtNContamination] = nglSettings->settings()->value( s_maxActiveAreasCentral[static_cast<int>(AesType::AtNContamination)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralNContamination"),defaultMaxCenBCNContaminations).toInt(); QStringLiteral("AES/maxActiveCentralNContamination"),defaultMaxCenBCNContaminations).toInt();
// Keep equal as the totalAreas sums the actual active areas up and compares to either Area or Single // Keep equal as the totalAreas sums the actual active areas up and compares to either Area or Single
// It is not distinguished any more. Therefore 200 (as the sum) ist the actual value for All Explosion Areas // It is not distinguished any more. Therefore 200 (as the sum) ist the actual value for All Explosion Areas
s_maxActiveAreasCentral[AesType::AtExplosionArea] = nglSettings->settings()->value( s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionArea)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralExplosionAreas"),defaultMaxCenExplosions).toInt(); QStringLiteral("AES/maxActiveCentralExplosionAreas"),defaultMaxCenExplosions).toInt();
s_maxActiveAreasCentral[AesType::AtExplosionSingle] = nglSettings->settings()->value( s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionSingle)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralExplosionSingle"),defaultMaxCenExplosions).toInt(); QStringLiteral("AES/maxActiveCentralExplosionSingle"),defaultMaxCenExplosions).toInt();
s_maxActiveAreasCentral[AesType::AtOffRouteMine] = nglSettings->settings()->value( s_maxActiveAreasCentral[static_cast<int>(AesType::AtOffRouteMine)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralOffRouteMines"),defaultMaxCenOffRouteMines).toInt(); QStringLiteral("AES/maxActiveCentralOffRouteMines"),defaultMaxCenOffRouteMines).toInt();
s_maxActiveAreasCentral[AesType::AtMineArea] = nglSettings->settings()->value( s_maxActiveAreasCentral[static_cast<int>(AesType::AtMineArea)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralMineAreas"),defaultMaxCenMineAreas).toInt(); QStringLiteral("AES/maxActiveCentralMineAreas"),defaultMaxCenMineAreas).toInt();
s_maxActiveAreasCentral[AesType::AtFunctionalArea] = nglSettings->settings()->value( s_maxActiveAreasCentral[static_cast<int>(AesType::AtFunctionalArea)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralFunctionalAreas"),defaultMaxCenFunctionalAreas).toInt(); QStringLiteral("AES/maxActiveCentralFunctionalAreas"),defaultMaxCenFunctionalAreas).toInt();
s_maxActiveAreasCentral[AesType::AtTechnicalArea] = nglSettings->settings()->value( s_maxActiveAreasCentral[static_cast<int>(AesType::AtTechnicalArea)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralTechnicalAreas"),defaultMaxCenTechnicalAreas).toInt(); QStringLiteral("AES/maxActiveCentralTechnicalAreas"),defaultMaxCenTechnicalAreas).toInt();
s_maxActiveAreasCentral[AesType::AtGasPipe] = nglSettings->settings()->value( s_maxActiveAreasCentral[static_cast<int>(AesType::AtGasPipe)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralGasPipes"),defaultMaxCenGasPipes).toInt(); QStringLiteral("AES/maxActiveCentralGasPipes"),defaultMaxCenGasPipes).toInt();
s_maxActiveAreasCentral[AesType::AtDusSingleMine] = nglSettings->settings()->value( s_maxActiveAreasCentral[static_cast<int>(AesType::AtDusSingleMine)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralDusSingleMines"),defaultMaxCenDusSingleMines).toInt(); QStringLiteral("AES/maxActiveCentralDusSingleMines"),defaultMaxCenDusSingleMines).toInt();
s_maxActiveAreasCentral[AesType::AtExplosionCluster] = nglSettings->settings()->value( s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionCluster)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralExplosionClusters"),defaultMaxCenExplosionCluster).toInt(); QStringLiteral("AES/maxActiveCentralExplosionClusters"),defaultMaxCenExplosionCluster).toInt();
s_maxActiveAreasCentral[AesType::AtEffectCluster] = nglSettings->settings()->value( s_maxActiveAreasCentral[static_cast<int>(AesType::AtEffectCluster)] = nglSettings->settings()->value(
QStringLiteral("AES/maxActiveCentralEffectClusters"),defaultMaxCenEffectCluster).toInt(); QStringLiteral("AES/maxActiveCentralEffectClusters"),defaultMaxCenEffectCluster).toInt();
s_maxActiveAreasCentral[AesType::AtAirSupportImpact] = s_maxActiveAreasCentral[static_cast<int>(AesType::AtAirSupportImpact)] =
2147483647; // unlimited 2147483647; // unlimited
} }
@@ -57,7 +57,7 @@ protected:
bool isLockedTopic(int id) bool isLockedTopic(int id)
{ {
AreaEffectSimulation::AesItem data; AreaEffectSimulation::AesItem data;
data.id(id); data.id = id;
int exId = m_mainHandler->dds()->ddsConnector()->getPartitionId(); int exId = m_mainHandler->dds()->ddsConnector()->getPartitionId();
return m_mainHandler->dds()->topicLockMaster()->isLocked<AreaEffectSimulation::AesItem>(data, exId); return m_mainHandler->dds()->topicLockMaster()->isLocked<AreaEffectSimulation::AesItem>(data, exId);
} }
@@ -187,30 +187,30 @@ public:
return Core::FunctionReplyObject(id, tr_lts("dds", "Effect simulation with id %1 not found.")).arg(id); return Core::FunctionReplyObject(id, tr_lts("dds", "Effect simulation with id %1 not found.")).arg(id);
bool succ = false; bool succ = false;
switch (effectState.underlying()) switch (effectState)
{ {
case AesEffectState_def::EsReceived: case AesEffectState::EsReceived:
succ = ifs->trySwitchToReceived(); succ = ifs->trySwitchToReceived();
break; break;
case AesEffectState_def::EsCreated: case AesEffectState::EsCreated:
succ = ifs->trySwitchToCreated(); succ = ifs->trySwitchToCreated();
break; break;
case AesEffectState_def::EsPrepared: case AesEffectState::EsPrepared:
succ = ifs->trySwitchToPrepared(); succ = ifs->trySwitchToPrepared();
break; break;
case AesEffectState_def::EsFired: case AesEffectState::EsFired:
succ = ifs->trySwitchToFired(); succ = ifs->trySwitchToFired();
break; break;
case AesEffectState_def::EsActivated: case AesEffectState::EsActivated:
succ = !ifs->activateObjectNow().error(); succ = !ifs->activateObjectNow().error();
break; break;
case AesEffectState_def::EsPaused: case AesEffectState::EsPaused:
succ = ifs->trySwitchToPaused(); succ = ifs->trySwitchToPaused();
break; break;
case AesEffectState_def::EsExpired: case AesEffectState::EsExpired:
succ = ifs->trySwitchToExpired(); succ = ifs->trySwitchToExpired();
break; break;
case AesEffectState_def::EsRemoved: case AesEffectState::EsRemoved:
succ = ifs->trySwitchToRemoved(); succ = ifs->trySwitchToRemoved();
break; break;
default: default:
@@ -218,14 +218,14 @@ public:
} }
if (succ) if (succ)
return Core::FunctionReplyObject(); return Core::FunctionReplyObject();
return Core::FunctionReplyObject(id, tr_lts("dds", "Could not switch effect simulation with id %1 to state with id %2.")).arg(id).arg(effectState.underlying()); return Core::FunctionReplyObject(id, tr_lts("dds", "Could not switch effect simulation with id %1 to state with id %2.")).arg(id).arg(effectState);
} }
Core::FunctionReplyObject aesItemRemove(const Core::RemoveElementRequest &request) Core::FunctionReplyObject aesItemRemove(const Core::RemoveElementRequest &request)
{ {
DEBUG_LOG(m_logger) << "on" << m_typeName << "RemoveRequest: " << request; DEBUG_LOG(m_logger) << "on" << m_typeName << "RemoveRequest: " << request;
int id = request.id(); int id = request.id;
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
Obj *ifs = getObjectFromMap(m_objectMap, id, ret); Obj *ifs = getObjectFromMap(m_objectMap, id, ret);
@@ -242,11 +242,11 @@ public:
Core::FunctionReplyObject removeReply(bool (AreaEffectSimulation::DatabaseInterface::*dbRemoveMethod)(qint32), const Core::RemoveElementRequest &request) Core::FunctionReplyObject removeReply(bool (AreaEffectSimulation::DatabaseInterface::*dbRemoveMethod)(qint32), const Core::RemoveElementRequest &request)
{ {
if (request.id() >= 0) if (request.id >= 0)
return aesItemRemove(request); return aesItemRemove(request);
// else force = negative id // else force = negative id
qint32 id = request.id() * -1; qint32 id = request.id * -1;
Obj *ifs = m_objectMap.value(id); Obj *ifs = m_objectMap.value(id);
if (ifs == nullptr) if (ifs == nullptr)
@@ -14,7 +14,7 @@ namespace AreaEffectSimulation
{ {
HandlerBCContamination::HandlerBCContamination(MainHandler *mainHandler) HandlerBCContamination::HandlerBCContamination(MainHandler *mainHandler)
: HandlerBaseTmpl<ObjectBCContamination>(mainHandler, QStringLiteral("BCContamination"), s_areaCount[AesType::AtBCContamination], s_areaCountCentral[AesType::AtBCContamination]) : HandlerBaseTmpl<ObjectBCContamination>(mainHandler, QStringLiteral("BCContamination"), s_areaCount[static_cast<int>(AesType::AtBCContamination)], s_areaCountCentral[static_cast<int>(AesType::AtBCContamination)])
, Interface::Fts::BCContaminationModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::BCContaminationModifyRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::BCContaminationRemoveRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::BCContaminationRemoveRequestHandler(mainHandler->dds()->fts())
{} {}
@@ -40,7 +40,7 @@ bool HandlerBCContamination::init()
} }
if(!ifs->data().isCentral) if(!ifs->data().isCentral)
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtBCContamination] + s_maxActiveAreas[AesType::AtNContamination])) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtBCContamination)] + s_maxActiveAreas[static_cast<int>(AesType::AtNContamination)]))
{ {
ERROR_LOG(m_logger) << "More active bc contaminationsin database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active bc contaminationsin database than allowed - ignoring the rest!";
ifs->removeObject(); ifs->removeObject();
@@ -50,7 +50,7 @@ bool HandlerBCContamination::init()
} }
else else
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtBCContamination] + s_maxActiveAreasCentral[AesType::AtNContamination])) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtBCContamination)] + s_maxActiveAreasCentral[static_cast<int>(AesType::AtNContamination)]))
{ {
ERROR_LOG(m_logger) << "More active bc contaminationsin database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active bc contaminationsin database than allowed - ignoring the rest!";
ifs->removeObject(); ifs->removeObject();
@@ -85,18 +85,18 @@ bool HandlerBCContamination::init()
int HandlerBCContamination::totalAreas() const int HandlerBCContamination::totalAreas() const
{ {
return s_areaCount[AesType::AtBCContamination] + s_areaCount[AesType::AtNContamination]; return s_areaCount[static_cast<int>(AesType::AtBCContamination)] + s_areaCount[static_cast<int>(AesType::AtNContamination)];
} }
int HandlerBCContamination::totalAreasCentral() const int HandlerBCContamination::totalAreasCentral() const
{ {
return s_areaCountCentral[AesType::AtBCContamination] + s_areaCountCentral[AesType::AtNContamination]; return s_areaCountCentral[static_cast<int>(AesType::AtBCContamination)] + s_areaCountCentral[static_cast<int>(AesType::AtNContamination)];
} }
void HandlerBCContamination::onChangedToCentral() void HandlerBCContamination::onChangedToCentral()
{ {
s_areaCount[AesType::AtBCContamination]--; s_areaCount[static_cast<int>(AesType::AtBCContamination)]--;
s_areaCountCentral[AesType::AtBCContamination]++; s_areaCountCentral[static_cast<int>(AesType::AtBCContamination)]++;
DEBUG_LOG(m_logger) << "m_areaCount after Recount = " << m_areaCount; DEBUG_LOG(m_logger) << "m_areaCount after Recount = " << m_areaCount;
DEBUG_LOG(m_logger) << "m_areaCountCentral after Recount = " << m_areaCountCentral; DEBUG_LOG(m_logger) << "m_areaCountCentral after Recount = " << m_areaCountCentral;
@@ -105,39 +105,39 @@ void HandlerBCContamination::onChangedToCentral()
static void fillData(const BCContaminationModifyRequest &src, Database::AesBCContamination &dst) static void fillData(const BCContaminationModifyRequest &src, Database::AesBCContamination &dst)
{ {
if (src.id() < 0) // is the id given as negative? set id -> used by OC-laptop if (src.id < 0) // is the id given as negative? set id -> used by OC-laptop
dst.id = src.id(); dst.id = src.id;
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.effectStart = src.effectStart().is_set() && src.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.effectDuration = src.effectDuration(); dst.effectDuration = src.effectDuration;
dst.impactPosition.rx() = src.impactPosition().lon(); dst.impactPosition.rx() = src.impactPosition.lon;
dst.impactPosition.ry() = src.impactPosition().lat(); dst.impactPosition.ry() = src.impactPosition.lat;
dst.impactRadius = src.impactRadius(); dst.impactRadius = src.impactRadius;
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.chargeTypeId = src.chargeTypeId(); dst.chargeTypeId = src.chargeTypeId;
dst.participantId = src.participantId().is_set() ? src.participantId().get() : 0; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0;
dst.weatherSourceId = src.weatherSource(); dst.weatherSourceId = src.weatherSource;
dst.externalId = src.externalId().is_set() ? src.externalId().get() : 0; dst.externalId = src.externalId.is_set() ? src.externalId.get() : 0;
dst.upperOffset = src.upperOffset(); dst.upperOffset = src.upperOffset;
dst.lowerOffset = src.lowerOffset(); dst.lowerOffset = src.lowerOffset;
// weather parameter are delivered, when adding in OC-laptop // weather parameter are delivered, when adding in OC-laptop
if (src.weatherPosition().is_set()) if (src.weatherPosition.is_set())
{ {
dst.weatherPosition.rx() = src.weatherPosition().get().lon(); dst.weatherPosition.rx() = src.weatherPosition.get().lon;
dst.weatherPosition.ry() = src.weatherPosition().get().lat(); dst.weatherPosition.ry() = src.weatherPosition.get().lat;
} }
else else
dst.weatherPosition = dst.impactPosition; // initial, is not used during update therefore it's ok here dst.weatherPosition = dst.impactPosition; // initial, is not used during update therefore it's ok here
if(src.windSpeed().is_set()) if(src.windSpeed.is_set())
dst.windSpeed = src.windSpeed().get(); dst.windSpeed = src.windSpeed.get();
if(src.propagationDirection().is_set()) if(src.propagationDirection.is_set())
dst.propagationDirection = src.propagationDirection().get(); dst.propagationDirection = src.propagationDirection.get();
if(src.weatherTimestamp().is_set()) if(src.weatherTimestamp.is_set())
dst.weatherTimestamp = QDateTime::fromMSecsSinceEpoch(src.weatherTimestamp().get()); dst.weatherTimestamp = QDateTime::fromMSecsSinceEpoch(src.weatherTimestamp.get());
else if(src.effectStart().is_set()) else if(src.effectStart.is_set())
dst.weatherTimestamp = QDateTime::fromMSecsSinceEpoch(src.effectStart().get()); dst.weatherTimestamp = QDateTime::fromMSecsSinceEpoch(src.effectStart.get());
} }
void HandlerBCContamination::onBCContaminationModifyRequest(const rti::core::SampleIdentity &cookie, void HandlerBCContamination::onBCContaminationModifyRequest(const rti::core::SampleIdentity &cookie,
@@ -170,7 +170,7 @@ Core::FunctionReplyObject HandlerBCContamination::bCContaminationCreateRequest(c
if (ifs->data().isCentral) if (ifs->data().isCentral)
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtBCContamination] + s_maxActiveAreasCentral[AesType::AtNContamination]) && request.effectStart().is_set()) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtBCContamination)] + s_maxActiveAreasCentral[static_cast<int>(AesType::AtNContamination)]) && request.effectStart.is_set())
{ {
ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct
ifs->removeObjectFromDb(); ifs->removeObjectFromDb();
@@ -180,7 +180,7 @@ Core::FunctionReplyObject HandlerBCContamination::bCContaminationCreateRequest(c
} }
else else
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtBCContamination] + s_maxActiveAreas[AesType::AtNContamination]) && request.effectStart().is_set()) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtBCContamination)] + s_maxActiveAreas[static_cast<int>(AesType::AtNContamination)]) && request.effectStart.is_set())
{ {
ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct
@@ -208,23 +208,23 @@ Core::FunctionReplyObject HandlerBCContamination::bCContaminationCreateRequest(c
} }
m_objectMap.insert(ifs->id(), ifs); m_objectMap.insert(ifs->id(), ifs);
if (request.withDangerArea().is_set() && request.withDangerArea().get()) if (request.withDangerArea.is_set() && request.withDangerArea.get())
{ {
DangerAreaModifyRequest req; DangerAreaModifyRequest req;
req.id(0); req.id = 0;
#ifdef GUEZ_MODE #ifdef GUEZ_MODE
const QString name = QString::fromStdString(tr_lts("dds","%1 - Gefahrenbereich")).arg(ifs->data().name); const QString name = QString::fromStdString(tr_lts("dds","%1 - Gefahrenbereich")).arg(ifs->data().name);
#else #else
const QString name = QString::fromStdString(tr_lts("dds","%1 - Danger Area")).arg(ifs->data().name); const QString name = QString::fromStdString(tr_lts("dds","%1 - Danger Area")).arg(ifs->data().name);
#endif #endif
req.name(name.toStdString()); req.name = name.toStdString();
req.partyId(ifs->data().partyId); req.partyId = ifs->data().partyId;
req.effectDuration(ifs->data().effectDuration); req.effectDuration = ifs->data().effectDuration;
req.chargeTypeId(ifs->data().chargeTypeId); req.chargeTypeId = ifs->data().chargeTypeId;
req.segments(Polygons::dangerAreaDefaultSegments(ifs->data().impactPosition, ifs->data().impactRadius + 50)); req.segments = Polygons::dangerAreaDefaultSegments(ifs->data().impactPosition, ifs->data().impactRadius + 50);
req.associatedAesId(ifs->data().id); req.associatedAesId = ifs->data().id;
if(ifs->data().effectStart.isValid()) if(ifs->data().effectStart.isValid())
req.effectStart(ifs->data().effectStart.toMSecsSinceEpoch()); req.effectStart = ifs->data().effectStart.toMSecsSinceEpoch();
Core::FunctionReplyObject bretDangerArea= m_mainHandler->dangerAreaHandler()->dangerAreaCreateRequest(req); Core::FunctionReplyObject bretDangerArea= m_mainHandler->dangerAreaHandler()->dangerAreaCreateRequest(req);
if (bretDangerArea.error()) if (bretDangerArea.error())
ERROR_LOG(m_logger)<<"Couldn't create associated dangerArea to bcContamination: "<<ifs->data().name; ERROR_LOG(m_logger)<<"Couldn't create associated dangerArea to bcContamination: "<<ifs->data().name;
@@ -238,27 +238,27 @@ Core::FunctionReplyObject HandlerBCContamination::bCContaminationModifyRequest(c
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectBCContamination *ifs = nullptr; ObjectBCContamination *ifs = nullptr;
if (request.externalId().is_set() && request.externalId().get() > 0) if (request.externalId.is_set() && request.externalId.get() > 0)
ifs = getObjectFromMapByExternalId(m_objectMap, request.externalId().get(), ret); ifs = getObjectFromMapByExternalId(m_objectMap, request.externalId.get(), ret);
if (!ifs) if (!ifs)
{ {
if (request.id() == 0 || ((request.id() < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id()), ret))) if (request.id == 0 || ((request.id < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id), ret)))
return bCContaminationCreateRequest(request); return bCContaminationCreateRequest(request);
ifs = getObjectFromMap(m_objectMap, std::abs(request.id()), ret); ifs = getObjectFromMap(m_objectMap, std::abs(request.id), ret);
if (!ifs) if (!ifs)
return ret; return ret;
} }
if (request.effectStart().is_set() && (request.effectStart().get() + request.effectDuration() < m_mainHandler->dds()->currentPartitionTime().toMSecsSinceEpoch())) if (request.effectStart.is_set() && (request.effectStart.get() + request.effectDuration < m_mainHandler->dds()->currentPartitionTime().toMSecsSinceEpoch()))
return removeObject(ifs); return removeObject(ifs);
Database::AesBCContamination aea(ifs->data()); Database::AesBCContamination aea(ifs->data());
fillData(request, aea); fillData(request, aea);
DEBUG_LOG(m_logger) << "request.upperOffset=" << request.upperOffset() DEBUG_LOG(m_logger) << "request.upperOffset=" << request.upperOffset
<< " request.lowerOffset=" << request.lowerOffset() << " request.lowerOffset=" << request.lowerOffset
<< " aea.upperOffset=" << aea.upperOffset << " aea.upperOffset=" << aea.upperOffset
<< " aea.lowerOffset=" << aea.lowerOffset; << " aea.lowerOffset=" << aea.lowerOffset;
@@ -277,21 +277,21 @@ Core::FunctionReplyObject HandlerBCContamination::bCContaminationModifyRequest(c
/*! /*!
* If the effect start added after creation, the max amount need to be checked * If the effect start added after creation, the max amount need to be checked
*/ */
if(!ifs->isActivationTimeSet() && request.effectStart().is_set()) if(!ifs->isActivationTimeSet() && request.effectStart.is_set())
{ {
if (isCentral) if (isCentral)
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtBCContamination] + s_maxActiveAreasCentral[AesType::AtNContamination]) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtBCContamination)] + s_maxActiveAreasCentral[static_cast<int>(AesType::AtNContamination)])
/*&& request.effectStart().is_set()*/) /*&& request.effectStart.is_set()*/)
{ {
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active central B/C or N contamination areas.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active central B/C or N contamination areas."));
} }
} }
else else
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtBCContamination] + s_maxActiveAreas[AesType::AtNContamination]) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtBCContamination)] + s_maxActiveAreas[static_cast<int>(AesType::AtNContamination)])
/*&& request.effectStart().is_set()*/) /*&& request.effectStart.is_set()*/)
{ {
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active B/C or N contamination areas.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active B/C or N contamination areas."));
} }
@@ -299,7 +299,7 @@ Core::FunctionReplyObject HandlerBCContamination::bCContaminationModifyRequest(c
} }
// For counting, only Elements being at least prepared are important: // For counting, only Elements being at least prepared are important:
if (request.effectStart().is_set() && ifs->isObjectModifiable()) if (request.effectStart.is_set() && ifs->isObjectModifiable())
{ {
DEBUG_LOG(m_logger) << "isCentral: " << isCentral; DEBUG_LOG(m_logger) << "isCentral: " << isCentral;
@@ -311,8 +311,8 @@ Core::FunctionReplyObject HandlerBCContamination::bCContaminationModifyRequest(c
// Change from central to training area // Change from central to training area
if (wasCentral) if (wasCentral)
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtBCContamination] + s_maxActiveAreas[AesType::AtNContamination])) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtBCContamination)] + s_maxActiveAreas[static_cast<int>(AesType::AtNContamination)]))
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active B/C or N contamination areas.")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active B/C or N contamination areas."));
m_areaCount++; m_areaCount++;
m_areaCountCentral--; m_areaCountCentral--;
@@ -321,8 +321,8 @@ Core::FunctionReplyObject HandlerBCContamination::bCContaminationModifyRequest(c
} }
else // Change from training area to central else // Change from training area to central
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtBCContamination] + s_maxActiveAreasCentral[AesType::AtNContamination])) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtBCContamination)] + s_maxActiveAreasCentral[static_cast<int>(AesType::AtNContamination)]))
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active central B/C or N contamination areas.")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active central B/C or N contamination areas."));
m_areaCount--; m_areaCount--;
m_areaCountCentral++; m_areaCountCentral++;
DEBUG_LOG(m_logger) << "s_areaCount[AesType::AtBCContamination] = " << m_areaCount; DEBUG_LOG(m_logger) << "s_areaCount[AesType::AtBCContamination] = " << m_areaCount;
@@ -331,7 +331,7 @@ Core::FunctionReplyObject HandlerBCContamination::bCContaminationModifyRequest(c
} }
} }
if (request.id() < 0 && checkStateForSfm(ifs)) if (request.id < 0 && checkStateForSfm(ifs))
{ {
DEBUG_LOG(m_logger) << "Overwrite bc contamination Effect State for OC"; DEBUG_LOG(m_logger) << "Overwrite bc contamination Effect State for OC";
aea.effectStateId = AesEffectState::EsPrepared; aea.effectStateId = AesEffectState::EsPrepared;
@@ -346,44 +346,44 @@ Core::FunctionReplyObject HandlerBCContamination::bCContaminationModifyRequest(c
DEBUG_LOG(m_logger)<<"[bCContaminationModifyRequest] modify danger area associated to bcId: " <<ifs->id() DEBUG_LOG(m_logger)<<"[bCContaminationModifyRequest] modify danger area associated to bcId: " <<ifs->id()
<<" dangerAreaId: "<<dangerArea.id; <<" dangerAreaId: "<<dangerArea.id;
DangerAreaModifyRequest dangerRequest; DangerAreaModifyRequest dangerRequest;
dangerRequest.id(dangerArea.id); dangerRequest.id = dangerArea.id;
dangerRequest.name(QStringLiteral("%1").arg(dangerArea.name).toStdString()); dangerRequest.name = QStringLiteral("%1").arg(dangerArea.name).toStdString();
dangerRequest.partyId(dangerArea.partyId); dangerRequest.partyId = dangerArea.partyId;
dangerRequest.effectDuration(dangerArea.effectDuration); dangerRequest.effectDuration = dangerArea.effectDuration;
dangerRequest.chargeTypeId(dangerArea.chargeTypeId); dangerRequest.chargeTypeId = dangerArea.chargeTypeId;
dangerRequest.segments(Polygons::dangerAreaDefaultSegments(ifs->data().impactPosition, ifs->data().impactRadius + 50)); dangerRequest.segments = Polygons::dangerAreaDefaultSegments(ifs->data().impactPosition, ifs->data().impactRadius + 50);
dangerRequest.associatedAesId(ifs->data().id); dangerRequest.associatedAesId = ifs->data().id;
if(ifs->data().effectStart.isValid()) if(ifs->data().effectStart.isValid())
dangerRequest.effectStart(ifs->data().effectStart.toMSecsSinceEpoch()); dangerRequest.effectStart = ifs->data().effectStart.toMSecsSinceEpoch();
Core::FunctionReplyObject bretDangerArea= m_mainHandler->dangerAreaHandler()->dangerAreaModifyRequest(dangerRequest); Core::FunctionReplyObject bretDangerArea= m_mainHandler->dangerAreaHandler()->dangerAreaModifyRequest(dangerRequest);
if (bretDangerArea.error()) if (bretDangerArea.error())
ERROR_LOG(m_logger)<<"[bCContaminationModifyRequest] couldn't update danger area: bccontamination.id: "<<ifs->id() ERROR_LOG(m_logger)<<"[bCContaminationModifyRequest] couldn't update danger area: bccontamination.id: "<<ifs->id()
<<" dangerArea.name: "<<dangerRequest.name(); <<" dangerArea.name: "<<dangerRequest.name;
} }
else if (request.withDangerArea().is_set() && request.withDangerArea().get()) else if (request.withDangerArea.is_set() && request.withDangerArea.get())
{ {
DEBUG_LOG(m_logger)<<"[bCContaminationModifyRequest] add new danger area to bcId: " <<ifs->id(); DEBUG_LOG(m_logger)<<"[bCContaminationModifyRequest] add new danger area to bcId: " <<ifs->id();
DangerAreaModifyRequest newDangerRequest; DangerAreaModifyRequest newDangerRequest;
newDangerRequest.id(0); newDangerRequest.id = 0;
#ifdef GUEZ_MODE #ifdef GUEZ_MODE
const QString name = QString::fromStdString(tr_lts("dds","%1 - Gefahrenbereich")).arg(ifs->data().name); const QString name = QString::fromStdString(tr_lts("dds","%1 - Gefahrenbereich")).arg(ifs->data().name);
#else #else
const QString name = QString::fromStdString(tr_lts("dds","%1 - Danger Area")).arg(ifs->data().name); const QString name = QString::fromStdString(tr_lts("dds","%1 - Danger Area")).arg(ifs->data().name);
#endif #endif
newDangerRequest.name(name.toStdString()); newDangerRequest.name = name.toStdString();
newDangerRequest.partyId(ifs->data().partyId); newDangerRequest.partyId = ifs->data().partyId;
newDangerRequest.effectDuration(ifs->data().effectDuration); newDangerRequest.effectDuration = ifs->data().effectDuration;
newDangerRequest.chargeTypeId(ifs->data().chargeTypeId); newDangerRequest.chargeTypeId = ifs->data().chargeTypeId;
newDangerRequest.segments(Polygons::dangerAreaDefaultSegments(ifs->data().impactPosition, ifs->data().impactRadius + 50)); newDangerRequest.segments = Polygons::dangerAreaDefaultSegments(ifs->data().impactPosition, ifs->data().impactRadius + 50);
newDangerRequest.associatedAesId(ifs->data().id); newDangerRequest.associatedAesId = ifs->data().id;
if(ifs->data().effectStart.isValid()) if(ifs->data().effectStart.isValid())
newDangerRequest.effectStart(ifs->data().effectStart.toMSecsSinceEpoch()); newDangerRequest.effectStart = ifs->data().effectStart.toMSecsSinceEpoch();
Core::FunctionReplyObject bretDangerArea = m_mainHandler->dangerAreaHandler()->dangerAreaCreateRequest(newDangerRequest); Core::FunctionReplyObject bretDangerArea = m_mainHandler->dangerAreaHandler()->dangerAreaCreateRequest(newDangerRequest);
if (bretDangerArea.error()) if (bretDangerArea.error())
ERROR_LOG(m_logger)<<"[bCContaminationModifyRequest] couldn't add danger area: bccontamination.id: "<<ifs->id() ERROR_LOG(m_logger)<<"[bCContaminationModifyRequest] couldn't add danger area: bccontamination.id: "<<ifs->id()
<<" dangerArea.name: "<<newDangerRequest.name(); <<" dangerArea.name: "<<newDangerRequest.name;
} }
} }
@@ -399,12 +399,12 @@ void HandlerBCContamination::onBCContaminationRemoveRequest(const rti::core::Sam
if (ret) if (ret)
{ {
Database::AesDangerArea dangerArea; Database::AesDangerArea dangerArea;
if (m_mainHandler->dangerAreaHandler()->getDangerAreaByAssociatedAesId(request.id(), &dangerArea)) if (m_mainHandler->dangerAreaHandler()->getDangerAreaByAssociatedAesId(request.id, &dangerArea))
{ {
bool bret = m_mainHandler->dangerAreaHandler()->dangerAreaRemoveRequest(Core::RemoveElementRequest(dangerArea.id)); bool bret = m_mainHandler->dangerAreaHandler()->dangerAreaRemoveRequest(Core::RemoveElementRequest(dangerArea.id));
if (!bret) if (!bret)
ERROR_LOG(m_logger)<<"[onBCContaminationRemoveRequest] couldn't remove danger area: "<<dangerArea.id ERROR_LOG(m_logger)<<"[onBCContaminationRemoveRequest] couldn't remove danger area: "<<dangerArea.id
<<" associated with to bc contamination id: "<<request.id(); <<" associated with to bc contamination id: "<<request.id;
} }
} }
} }
@@ -14,7 +14,7 @@ namespace AreaEffectSimulation
{ {
HandlerBoobyTrap::HandlerBoobyTrap(MainHandler *mainHandler) HandlerBoobyTrap::HandlerBoobyTrap(MainHandler *mainHandler)
: HandlerBaseTmpl<ObjectBoobyTrap>(mainHandler, QStringLiteral("BoobyTrap"), s_areaCount[AesType::AtBoobyTrap], s_areaCountCentral[AesType::AtBoobyTrap]) : HandlerBaseTmpl<ObjectBoobyTrap>(mainHandler, QStringLiteral("BoobyTrap"), s_areaCount[static_cast<int>(AesType::AtBoobyTrap)], s_areaCountCentral[static_cast<int>(AesType::AtBoobyTrap)])
, Interface::Fts::BoobyTrapModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::BoobyTrapModifyRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::BoobyTrapRemoveRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::BoobyTrapRemoveRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::BoobyTrapTriggerRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::BoobyTrapTriggerRequestHandler(mainHandler->dds()->fts())
@@ -35,7 +35,7 @@ bool HandlerBoobyTrap::init()
bRet = false; bRet = false;
return; return;
} }
if (totalAreasCentral() >= s_maxActiveAreasCentral[AesType::AtBoobyTrap] ) if (totalAreasCentral() >= s_maxActiveAreasCentral[static_cast<int>(AesType::AtBoobyTrap)] )
{ {
ERROR_LOG(m_logger) << "More active booby traps in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active booby traps in database than allowed - ignoring the rest!";
ifs->removeObject(); ifs->removeObject();
@@ -64,32 +64,32 @@ bool HandlerBoobyTrap::init()
int HandlerBoobyTrap::totalAreas() const int HandlerBoobyTrap::totalAreas() const
{ {
return s_areaCount[AesType::AtBoobyTrap]; return s_areaCount[static_cast<int>(AesType::AtBoobyTrap)];
} }
int HandlerBoobyTrap::totalAreasCentral() const int HandlerBoobyTrap::totalAreasCentral() const
{ {
return s_areaCountCentral[AesType::AtBoobyTrap]; return s_areaCountCentral[static_cast<int>(AesType::AtBoobyTrap)];
} }
static void fillData(const BoobyTrapModifyRequest &src, Database::AesBoobyTrap &dst) static void fillData(const BoobyTrapModifyRequest &src, Database::AesBoobyTrap &dst)
{ {
if (src.id() < 0) // is the id given as negative? set id -> used by OC-laptop if (src.id < 0) // is the id given as negative? set id -> used by OC-laptop
dst.id = src.id(); dst.id = src.id;
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.effectStart = src.effectStart().is_set() && src.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.effectDuration = src.effectDuration(); dst.effectDuration = src.effectDuration;
dst.impactPosition.rx() = src.impactPosition().lon(); dst.impactPosition.rx() = src.impactPosition.lon;
dst.impactPosition.ry() = src.impactPosition().lat(); dst.impactPosition.ry() = src.impactPosition.lat;
dst.impactRadius = src.impactRadius(); dst.impactRadius = src.impactRadius;
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.chargeTypeId = src.chargeTypeId(); dst.chargeTypeId = src.chargeTypeId;
//dst.participantId = src.participantId().is_set() ? src.participantId().get() : 0; //dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0;
//dst.externalId = src.externalId().is_set() ? src.externalId().get() : 0; //dst.externalId = src.externalId.is_set() ? src.externalId.get() : 0;
dst.triggerRadius = src.triggerRadius(); dst.triggerRadius = src.triggerRadius;
dst.rotationAngle = src.rotationAngle().is_set() ? src.rotationAngle().get() : 0; dst.rotationAngle = src.rotationAngle.is_set() ? src.rotationAngle.get() : 0;
dst.centralAngle = src.centralAngle().is_set() ? src.centralAngle().get() : 0; dst.centralAngle = src.centralAngle.is_set() ? src.centralAngle.get() : 0;
dst.isCentral = true; dst.isCentral = true;
dst.triggered = false; dst.triggered = false;
} }
@@ -106,7 +106,7 @@ void HandlerBoobyTrap::onBoobyTrapModifyRequest(const rti::core::SampleIdentity
Core::FunctionReplyObject HandlerBoobyTrap::boobyTrapCreateRequest(const BoobyTrapModifyRequest &request) Core::FunctionReplyObject HandlerBoobyTrap::boobyTrapCreateRequest(const BoobyTrapModifyRequest &request)
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtBoobyTrap]) && request.effectStart().is_set()) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtBoobyTrap)]) && request.effectStart.is_set())
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active booby traps.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active booby traps."));
Database::AesBoobyTrap newData; Database::AesBoobyTrap newData;
@@ -134,7 +134,7 @@ Core::FunctionReplyObject HandlerBoobyTrap::boobyTrapCreateRequest(const BoobyTr
Core::FunctionReplyObject HandlerBoobyTrap::boobyTrapModifyRequest(const BoobyTrapModifyRequest &request) Core::FunctionReplyObject HandlerBoobyTrap::boobyTrapModifyRequest(const BoobyTrapModifyRequest &request)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
const QPointF &impactPos = QPointF(request.impactPosition().lon(),request.impactPosition().lat()); const QPointF &impactPos = QPointF(request.impactPosition.lon,request.impactPosition.lat);
// Convert Form to UTM // Convert Form to UTM
bool isGroundLevel = true; bool isGroundLevel = true;
const int exId = m_mainHandler->dds()->exerciseId(); const int exId = m_mainHandler->dds()->exerciseId();
@@ -145,28 +145,28 @@ Core::FunctionReplyObject HandlerBoobyTrap::boobyTrapModifyRequest(const BoobyTr
return Core::FunctionReplyObject(1, tr_lts("dds", "The Booby Trap is within a building")); return Core::FunctionReplyObject(1, tr_lts("dds", "The Booby Trap is within a building"));
} }
if (request.id() == 0 || ((request.id() < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id()), ret))) if (request.id == 0 || ((request.id < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id), ret)))
return boobyTrapCreateRequest(request); return boobyTrapCreateRequest(request);
ObjectBoobyTrap *ifs = getObjectFromMap(m_objectMap, std::abs(request.id()), ret); ObjectBoobyTrap *ifs = getObjectFromMap(m_objectMap, std::abs(request.id), ret);
if (!ifs) if (!ifs)
return ret; return ret;
if (request.effectStart().is_set() && (request.effectStart().get() + request.effectDuration() < m_mainHandler->dds()->currentPartitionTime().toMSecsSinceEpoch())) if (request.effectStart.is_set() && (request.effectStart.get() + request.effectDuration < m_mainHandler->dds()->currentPartitionTime().toMSecsSinceEpoch()))
return removeObject(ifs); return removeObject(ifs);
// Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war // Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war
// vorher noch ohne Wirkbeginn // vorher noch ohne Wirkbeginn
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtBoobyTrap]) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtBoobyTrap)])
&& request.effectStart().is_set() && request.effectStart.is_set()
&& !ifs->isActivationTimeSet() && !ifs->isActivationTimeSet()
/* && !ifs->isObjectModifiable()*/) /* && !ifs->isObjectModifiable()*/)
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active booby traps.")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active booby traps."));
Database::AesBoobyTrap aea(ifs->data()); Database::AesBoobyTrap aea(ifs->data());
fillData(request, aea); fillData(request, aea);
if (request.id() < 0 && checkStateForSfm(ifs)) if (request.id < 0 && checkStateForSfm(ifs))
{ {
DEBUG_LOG(m_logger) << "Overwrite booby trap Effect State for OC"; DEBUG_LOG(m_logger) << "Overwrite booby trap Effect State for OC";
aea.effectStateId = AesEffectState::EsPrepared; aea.effectStateId = AesEffectState::EsPrepared;
@@ -193,7 +193,7 @@ void HandlerBoobyTrap::onBoobyTrapTriggerRequest(const rti::core::SampleIdentity
Core::FunctionReplyObject HandlerBoobyTrap::boobyTrapTriggerRequest(const BoobyTrapTriggerRequest &request) Core::FunctionReplyObject HandlerBoobyTrap::boobyTrapTriggerRequest(const BoobyTrapTriggerRequest &request)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectBoobyTrap *ifs = getObjectFromMap(m_objectMap, request.id(), ret); ObjectBoobyTrap *ifs = getObjectFromMap(m_objectMap, request.id, ret);
if (!ifs) if (!ifs)
return ret; return ret;
@@ -201,7 +201,7 @@ Core::FunctionReplyObject HandlerBoobyTrap::boobyTrapTriggerRequest(const BoobyT
Database::AesBoobyTrap aea(ifs->data()); Database::AesBoobyTrap aea(ifs->data());
DEBUG_LOG(m_logger) << "Overwrite booby trap Effect State to expired"; DEBUG_LOG(m_logger) << "Overwrite booby trap Effect State to expired";
aea.effectStateId = AesEffectState::EsExpired; aea.effectStateId = AesEffectState::EsExpired;
aea.triggered = request.triggered(); aea.triggered = request.triggered;
aea.effectDuration = aea.effectStart.msecsTo(QDateTime::currentDateTimeUtc()); aea.effectDuration = aea.effectStart.msecsTo(QDateTime::currentDateTimeUtc());
if (aea.effectDuration < 0) if (aea.effectDuration < 0)
aea.effectDuration = 1; aea.effectDuration = 1;
@@ -14,7 +14,7 @@ namespace AreaEffectSimulation
{ {
HandlerBorderline::HandlerBorderline(MainHandler *mainHandler) HandlerBorderline::HandlerBorderline(MainHandler *mainHandler)
: HandlerBaseTmpl<ObjectBorderline>(mainHandler, QStringLiteral("ExplosionArea"), s_areaCount[AesType::AtBorderline], s_areaCountCentral[AesType::AtBorderline]) : HandlerBaseTmpl<ObjectBorderline>(mainHandler, QStringLiteral("ExplosionArea"), s_areaCount[static_cast<int>(AesType::AtBorderline)], s_areaCountCentral[static_cast<int>(AesType::AtBorderline)])
, Interface::Fts::BorderlineModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::BorderlineModifyRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::BorderlineRemoveRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::BorderlineRemoveRequestHandler(mainHandler->dds()->fts())
{ {
@@ -49,7 +49,7 @@ bool HandlerBorderline::init()
for (const Database::AesBorderline &dbBorderline : qAsConst(borderlineVec)) for (const Database::AesBorderline &dbBorderline : qAsConst(borderlineVec))
{ {
if (dbBorderline.effectStateId == AesEffectState_def::EsRemoved) if (dbBorderline.effectStateId == AesEffectState::EsRemoved)
continue; continue;
dbBorderlineSegments.clear(); dbBorderlineSegments.clear();
@@ -83,7 +83,7 @@ void HandlerBorderline::onBorderlineModifyRequest(const rti::core::SampleIdentit
const BorderlineModifyRequest &request) const BorderlineModifyRequest &request)
{ {
DEBUG_LOG(m_logger) << "onBorderlineModifyRequest: " << request; DEBUG_LOG(m_logger) << "onBorderlineModifyRequest: " << request;
Core::FunctionReplyObject ret = request.id() > 0 ? borderlineModifyRequest(request) : borderlineCreateRequest(request); Core::FunctionReplyObject ret = request.id > 0 ? borderlineModifyRequest(request) : borderlineCreateRequest(request);
if (ret.error()) if (ret.error())
WARNING_LOG(m_logger) << ret(); WARNING_LOG(m_logger) << ret();
m_mainHandler->dds()->fts()->borderlineModifyReply(cookie, ret); m_mainHandler->dds()->fts()->borderlineModifyReply(cookie, ret);
@@ -94,14 +94,14 @@ Core::FunctionReplyObject HandlerBorderline::borderlineCreateRequest(const Borde
{ {
Database::AesBorderline newData; Database::AesBorderline newData;
newData.name = QString::fromStdString(request.name()); newData.name = QString::fromStdString(request.name);
newData.operatorId = request.operatorId() > 0 ? request.operatorId() : QVariant(); newData.operatorId = request.operatorId > 0 ? request.operatorId : QVariant();
newData.partyId = request.partyId(); newData.partyId = request.partyId;
ObjectBorderline *ifs(new ObjectBorderline(m_mainHandler, this)); ObjectBorderline *ifs(new ObjectBorderline(m_mainHandler, this));
Core::FunctionReplyObject ret = ifs->createObject(newData, Core::FunctionReplyObject ret = ifs->createObject(newData,
request.segments(), request.segments,
QVector<Database::AesBorderlineSegment>()); QVector<Database::AesBorderlineSegment>());
if (ret.error()) if (ret.error())
{ {
@@ -117,17 +117,17 @@ Core::FunctionReplyObject HandlerBorderline::borderlineCreateRequest(const Borde
Core::FunctionReplyObject HandlerBorderline::borderlineModifyRequest(const BorderlineModifyRequest &request) Core::FunctionReplyObject HandlerBorderline::borderlineModifyRequest(const BorderlineModifyRequest &request)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectBorderline *ifs = getObjectFromMap(m_objectMap, request.id(), ret); ObjectBorderline *ifs = getObjectFromMap(m_objectMap, request.id, ret);
if (!ifs) if (!ifs)
return ret; return ret;
Database::AesBorderline newData; Database::AesBorderline newData;
newData.name = QString::fromStdString(request.name()); newData.name = QString::fromStdString(request.name);
newData.operatorId = request.operatorId() > 0 ? request.operatorId() : QVariant(); newData.operatorId = request.operatorId > 0 ? request.operatorId : QVariant();
newData.partyId = request.partyId(); newData.partyId = request.partyId;
return ifs->updateObject(newData, request.segments()); return ifs->updateObject(newData, request.segments);
} // end of onBorderlineModifyRequest() } // end of onBorderlineModifyRequest()
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@@ -64,10 +64,10 @@ void HandlerChargeAdministration::onChargeAdministrationModifyRequest(const rti:
{ {
DEBUG_LOG(m_logger) << "onChargeAdministrationModifyRequest: " << request; DEBUG_LOG(m_logger) << "onChargeAdministrationModifyRequest: " << request;
ChargeAdministrationModifyRequest newRequest = request; ChargeAdministrationModifyRequest newRequest = request;
if (!newRequest.amountChangedByOperator()) if (!newRequest.amountChangedByOperator)
newRequest.id() = getObjectChargeAdministrationId(request.partyId(), request.chargeTypeId(), request.effectSourceId()); newRequest.id = getObjectChargeAdministrationId(request.partyId, request.chargeTypeId, request.effectSourceId);
const auto ret = newRequest.id() > 0 ? chargeAdministrationModifyRequest(newRequest) : chargeAdministrationCreateRequest(request); const auto ret = newRequest.id > 0 ? chargeAdministrationModifyRequest(newRequest) : chargeAdministrationCreateRequest(request);
if (ret.error()) if (ret.error())
WARNING_LOG(m_logger) << ret(); WARNING_LOG(m_logger) << ret();
m_mainHandler->dds()->fts()->chargeAdministrationModifyReply(cookie, ret); m_mainHandler->dds()->fts()->chargeAdministrationModifyReply(cookie, ret);
@@ -77,11 +77,11 @@ Core::FunctionReplyObject HandlerChargeAdministration::chargeAdministrationCreat
{ {
Database::AesChargeAdministration newData; Database::AesChargeAdministration newData;
newData.chargeTypeId = request.chargeTypeId(); newData.chargeTypeId = request.chargeTypeId;
newData.partyId = request.partyId(); newData.partyId = request.partyId;
newData.effectSourceId = request.effectSourceId(); newData.effectSourceId = request.effectSourceId;
newData.amount = request.amount(); newData.amount = request.amount;
newData.amountChangedByOperator = request.amountChangedByOperator(); newData.amountChangedByOperator = request.amountChangedByOperator;
ObjectChargeAdministration *ifs(new ObjectChargeAdministration(m_mainHandler, this)); ObjectChargeAdministration *ifs(new ObjectChargeAdministration(m_mainHandler, this));
@@ -98,19 +98,19 @@ Core::FunctionReplyObject HandlerChargeAdministration::chargeAdministrationCreat
Core::FunctionReplyObject HandlerChargeAdministration::chargeAdministrationModifyRequest(const ChargeAdministrationModifyRequest &request) Core::FunctionReplyObject HandlerChargeAdministration::chargeAdministrationModifyRequest(const ChargeAdministrationModifyRequest &request)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectChargeAdministration *ifs = getObjectFromMap(m_chargeAdminObjMap, request.id(), ret); ObjectChargeAdministration *ifs = getObjectFromMap(m_chargeAdminObjMap, request.id, ret);
if (!ifs) if (!ifs)
return ret; return ret;
Database::AesChargeAdministration newData(ifs->data()); Database::AesChargeAdministration newData(ifs->data());
newData.id = request.id(); newData.id = request.id;
newData.chargeTypeId = request.chargeTypeId(); newData.chargeTypeId = request.chargeTypeId;
newData.partyId = request.partyId(); newData.partyId = request.partyId;
newData.amount = request.amount(); newData.amount = request.amount;
newData.amountChangedByOperator = request.amountChangedByOperator(); newData.amountChangedByOperator = request.amountChangedByOperator;
if (newData.amountChangedByOperator && newData.amount < newData.planned) if (newData.amountChangedByOperator && newData.amount < newData.planned)
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Amount is smaller than planned (%1 < %2).")).arg(newData.amount).arg(newData.planned); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Amount is smaller than planned (%1 < %2).")).arg(newData.amount).arg(newData.planned);
return ifs->updateObject(newData); return ifs->updateObject(newData);
} }
@@ -86,18 +86,18 @@ void HandlerChargeEffect::onChargeEffectModifyRequest(const rti::core::SampleIde
return; return;
} }
if (request.id() == 0) // create if (request.id == 0) // create
{ {
m_mainHandler->dds()->fts()->chargeEffectModifyReply(cookie, createChargeEffect(request)); m_mainHandler->dds()->fts()->chargeEffectModifyReply(cookie, createChargeEffect(request));
return; return;
} }
if (request.id() < 0) // create with id if (request.id < 0) // create with id
{ {
ChargeEffectModifyRequest requestWithPositiveId = request; ChargeEffectModifyRequest requestWithPositiveId = request;
requestWithPositiveId.id(qAbs(request.id())); requestWithPositiveId.id = qAbs(request.id);
m_mainHandler->dds()->fts()->chargeEffectModifyReply(cookie, createChargeEffect(requestWithPositiveId)); m_mainHandler->dds()->fts()->chargeEffectModifyReply(cookie, createChargeEffect(requestWithPositiveId));
@@ -165,12 +165,12 @@ Core::FunctionReplyObject HandlerChargeEffect::createChargeEffect(const ChargeEf
// Create ChargeAdministration Entry for reports // Create ChargeAdministration Entry for reports
DEBUG_LOG(m_logger) << "newChargeEffect id: " << newChargeEffect->id(); DEBUG_LOG(m_logger) << "newChargeEffect id: " << newChargeEffect->id();
DEBUG_LOG(m_logger) << "request.originatorTypeId: " << request.originatorTypeId(); DEBUG_LOG(m_logger) << "request.originatorTypeId: " << request.originatorTypeId;
if (request.originatorTypeId() == ProjectDataManagement::StateChangeOriginator::AreaEffectSimulation) if (request.originatorTypeId == ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_AreaEffectSimulation)
{ {
int amount = 1; int amount = 1;
int partyId = m_mainHandler->effectClusterHandler()->getPartyId(request.originatorId()); int partyId = m_mainHandler->effectClusterHandler()->getPartyId(request.originatorId);
m_mainHandler->chargeAdministrationHandler()->consumeCharge(request.chargeTypeId(), partyId, amount); m_mainHandler->chargeAdministrationHandler()->consumeCharge(request.chargeTypeId, partyId, amount);
} }
// create // create
@@ -180,9 +180,9 @@ Core::FunctionReplyObject HandlerChargeEffect::createChargeEffect(const ChargeEf
newChargeEffect->init(); newChargeEffect->init();
// create trajectory // create trajectory
if (request.trajectoryTimeAware().is_set()) if (request.trajectoryTimeAware.is_set())
{ {
int trajId = m_trajectoryHandler->create(trajectoryData(newChargeEffect->id(), request.trajectoryTimeAware().get())); int trajId = m_trajectoryHandler->create(trajectoryData(newChargeEffect->id(), request.trajectoryTimeAware.get()));
if (trajId < 0) if (trajId < 0)
ERROR_LOG(m_logger) << " Couldn't create trajectory for chargeEffect id: " << newChargeEffect->id(); ERROR_LOG(m_logger) << " Couldn't create trajectory for chargeEffect id: " << newChargeEffect->id();
else else
@@ -204,14 +204,14 @@ TrajectoryData HandlerChargeEffect::trajectoryData(int chargeEffectId, // act as
{ {
TrajectoryData td; TrajectoryData td;
td.id = trajObjId; td.id = trajObjId;
td.index = trajectoryTimeAware.index(); td.index = trajectoryTimeAware.index;
td.startTime = trajectoryTimeAware.trajectoryStartTime(); td.startTime = trajectoryTimeAware.trajectoryStartTime;
td.geometry = trajectoryTimeAware.geometry(); td.geometry = trajectoryTimeAware.geometry;
// [E01562-259] use originatorId, originatorTypeId (instead of aesItemId, aesTypeId) // [E01562-259] use originatorId, originatorTypeId (instead of aesItemId, aesTypeId)
// td.aesItemId = trajectoryTimeAware.aesItemId(); // charge effect's parent // td.aesItemId = trajectoryTimeAware.aesItemId(); // charge effect's parent
// td.aesTypeId = trajectoryTimeAware.aesTypeId(); // td.aesTypeId = trajectoryTimeAware.aesTypeId();
td.originatorId = chargeEffectId; td.originatorId = chargeEffectId;
td.originatorTypeId = ProjectDataManagement::StateChangeOriginator::ChargeEffect; td.originatorTypeId = ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_ChargeEffect;
return td; return td;
} }
@@ -227,7 +227,7 @@ const ObjectChargeEffect *HandlerChargeEffect::getChargeEffectById(int chargeEff
Core::FunctionReplyObject HandlerChargeEffect::updateChargeEffect(const ChargeEffectModifyRequest &request) Core::FunctionReplyObject HandlerChargeEffect::updateChargeEffect(const ChargeEffectModifyRequest &request)
{ {
Core::FunctionReplyObject reply(request.id()); Core::FunctionReplyObject reply(request.id);
if (!m_mainHandler) if (!m_mainHandler)
{ {
reply.setStr("Not possible to update ChargeEffect --> No MainHandler present."); reply.setStr("Not possible to update ChargeEffect --> No MainHandler present.");
@@ -237,7 +237,7 @@ Core::FunctionReplyObject HandlerChargeEffect::updateChargeEffect(const ChargeEf
return reply; return reply;
} }
if (!m_chargeEffects.contains(request.id())) if (!m_chargeEffects.contains(request.id))
{ {
reply.setStr("Not possible to update ChargeEffect --> Got invalid id."); reply.setStr("Not possible to update ChargeEffect --> Got invalid id.");
@@ -247,12 +247,12 @@ Core::FunctionReplyObject HandlerChargeEffect::updateChargeEffect(const ChargeEf
return reply; return reply;
} }
ObjectChargeEffect *chargeEffetObj = m_chargeEffects[request.id()]; ObjectChargeEffect *chargeEffetObj = m_chargeEffects[request.id];
reply = chargeEffetObj->update(request); reply = chargeEffetObj->update(request);
// update trajectory // update trajectory
if (!reply.error() && request.trajectoryTimeAware().is_set() if (!reply.error() && request.trajectoryTimeAware.is_set()
&& m_trajectoryHandler->update(trajectoryData(chargeEffetObj->id(), request.trajectoryTimeAware().get(), m_trajObjIds.value(chargeEffetObj->id(), -1)))) && m_trajectoryHandler->update(trajectoryData(chargeEffetObj->id(), request.trajectoryTimeAware.get(), m_trajObjIds.value(chargeEffetObj->id(), -1))))
{ {
// update failed should the trajectory be created again? // update failed should the trajectory be created again?
reply.setStr("Not possible to update ChargeEffect --> Got invalid trajectory id."); reply.setStr("Not possible to update ChargeEffect --> Got invalid trajectory id.");
@@ -87,21 +87,21 @@ Core::FunctionReplyObject HandlerDangerArea::dangerAreaCreateRequest(const Dange
{ {
Database::AesDangerArea newData; Database::AesDangerArea newData;
if (request.id() < 0) // is the id given as negative? set id -> used by OC-Laptop if (request.id < 0) // is the id given as negative? set id -> used by OC-Laptop
newData.id = request.id(); newData.id = request.id;
newData.name = QString::fromStdString(request.name()); newData.name = QString::fromStdString(request.name);
newData.effectStart = request.effectStart().is_set() && request.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(request.effectStart().get()) : QDateTime(); newData.effectStart = request.effectStart.is_set() && request.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(request.effectStart.get()) : QDateTime();
newData.chargeTypeId = request.chargeTypeId(); newData.chargeTypeId = request.chargeTypeId;
newData.effectDuration = request.effectDuration(); newData.effectDuration = request.effectDuration;
newData.partyId = request.partyId().is_set() ? request.partyId().get() : 0; newData.partyId = request.partyId.is_set() ? request.partyId.get() : 0;
newData.participantId = request.participantId().is_set() ? request.participantId().get() : 0; newData.participantId = request.participantId.is_set() ? request.participantId.get() : 0;
newData.associatedAesId = request.associatedAesId().is_set() ? request.associatedAesId().get() : 0; newData.associatedAesId = request.associatedAesId.is_set() ? request.associatedAesId.get() : 0;
ObjectDangerArea *ifs(new ObjectDangerArea(m_mainHandler, this)); ObjectDangerArea *ifs(new ObjectDangerArea(m_mainHandler, this));
Core::FunctionReplyObject ret = ifs->createObject(newData, Core::FunctionReplyObject ret = ifs->createObject(newData,
request.segments(), request.segments,
QVector<Database::AesDangerSegment>()); QVector<Database::AesDangerSegment>());
if (ret.error()) if (ret.error())
{ {
@@ -117,10 +117,10 @@ Core::FunctionReplyObject HandlerDangerArea::dangerAreaCreateRequest(const Dange
bool HandlerDangerArea::dangerAreaRemoveRequest(const Core::RemoveElementRequest request) bool HandlerDangerArea::dangerAreaRemoveRequest(const Core::RemoveElementRequest request)
{ {
DEBUG_LOG(m_logger) << "onDangerAreaRemoveRequest dangerArea id: " << request.id(); DEBUG_LOG(m_logger) << "onDangerAreaRemoveRequest dangerArea id: " << request.id;
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
const rti::core::SampleIdentity cookie; const rti::core::SampleIdentity cookie;
ObjectDangerArea *ifs = getObjectFromMap(m_dangerAreaObjMap, request.id(), ret); ObjectDangerArea *ifs = getObjectFromMap(m_dangerAreaObjMap, request.id, ret);
if (!ifs) if (!ifs)
{ {
return m_mainHandler->dds()->fts()->dangerAreaRemoveReply(cookie, ret); return m_mainHandler->dds()->fts()->dangerAreaRemoveReply(cookie, ret);
@@ -151,25 +151,25 @@ bool HandlerDangerArea::getDangerAreaByAssociatedAesId(const int &id, Database:
Core::FunctionReplyObject HandlerDangerArea::dangerAreaModifyRequest(const DangerAreaModifyRequest &request) Core::FunctionReplyObject HandlerDangerArea::dangerAreaModifyRequest(const DangerAreaModifyRequest &request)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
if (request.id() == 0 || ((request.id() < 0) && !getObjectFromMap(m_dangerAreaObjMap, std::abs(request.id()), ret))) if (request.id == 0 || ((request.id < 0) && !getObjectFromMap(m_dangerAreaObjMap, std::abs(request.id), ret)))
return dangerAreaCreateRequest(request); return dangerAreaCreateRequest(request);
ObjectDangerArea *ifs = getObjectFromMap(m_dangerAreaObjMap, std::abs(request.id()), ret); ObjectDangerArea *ifs = getObjectFromMap(m_dangerAreaObjMap, std::abs(request.id), ret);
if (!ifs) if (!ifs)
return ret; return ret;
Database::AesDangerArea newData(ifs->data()); Database::AesDangerArea newData(ifs->data());
if (request.id() < 0) // is the id given as negative? set id -> used by OC-Laptop if (request.id < 0) // is the id given as negative? set id -> used by OC-Laptop
newData.id = request.id(); newData.id = request.id;
newData.name = QString::fromStdString(request.name()); newData.name = QString::fromStdString(request.name);
newData.effectStart = request.effectStart().is_set() && request.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(request.effectStart().get()) : QDateTime(); newData.effectStart = request.effectStart.is_set() && request.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(request.effectStart.get()) : QDateTime();
newData.chargeTypeId = request.chargeTypeId(); newData.chargeTypeId = request.chargeTypeId;
newData.effectDuration = request.effectDuration(); newData.effectDuration = request.effectDuration;
newData.partyId = request.partyId().is_set() ? request.partyId().get() : 0; newData.partyId = request.partyId.is_set() ? request.partyId.get() : 0;
newData.participantId = request.participantId().is_set() ? request.participantId().get() : 0; newData.participantId = request.participantId.is_set() ? request.participantId.get() : 0;
newData.associatedAesId = request.associatedAesId().is_set() ? request.associatedAesId().get() : 0; newData.associatedAesId = request.associatedAesId.is_set() ? request.associatedAesId.get() : 0;
return ifs->updateObject(newData, request.segments()); return ifs->updateObject(newData, request.segments);
} }
void HandlerDangerArea::onDangerAreaRemoveRequest(const rti::core::SampleIdentity &cookie, void HandlerDangerArea::onDangerAreaRemoveRequest(const rti::core::SampleIdentity &cookie,
@@ -177,7 +177,7 @@ void HandlerDangerArea::onDangerAreaRemoveRequest(const rti::core::SampleIdentit
{ {
DEBUG_LOG(m_logger) << "onDangerAreaRemoveRequest" << request; DEBUG_LOG(m_logger) << "onDangerAreaRemoveRequest" << request;
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectDangerArea *ifs = getObjectFromMap(m_dangerAreaObjMap, request.id(), ret); ObjectDangerArea *ifs = getObjectFromMap(m_dangerAreaObjMap, request.id, ret);
if (!ifs) if (!ifs)
{ {
m_mainHandler->dds()->fts()->dangerAreaRemoveReply(cookie, ret); m_mainHandler->dds()->fts()->dangerAreaRemoveReply(cookie, ret);
@@ -17,7 +17,7 @@ namespace AreaEffectSimulation
{ {
HandlerDusSingleMine::HandlerDusSingleMine(MainHandler *mainHandler) HandlerDusSingleMine::HandlerDusSingleMine(MainHandler *mainHandler)
: HandlerBaseTmpl<ObjectDusSingleMine>(mainHandler, QStringLiteral("DusSingleMine"), s_areaCount[AesType::AtMineArea], s_areaCountCentral[AesType::AtMineArea]) : HandlerBaseTmpl<ObjectDusSingleMine>(mainHandler, QStringLiteral("DusSingleMine"), s_areaCount[static_cast<int>(AesType::AtMineArea)], s_areaCountCentral[static_cast<int>(AesType::AtMineArea)])
, m_tabDtc(mainHandler->dds()->tabDtc()) , m_tabDtc(mainHandler->dds()->tabDtc())
{} {}
@@ -41,7 +41,7 @@ bool HandlerDusSingleMine::init()
// If active or prepared, check if it still can be handled and increment area count // If active or prepared, check if it still can be handled and increment area count
if (ifs->isObjectInTrainingArea()) if (ifs->isObjectInTrainingArea())
{ {
if (totalAreas() >= s_maxActiveAreas[AesType::AtDusSingleMine]) if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtDusSingleMine)])
{ {
ERROR_LOG(m_logger) << "More active DUS single mines in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active DUS single mines in database than allowed - ignoring the rest!";
delete ifs; delete ifs;
@@ -80,12 +80,12 @@ bool HandlerDusSingleMine::init()
int HandlerDusSingleMine::totalAreas() const int HandlerDusSingleMine::totalAreas() const
{ {
return s_areaCount[AesType::AtDusSingleMine]; return s_areaCount[static_cast<int>(AesType::AtDusSingleMine)];
} }
int HandlerDusSingleMine::totalAreasCentral() const int HandlerDusSingleMine::totalAreasCentral() const
{ {
return s_areaCountCentral[AesType::AtDusSingleMine]; return s_areaCountCentral[static_cast<int>(AesType::AtDusSingleMine)];
} }
void HandlerDusSingleMine::onDusSingleMineState(const TrainingAreaBase::DusSingleMineState &data, DataModification modType) void HandlerDusSingleMine::onDusSingleMineState(const TrainingAreaBase::DusSingleMineState &data, DataModification modType)
@@ -93,31 +93,31 @@ void HandlerDusSingleMine::onDusSingleMineState(const TrainingAreaBase::DusSingl
if (modType == DataModification::eRemoved) if (modType == DataModification::eRemoved)
return; return;
if (totalAreas() >= s_maxActiveAreas[AesType::AtDusSingleMine]) if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtDusSingleMine)])
{ {
WARNING_LOG(m_logger) << "Too many active DUS single mines."; WARNING_LOG(m_logger) << "Too many active DUS single mines.";
return; return;
} }
// set old AES item to expired // set old AES item to expired
if (m_activeMineIdToAesItemId.contains(data.mineId())) if (m_activeMineIdToAesItemId.contains(data.mineId))
{ {
m_objectMap.value(m_activeMineIdToAesItemId.value(data.mineId()))->setExpired(); m_objectMap.value(m_activeMineIdToAesItemId.value(data.mineId))->setExpired();
m_activeMineIdToAesItemId.remove(data.mineId()); m_activeMineIdToAesItemId.remove(data.mineId);
} }
if (data.state()) if (data.state)
{ {
Database::AesDusSingleMine newData; Database::AesDusSingleMine newData;
newData.mineId = data.mineId(); newData.mineId = data.mineId;
newData.effectStart = QDateTime::fromMSecsSinceEpoch(data.effectStart() + Settings::getDusSingleMineEffectStartOffset()); // offset to get away from mine after laying it newData.effectStart = QDateTime::fromMSecsSinceEpoch(data.effectStart + Settings::getDusSingleMineEffectStartOffset()); // offset to get away from mine after laying it
if (newData.effectStart <= m_mainHandler->dds()->currentPartitionTime()) // telegram arrived late -> start effect area now if (newData.effectStart <= m_mainHandler->dds()->currentPartitionTime()) // telegram arrived late -> start effect area now
newData.effectStart = QDateTime::fromMSecsSinceEpoch(m_mainHandler->dds()->currentPartitionTimeMSec() + 100); // needs to be slightly in the future newData.effectStart = QDateTime::fromMSecsSinceEpoch(m_mainHandler->dds()->currentPartitionTimeMSec() + 100); // needs to be slightly in the future
newData.position.rx() = data.position().lon(); newData.position.rx() = data.position.lon;
newData.position.ry() = data.position().lat(); newData.position.ry() = data.position.lat;
newData.chargeTypeId = data.chargeTypeId(); newData.chargeTypeId = data.chargeTypeId;
ObjectDusSingleMine *ifs(new ObjectDusSingleMine(m_mainHandler, this)); ObjectDusSingleMine *ifs(new ObjectDusSingleMine(m_mainHandler, this));
connect(ifs, &ObjectDusSingleMine::effectStateChanged, this, &HandlerDusSingleMine::onEffectStateChanged); connect(ifs, &ObjectDusSingleMine::effectStateChanged, this, &HandlerDusSingleMine::onEffectStateChanged);
@@ -139,7 +139,7 @@ void HandlerDusSingleMine::onMineTriggered(const TrainingAreaBase::MineTriggered
{ {
if (modType == DataModification::eRemoved) if (modType == DataModification::eRemoved)
return; return;
auto it = m_objectMap.constFind(data.mineAreaId()); auto it = m_objectMap.constFind(data.mineAreaId);
if (it == m_objectMap.cend()) // is it a DUS single mine or just a normal mineArea? if (it == m_objectMap.cend()) // is it a DUS single mine or just a normal mineArea?
return; return;
@@ -28,8 +28,8 @@ namespace AreaEffectSimulation
HandlerEffectCluster::HandlerEffectCluster(MainHandler *mainHandler) HandlerEffectCluster::HandlerEffectCluster(MainHandler *mainHandler)
: HandlerBaseTmpl<ObjectEffectCluster>(mainHandler, : HandlerBaseTmpl<ObjectEffectCluster>(mainHandler,
QStringLiteral("EffectCluster"), QStringLiteral("EffectCluster"),
s_areaCount[AesType::AtEffectCluster], s_areaCount[static_cast<int>(AesType::AtEffectCluster)],
s_areaCountCentral[AesType::AtEffectCluster]) s_areaCountCentral[static_cast<int>(AesType::AtEffectCluster)])
, Interface::Fts::EffectClusterModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::EffectClusterModifyRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::EffectClusterModifyActorRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::EffectClusterModifyActorRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::EffectClusterSingleEffectOnlyModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::EffectClusterSingleEffectOnlyModifyRequestHandler(mainHandler->dds()->fts())
@@ -147,12 +147,12 @@ void HandlerEffectCluster::onFireCommandReceived(const TrainingAreaBase::EX_Fire
// get fireReference // get fireReference
if (modtype == DataModification::eRemoved) if (modtype == DataModification::eRemoved)
return; return;
DEBUG_LOG(m_logger) << "got EX_Fire for ref: " << fire.reference() << " internal mapsize " << m_referenceToClusterId.size(); DEBUG_LOG(m_logger) << "got EX_Fire for ref: " << fire.reference << " internal mapsize " << m_referenceToClusterId.size();
auto *ifs = m_objectMap.value(m_referenceToClusterId.value(QString::fromStdString(fire.reference()))); auto *ifs = m_objectMap.value(m_referenceToClusterId.value(QString::fromStdString(fire.reference)));
if (!ifs) if (!ifs)
return; return;
ifs->sendFireCommand(AdlerJson::waffensystemkennerMap.key(fire.effectorId())); ifs->sendFireCommand(AdlerJson::waffensystemkennerMap.key(fire.effectorId));
} }
void HandlerEffectCluster::onFireHoldReceived(const TrainingAreaBase::EX_CeaseFiring &ceaseFire, DataModification modType) void HandlerEffectCluster::onFireHoldReceived(const TrainingAreaBase::EX_CeaseFiring &ceaseFire, DataModification modType)
@@ -162,7 +162,7 @@ void HandlerEffectCluster::onFireHoldReceived(const TrainingAreaBase::EX_CeaseFi
return; return;
} }
int HandlerEffectCluster::totalAreasCentral() const { return s_areaCountCentral[AesType::AtEffectCluster]; } int HandlerEffectCluster::totalAreasCentral() const { return s_areaCountCentral[static_cast<int>(AesType::AtEffectCluster)]; }
// Appends // Appends
/* /*
@@ -179,69 +179,69 @@ static void fillData(const EffectClusterModifyRequest &src,
QVector<Database::AesEffectorData> &dstEffectorVector, QVector<Database::AesEffectorData> &dstEffectorVector,
MainHandler *mainHandler) MainHandler *mainHandler)
{ {
if (src.id() < 0) // is the id given as negative? set id -> used by OC-Laptop if (src.id < 0) // is the id given as negative? set id -> used by OC-Laptop
dst.id = src.id(); dst.id = src.id;
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.element = QString::fromStdString(src.element()); dst.element = QString::fromStdString(src.element);
dst.impactPosition.rx() = src.area().cornerBottomLeft().lon(); dst.impactPosition.rx() = src.area.cornerBottomLeft.lon;
dst.impactPosition.ry() = src.area().cornerBottomLeft().lat(); dst.impactPosition.ry() = src.area.cornerBottomLeft.lat;
dst.impactLength = src.area().height(); dst.impactLength = src.area.height;
dst.impactWidth = src.area().width(); dst.impactWidth = src.area.width;
dst.rotationAngle = src.area().rotation(); dst.rotationAngle = src.area.rotation;
const bool bIsPointSimilar = (src.explosionGeometry() == AreaEffectSimulation::AesExplosionGeometry_def::EgAimPoint) const bool bIsPointSimilar = (src.explosionGeometry == AreaEffectSimulation::AesExplosionGeometry::EgAimPoint)
|| (src.explosionGeometry() == AreaEffectSimulation::AesExplosionGeometry_def::EgPoint); || (src.explosionGeometry == AreaEffectSimulation::AesExplosionGeometry::EgPoint);
dstEffectorVector.reserve(src.effectors().size()); dstEffectorVector.reserve(src.effectors.size());
Database::AesEffectorData dstEffector; Database::AesEffectorData dstEffector;
int localImpactCount = 0; int localImpactCount = 0;
int firstChargeTypeId = 0; int firstChargeTypeId = 0;
for (const auto &effector : src.effectors()) for (const auto &effector : src.effectors)
{ {
// copy from Source Request. // copy from Source Request.
dstEffector.angleOfFall = effector.angleOfFall(); dstEffector.angleOfFall = effector.angleOfFall;
dstEffector.chargeAmount = effector.chargeAmount(); dstEffector.chargeAmount = effector.chargeAmount;
dstEffector.chargeTypeId = effector.chargeStruct().chargeTypeId(); dstEffector.chargeTypeId = effector.chargeStruct.chargeTypeId;
dstEffector.entityId = src.id(); dstEffector.entityId = src.id;
dstEffector.flightTime = effector.flightTime(); dstEffector.flightTime = effector.flightTime;
dstEffector.igniterTypeId = effector.chargeStruct().igniterTypeId(); dstEffector.igniterTypeId = effector.chargeStruct.igniterTypeId;
dstEffector.igniterFunctionId = effector.chargeStruct().igniterFunctionId(); dstEffector.igniterFunctionId = effector.chargeStruct.igniterFunctionId;
dstEffector.interval = effector.interval(); dstEffector.interval = effector.interval;
dstEffector.mhpPosition.rx() = effector.mhpPosition().lon(); dstEffector.mhpPosition.rx() = effector.mhpPosition.lon;
dstEffector.mhpPosition.ry() = effector.mhpPosition().lat(); dstEffector.mhpPosition.ry() = effector.mhpPosition.lat;
dstEffector.mhpPosition.rz() = effector.mhpPosition().z(); // [E01562-399] dstEffector.mhpPosition.rz() = effector.mhpPosition.z; // [E01562-399]
dstEffector.properties = QString::fromStdString(effector.properties()); dstEffector.properties = QString::fromStdString(effector.properties);
// FillScatterData // FillScatterData
if (effector.mhpScatterLenght() > 0.0) if (effector.mhpScatterLenght > 0.0)
dstEffector.mhpScatterLenght = effector.mhpScatterLenght(); dstEffector.mhpScatterLenght = effector.mhpScatterLenght;
else else
dstEffector.mhpScatterLenght = Settings::getScatterLenghtDefault(); dstEffector.mhpScatterLenght = Settings::getScatterLenghtDefault();
dstEffector.mhpScatterLengthDetonationHeight = effector.mhpScatterLengthDetonationHeight(); dstEffector.mhpScatterLengthDetonationHeight = effector.mhpScatterLengthDetonationHeight;
if (effector.mhpScatterWidth() > 0.0) if (effector.mhpScatterWidth > 0.0)
dstEffector.mhpScatterWidth = effector.mhpScatterWidth(); dstEffector.mhpScatterWidth = effector.mhpScatterWidth;
else else
dstEffector.mhpScatterWidth = Settings::getScatterWidthDefault(); dstEffector.mhpScatterWidth = Settings::getScatterWidthDefault();
dstEffector.mhpScatterWidthDetonationHeight = effector.mhpScatterWidthDetonationHeight(); dstEffector.mhpScatterWidthDetonationHeight = effector.mhpScatterWidthDetonationHeight;
// Fill rest // Fill rest
dstEffector.participantId = effector.participantId(); dstEffector.participantId = effector.participantId;
dstEffector.peakHeight = effector.peakHeight(); dstEffector.peakHeight = effector.peakHeight;
dstEffector.trajectory = QString::fromStdString(TrajectoryRelative::toString(effector.trajectoryRelative())); dstEffector.trajectory = QString::fromStdString(TrajectoryRelative::toString(effector.trajectoryRelative));
// sanity stuff // sanity stuff
localImpactCount = localImpactCount + dstEffector.chargeAmount; localImpactCount = localImpactCount + dstEffector.chargeAmount;
if (firstChargeTypeId <= 0) if (firstChargeTypeId <= 0)
firstChargeTypeId = effector.chargeStruct().chargeTypeId(); firstChargeTypeId = effector.chargeStruct.chargeTypeId;
// check if it's a single fire // check if it's a single fire
if (bIsPointSimilar && ((src.area().width() <= 0) || (src.area().height() <= 0))) if (bIsPointSimilar && ((src.area.width <= 0) || (src.area.height <= 0)))
{ {
const Core::GeoPosition2D &cornerBottomLeft = src.area().cornerBottomLeft(); const Core::GeoPosition2D &cornerBottomLeft = src.area.cornerBottomLeft;
const double impactDiameter = mainHandler->dds()->pdmDtc()->impactRadius(effector.chargeStruct().chargeTypeId(), const double impactDiameter = mainHandler->dds()->pdmDtc()->impactRadius(effector.chargeStruct.chargeTypeId,
effector.chargeStruct().igniterTypeId(), effector.chargeStruct.igniterTypeId,
effector.chargeStruct().igniterFunctionId()) effector.chargeStruct.igniterFunctionId)
* 2.0; // GUEZE-2634 * 2.0; // GUEZE-2634
const QPointF bottomLeft(Polygons::centerPoint2BottomLeft(QPointF(cornerBottomLeft.lon(), cornerBottomLeft.lat()), impactDiameter, impactDiameter, 0)); const QPointF bottomLeft(Polygons::centerPoint2BottomLeft(QPointF(cornerBottomLeft.lon, cornerBottomLeft.lat), impactDiameter, impactDiameter, 0));
dstEffector.mhpPosition.rx() = bottomLeft.x(); dstEffector.mhpPosition.rx() = bottomLeft.x();
dstEffector.mhpPosition.ry() = bottomLeft.y(); dstEffector.mhpPosition.ry() = bottomLeft.y();
@@ -252,14 +252,14 @@ static void fillData(const EffectClusterModifyRequest &src,
} }
// Save the mhpCountRequest for later // Save the mhpCountRequest for later
dst.mhpCountRequest = dstEffectorVector.size(); dst.mhpCountRequest = dstEffectorVector.size();
dst.explosionGeometryId = src.explosionGeometry(); dst.explosionGeometryId = src.explosionGeometry;
dst.tla = src.tla(); dst.tla = src.tla;
dst.effectStart = src.effectStart().is_set() && src.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
// Effect Duration might be set and will be used for the AutoFire // Effect Duration might be set and will be used for the AutoFire
// -- Module Duration // -- Module Duration
if (src.effectDuration()) if (src.effectDuration)
dst.effectDuration = src.effectDuration(); dst.effectDuration = src.effectDuration;
else else
{ {
// Sometimes there is no effectDuration // Sometimes there is no effectDuration
@@ -267,20 +267,20 @@ static void fillData(const EffectClusterModifyRequest &src,
dst.effectDuration = DEFAULT_EFFECT_DURATION; dst.effectDuration = DEFAULT_EFFECT_DURATION;
} }
dst.effectSourceId = src.effectSourceId(); dst.effectSourceId = src.effectSourceId;
dst.firePurposeId = src.firePurposeId(); dst.firePurposeId = src.firePurposeId;
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.participantId = src.participantId().is_set() ? src.participantId().get() : -1; // -1 -> avoid trajectory dst.participantId = src.participantId.is_set() ? src.participantId.get() : -1; // -1 -> avoid trajectory
dst.altitude = -1; dst.altitude = -1;
dst.effectMarkingInTa = src.effectMarkingInTa(); dst.effectMarkingInTa = src.effectMarkingInTa;
dst.externalId = src.externalId().is_set() ? src.externalId().get() : 0; dst.externalId = src.externalId.is_set() ? src.externalId.get() : 0;
dst.properties = QString::fromStdString(src.properties()); dst.properties = QString::fromStdString(src.properties);
dst.esmParticipantIds = LtsUtils::IntArray(src.esmParticipantIds()); dst.esmParticipantIds = LtsUtils::IntArray(src.esmParticipantIds);
// some modules: // some modules:
// if (dst.impactCount == 0 && localImpactCount > 0) // if (dst.impactCount == 0 && localImpactCount > 0)
@@ -297,8 +297,8 @@ void HandlerEffectCluster::onEffectClusterModifyRequest(const rti::core::SampleI
// DEBUG_LOG(m_logger) << "************************************ start onEffectClusterModifyRequest: " << request; // DEBUG_LOG(m_logger) << "************************************ start onEffectClusterModifyRequest: " << request;
Core::FunctionReplyObject ret = effectClusterModifyRequest(cookie, request); Core::FunctionReplyObject ret = effectClusterModifyRequest(cookie, request);
if (ret.error()) if (ret.error())
WARNING_LOG(m_logger) << ret() << ", effectStart :" << request.effectStart(); WARNING_LOG(m_logger) << ret() << ", effectStart :" << request.effectStart;
ret.setAdditionalInfo(request.properties().c_str()); ret.setAdditionalInfo(request.properties.c_str());
// DEBUG_LOG(m_logger) << "************************************ SEND REPLY FOR onEffectClusterModifyRequest: " << request; // DEBUG_LOG(m_logger) << "************************************ SEND REPLY FOR onEffectClusterModifyRequest: " << request;
m_mainHandler->dds()->fts()->effectClusterModifyReply(cookie, ret); m_mainHandler->dds()->fts()->effectClusterModifyReply(cookie, ret);
@@ -309,7 +309,7 @@ void HandlerEffectCluster::onEffectClusterModifyActorRequest(const rti::core::Sa
// DEBUG_LOG(m_logger) << "************************************ start onEffectClusterModifyActorRequest: " << request; // DEBUG_LOG(m_logger) << "************************************ start onEffectClusterModifyActorRequest: " << request;
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectEffectCluster *ifs = getObjectFromMap(m_objectMap, request.aesId(), ret); ObjectEffectCluster *ifs = getObjectFromMap(m_objectMap, request.aesId, ret);
if (!ifs) if (!ifs)
{ {
m_mainHandler->dds()->fts()->effectClusterModifyActorReply(cookie, ret); m_mainHandler->dds()->fts()->effectClusterModifyActorReply(cookie, ret);
@@ -380,28 +380,28 @@ void HandlerEffectCluster::onEffectClusterOcModifyRequest(const rti::core::Sampl
EffectClusterModifyRequest ecCommonModifyRequest; EffectClusterModifyRequest ecCommonModifyRequest;
ecCommonModifyRequest.id(request.id()); ecCommonModifyRequest.id = request.id;
// ecCommonModifyRequest.externalId(request.externalId()); // ecCommonModifyRequest.externalId(request.externalId());
ecCommonModifyRequest.effectStart(request.effectStart()); ecCommonModifyRequest.effectStart = request.effectStart;
ecCommonModifyRequest.effectDuration(request.effectDuration()); ecCommonModifyRequest.effectDuration = request.effectDuration;
// charge and geometry: // charge and geometry:
ecCommonModifyRequest.area(request.area()); ecCommonModifyRequest.area = request.area;
int impactCount = 0; int impactCount = 0;
for (const auto &effector : request.effectors()) for (const auto &effector : request.effectors)
effector.chargeAmount(); effector.chargeAmount;
if (impactCount == 1) if (impactCount == 1)
ecCommonModifyRequest.explosionGeometry(AreaEffectSimulation::AesExplosionGeometry_def::EgPoint); ecCommonModifyRequest.explosionGeometry = AreaEffectSimulation::AesExplosionGeometry::EgPoint;
else else
ecCommonModifyRequest.explosionGeometry(AreaEffectSimulation::AesExplosionGeometry_def::EgArea); ecCommonModifyRequest.explosionGeometry = AreaEffectSimulation::AesExplosionGeometry::EgArea;
// ecCommonModifyRequest.zog(0); // ecCommonModifyRequest.zog(0);
ecCommonModifyRequest.effectors(request.effectors()); ecCommonModifyRequest.effectors = request.effectors;
ecCommonModifyRequest.name(request.name()); // ZpNummer ecCommonModifyRequest.name = request.name; // ZpNummer
ecCommonModifyRequest.element(ecCommonModifyRequest.element()); // element ecCommonModifyRequest.element = ecCommonModifyRequest.element; // element
ecCommonModifyRequest.partyId(request.partyId()); ecCommonModifyRequest.partyId = request.partyId;
// ecCommonModifyRequest.participantId(-1); // -1 -> avoid trajectory // ecCommonModifyRequest.participantId(-1); // -1 -> avoid trajectory
// ToDo: no trajectory needed, but how can we transfer the rotation of MhpAreas? // ToDo: no trajectory needed, but how can we transfer the rotation of MhpAreas?
@@ -423,26 +423,26 @@ Core::FunctionReplyObject HandlerEffectCluster::effectClusterCreateRequest(const
// external (externalId==0) -> partyId required // external (externalId==0) -> partyId required
// We keep the old charge behavior // We keep the old charge behavior
// and also ignore it from ADLER? // and also ignore it from ADLER?
const int externalIdValue = request.externalId().is_set() ? request.externalId().get() : 0; const int externalIdValue = request.externalId.is_set() ? request.externalId.get() : 0;
if (request.effectors().size() == 0) if (request.effectors.size() == 0)
return Core::FunctionReplyObject(tr_lts("dds", "Invalid Effector Count")); return Core::FunctionReplyObject(tr_lts("dds", "Invalid Effector Count"));
// We assume that there is no mixture of GeraClasses between charges // We assume that there is no mixture of GeraClasses between charges
const ProjectDataManagement::GearClass gearClass = m_mainHandler->gearClassOfChargeTypeId(request.effectors().at(0).chargeStruct().chargeTypeId()); const ProjectDataManagement::GearClass gearClass = m_mainHandler->gearClassOfChargeTypeId(request.effectors.at(0).chargeStruct.chargeTypeId);
const bool bDoClaimPlannedCharge = (request.id() == 0) && (externalIdValue == 0) const bool bDoClaimPlannedCharge = (request.id == 0) && (externalIdValue == 0)
&& (gearClass != ProjectDataManagement::GearClass_def::AirSupport && (gearClass != ProjectDataManagement::GearClass::GearClass_AirSupport
//&& (m_mainHandler->dds()->pdmDtc()->isAdlerChargeType(request.chargeTypeId())) //&& (m_mainHandler->dds()->pdmDtc()->isAdlerChargeType(request.chargeTypeId()))
) )
&& 1 == 2 && (request.effectSourceId() == ProjectDataManagement::EffectSource::ES_Internal); && 1 == 2 && (request.effectSourceId == ProjectDataManagement::EffectSource::ES_Internal);
if (bDoClaimPlannedCharge) if (bDoClaimPlannedCharge)
{ {
// get full charge amount per charge // get full charge amount per charge
QMap<int, int> mapChargeTypeAmount; // QMp<chargeTypeId, chargeAmount> QMap<int, int> mapChargeTypeAmount; // QMp<chargeTypeId, chargeAmount>
for (const auto &effector : request.effectors()) for (const auto &effector : request.effectors)
mapChargeTypeAmount.insert(effector.chargeStruct().chargeTypeId(), mapChargeTypeAmount.value(effector.chargeStruct().chargeTypeId()) + effector.chargeAmount()); mapChargeTypeAmount.insert(effector.chargeStruct.chargeTypeId, mapChargeTypeAmount.value(effector.chargeStruct.chargeTypeId) + effector.chargeAmount);
QMapIterator<int, int> it(mapChargeTypeAmount); QMapIterator<int, int> it(mapChargeTypeAmount);
while (it.hasNext()) while (it.hasNext())
{ {
@@ -452,14 +452,14 @@ Core::FunctionReplyObject HandlerEffectCluster::effectClusterCreateRequest(const
if (chargeNeeded <= 0) if (chargeNeeded <= 0)
return Core::FunctionReplyObject(tr_lts("dds", "Invalid impact count (<= 0).")); return Core::FunctionReplyObject(tr_lts("dds", "Invalid impact count (<= 0)."));
if (request.id() == 0) if (request.id == 0)
{ {
int chargeLeft = m_mainHandler->chargeAdministrationHandler()->availableCharge(it.key(), request.partyId().get()); int chargeLeft = m_mainHandler->chargeAdministrationHandler()->availableCharge(it.key(), request.partyId.get());
QString chargeName = QString::fromStdString(m_mainHandler->dds()->pdmDtc()->chargeType(it.key()).name()); QString chargeName = QString::fromStdString(m_mainHandler->dds()->pdmDtc()->chargeType(it.key()).name);
QString fireUnitName; QString fireUnitName;
if (request.participantId().is_set()) if (request.participantId.is_set())
fireUnitName = QString::fromStdString(m_mainHandler->dds()->ppmDtc()->participant(request.participantId().get()).designator()); fireUnitName = QString::fromStdString(m_mainHandler->dds()->ppmDtc()->participant(request.participantId.get()).designator);
if (chargeNeeded > chargeLeft) if (chargeNeeded > chargeLeft)
return Core::FunctionReplyObject(tr_lts("dds", "Invalid impact count. Fire Unit '%1' has %2 charges (%3), but for this cluster %4 are needed.")) return Core::FunctionReplyObject(tr_lts("dds", "Invalid impact count. Fire Unit '%1' has %2 charges (%3), but for this cluster %4 are needed."))
@@ -474,11 +474,11 @@ Core::FunctionReplyObject HandlerEffectCluster::effectClusterCreateRequest(const
Database::AesEffectCluster newData; Database::AesEffectCluster newData;
QVector<Database::AesEffectorData> newEffectorDataVec; QVector<Database::AesEffectorData> newEffectorDataVec;
const QJsonObject propertiesObject = QJsonDocument::fromJson(QByteArray::fromStdString(request.properties())).object(); const QJsonObject propertiesObject = QJsonDocument::fromJson(QByteArray::fromStdString(request.properties)).object();
fillData(request, newData, newEffectorDataVec, m_mainHandler); fillData(request, newData, newEffectorDataVec, m_mainHandler);
DEBUG_LOG(m_logger) << "AUTO newData " << newData.impactCount; DEBUG_LOG(m_logger) << "AUTO newData " << newData.impactCount;
if (!request.properties().empty() && (!request.effectStart().is_set() || request.effectStart().get() == 0)) if (!request.properties.empty() && (!request.effectStart.is_set() || request.effectStart.get() == 0))
{ {
newData.isUsingEffectStateReceived = propertiesObject.value(QStringLiteral("useReceived")).toBool(); newData.isUsingEffectStateReceived = propertiesObject.value(QStringLiteral("useReceived")).toBool();
} }
@@ -513,7 +513,7 @@ Core::FunctionReplyObject HandlerEffectCluster::effectClusterCreateRequest(const
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active air supports.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active air supports."));
} }
} }
else if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtEffectCluster]) + (s_currentAirSupportCount) && request.effectStart().is_set()) else if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtEffectCluster)]) + (s_currentAirSupportCount) && request.effectStart.is_set())
{ {
ifs->removeObject(); // Not finally deleted from db after this,Fallback if DB deletion is not working correct ifs->removeObject(); // Not finally deleted from db after this,Fallback if DB deletion is not working correct
ifs->removeObjectFromDb(); ifs->removeObjectFromDb();
@@ -543,21 +543,21 @@ Core::FunctionReplyObject HandlerEffectCluster::effectClusterModifyRequest(const
// // externalId maybe set be HLA interface: // // externalId maybe set be HLA interface:
// // from external (externalIdValue>0) -> no partyId required // // from external (externalIdValue>0) -> no partyId required
// // from internal (externalIdValue==0) -> partyId required // // from internal (externalIdValue==0) -> partyId required
// const int externalIdValue = request.externalId().is_set() ? request.externalId().get() : 0; // const int externalIdValue = request.externalId.is_set() ? request.externalId.get() : 0;
// if (externalIdValue == 0 && !request.partyId().is_set()) // if (externalIdValue == 0 && !request.partyId.is_set())
// return Core::FunctionReplyObject(tr_lts("dds", "Explosion areas need a party id.")); // return Core::FunctionReplyObject(tr_lts("dds", "Explosion areas need a party id."));
DEBUG_LOG(m_logger) << "request.effectStart :" << request.effectStart() << ", effectDuration :" DEBUG_LOG(m_logger) << "request.effectStart :" << request.effectStart << ", effectDuration :"
<< request.effectDuration() << request.effectDuration
// << ", flightDuration :" << request.flightDuration() // << ", flightDuration :" << request.flightDuration()
// << ", tapTime :" << request.tapTime() // << ", tapTime :" << request.tapTime()
<< ", properties: " << request.properties(); << ", properties: " << request.properties;
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
if (request.id() == 0 || ((request.id() < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id()), ret))) if (request.id == 0 || ((request.id < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id), ret)))
return effectClusterCreateRequest(request); return effectClusterCreateRequest(request);
ObjectEffectCluster *ifs = getObjectFromMap(m_objectMap, std::abs(request.id()), ret); ObjectEffectCluster *ifs = getObjectFromMap(m_objectMap, std::abs(request.id), ret);
if (!ifs) if (!ifs)
return ret; return ret;
@@ -569,12 +569,12 @@ Core::FunctionReplyObject HandlerEffectCluster::effectClusterModifyRequest(const
const QJsonObject propertiesObject = QJsonDocument::fromJson(QByteArray::fromStdString(aea.properties.toStdString())).object(); const QJsonObject propertiesObject = QJsonDocument::fromJson(QByteArray::fromStdString(aea.properties.toStdString())).object();
// Context NASAT: check via chargeTypeId: // Context NASAT: check via chargeTypeId:
const ProjectDataManagement::GearClass gc = m_mainHandler->gearClassOfChargeTypeId(request.effectors().at(0).chargeStruct().chargeTypeId()); const ProjectDataManagement::GearClass gc = m_mainHandler->gearClassOfChargeTypeId(request.effectors.at(0).chargeStruct.chargeTypeId);
const bool bChargeIsAirSupport = (gc == ProjectDataManagement::GearClass::GearClass_AirSupport); const bool bChargeIsAirSupport = (gc == ProjectDataManagement::GearClass::GearClass_AirSupport);
ifs->setAirSupportSource(bChargeIsAirSupport); ifs->setAirSupportSource(bChargeIsAirSupport);
// For counting, only Elements being at least prepared are important: // For counting, only Elements being at least prepared are important:
if (request.effectStart().is_set() && ifs->isObjectModifiable()) // ToDo: check if (request.effectStart.is_set() && ifs->isObjectModifiable()) // ToDo: check
{ {
// Calculate new polygon here. Not nice, though // Calculate new polygon here. Not nice, though
auto poly = Polygons::effectClusterArea(aea); auto poly = Polygons::effectClusterArea(aea);
@@ -590,20 +590,20 @@ Core::FunctionReplyObject HandlerEffectCluster::effectClusterModifyRequest(const
} }
else else
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtEffectCluster] + (s_currentAirSupportCount)) && request.effectStart().is_set() if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtEffectCluster)] + (s_currentAirSupportCount)) && request.effectStart.is_set()
&& ((wasCentral && !ifs->isActivationTimeSet()) || !wasCentral)) && ((wasCentral && !ifs->isActivationTimeSet()) || !wasCentral))
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active central effect clusters.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active central effect clusters."));
} }
// For counting, only Elements being at least prepared are important: // For counting, only Elements being at least prepared are important:
} }
if (request.id() < 0 && checkStateForSfm(ifs)) if (request.id < 0 && checkStateForSfm(ifs))
{ {
DEBUG_LOG(m_logger) << "Overwrite Effect State for OC"; DEBUG_LOG(m_logger) << "Overwrite Effect State for OC";
aea.effectStateId = AesEffectState::EsPrepared; aea.effectStateId = AesEffectState::EsPrepared;
} }
DEBUG_LOG(m_logger) << "request.properties()" << request.properties() << " aea.properties=" << aea.properties; DEBUG_LOG(m_logger) << "request.properties()" << request.properties << " aea.properties=" << aea.properties;
// ifs->setEffectors(effectorDataVec); // ifs->setEffectors(effectorDataVec);
// updateProperties(aea, effectorDataVec); <- done in fillData // updateProperties(aea, effectorDataVec); <- done in fillData
// update internalMap // update internalMap
@@ -656,7 +656,7 @@ void HandlerEffectCluster::onEffectClusterPauseResumeRequest(const rti::core::Sa
{ {
DEBUG_LOG(m_logger) << "onEffectClusterPauseResumeRequest" << request; DEBUG_LOG(m_logger) << "onEffectClusterPauseResumeRequest" << request;
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectEffectCluster *ifs = getObjectFromMap(m_objectMap, request.id(), ret); ObjectEffectCluster *ifs = getObjectFromMap(m_objectMap, request.id, ret);
if (!ifs) if (!ifs)
{ {
m_mainHandler->dds()->fts()->effectClusterPauseResumeReply(cookie, ret); m_mainHandler->dds()->fts()->effectClusterPauseResumeReply(cookie, ret);
@@ -677,13 +677,13 @@ void HandlerEffectCluster::onEffectClusterFireHaltRequest(const rti::core::Sampl
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ProjectDataManagement::L22_FireHaltCategory categorie = request.fireHaltCategory(); ProjectDataManagement::L22_FireHaltCategory categorie = request.fireHaltCategory;
QMap<int, ObjectEffectCluster *> effectClusterPartyMap; QMap<int, ObjectEffectCluster *> effectClusterPartyMap;
for (const auto *area : qAsConst(m_objectMap)) for (const auto *area : qAsConst(m_objectMap))
{ {
if (area->data().partyId == request.partyId()) if (area->data().partyId == request.partyId)
{ {
ObjectEffectCluster *ifs = getObjectFromMap(m_objectMap, area->data().id, ret); ObjectEffectCluster *ifs = getObjectFromMap(m_objectMap, area->data().id, ret);
if (!ifs) if (!ifs)
@@ -696,7 +696,7 @@ void HandlerEffectCluster::onEffectClusterFireHaltRequest(const rti::core::Sampl
} }
} }
switch (categorie.underlying()) switch (categorie)
{ {
case ProjectDataManagement::L22_FireHaltCategory::L22_FireHaltCategory_A: // Feuer Halt Allgemein case ProjectDataManagement::L22_FireHaltCategory::L22_FireHaltCategory_A: // Feuer Halt Allgemein
{ {
@@ -705,9 +705,9 @@ void HandlerEffectCluster::onEffectClusterFireHaltRequest(const rti::core::Sampl
{ {
EffectClusterPauseResumeRequest req; EffectClusterPauseResumeRequest req;
req.id(ifs->data().id); req.id = ifs->data().id;
req.remainingDuration(ifs->data().effectDuration); req.remainingDuration = ifs->data().effectDuration;
req.resumeExecution(false); // false -> pause aes req.resumeExecution = false; // false -> pause aes
ret = ifs->resumePause(req); ret = ifs->resumePause(req);
} }
@@ -720,9 +720,9 @@ void HandlerEffectCluster::onEffectClusterFireHaltRequest(const rti::core::Sampl
// the fire hold with the corresponding target coordinate and circular area. // the fire hold with the corresponding target coordinate and circular area.
for (auto *ifs : qAsConst(effectClusterPartyMap)) for (auto *ifs : qAsConst(effectClusterPartyMap))
{ {
const double lonRad = request.longitude().is_set() ? request.longitude().get() * LtsCoordTrans::deg2rad() : 0.0; const double lonRad = request.longitude.is_set() ? request.longitude.get() * LtsCoordTrans::deg2rad() : 0.0;
const double latRad = request.latitude().is_set() ? request.latitude().get() * LtsCoordTrans::deg2rad() : 0.0; const double latRad = request.latitude.is_set() ? request.latitude.get() * LtsCoordTrans::deg2rad() : 0.0;
const int radius = request.radius().is_set() ? request.radius().get() : 0; const int radius = request.radius.is_set() ? request.radius.get() : 0;
DEBUG_LOG(m_logger) << "[Feuer Halt Referenziert] " << "lonRad : " << lonRad << " " << "latRad : " << latRad << " " << "radius : " << radius; DEBUG_LOG(m_logger) << "[Feuer Halt Referenziert] " << "lonRad : " << lonRad << " " << "latRad : " << latRad << " " << "radius : " << radius;
@@ -731,9 +731,9 @@ void HandlerEffectCluster::onEffectClusterFireHaltRequest(const rti::core::Sampl
DEBUG_LOG(m_logger) << "[Feuer Halt Referenziert ----- intersectWithCircle] " << "effectClusterId: " << ifs->data().id; DEBUG_LOG(m_logger) << "[Feuer Halt Referenziert ----- intersectWithCircle] " << "effectClusterId: " << ifs->data().id;
EffectClusterPauseResumeRequest req; EffectClusterPauseResumeRequest req;
req.id(ifs->data().id); req.id = ifs->data().id;
req.remainingDuration(ifs->data().effectDuration); req.remainingDuration = ifs->data().effectDuration;
req.resumeExecution(false); // false -> pause aes req.resumeExecution = false; // false -> pause aes
ifs->resumePause(req); ifs->resumePause(req);
} }
@@ -750,7 +750,7 @@ void HandlerEffectCluster::onEffectClusterFireHaltRequest(const rti::core::Sampl
{ {
DEBUG_LOG(m_logger) << "[Feuer Einstellen ----- markAsExpired] " << "effectClusterId: " << ifs->data().id; DEBUG_LOG(m_logger) << "[Feuer Einstellen ----- markAsExpired] " << "effectClusterId: " << ifs->data().id;
ifs->markAsExpired(request.entladenSchuss().is_set() ? request.entladenSchuss().get() : false); ifs->markAsExpired(request.entladenSchuss.is_set() ? request.entladenSchuss.get() : false);
} }
break; break;
} }
@@ -760,8 +760,8 @@ void HandlerEffectCluster::onEffectClusterFireHaltRequest(const rti::core::Sampl
DEBUG_LOG(m_logger) << "[Aufheben Feuer Halt Allgemein] " << "effectClusterId: " << ifs->data().id; DEBUG_LOG(m_logger) << "[Aufheben Feuer Halt Allgemein] " << "effectClusterId: " << ifs->data().id;
EffectClusterPauseResumeRequest req; EffectClusterPauseResumeRequest req;
req.remainingDuration(ifs->data().effectDuration); req.remainingDuration = ifs->data().effectDuration;
req.resumeExecution(true); // true -> resume aes req.resumeExecution = true; // true -> resume aes
ifs->resumePause(req); ifs->resumePause(req);
} }
@@ -770,9 +770,9 @@ void HandlerEffectCluster::onEffectClusterFireHaltRequest(const rti::core::Sampl
{ {
for (auto *ifs : qAsConst(effectClusterPartyMap)) for (auto *ifs : qAsConst(effectClusterPartyMap))
{ {
const double lonRad = request.longitude().is_set() ? request.longitude().get() * LtsCoordTrans::deg2rad() : 0.0; // optional<lonRad> const double lonRad = request.longitude.is_set() ? request.longitude.get() * LtsCoordTrans::deg2rad() : 0.0; // optional<lonRad>
const double latRad = request.latitude().is_set() ? request.latitude().get() * LtsCoordTrans::deg2rad() : 0.0; // optional <latRad> const double latRad = request.latitude.is_set() ? request.latitude.get() * LtsCoordTrans::deg2rad() : 0.0; // optional <latRad>
const int radius = request.radius().is_set() ? request.radius().get() : 0; const int radius = request.radius.is_set() ? request.radius.get() : 0;
DEBUG_LOG(m_logger) << "[Aufheben Feuer Halt Referenziert] " << "lonRad : " << lonRad << " " << "latRad : " << latRad << " " << "radius : " << radius; DEBUG_LOG(m_logger) << "[Aufheben Feuer Halt Referenziert] " << "lonRad : " << lonRad << " " << "latRad : " << latRad << " " << "radius : " << radius;
@@ -782,9 +782,9 @@ void HandlerEffectCluster::onEffectClusterFireHaltRequest(const rti::core::Sampl
EffectClusterPauseResumeRequest req; EffectClusterPauseResumeRequest req;
req.id(ifs->data().id); req.id = ifs->data().id;
req.remainingDuration(ifs->data().effectDuration); req.remainingDuration = ifs->data().effectDuration;
req.resumeExecution(true); // true -> resume aes req.resumeExecution = true; // true -> resume aes
ifs->resumePause(req); ifs->resumePause(req);
} }
@@ -792,7 +792,7 @@ void HandlerEffectCluster::onEffectClusterFireHaltRequest(const rti::core::Sampl
break; break;
} }
default: default:
INFO_LOG(m_logger) << "EX-FH missing or wrong FireHaltCategory" << categorie.underlying(); INFO_LOG(m_logger) << "EX-FH missing or wrong FireHaltCategory" << categorie;
break; break;
} }
@@ -805,8 +805,8 @@ void HandlerEffectCluster::onEffectClusterFireHaltRequest(const rti::core::Sampl
void HandlerEffectCluster::onEffectClusterReleaseReceivedRequest(const rti::core::SampleIdentity &cookie, const EffectClusterReleaseReceivedRequest &request) void HandlerEffectCluster::onEffectClusterReleaseReceivedRequest(const rti::core::SampleIdentity &cookie, const EffectClusterReleaseReceivedRequest &request)
{ {
DEBUG_LOG(m_logger) << "onEffectClusterReleaseReceivedRequest" << request; DEBUG_LOG(m_logger) << "onEffectClusterReleaseReceivedRequest" << request;
Core::FunctionReplyObject ret(request.id()); Core::FunctionReplyObject ret(request.id);
ObjectEffectCluster *ifs = getObjectFromMap(m_objectMap, request.id(), ret); ObjectEffectCluster *ifs = getObjectFromMap(m_objectMap, request.id, ret);
if (!ifs) if (!ifs)
{ {
ERROR_LOG(m_logger) << ret(); ERROR_LOG(m_logger) << ret();
@@ -816,7 +816,7 @@ void HandlerEffectCluster::onEffectClusterReleaseReceivedRequest(const rti::core
if (!ifs->isUsingEffectStateReceived()) if (!ifs->isUsingEffectStateReceived())
{ {
ret = ret.setStr(tr_lts("dds", "EffectCluster with id %1 is not using EffectState Received")).arg(request.id()); ret = ret.setStr(tr_lts("dds", "EffectCluster with id %1 is not using EffectState Received")).arg(request.id);
ERROR_LOG(m_logger) << ret(); ERROR_LOG(m_logger) << ret();
m_mainHandler->dds()->fts()->effectClusterReleaseReceivedReply(cookie, ret); m_mainHandler->dds()->fts()->effectClusterReleaseReceivedReply(cookie, ret);
return; return;
@@ -832,9 +832,9 @@ void HandlerEffectCluster::onEffectClusterReleaseReceivedRequest(const rti::core
void HandlerEffectCluster::onAcknowledgeExternalAesItemRequest(const rti::core::SampleIdentity &cookie, const AcknowledgeExternalAesItemRequest &request) void HandlerEffectCluster::onAcknowledgeExternalAesItemRequest(const rti::core::SampleIdentity &cookie, const AcknowledgeExternalAesItemRequest &request)
{ {
DEBUG_LOG(m_logger) << "HandlerEffectCluster::onAcknowledgeExternalAesItemRequest for aesItem" << request.aesId(); DEBUG_LOG(m_logger) << "HandlerEffectCluster::onAcknowledgeExternalAesItemRequest for aesItem" << request.aesId;
Core::FunctionReplyObject ret(request.aesId()); Core::FunctionReplyObject ret(request.aesId);
ObjectEffectCluster *ifs = getObjectFromMap(m_objectMap, request.aesId(), ret); ObjectEffectCluster *ifs = getObjectFromMap(m_objectMap, request.aesId, ret);
if (!ifs) if (!ifs)
{ {
ERROR_LOG(m_logger) << ret(); ERROR_LOG(m_logger) << ret();
@@ -852,18 +852,18 @@ void HandlerEffectCluster::onAcknowledgeExternalAesItemRequest(const rti::core::
void HandlerEffectCluster::onSetAesItemEffectorStateRequest(const rti::core::SampleIdentity &cookie, const SetAesItemEffectorStateRequest &request) void HandlerEffectCluster::onSetAesItemEffectorStateRequest(const rti::core::SampleIdentity &cookie, const SetAesItemEffectorStateRequest &request)
{ {
DEBUG_LOG(m_logger) << "HandlerEffectCluster::onSetAesItemEffectorStateRequest for aesItem" << request.aesId() << " to State: " << request.newEffectorState(); DEBUG_LOG(m_logger) << "HandlerEffectCluster::onSetAesItemEffectorStateRequest for aesItem" << request.aesId << " to State: " << request.newEffectorState;
Core::FunctionReplyObject ret(request.aesId()); Core::FunctionReplyObject ret(request.aesId);
ObjectEffectCluster *ifs = getObjectFromMap(m_objectMap, request.aesId(), ret); ObjectEffectCluster *ifs = getObjectFromMap(m_objectMap, request.aesId, ret);
if (!ifs) if (!ifs)
{ {
ERROR_LOG(m_logger) << ret(); ERROR_LOG(m_logger) << ret();
m_mainHandler->dds()->fts()->setAesItemEffectorStateReply(cookie, ret); m_mainHandler->dds()->fts()->setAesItemEffectorStateReply(cookie, ret);
return; return;
} }
if (!ifs->overrideEffectorStates(request.newEffectorState())) if (!ifs->overrideEffectorStates(request.newEffectorState))
{ {
ret.setStr(tr_lts("dds", "EffectCluster with id %1 can't change to new State")).arg(request.aesId()); ret.setStr(tr_lts("dds", "EffectCluster with id %1 can't change to new State")).arg(request.aesId);
} }
m_mainHandler->dds()->fts()->setAesItemEffectorStateReply(cookie, ret); m_mainHandler->dds()->fts()->setAesItemEffectorStateReply(cookie, ret);
@@ -901,7 +901,7 @@ void HandlerEffectCluster::onTrajectoryAdlerModifyRequest(const rti::core::Sampl
{ {
DEBUG_LOG(m_logger) << "onTrajectoryAdlerModifyRequest" << request; DEBUG_LOG(m_logger) << "onTrajectoryAdlerModifyRequest" << request;
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectEffectCluster *ifs = getObjectFromMap(m_objectMap, request.aesItemId(), ret); ObjectEffectCluster *ifs = getObjectFromMap(m_objectMap, request.aesItemId, ret);
if (!ifs) if (!ifs)
{ {
m_mainHandler->dds()->fts()->trajectoryAdlerModifyReply(cookie, ret); m_mainHandler->dds()->fts()->trajectoryAdlerModifyReply(cookie, ret);
@@ -68,20 +68,20 @@ void HandlerEffector::onParticipantChanged(const ParticipantManagement::Particip
//DEBUG_LOG(m_logger)<<"onParticipantChanged participantId:" << data.id(); //DEBUG_LOG(m_logger)<<"onParticipantChanged participantId:" << data.id();
if (modType == DataModification::eRemoved) if (modType == DataModification::eRemoved)
{ {
DEBUG_LOG(m_logger) << "m_participantsOutsideMap.remove participantId: " << data.id(); DEBUG_LOG(m_logger) << "m_participantsOutsideMap.remove participantId: " << data.id;
if (m_effectors.contains(data.id())) if (m_effectors.contains(data.id))
deleteEffector(data.id()); deleteEffector(data.id);
return; return;
} }
if (m_ppmDtc->isArtilleryType(data.typeId())) if (m_ppmDtc->isArtilleryType(data.typeId))
{ {
// Filter TypeClass Unit // Filter TypeClass Unit
ParticipantManagement::Type type = m_ppmDtc->type(data.typeId()); ParticipantManagement::Type type = m_ppmDtc->type(data.typeId);
if (type.typeClass() != ParticipantManagement::TypeClass_def::Unit) if (type.typeClass != ParticipantManagement::TypeClass::Unit)
createEffector(data.id()); createEffector(data.id);
} }
else else
if (m_effectors.contains(data.id())) if (m_effectors.contains(data.id))
deleteEffector(data.id()); deleteEffector(data.id);
} }
} }
@@ -15,7 +15,7 @@ namespace AreaEffectSimulation
{ {
HandlerExplosionArea::HandlerExplosionArea(MainHandler *mainHandler) HandlerExplosionArea::HandlerExplosionArea(MainHandler *mainHandler)
: HandlerBaseTmpl<ObjectExplosionArea>(mainHandler, QStringLiteral("ExplosionArea"), s_areaCount[AesType::AtExplosionArea], s_areaCountCentral[AesType::AtExplosionArea]) : HandlerBaseTmpl<ObjectExplosionArea>(mainHandler, QStringLiteral("ExplosionArea"), s_areaCount[static_cast<int>(AesType::AtExplosionArea)], s_areaCountCentral[static_cast<int>(AesType::AtExplosionArea)])
, Interface::Fts::ExplosionAreaModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::ExplosionAreaModifyRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::ExplosionAreaRemoveRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::ExplosionAreaRemoveRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::ExplosionAreaPauseResumeRequestHandler(m_mainHandler->dds()->fts()) , Interface::Fts::ExplosionAreaPauseResumeRequestHandler(m_mainHandler->dds()->fts())
@@ -40,7 +40,7 @@ bool HandlerExplosionArea::init()
} }
if (!ifs->data().isCentral) if (!ifs->data().isCentral)
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionArea] + s_maxActiveAreas[AesType::AtExplosionSingle])) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreas[static_cast<int>(AesType::AtExplosionSingle)]))
{ {
ERROR_LOG(m_logger) << "More active explosion areas in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active explosion areas in database than allowed - ignoring the rest!";
ifs->removeObject(); ifs->removeObject();
@@ -50,7 +50,7 @@ bool HandlerExplosionArea::init()
} }
else else
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtExplosionArea] + s_maxActiveAreasCentral[AesType::AtExplosionSingle])) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionSingle)]))
{ {
ERROR_LOG(m_logger) << "More active explosion areas in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active explosion areas in database than allowed - ignoring the rest!";
ifs->removeObject(); ifs->removeObject();
@@ -83,39 +83,39 @@ bool HandlerExplosionArea::init()
int HandlerExplosionArea::totalAreas() const int HandlerExplosionArea::totalAreas() const
{ {
return s_areaCount[AesType::AtExplosionArea] + s_areaCount[AesType::AtExplosionSingle]; return s_areaCount[static_cast<int>(AesType::AtExplosionArea)] + s_areaCount[static_cast<int>(AesType::AtExplosionSingle)];
} }
int HandlerExplosionArea::totalAreasCentral() const int HandlerExplosionArea::totalAreasCentral() const
{ {
return s_areaCountCentral[AesType::AtExplosionArea] + s_areaCountCentral[AesType::AtExplosionSingle]; return s_areaCountCentral[static_cast<int>(AesType::AtExplosionArea)] + s_areaCountCentral[static_cast<int>(AesType::AtExplosionSingle)];
} }
static void fillData(const ExplosionAreaModifyRequest &src, Database::AesExplosionArea &dst) static void fillData(const ExplosionAreaModifyRequest &src, Database::AesExplosionArea &dst)
{ {
if (src.id() < 0) // is the id given as negative? set id -> used by OC-Laptop if (src.id < 0) // is the id given as negative? set id -> used by OC-Laptop
dst.id = src.id(); dst.id = src.id;
dst.impactPosition.rx() = src.area().cornerBottomLeft().lon(); dst.impactPosition.rx() = src.area.cornerBottomLeft.lon;
dst.impactPosition.ry() = src.area().cornerBottomLeft().lat(); dst.impactPosition.ry() = src.area.cornerBottomLeft.lat;
dst.rotationAngle = src.area().rotation(); dst.rotationAngle = src.area.rotation;
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.effectStart = src.effectStart().is_set() && src.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.effectDuration = src.effectDuration(); dst.effectDuration = src.effectDuration;
dst.effectSourceId = src.effectSourceId(); dst.effectSourceId = src.effectSourceId;
dst.impactLength = src.area().height(); dst.impactLength = src.area.height;
dst.impactWidth = src.area().width(); dst.impactWidth = src.area.width;
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.chargeTypeId = src.chargeTypeId(); dst.chargeTypeId = src.chargeTypeId;
dst.participantId = src.participantId().is_set() ? src.participantId().get() : 0; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0;
dst.cannonCount = src.cannonCount(); dst.cannonCount = src.cannonCount;
dst.cannonRounds = src.cannonRounds(); dst.cannonRounds = src.cannonRounds;
dst.altitude = src.altitude(); dst.altitude = src.altitude;
dst.firePurpose = QString::fromStdString(src.purpose()); dst.firePurpose = QString::fromStdString(src.purpose);
dst.fireRequestTime = QDateTime::fromMSecsSinceEpoch(src.fireRequestTime()); dst.fireRequestTime = QDateTime::fromMSecsSinceEpoch(src.fireRequestTime);
dst.effectMarkingInTa = src.effectMarkingInTa(); dst.effectMarkingInTa = src.effectMarkingInTa;
dst.externalId = src.externalId().is_set() ? src.externalId().get() : 0; dst.externalId = src.externalId.is_set() ? src.externalId.get() : 0;
} }
void HandlerExplosionArea::onExplosionAreaModifyRequest(const rti::core::SampleIdentity &cookie, void HandlerExplosionArea::onExplosionAreaModifyRequest(const rti::core::SampleIdentity &cookie,
@@ -130,22 +130,22 @@ void HandlerExplosionArea::onExplosionAreaModifyRequest(const rti::core::SampleI
Core::FunctionReplyObject HandlerExplosionArea::explosionAreaCreateRequest(const ExplosionAreaModifyRequest &request) Core::FunctionReplyObject HandlerExplosionArea::explosionAreaCreateRequest(const ExplosionAreaModifyRequest &request)
{ {
if (!request.partyId().is_set()) if (!request.partyId.is_set())
return Core::FunctionReplyObject(tr_lts("dds", "Explosion areas need a party id.")); return Core::FunctionReplyObject(tr_lts("dds", "Explosion areas need a party id."));
int chargeNeeded = request.cannonCount() * request.cannonRounds(); int chargeNeeded = request.cannonCount * request.cannonRounds;
if (chargeNeeded <= 0) if (chargeNeeded <= 0)
return Core::FunctionReplyObject(tr_lts("dds", "Invalid impact count (cannon round or cannon count <= 0).")); return Core::FunctionReplyObject(tr_lts("dds", "Invalid impact count (cannon round or cannon count <= 0)."));
if (request.id() == 0) if (request.id == 0)
{ {
int chargeLeft = m_mainHandler->chargeAdministrationHandler()->availableCharge(request.chargeTypeId(), request.partyId().get()); int chargeLeft = m_mainHandler->chargeAdministrationHandler()->availableCharge(request.chargeTypeId, request.partyId.get());
if (chargeNeeded > chargeLeft) if (chargeNeeded > chargeLeft)
return Core::FunctionReplyObject(tr_lts("dds", "Invalid impact count (%1 charges needed but only %2 charges available for Charge Id %3 and Party Id %4).")) return Core::FunctionReplyObject(tr_lts("dds", "Invalid impact count (%1 charges needed but only %2 charges available for Charge Id %3 and Party Id %4)."))
.arg(chargeNeeded) .arg(chargeNeeded)
.arg(chargeLeft) .arg(chargeLeft)
.arg(request.chargeTypeId()) .arg(request.chargeTypeId)
.arg(request.partyId().get()); .arg(request.partyId.get());
} }
Database::AesExplosionArea newData; Database::AesExplosionArea newData;
@@ -164,7 +164,7 @@ Core::FunctionReplyObject HandlerExplosionArea::explosionAreaCreateRequest(const
if (ifs->data().isCentral) if (ifs->data().isCentral)
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtExplosionArea] + s_maxActiveAreasCentral[AesType::AtExplosionSingle]) && request.effectStart().is_set()) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionSingle)]) && request.effectStart.is_set())
{ {
ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct
ifs->removeObjectFromDb(); ifs->removeObjectFromDb();
@@ -174,7 +174,7 @@ Core::FunctionReplyObject HandlerExplosionArea::explosionAreaCreateRequest(const
} }
else else
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionArea] + s_maxActiveAreas[AesType::AtExplosionSingle]) && request.effectStart().is_set()) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreas[static_cast<int>(AesType::AtExplosionSingle)]) && request.effectStart.is_set())
{ {
ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct
ifs->removeObjectFromDb(); ifs->removeObjectFromDb();
@@ -208,10 +208,10 @@ Core::FunctionReplyObject HandlerExplosionArea::explosionAreaCreateRequest(const
Core::FunctionReplyObject HandlerExplosionArea::explosionAreaModifyRequest(const ExplosionAreaModifyRequest &request) Core::FunctionReplyObject HandlerExplosionArea::explosionAreaModifyRequest(const ExplosionAreaModifyRequest &request)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
if (request.id() == 0 || ((request.id() < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id()), ret))) if (request.id == 0 || ((request.id < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id), ret)))
return explosionAreaCreateRequest(request); return explosionAreaCreateRequest(request);
ObjectExplosionArea *ifs = getObjectFromMap(m_objectMap, std::abs(request.id()), ret); ObjectExplosionArea *ifs = getObjectFromMap(m_objectMap, std::abs(request.id), ret);
if (!ifs) if (!ifs)
return ret; return ret;
@@ -230,18 +230,18 @@ Core::FunctionReplyObject HandlerExplosionArea::explosionAreaModifyRequest(const
/*! /*!
* Check if the max amount is reached if the effect start added after creation. * Check if the max amount is reached if the effect start added after creation.
!*/ !*/
if(!ifs->isActivationTimeSet() && request.effectStart().is_set()) if(!ifs->isActivationTimeSet() && request.effectStart.is_set())
{ {
if (isCentral) if (isCentral)
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtExplosionArea] + s_maxActiveAreasCentral[AesType::AtExplosionSingle])) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionSingle)]))
{ {
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active central explosion areas and explosion singles")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active central explosion areas and explosion singles"));
} }
} }
else else
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionArea] + s_maxActiveAreas[AesType::AtExplosionSingle])) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreas[static_cast<int>(AesType::AtExplosionSingle)]))
{ {
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active explosion areas and explosion singles")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active explosion areas and explosion singles"));
} }
@@ -249,7 +249,7 @@ Core::FunctionReplyObject HandlerExplosionArea::explosionAreaModifyRequest(const
} }
// For counting, only Elements being at least prepared are important: // For counting, only Elements being at least prepared are important:
if (request.effectStart().is_set() && ifs->isObjectModifiable()) if (request.effectStart.is_set() && ifs->isObjectModifiable())
{ {
// Calculate new polygon here. Not nice, though // Calculate new polygon here. Not nice, though
@@ -264,8 +264,8 @@ Core::FunctionReplyObject HandlerExplosionArea::explosionAreaModifyRequest(const
// Change from central to training area // Change from central to training area
if (wasCentral) if (wasCentral)
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionArea] + s_maxActiveAreas[AesType::AtExplosionSingle])) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreas[static_cast<int>(AesType::AtExplosionSingle)]))
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active explosion areas and explosion singles")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active explosion areas and explosion singles"));
m_areaCount++; m_areaCount++;
m_areaCountCentral--; m_areaCountCentral--;
@@ -274,8 +274,8 @@ Core::FunctionReplyObject HandlerExplosionArea::explosionAreaModifyRequest(const
} }
else // Change from training area to central else // Change from training area to central
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtExplosionArea] + s_maxActiveAreasCentral[AesType::AtExplosionSingle])) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionSingle)]))
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active central explosion areas and explosion singles")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active central explosion areas and explosion singles"));
m_areaCount--; m_areaCount--;
m_areaCountCentral++; m_areaCountCentral++;
DEBUG_LOG(m_logger) << "s_areaCount[AesType::AtExplosionArea] = " << m_areaCount; DEBUG_LOG(m_logger) << "s_areaCount[AesType::AtExplosionArea] = " << m_areaCount;
@@ -284,7 +284,7 @@ Core::FunctionReplyObject HandlerExplosionArea::explosionAreaModifyRequest(const
} }
} }
if (request.id() < 0 && checkStateForSfm(ifs)) if (request.id < 0 && checkStateForSfm(ifs))
{ {
DEBUG_LOG(m_logger) << "Overwrite Effect State for OC"; DEBUG_LOG(m_logger) << "Overwrite Effect State for OC";
aea.effectStateId = AesEffectState::EsPrepared; aea.effectStateId = AesEffectState::EsPrepared;
@@ -297,27 +297,27 @@ Core::FunctionReplyObject HandlerExplosionArea::explosionAreaModifyGeometryReque
{ {
// WARNING: request.area.cornerBottomLeft() contains center point! // WARNING: request.area.cornerBottomLeft() contains center point!
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectExplosionArea *ifs = getObjectFromMap(m_objectMap, request.id(), ret); ObjectExplosionArea *ifs = getObjectFromMap(m_objectMap, request.id, ret);
if (!ifs) if (!ifs)
return ret; return ret;
// Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war // Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war
// vorher noch ohne Wirkbeginn // vorher noch ohne Wirkbeginn
if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionArea] + s_maxActiveAreas[AesType::AtExplosionSingle]) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreas[static_cast<int>(AesType::AtExplosionSingle)])
&& request.effectStart().is_set() && request.effectStart.is_set()
&& !ifs->isActivationTimeSet() // if time was not set before change and now check count && !ifs->isActivationTimeSet() // if time was not set before change and now check count
&& !ifs->isObjectModifiable()) && !ifs->isObjectModifiable())
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active explosion areas and explosion singles")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active explosion areas and explosion singles"));
// Todo: IsObjectModifiable() ?!? // Todo: IsObjectModifiable() ?!?
AreaEffectSimulation::Database::AesExplosionArea aea(ifs->data()); AreaEffectSimulation::Database::AesExplosionArea aea(ifs->data());
aea.impactPosition = Polygons::centerPoint2BottomLeft(QPointF(request.area().cornerBottomLeft().lon(), aea.impactPosition = Polygons::centerPoint2BottomLeft(QPointF(request.area.cornerBottomLeft.lon,
request.area().cornerBottomLeft().lat()), request.area.cornerBottomLeft.lat),
ifs->data().impactWidth, ifs->data().impactWidth,
ifs->data().impactLength, ifs->data().impactLength,
request.area().rotation()); request.area.rotation);
aea.rotationAngle = request.area().rotation(); aea.rotationAngle = request.area.rotation;
return ifs->updateObject(aea); return ifs->updateObject(aea);
} }
@@ -343,7 +343,7 @@ void HandlerExplosionArea::onExplosionAreaPauseResumeRequest(const rti::core::Sa
{ {
DEBUG_LOG(m_logger) << "onExplosionAreaPauseResumeRequest" << request; DEBUG_LOG(m_logger) << "onExplosionAreaPauseResumeRequest" << request;
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectExplosionArea *ifs = getObjectFromMap(m_objectMap, request.id(), ret); ObjectExplosionArea *ifs = getObjectFromMap(m_objectMap, request.id, ret);
if (!ifs) if (!ifs)
{ {
m_mainHandler->dds()->fts()->explosionAreaPauseResumeReply(cookie, ret); m_mainHandler->dds()->fts()->explosionAreaPauseResumeReply(cookie, ret);
@@ -23,7 +23,7 @@ namespace AreaEffectSimulation
{ {
HandlerExplosionCluster::HandlerExplosionCluster(MainHandler *mainHandler) HandlerExplosionCluster::HandlerExplosionCluster(MainHandler *mainHandler)
: HandlerBaseTmpl<ObjectExplosionCluster>(mainHandler, QStringLiteral("HandlerExplosionCluster"), s_areaCount[AesType::AtExplosionCluster], s_areaCountCentral[AesType::AtExplosionCluster]) : HandlerBaseTmpl<ObjectExplosionCluster>(mainHandler, QStringLiteral("HandlerExplosionCluster"), s_areaCount[static_cast<int>(AesType::AtExplosionCluster)], s_areaCountCentral[static_cast<int>(AesType::AtExplosionCluster)])
, Interface::Fts::ExplosionClusterModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::ExplosionClusterModifyRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::ExplosionClusterSingleEffectOnlyModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::ExplosionClusterSingleEffectOnlyModifyRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::ExplosionClusterOcModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::ExplosionClusterOcModifyRequestHandler(mainHandler->dds()->fts())
@@ -68,7 +68,7 @@ bool HandlerExplosionCluster::init()
return true; return true;
} }
} }
else if (totalAreas() >= s_maxActiveAreas[AesType::AtExplosionCluster]) else if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtExplosionCluster)])
{ {
ERROR_LOG(m_logger) << "More active explosion areas in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active explosion areas in database than allowed - ignoring the rest!";
ifs->removeObject(); ifs->removeObject();
@@ -78,7 +78,7 @@ bool HandlerExplosionCluster::init()
} }
else else
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtExplosionCluster])) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionCluster)]))
{ {
ERROR_LOG(m_logger) << "More active explosion areas in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active explosion areas in database than allowed - ignoring the rest!";
ifs->removeObject(); ifs->removeObject();
@@ -114,41 +114,41 @@ bool HandlerExplosionCluster::init()
int HandlerExplosionCluster::totalAreas() const int HandlerExplosionCluster::totalAreas() const
{ {
return s_areaCount[AesType::AtExplosionCluster]; return s_areaCount[static_cast<int>(AesType::AtExplosionCluster)];
} }
int HandlerExplosionCluster::totalAreasCentral() const int HandlerExplosionCluster::totalAreasCentral() const
{ {
return s_areaCountCentral[AesType::AtExplosionCluster] ; return s_areaCountCentral[static_cast<int>(AesType::AtExplosionCluster)] ;
} }
static void fillData(const ExplosionClusterModifyRequest &src, Database::AesExplosionCluster &dst, MainHandler *mainHandler) static void fillData(const ExplosionClusterModifyRequest &src, Database::AesExplosionCluster &dst, MainHandler *mainHandler)
{ {
if (src.id() < 0) // is the id given as negative? set id -> used by OC-Laptop if (src.id < 0) // is the id given as negative? set id -> used by OC-Laptop
dst.id = src.id(); dst.id = src.id;
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.element = QString::fromStdString(src.element()); dst.element = QString::fromStdString(src.element);
dst.impactPosition.rx() = src.area().cornerBottomLeft().lon(); dst.impactPosition.rx() = src.area.cornerBottomLeft.lon;
dst.impactPosition.ry() = src.area().cornerBottomLeft().lat(); dst.impactPosition.ry() = src.area.cornerBottomLeft.lat;
dst.impactLength = src.area().height(); dst.impactLength = src.area.height;
dst.impactWidth = src.area().width(); dst.impactWidth = src.area.width;
dst.rotationAngle = src.area().rotation(); dst.rotationAngle = src.area.rotation;
const bool bIsPointSimilar = (src.explosionGeometry() == AreaEffectSimulation::AesExplosionGeometry_def::EgAimPoint) || const bool bIsPointSimilar = (src.explosionGeometry == AreaEffectSimulation::AesExplosionGeometry::EgAimPoint) ||
(src.explosionGeometry() == AreaEffectSimulation::AesExplosionGeometry_def::EgPoint); (src.explosionGeometry == AreaEffectSimulation::AesExplosionGeometry::EgPoint);
if (bIsPointSimilar && ((src.area().width() <= 0) || (src.area().height() <= 0))) if (bIsPointSimilar && ((src.area.width <= 0) || (src.area.height <= 0)))
{ {
const Core::GeoPosition2D &cornerBottomLeft = src.area().cornerBottomLeft(); const Core::GeoPosition2D &cornerBottomLeft = src.area.cornerBottomLeft;
const double impactDiameter = mainHandler->dds()->pdmDtc()->impactRadius(src.chargeStruct().chargeTypeId(), const double impactDiameter = mainHandler->dds()->pdmDtc()->impactRadius(src.chargeStruct.chargeTypeId,
src.chargeStruct().igniterTypeId(), src.chargeStruct.igniterTypeId,
src.chargeStruct().igniterFunctionId()) * 2.0; // GUEZE-2634 src.chargeStruct.igniterFunctionId) * 2.0; // GUEZE-2634
const QPointF bottomLeft(Polygons::centerPoint2BottomLeft(QPointF(cornerBottomLeft.lon(), cornerBottomLeft.lat()), const QPointF bottomLeft(Polygons::centerPoint2BottomLeft(QPointF(cornerBottomLeft.lon, cornerBottomLeft.lat),
impactDiameter, impactDiameter, 0)); impactDiameter, impactDiameter, 0));
dst.impactPosition.rx() = bottomLeft.x(); dst.impactPosition.rx() = bottomLeft.x();
@@ -157,49 +157,49 @@ static void fillData(const ExplosionClusterModifyRequest &src, Database::AesExpl
dst.impactWidth = impactDiameter; dst.impactWidth = impactDiameter;
} }
dst.explosionGeometryId = src.explosionGeometry(); dst.explosionGeometryId = src.explosionGeometry;
dst.zog = src.tla(); dst.zog = src.tla;
dst.effectStart = src.effectStart().is_set() && src.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.effectDuration = src.effectDuration(); dst.effectDuration = src.effectDuration;
dst.effectSourceId = src.effectSourceId(); dst.effectSourceId = src.effectSourceId;
dst.chargeTypeId = src.chargeStruct().chargeTypeId(); dst.chargeTypeId = src.chargeStruct.chargeTypeId;
dst.igniterTypeId = src.chargeStruct().igniterTypeId(); dst.igniterTypeId = src.chargeStruct.igniterTypeId;
dst.igniterFunctionId = src.chargeStruct().igniterFunctionId(); dst.igniterFunctionId = src.chargeStruct.igniterFunctionId;
dst.firePurposeId = src.firePurposeId(); dst.firePurposeId = src.firePurposeId;
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.participantId = src.participantId().is_set() ? src.participantId().get() : -1; // -1 -> avoid trajectory dst.participantId = src.participantId.is_set() ? src.participantId.get() : -1; // -1 -> avoid trajectory
// dst.firingGeoPosition // not provided, has to be retrieved from dds // dst.firingGeoPosition // not provided, has to be retrieved from dds
dst.impactCount = src.impactCount(); dst.impactCount = src.impactCount;
dst.mhpCountRequest = src.mhpCount(); dst.mhpCountRequest = src.mhpCount;
if (src.mhpRotation().is_set()) if (src.mhpRotation.is_set())
dst.mhpRotationRequest = src.mhpRotation().get(); dst.mhpRotationRequest = src.mhpRotation.get();
else else
dst.mhpRotationRequest = ObjectExplosionCluster::s_invalid_rotation_angle; dst.mhpRotationRequest = ObjectExplosionCluster::s_invalid_rotation_angle;
dst.altitude = -1; dst.altitude = -1;
dst.peakHeight = src.peakHeight(); dst.peakHeight = src.peakHeight;
dst.flightDuration = src.flightDuration(); dst.flightDuration = src.flightDuration;
// dst.originatorId = src.o(); // dst.originatorId = src.o();
// dst.firePurpose = QString::fromStdString(src.purpose()); // dst.firePurpose = QString::fromStdString(src.purpose());
// dst.fireRequestTime = QDateTime::fromMSecsSinceEpoch(src.fireRequestTime()); // dst.fireRequestTime = QDateTime::fromMSecsSinceEpoch(src.fireRequestTime());
dst.effectMarkingInTa = src.effectMarkingInTa(); dst.effectMarkingInTa = src.effectMarkingInTa;
dst.externalId = src.externalId().is_set() ? src.externalId().get() : 0; dst.externalId = src.externalId.is_set() ? src.externalId.get() : 0;
dst.launchVelocity = src.launchVelocity(); dst.launchVelocity = src.launchVelocity;
dst.launchAngleDeg = src.launchAngleDeg(); dst.launchAngleDeg = src.launchAngleDeg;
dst.dropAngle = src.dropAngle(); dst.dropAngle = src.dropAngle;
dst.tapTimepoint = src.tapTime(); dst.tapTimepoint = src.tapTime;
dst.lcPrf = src.lcAttack(); dst.lcPrf = src.lcAttack;
dst.lcTermination = src.lcTermination(); dst.lcTermination = src.lcTermination;
dst.cloudBase = src.cloudBase(); dst.cloudBase = src.cloudBase;
dst.properties = QString::fromStdString(src.properties()); dst.properties = QString::fromStdString(src.properties);
dst.esmParticipantIds = LtsUtils::IntArray(src.esmParticipantIds()); dst.esmParticipantIds = LtsUtils::IntArray(src.esmParticipantIds);
} }
void HandlerExplosionCluster::onExplosionClusterModifyRequest(const rti::core::SampleIdentity &cookie, void HandlerExplosionCluster::onExplosionClusterModifyRequest(const rti::core::SampleIdentity &cookie,
@@ -209,8 +209,8 @@ void HandlerExplosionCluster::onExplosionClusterModifyRequest(const rti::core::S
Core::FunctionReplyObject ret = explosionClusterModifyRequest(cookie, request); Core::FunctionReplyObject ret = explosionClusterModifyRequest(cookie, request);
if (ret.error()) if (ret.error())
WARNING_LOG(m_logger) << ret() WARNING_LOG(m_logger) << ret()
<< ", effectStart :" << request.effectStart(); << ", effectStart :" << request.effectStart;
ret.setAdditionalInfo(request.properties().c_str()); ret.setAdditionalInfo(request.properties.c_str());
m_mainHandler->dds()->fts()->explosionClusterModifyReply(cookie, ret); m_mainHandler->dds()->fts()->explosionClusterModifyReply(cookie, ret);
} }
@@ -224,35 +224,35 @@ void HandlerExplosionCluster::onExplosionClusterSingleEffectOnlyModifyRequest(co
ExplosionClusterModifyRequest ecCommonModifyRequest; ExplosionClusterModifyRequest ecCommonModifyRequest;
ecCommonModifyRequest.id(request.id()); ecCommonModifyRequest.id = request.id;
ecCommonModifyRequest.externalId(request.externalId()); ecCommonModifyRequest.externalId = request.externalId;
ecCommonModifyRequest.effectStart(request.effectStart()); ecCommonModifyRequest.effectStart = request.effectStart;
ecCommonModifyRequest.effectDuration(1000); ecCommonModifyRequest.effectDuration = 1000;
// charge and geometry: // charge and geometry:
ecCommonModifyRequest.explosionGeometry(AreaEffectSimulation::AesExplosionGeometry_def::EgPoint); ecCommonModifyRequest.explosionGeometry = AreaEffectSimulation::AesExplosionGeometry::EgPoint;
// ecCommonModifyRequest.zog(0); // ecCommonModifyRequest.zog(0);
int igniterTypeId = 102; // from pdm_igniter_type (Impact Default) int igniterTypeId = 102; // from pdm_igniter_type (Impact Default)
ecCommonModifyRequest.chargeStruct().igniterTypeId(igniterTypeId); ecCommonModifyRequest.chargeStruct.igniterTypeId = igniterTypeId;
ecCommonModifyRequest.chargeStruct().chargeTypeId(request.chargeTypeId()); ecCommonModifyRequest.chargeStruct.chargeTypeId = request.chargeTypeId;
// height, width are <=0 -> area will be adjusted using impactRadius of charge: // height, width are <=0 -> area will be adjusted using impactRadius of charge:
ecCommonModifyRequest.area().cornerBottomLeft(request.impactPosition()); ecCommonModifyRequest.area.cornerBottomLeft = request.impactPosition;
ecCommonModifyRequest.area().height(0); ecCommonModifyRequest.area.height = 0;
ecCommonModifyRequest.area().width(0); ecCommonModifyRequest.area.width = 0;
ecCommonModifyRequest.mhpCount(1); ecCommonModifyRequest.mhpCount = 1;
ecCommonModifyRequest.impactCount(1); ecCommonModifyRequest.impactCount = 1;
ecCommonModifyRequest.name(request.name()); // ZpNummer ecCommonModifyRequest.name = request.name; // ZpNummer
ecCommonModifyRequest.element(request.element()); // element ecCommonModifyRequest.element = request.element; // element
ecCommonModifyRequest.partyId(request.partyId()); ecCommonModifyRequest.partyId = request.partyId;
ecCommonModifyRequest.participantId(-1); // -1 -> avoid trajectory ecCommonModifyRequest.participantId = -1; // -1 -> avoid trajectory
@@ -273,33 +273,33 @@ void HandlerExplosionCluster::onExplosionClusterOcModifyRequest(const rti::core:
ExplosionClusterModifyRequest ecCommonModifyRequest; ExplosionClusterModifyRequest ecCommonModifyRequest;
ecCommonModifyRequest.id(request.id()); ecCommonModifyRequest.id = request.id;
//ecCommonModifyRequest.externalId(request.externalId()); //ecCommonModifyRequest.externalId(request.externalId());
ecCommonModifyRequest.effectStart(request.effectStart()); ecCommonModifyRequest.effectStart = request.effectStart;
ecCommonModifyRequest.effectDuration(request.effectDuration()); ecCommonModifyRequest.effectDuration = request.effectDuration;
// charge and geometry: // charge and geometry:
ecCommonModifyRequest.area(request.area()); ecCommonModifyRequest.area = request.area;
if (request.impactCount() == 1) if (request.impactCount == 1)
ecCommonModifyRequest.explosionGeometry(AreaEffectSimulation::AesExplosionGeometry_def::EgPoint); ecCommonModifyRequest.explosionGeometry = AreaEffectSimulation::AesExplosionGeometry::EgPoint;
else else
ecCommonModifyRequest.explosionGeometry(AreaEffectSimulation::AesExplosionGeometry_def::EgArea); ecCommonModifyRequest.explosionGeometry = AreaEffectSimulation::AesExplosionGeometry::EgArea;
// ecCommonModifyRequest.zog(0); // ecCommonModifyRequest.zog(0);
ecCommonModifyRequest.mhpCount(request.mhpCount()); ecCommonModifyRequest.mhpCount = request.mhpCount;
ecCommonModifyRequest.impactCount(request.impactCount()); ecCommonModifyRequest.impactCount = request.impactCount;
ecCommonModifyRequest.mhpRotation(request.mhpRotation()); ecCommonModifyRequest.mhpRotation = request.mhpRotation;
// was FtImpact // was FtImpact
ecCommonModifyRequest.chargeStruct().igniterTypeId(request.chargeStruct().igniterTypeId()); ecCommonModifyRequest.chargeStruct.igniterTypeId = request.chargeStruct.igniterTypeId;
ecCommonModifyRequest.chargeStruct().chargeTypeId(request.chargeStruct().chargeTypeId()); ecCommonModifyRequest.chargeStruct.chargeTypeId = request.chargeStruct.chargeTypeId;
ecCommonModifyRequest.name(request.name()); // ZpNummer ecCommonModifyRequest.name = request.name; // ZpNummer
ecCommonModifyRequest.element(ecCommonModifyRequest.element()); // element ecCommonModifyRequest.element = ecCommonModifyRequest.element; // element
ecCommonModifyRequest.partyId(request.partyId()); ecCommonModifyRequest.partyId = request.partyId;
// ecCommonModifyRequest.participantId(-1); // -1 -> avoid trajectory // ecCommonModifyRequest.participantId(-1); // -1 -> avoid trajectory
// ToDo: no trajectory needed, but how can we transfer the rotation of MhpAreas? // ToDo: no trajectory needed, but how can we transfer the rotation of MhpAreas?
@@ -320,26 +320,26 @@ Core::FunctionReplyObject HandlerExplosionCluster::explosionClusterCreateRequest
// HLA Interface is using externalId... // HLA Interface is using externalId...
// external (externalId>0) -> no partyId required // external (externalId>0) -> no partyId required
// external (externalId==0) -> partyId required // external (externalId==0) -> partyId required
const int externalIdValue = request.externalId().is_set() ? request.externalId().get() : 0; const int externalIdValue = request.externalId.is_set() ? request.externalId.get() : 0;
const ProjectDataManagement::GearClass gearClass = m_mainHandler->gearClassOfChargeTypeId(request.chargeStruct().chargeTypeId()); const ProjectDataManagement::GearClass gearClass = m_mainHandler->gearClassOfChargeTypeId(request.chargeStruct.chargeTypeId);
const bool bDoClaimPlannedCharge = (request.id() == 0) && const bool bDoClaimPlannedCharge = (request.id == 0) &&
(externalIdValue==0) && (externalIdValue==0) &&
(gearClass != ProjectDataManagement::GearClass_def::AirSupport); (gearClass != ProjectDataManagement::GearClass::GearClass_AirSupport);
if (bDoClaimPlannedCharge) if (bDoClaimPlannedCharge)
{ {
int chargeNeeded = request.impactCount(); int chargeNeeded = request.impactCount;
if (chargeNeeded <= 0) if (chargeNeeded <= 0)
return Core::FunctionReplyObject(tr_lts("dds", "Invalid impact count (<= 0).")); return Core::FunctionReplyObject(tr_lts("dds", "Invalid impact count (<= 0)."));
if (request.id() == 0) if (request.id == 0)
{ {
int chargeLeft = m_mainHandler->chargeAdministrationHandler()->availableCharge(request.chargeStruct().chargeTypeId(), request.partyId().get()); int chargeLeft = m_mainHandler->chargeAdministrationHandler()->availableCharge(request.chargeStruct.chargeTypeId, request.partyId.get());
QString chargeName= QString::fromStdString(m_mainHandler->dds()->pdmDtc()->chargeType(request.chargeStruct().chargeTypeId()).name()); QString chargeName= QString::fromStdString(m_mainHandler->dds()->pdmDtc()->chargeType(request.chargeStruct.chargeTypeId).name);
QString fireUnitName; QString fireUnitName;
if (request.participantId().is_set()) if (request.participantId.is_set())
fireUnitName = QString::fromStdString(m_mainHandler->dds()->ppmDtc()->participant(request.participantId().get()).designator()); fireUnitName = QString::fromStdString(m_mainHandler->dds()->ppmDtc()->participant(request.participantId.get()).designator);
if (chargeNeeded > chargeLeft) if (chargeNeeded > chargeLeft)
return Core::FunctionReplyObject(tr_lts("dds", "Invalid impact count. Fire Unit '%1' has %2 charges (%3), but for this cluster %4 are needed.")) return Core::FunctionReplyObject(tr_lts("dds", "Invalid impact count. Fire Unit '%1' has %2 charges (%3), but for this cluster %4 are needed."))
@@ -353,11 +353,11 @@ Core::FunctionReplyObject HandlerExplosionCluster::explosionClusterCreateRequest
Database::AesExplosionCluster newData; Database::AesExplosionCluster newData;
fillData(request, newData, m_mainHandler); fillData(request, newData, m_mainHandler);
if (!request.properties().empty() && if (!request.properties.empty() &&
(!request.effectStart().is_set() || (!request.effectStart.is_set() ||
request.effectStart().get() == 0)) request.effectStart.get() == 0))
{ {
QJsonObject propertiesObject = QJsonDocument::fromJson(QByteArray::fromStdString(request.properties())).object(); QJsonObject propertiesObject = QJsonDocument::fromJson(QByteArray::fromStdString(request.properties)).object();
newData.isUsingEffectStateReceived = propertiesObject.value(QStringLiteral("useReceived")).toBool(); newData.isUsingEffectStateReceived = propertiesObject.value(QStringLiteral("useReceived")).toBool();
} }
@@ -368,7 +368,7 @@ Core::FunctionReplyObject HandlerExplosionCluster::explosionClusterCreateRequest
connect(ifs, &ObjectExplosionCluster::effectStateChanged, this, &HandlerExplosionCluster::onEffectStateChanged); connect(ifs, &ObjectExplosionCluster::effectStateChanged, this, &HandlerExplosionCluster::onEffectStateChanged);
// Context NASAT: check via chargeTypeId: // Context NASAT: check via chargeTypeId:
const ProjectDataManagement::GearClass gc = m_mainHandler->dds()->pdmDtc()->gearClassFromChargeTypeId(request.chargeStruct().chargeTypeId()); const ProjectDataManagement::GearClass gc = m_mainHandler->dds()->pdmDtc()->gearClassFromChargeTypeId(request.chargeStruct.chargeTypeId);
const bool bChargeIsAirSupport = gc == ProjectDataManagement::GearClass::GearClass_AirSupport; const bool bChargeIsAirSupport = gc == ProjectDataManagement::GearClass::GearClass_AirSupport;
ifs->setAirSupportSource(bChargeIsAirSupport); ifs->setAirSupportSource(bChargeIsAirSupport);
@@ -395,7 +395,7 @@ Core::FunctionReplyObject HandlerExplosionCluster::explosionClusterCreateRequest
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active air supports.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active air supports."));
} }
} }
else if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtExplosionCluster]) + (s_currentAirSupportCount) && request.effectStart().is_set()) else if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionCluster)]) + (s_currentAirSupportCount) && request.effectStart.is_set())
{ {
ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct
ifs->removeObjectFromDb(); ifs->removeObjectFromDb();
@@ -405,9 +405,9 @@ Core::FunctionReplyObject HandlerExplosionCluster::explosionClusterCreateRequest
} }
else else
{ {
DEBUG_LOG(m_logger) << "New dec ExplosionCluster: " << totalAreas() << " Max: " << s_maxActiveAreas[AesType::AtExplosionCluster] << " Is Set: " << request.effectStart().is_set(); DEBUG_LOG(m_logger) << "New dec ExplosionCluster: " << totalAreas() << " Max: " << s_maxActiveAreas[static_cast<int>(AesType::AtExplosionCluster)] << " Is Set: " << request.effectStart.is_set();
if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionCluster]) && request.effectStart().is_set()) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtExplosionCluster)]) && request.effectStart.is_set())
{ {
ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct
ifs->removeObjectFromDb(); ifs->removeObjectFromDb();
@@ -446,21 +446,21 @@ Core::FunctionReplyObject HandlerExplosionCluster::explosionClusterModifyRequest
// // externalId maybe set be HLA interface: // // externalId maybe set be HLA interface:
// // from external (externalIdValue>0) -> no partyId required // // from external (externalIdValue>0) -> no partyId required
// // from internal (externalIdValue==0) -> partyId required // // from internal (externalIdValue==0) -> partyId required
// const int externalIdValue = request.externalId().is_set() ? request.externalId().get() : 0; // const int externalIdValue = request.externalId.is_set() ? request.externalId.get() : 0;
// if (externalIdValue == 0 && !request.partyId().is_set()) // if (externalIdValue == 0 && !request.partyId.is_set())
// return Core::FunctionReplyObject(tr_lts("dds", "Explosion areas need a party id.")); // return Core::FunctionReplyObject(tr_lts("dds", "Explosion areas need a party id."));
DEBUG_LOG(m_logger) << "request.effectStart :" << request.effectStart() DEBUG_LOG(m_logger) << "request.effectStart :" << request.effectStart
<< ", effectDuration :" << request.effectDuration() << ", effectDuration :" << request.effectDuration
<< ", flightDuration :" << request.flightDuration() << ", flightDuration :" << request.flightDuration
<< ", tapTime :" << request.tapTime() << ", tapTime :" << request.tapTime
<< ", properties: " << request.properties(); << ", properties: " << request.properties;
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
if (request.id() == 0 || ((request.id() < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id()), ret))) if (request.id == 0 || ((request.id < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id), ret)))
return explosionClusterCreateRequest(request); return explosionClusterCreateRequest(request);
ObjectExplosionCluster *ifs = getObjectFromMap(m_objectMap, std::abs(request.id()), ret); ObjectExplosionCluster *ifs = getObjectFromMap(m_objectMap, std::abs(request.id), ret);
if (!ifs) if (!ifs)
return ret; return ret;
@@ -470,12 +470,12 @@ Core::FunctionReplyObject HandlerExplosionCluster::explosionClusterModifyRequest
fillData(request, aea, m_mainHandler); fillData(request, aea, m_mainHandler);
// Context NASAT: check via chargeTypeId: // Context NASAT: check via chargeTypeId:
const ProjectDataManagement::GearClass gc = m_mainHandler->dds()->pdmDtc()->gearClassFromChargeTypeId(request.chargeStruct().chargeTypeId()); const ProjectDataManagement::GearClass gc = m_mainHandler->dds()->pdmDtc()->gearClassFromChargeTypeId(request.chargeStruct.chargeTypeId);
const bool bChargeIsAirSupport = (gc == ProjectDataManagement::GearClass::GearClass_AirSupport); const bool bChargeIsAirSupport = (gc == ProjectDataManagement::GearClass::GearClass_AirSupport);
ifs->setAirSupportSource(bChargeIsAirSupport); ifs->setAirSupportSource(bChargeIsAirSupport);
// For counting, only Elements being at least prepared are important: // For counting, only Elements being at least prepared are important:
if (request.effectStart().is_set() && ifs->isObjectModifiable()) // ToDo: check if (request.effectStart.is_set() && ifs->isObjectModifiable()) // ToDo: check
{ {
// Calculate new polygon here. Not nice, though // Calculate new polygon here. Not nice, though
auto poly = Polygons::explosionClusterArea(aea); auto poly = Polygons::explosionClusterArea(aea);
@@ -502,7 +502,7 @@ Core::FunctionReplyObject HandlerExplosionCluster::explosionClusterModifyRequest
{ {
// case 1: war zentral && effectStart war nicht gesetzt // case 1: war zentral && effectStart war nicht gesetzt
// case 2: war dezentral && effectStart ist gesetzt. // case 2: war dezentral && effectStart ist gesetzt.
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtExplosionCluster] + (s_currentAirSupportCount)) && request.effectStart().is_set() if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionCluster)] + (s_currentAirSupportCount)) && request.effectStart.is_set()
&& ((wasCentral && !ifs->isActivationTimeSet()) || !wasCentral)) && ((wasCentral && !ifs->isActivationTimeSet()) || !wasCentral))
{ {
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active central explosion clusters.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active central explosion clusters."));
@@ -513,7 +513,7 @@ Core::FunctionReplyObject HandlerExplosionCluster::explosionClusterModifyRequest
{ {
// case 1: war dezentral && effectStart war nicht gesetzt // case 1: war dezentral && effectStart war nicht gesetzt
// case 2: war zentral && effectStart ist gesetzt. // case 2: war zentral && effectStart ist gesetzt.
if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionCluster]) && request.effectStart().is_set() if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtExplosionCluster)]) && request.effectStart.is_set()
&& (( !wasCentral && !ifs->isActivationTimeSet()) || wasCentral)) && (( !wasCentral && !ifs->isActivationTimeSet()) || wasCentral))
{ {
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active explosion clusters.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active explosion clusters."));
@@ -522,7 +522,7 @@ Core::FunctionReplyObject HandlerExplosionCluster::explosionClusterModifyRequest
// For counting, only Elements being at least prepared are important: // For counting, only Elements being at least prepared are important:
if (request.effectStart().is_set() && ifs->isObjectModifiable()) if (request.effectStart.is_set() && ifs->isObjectModifiable())
{ {
DEBUG_LOG(m_logger) << "isCentral: " << isCentral; DEBUG_LOG(m_logger) << "isCentral: " << isCentral;
@@ -534,8 +534,8 @@ Core::FunctionReplyObject HandlerExplosionCluster::explosionClusterModifyRequest
// Change from central to training area // Change from central to training area
if (wasCentral) if (wasCentral)
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionCluster])) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtExplosionCluster)]))
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active explosion clusters.")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active explosion clusters."));
m_areaCount++; m_areaCount++;
m_areaCountCentral--; m_areaCountCentral--;
@@ -544,8 +544,8 @@ Core::FunctionReplyObject HandlerExplosionCluster::explosionClusterModifyRequest
} }
else // Change from training area to central else // Change from training area to central
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtExplosionCluster])) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionCluster)]))
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active central explosion clusters.")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active central explosion clusters."));
m_areaCount--; m_areaCount--;
m_areaCountCentral++; m_areaCountCentral++;
DEBUG_LOG(m_logger) << "s_areaCount[AesType::AtExplosionCluster] = " << m_areaCount; DEBUG_LOG(m_logger) << "s_areaCount[AesType::AtExplosionCluster] = " << m_areaCount;
@@ -556,13 +556,13 @@ Core::FunctionReplyObject HandlerExplosionCluster::explosionClusterModifyRequest
} }
if (request.id() < 0 && checkStateForSfm(ifs)) if (request.id < 0 && checkStateForSfm(ifs))
{ {
DEBUG_LOG(m_logger) << "Overwrite Effect State for OC"; DEBUG_LOG(m_logger) << "Overwrite Effect State for OC";
aea.effectStateId = AesEffectState::EsPrepared; aea.effectStateId = AesEffectState::EsPrepared;
} }
DEBUG_LOG(m_logger) << "request.properties()" << request.properties() DEBUG_LOG(m_logger) << "request.properties()" << request.properties
<< " aea.properties=" << aea.properties; << " aea.properties=" << aea.properties;
return ifs->updateObject(aea); return ifs->updateObject(aea);
} }
@@ -579,7 +579,7 @@ Core::FunctionReplyObject HandlerExplosionCluster::explosionClusterModifyGeometr
// Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war // Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war
// vorher noch ohne Wirkbeginn // vorher noch ohne Wirkbeginn
if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionArea] + s_maxActiveAreas[AesType::AtExplosionSingle]) && request.effectStart().is_set() && !ifs->isObjectModifiable()) if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionArea] + s_maxActiveAreas[AesType::AtExplosionSingle]) && request.effectStart.is_set() && !ifs->isObjectModifiable())
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active explosion areas.")); return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active explosion areas."));
// Todo: IsObjectModifiable() ?!? // Todo: IsObjectModifiable() ?!?
@@ -638,7 +638,7 @@ void HandlerExplosionCluster::onExplosionClusterPauseResumeRequest(const rti::co
{ {
DEBUG_LOG(m_logger) << "onExplosionClusterPauseResumeRequest" << request; DEBUG_LOG(m_logger) << "onExplosionClusterPauseResumeRequest" << request;
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectExplosionCluster *ifs = getObjectFromMap(m_objectMap, request.id(), ret); ObjectExplosionCluster *ifs = getObjectFromMap(m_objectMap, request.id, ret);
if (!ifs) if (!ifs)
{ {
m_mainHandler->dds()->fts()->explosionClusterPauseResumeReply(cookie, ret); m_mainHandler->dds()->fts()->explosionClusterPauseResumeReply(cookie, ret);
@@ -655,8 +655,8 @@ void HandlerExplosionCluster::onExplosionClusterPauseResumeRequest(const rti::co
void HandlerExplosionCluster::onExplosionClusterReleaseReceivedRequest(const rti::core::SampleIdentity &cookie, const ExplosionClusterReleaseReceivedRequest &request) void HandlerExplosionCluster::onExplosionClusterReleaseReceivedRequest(const rti::core::SampleIdentity &cookie, const ExplosionClusterReleaseReceivedRequest &request)
{ {
DEBUG_LOG(m_logger) << "onExplosionClusterReleaseReceivedRequest" << request; DEBUG_LOG(m_logger) << "onExplosionClusterReleaseReceivedRequest" << request;
Core::FunctionReplyObject ret(request.id()); Core::FunctionReplyObject ret(request.id);
ObjectExplosionCluster *ifs = getObjectFromMap(m_objectMap, request.id(), ret); ObjectExplosionCluster *ifs = getObjectFromMap(m_objectMap, request.id, ret);
if (!ifs) if (!ifs)
{ {
ERROR_LOG(m_logger) << ret(); ERROR_LOG(m_logger) << ret();
@@ -666,7 +666,7 @@ void HandlerExplosionCluster::onExplosionClusterReleaseReceivedRequest(const rti
if (!ifs->isUsingEffectStateReceived()) if (!ifs->isUsingEffectStateReceived())
{ {
ret = ret.setStr(tr_lts("dds", "ExplosionCluster with id %1 is not using EffectState Received")).arg(request.id()); ret = ret.setStr(tr_lts("dds", "ExplosionCluster with id %1 is not using EffectState Received")).arg(request.id);
ERROR_LOG(m_logger) << ret(); ERROR_LOG(m_logger) << ret();
m_mainHandler->dds()->fts()->explosionClusterReleaseReceivedReply(cookie, ret); m_mainHandler->dds()->fts()->explosionClusterReleaseReceivedReply(cookie, ret);
return; return;
@@ -684,7 +684,7 @@ void HandlerExplosionCluster::onTargetPositionsModifyRequest(const rti::core::Sa
{ {
DEBUG_LOG(m_logger) << "onTargetPositionsModifyRequest" << request; DEBUG_LOG(m_logger) << "onTargetPositionsModifyRequest" << request;
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectExplosionCluster *ifs = getObjectFromMap(m_objectMap, request.aesItemId(), ret); ObjectExplosionCluster *ifs = getObjectFromMap(m_objectMap, request.aesItemId, ret);
if (!ifs) if (!ifs)
{ {
m_mainHandler->dds()->fts()->targetPositionsModifyReply(cookie, ret); m_mainHandler->dds()->fts()->targetPositionsModifyReply(cookie, ret);
@@ -15,7 +15,7 @@ namespace AreaEffectSimulation
{ {
HandlerExplosionSingle::HandlerExplosionSingle(MainHandler *mainHandler) HandlerExplosionSingle::HandlerExplosionSingle(MainHandler *mainHandler)
: HandlerBaseTmpl<ObjectExplosionSingle>(mainHandler, QStringLiteral("ExplosionSingle"), s_areaCount[AesType::AtExplosionSingle], s_areaCountCentral[AesType::AtExplosionSingle]) : HandlerBaseTmpl<ObjectExplosionSingle>(mainHandler, QStringLiteral("ExplosionSingle"), s_areaCount[static_cast<int>(AesType::AtExplosionSingle)], s_areaCountCentral[static_cast<int>(AesType::AtExplosionSingle)])
, Interface::Fts::ExplosionSingleModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::ExplosionSingleModifyRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::ExplosionSingleRemoveRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::ExplosionSingleRemoveRequestHandler(mainHandler->dds()->fts())
{} {}
@@ -43,7 +43,7 @@ bool HandlerExplosionSingle::init()
} }
if(!ifs->data().isCentral) if(!ifs->data().isCentral)
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionArea] + s_maxActiveAreas[AesType::AtExplosionSingle])) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreas[static_cast<int>(AesType::AtExplosionSingle)]))
{ {
ERROR_LOG(m_logger) << "More active explosion single in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active explosion single in database than allowed - ignoring the rest!";
ifs->removeObject(); ifs->removeObject();
@@ -54,7 +54,7 @@ bool HandlerExplosionSingle::init()
else else
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtExplosionArea] + s_maxActiveAreasCentral[AesType::AtExplosionSingle])) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionSingle)]))
{ {
ERROR_LOG(m_logger) << "More active explosion single in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active explosion single in database than allowed - ignoring the rest!";
ifs->removeObject(); ifs->removeObject();
@@ -80,38 +80,38 @@ bool HandlerExplosionSingle::init()
int HandlerExplosionSingle::totalAreas() const int HandlerExplosionSingle::totalAreas() const
{ {
return s_areaCount[AesType::AtExplosionArea] + s_areaCount[AesType::AtExplosionSingle]; return s_areaCount[static_cast<int>(AesType::AtExplosionArea)] + s_areaCount[static_cast<int>(AesType::AtExplosionSingle)];
} }
int HandlerExplosionSingle::totalAreasCentral() const int HandlerExplosionSingle::totalAreasCentral() const
{ {
return s_areaCountCentral[AesType::AtExplosionArea] + s_areaCountCentral[AesType::AtExplosionSingle]; return s_areaCountCentral[static_cast<int>(AesType::AtExplosionArea)] + s_areaCountCentral[static_cast<int>(AesType::AtExplosionSingle)];
} }
static void fillGeometryData(const ExplosionSingleModifyRequest &src, Database::AesExplosionSingle &dst) static void fillGeometryData(const ExplosionSingleModifyRequest &src, Database::AesExplosionSingle &dst)
{ {
dst.impactPosition.rx() = src.impactPosition().lon(); dst.impactPosition.rx() = src.impactPosition.lon;
dst.impactPosition.ry() = src.impactPosition().lat(); dst.impactPosition.ry() = src.impactPosition.lat;
} }
static void fillData(const ExplosionSingleModifyRequest &src, Database::AesExplosionSingle &dst) static void fillData(const ExplosionSingleModifyRequest &src, Database::AesExplosionSingle &dst)
{ {
if (src.id() < 0) // is the id given as negative? set id -> used by OC-Laptop if (src.id < 0) // is the id given as negative? set id -> used by OC-Laptop
dst.id = src.id(); dst.id = src.id;
fillGeometryData(src, dst); fillGeometryData(src, dst);
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.effectStart = src.effectStart().is_set() && src.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.effectDuration = 1000; // 1sec dst.effectDuration = 1000; // 1sec
dst.effectSourceId = src.effectSourceId(); dst.effectSourceId = src.effectSourceId;
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.chargeTypeId = src.chargeTypeId(); dst.chargeTypeId = src.chargeTypeId;
dst.participantId = src.participantId().is_set() ? src.participantId().get() : 0; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0;
dst.altitude = src.altitude(); dst.altitude = src.altitude;
dst.firePurpose = QString::fromStdString(src.purpose()); dst.firePurpose = QString::fromStdString(src.purpose);
dst.fireRequestTime = QDateTime::fromMSecsSinceEpoch(src.fireRequestTime()); dst.fireRequestTime = QDateTime::fromMSecsSinceEpoch(src.fireRequestTime);
dst.effectMarkingInTa = src.effectMarkingInTa(); dst.effectMarkingInTa = src.effectMarkingInTa;
dst.externalId = src.externalId().is_set() ? src.externalId().get() : 0; dst.externalId = src.externalId.is_set() ? src.externalId.get() : 0;
} }
void HandlerExplosionSingle::onExplosionSingleModifyRequest(const rti::core::SampleIdentity &cookie, void HandlerExplosionSingle::onExplosionSingleModifyRequest(const rti::core::SampleIdentity &cookie,
@@ -144,7 +144,7 @@ Core::FunctionReplyObject HandlerExplosionSingle::explosionSingleCreateRequest(c
if (ifs->data().isCentral) if (ifs->data().isCentral)
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtExplosionArea] + s_maxActiveAreasCentral[AesType::AtExplosionSingle]) && request.effectStart().is_set()) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionSingle)]) && request.effectStart.is_set())
{ {
ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct
ifs->removeObjectFromDb(); ifs->removeObjectFromDb();
@@ -154,7 +154,7 @@ Core::FunctionReplyObject HandlerExplosionSingle::explosionSingleCreateRequest(c
} }
else else
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionArea] + s_maxActiveAreas[AesType::AtExplosionSingle]) && request.effectStart().is_set()) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreas[static_cast<int>(AesType::AtExplosionSingle)]) && request.effectStart.is_set())
{ {
ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct
ifs->removeObjectFromDb(); ifs->removeObjectFromDb();
@@ -182,16 +182,16 @@ Core::FunctionReplyObject HandlerExplosionSingle::explosionSingleCreateRequest(c
Core::FunctionReplyObject HandlerExplosionSingle::explosionSingleModifyRequest(const ExplosionSingleModifyRequest &request) Core::FunctionReplyObject HandlerExplosionSingle::explosionSingleModifyRequest(const ExplosionSingleModifyRequest &request)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
if (request.id() == 0 || ((request.id() < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id()), ret))) if (request.id == 0 || ((request.id < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id), ret)))
return explosionSingleCreateRequest(request); return explosionSingleCreateRequest(request);
ObjectExplosionSingle *ifs = getObjectFromMap(m_objectMap, std::abs(request.id()), ret); ObjectExplosionSingle *ifs = getObjectFromMap(m_objectMap, std::abs(request.id), ret);
if (!ifs) if (!ifs)
return ret; return ret;
// Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war // Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war
// vorher noch ohne Wirkbeginn // vorher noch ohne Wirkbeginn
// if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionArea] + s_maxActiveAreas[AesType::AtExplosionSingle]) && request.effectStart().is_set()) // if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionArea] + s_maxActiveAreas[AesType::AtExplosionSingle]) && request.effectStart.is_set())
// return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active single explosions.")); // return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active single explosions."));
Database::AesExplosionSingle aes(ifs->data()); Database::AesExplosionSingle aes(ifs->data());
@@ -206,25 +206,25 @@ Core::FunctionReplyObject HandlerExplosionSingle::explosionSingleModifyRequest(c
bool wasCentral = ifs->data().isCentral; bool wasCentral = ifs->data().isCentral;
if(!ifs->isActivationTimeSet() && request.effectStart().is_set()) if(!ifs->isActivationTimeSet() && request.effectStart.is_set())
{ {
if (isCentral) if (isCentral)
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtExplosionArea] + s_maxActiveAreasCentral[AesType::AtExplosionSingle])) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionSingle)]))
{ {
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active central explosion singles and explosion areas.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active central explosion singles and explosion areas."));
} }
} }
else else
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionArea] + s_maxActiveAreas[AesType::AtExplosionSingle]) ) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreas[static_cast<int>(AesType::AtExplosionSingle)]) )
{ {
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active explosion singles and explosion areas.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active explosion singles and explosion areas."));
} }
} }
} }
// For counting, only Elements being at least prepared are important: // For counting, only Elements being at least prepared are important:
if (request.effectStart().is_set() && ifs->isObjectModifiable()) if (request.effectStart.is_set() && ifs->isObjectModifiable())
{ {
DEBUG_LOG(m_logger) << "isCentral: " << isCentral; DEBUG_LOG(m_logger) << "isCentral: " << isCentral;
@@ -236,8 +236,8 @@ Core::FunctionReplyObject HandlerExplosionSingle::explosionSingleModifyRequest(c
// Change from central to training area // Change from central to training area
if (wasCentral) if (wasCentral)
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionArea] + s_maxActiveAreas[AesType::AtExplosionSingle])) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreas[static_cast<int>(AesType::AtExplosionSingle)]))
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active explosion singles and explosion areas.")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active explosion singles and explosion areas."));
m_areaCount++; m_areaCount++;
m_areaCountCentral--; m_areaCountCentral--;
@@ -246,8 +246,8 @@ Core::FunctionReplyObject HandlerExplosionSingle::explosionSingleModifyRequest(c
} }
else // Change from training area to central else // Change from training area to central
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtExplosionArea] + s_maxActiveAreasCentral[AesType::AtExplosionSingle])) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreasCentral[static_cast<int>(AesType::AtExplosionSingle)]))
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active central explosion singles and explosion areas")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active central explosion singles and explosion areas"));
m_areaCount--; m_areaCount--;
m_areaCountCentral++; m_areaCountCentral++;
DEBUG_LOG(m_logger) << "s_areaCount[AesType::AtExplosionSingle] = " << m_areaCount; DEBUG_LOG(m_logger) << "s_areaCount[AesType::AtExplosionSingle] = " << m_areaCount;
@@ -258,7 +258,7 @@ Core::FunctionReplyObject HandlerExplosionSingle::explosionSingleModifyRequest(c
if (request.id() < 0 && checkStateForSfm(ifs)) if (request.id < 0 && checkStateForSfm(ifs))
{ {
DEBUG_LOG(m_logger) << "Overwrite single explostion Effect State for OC"; DEBUG_LOG(m_logger) << "Overwrite single explostion Effect State for OC";
aes.effectStateId = AesEffectState::EsPrepared; aes.effectStateId = AesEffectState::EsPrepared;
@@ -270,17 +270,17 @@ Core::FunctionReplyObject HandlerExplosionSingle::explosionSingleModifyRequest(c
Core::FunctionReplyObject HandlerExplosionSingle::explosionSingleModifyGeometryRequest(const ExplosionSingleModifyRequest &request) Core::FunctionReplyObject HandlerExplosionSingle::explosionSingleModifyGeometryRequest(const ExplosionSingleModifyRequest &request)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectExplosionSingle *ifs = getObjectFromMap(m_objectMap, request.id(), ret); ObjectExplosionSingle *ifs = getObjectFromMap(m_objectMap, request.id, ret);
if (!ifs) if (!ifs)
return ret; return ret;
// Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war // Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war
// vorher noch ohne Wirkbeginn // vorher noch ohne Wirkbeginn
if (totalAreas() >= (s_maxActiveAreas[AesType::AtExplosionArea] + s_maxActiveAreas[AesType::AtExplosionSingle]) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtExplosionArea)] + s_maxActiveAreas[static_cast<int>(AesType::AtExplosionSingle)])
&& request.effectStart().is_set() && request.effectStart.is_set()
&& !ifs->isActivationTimeSet() && !ifs->isActivationTimeSet()
&& !ifs->isObjectModifiable()) && !ifs->isObjectModifiable())
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active single explosions.")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active single explosions."));
Database::AesExplosionSingle aes(ifs->data()); Database::AesExplosionSingle aes(ifs->data());
fillGeometryData(request, aes); fillGeometryData(request, aes);
@@ -15,7 +15,7 @@ namespace AreaEffectSimulation
{ {
HandlerFunctionalArea::HandlerFunctionalArea(MainHandler *mainHandler) HandlerFunctionalArea::HandlerFunctionalArea(MainHandler *mainHandler)
: HandlerBaseTmpl<ObjectFunctionalArea>(mainHandler, QStringLiteral("FunctionalArea"), s_areaCount[AesType::AtFunctionalArea], s_areaCountCentral[AesType::AtFunctionalArea]) : HandlerBaseTmpl<ObjectFunctionalArea>(mainHandler, QStringLiteral("FunctionalArea"), s_areaCount[static_cast<int>(AesType::AtFunctionalArea)], s_areaCountCentral[static_cast<int>(AesType::AtFunctionalArea)])
, Interface::Fts::FunctionalAreaModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::FunctionalAreaModifyRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::FunctionalAreaRemoveRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::FunctionalAreaRemoveRequestHandler(mainHandler->dds()->fts())
{ {
@@ -87,7 +87,7 @@ bool HandlerFunctionalArea::init()
} }
if (!ifs->data().isCentral) if (!ifs->data().isCentral)
{ {
if (totalAreas() >= s_maxActiveAreas[AesType::AtFunctionalArea]) if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtFunctionalArea)])
{ {
ERROR_LOG(m_logger) << "More active functional areas in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active functional areas in database than allowed - ignoring the rest!";
ifs->removeObject(); ifs->removeObject();
@@ -97,7 +97,7 @@ bool HandlerFunctionalArea::init()
} }
else else
{ {
if (totalAreasCentral() >= s_maxActiveAreasCentral[AesType::AtFunctionalArea]) if (totalAreasCentral() >= s_maxActiveAreasCentral[static_cast<int>(AesType::AtFunctionalArea)])
{ {
ERROR_LOG(m_logger) << "More active functional areas in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active functional areas in database than allowed - ignoring the rest!";
ifs->removeObject(); ifs->removeObject();
@@ -148,40 +148,40 @@ QVector<Database::AesFunctionalAreaType> HandlerFunctionalArea::loadDefaultFunct
int HandlerFunctionalArea::totalAreas() const int HandlerFunctionalArea::totalAreas() const
{ {
return s_areaCount[AesType::AtFunctionalArea]; return s_areaCount[static_cast<int>(AesType::AtFunctionalArea)];
} }
int HandlerFunctionalArea::totalAreasCentral() const int HandlerFunctionalArea::totalAreasCentral() const
{ {
return s_areaCountCentral[AesType::AtFunctionalArea]; return s_areaCountCentral[static_cast<int>(AesType::AtFunctionalArea)];
} }
template<typename T> template<typename T>
static void fillData(const T &src, Database::AesFunctionalArea &dst) static void fillData(const T &src, Database::AesFunctionalArea &dst)
{ {
if (src.id() < 0) // is the id given as negative? set id -> used by OC-Laptop if (src.id < 0) // is the id given as negative? set id -> used by OC-Laptop
dst.id = src.id(); dst.id = src.id;
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.effectStart = src.effectStart().is_set() && src.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.effectDuration = src.effectDuration(); dst.effectDuration = src.effectDuration;
dst.position.rx() = src.area().cornerBottomLeft().lon(); dst.position.rx() = src.area.cornerBottomLeft.lon;
dst.position.ry() = src.area().cornerBottomLeft().lat(); dst.position.ry() = src.area.cornerBottomLeft.lat;
dst.length = src.area().height(); dst.length = src.area.height;
dst.width = src.area().width(); dst.width = src.area.width;
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.chargeTypeId = src.chargeTypeId(); dst.chargeTypeId = src.chargeTypeId;
dst.participantId = src.participantId().is_set() ? src.participantId().get() : 0; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0;
dst.pointSymbol = src.pointSymbol().is_set() ? QString::fromStdString(src.pointSymbol().get()) : QString(); dst.pointSymbol = src.pointSymbol.is_set() ? QString::fromStdString(src.pointSymbol.get()) : QString();
dst.functionalAreaTypeId = src.functionalAreaTypeId(); dst.functionalAreaTypeId = src.functionalAreaTypeId;
dst.deconMode = src.deconMode(); dst.deconMode = src.deconMode;
dst.deconTime = src.deconTime(); dst.deconTime = src.deconTime;
dst.maintMode = src.maintMode(); dst.maintMode = src.maintMode;
dst.maintTime = src.maintTime(); dst.maintTime = src.maintTime;
dst.medicMode = src.medicMode(); dst.medicMode = src.medicMode;
dst.medicTime = src.medicTime(); dst.medicTime = src.medicTime;
dst.supplyMode = src.supplyMode(); dst.supplyMode = src.supplyMode;
dst.supplyTime = src.supplyTime(); dst.supplyTime = src.supplyTime;
} }
void HandlerFunctionalArea::onFunctionalAreaModifyRequest(const rti::core::SampleIdentity &cookie, void HandlerFunctionalArea::onFunctionalAreaModifyRequest(const rti::core::SampleIdentity &cookie,
@@ -196,9 +196,9 @@ void HandlerFunctionalArea::onFunctionalAreaModifyRequest(const rti::core::Sampl
Core::FunctionReplyObject HandlerFunctionalArea::functionalAreaCreateRequest(const FunctionalAreaModifyRequest &request) Core::FunctionReplyObject HandlerFunctionalArea::functionalAreaCreateRequest(const FunctionalAreaModifyRequest &request)
{ {
if (!request.partyId().is_set() && (request.supplyMode() != AesOperatingMode_def::OmWaitingTime)) if (!request.partyId.is_set() && (request.supplyMode != AesOperatingMode::OmWaitingTime))
return Core::FunctionReplyObject(tr_lts("dds", "Functional areas need a party id.")); return Core::FunctionReplyObject(tr_lts("dds", "Functional areas need a party id."));
if ((!request.participantId().is_set()) && (request.supplyMode() == AesOperatingMode_def::OmWaitingTime)) if ((!request.participantId.is_set()) && (request.supplyMode == AesOperatingMode::OmWaitingTime))
return Core::FunctionReplyObject(tr_lts("dds", "Functional areas Supply need a participant id.")); return Core::FunctionReplyObject(tr_lts("dds", "Functional areas Supply need a participant id."));
@@ -220,7 +220,7 @@ Core::FunctionReplyObject HandlerFunctionalArea::functionalAreaCreateRequest(con
if (ifs->data().isCentral) if (ifs->data().isCentral)
{ {
if (totalAreasCentral() >= s_maxActiveAreasCentral[AesType::AtFunctionalArea] && request.effectStart().is_set()) if (totalAreasCentral() >= s_maxActiveAreasCentral[static_cast<int>(AesType::AtFunctionalArea)] && request.effectStart.is_set())
{ {
ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct
@@ -231,7 +231,7 @@ Core::FunctionReplyObject HandlerFunctionalArea::functionalAreaCreateRequest(con
} }
else else
{ {
if (totalAreas() >= s_maxActiveAreas[AesType::AtFunctionalArea] && request.effectStart().is_set()) if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtFunctionalArea)] && request.effectStart.is_set())
{ {
ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct
ifs->removeObjectFromDb(); ifs->removeObjectFromDb();
@@ -258,16 +258,16 @@ Core::FunctionReplyObject HandlerFunctionalArea::functionalAreaCreateRequest(con
Core::FunctionReplyObject HandlerFunctionalArea::functionalAreaModifyRequest(const FunctionalAreaModifyRequest &request) Core::FunctionReplyObject HandlerFunctionalArea::functionalAreaModifyRequest(const FunctionalAreaModifyRequest &request)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
if (request.id() == 0 || ((request.id() < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id()), ret))) if (request.id == 0 || ((request.id < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id), ret)))
return functionalAreaCreateRequest(request); return functionalAreaCreateRequest(request);
ObjectFunctionalArea *ifs = getObjectFromMap(m_objectMap, std::abs(request.id()), ret); ObjectFunctionalArea *ifs = getObjectFromMap(m_objectMap, std::abs(request.id), ret);
if (!ifs) if (!ifs)
return ret; return ret;
// Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war // Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war
// vorher noch ohne Wirkbeginn // vorher noch ohne Wirkbeginn
// if (totalAreas() >= s_maxActiveAreas[AesType::AtFunctionalArea] && request.effectStart().is_set() && !ifs->isObjectModifiable()) // if (totalAreas() >= s_maxActiveAreas[AesType::AtFunctionalArea] && request.effectStart.is_set() && !ifs->isObjectModifiable())
// return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active functional areas.")); // return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active functional areas."));
// Todo: IsObjectModifiable() ?!? // Todo: IsObjectModifiable() ?!?
@@ -286,19 +286,19 @@ Core::FunctionReplyObject HandlerFunctionalArea::functionalAreaModifyRequest(con
/*! /*!
* If the effect start added after creation, the max amount need to be checked * If the effect start added after creation, the max amount need to be checked
!*/ !*/
if(!ifs->isActivationTimeSet() && request.effectStart().is_set()) if(!ifs->isActivationTimeSet() && request.effectStart.is_set())
{ {
if (isCentral) if (isCentral)
{ {
if (totalAreasCentral() >= s_maxActiveAreasCentral[AesType::AtFunctionalArea]) if (totalAreasCentral() >= s_maxActiveAreasCentral[static_cast<int>(AesType::AtFunctionalArea)])
{ {
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active central functional areas.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active central functional areas."));
} }
} }
else else
{ {
if (totalAreas() >= s_maxActiveAreas[AesType::AtFunctionalArea]) if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtFunctionalArea)])
{ {
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active functional areas.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active functional areas."));
} }
@@ -306,7 +306,7 @@ Core::FunctionReplyObject HandlerFunctionalArea::functionalAreaModifyRequest(con
} }
// For counting, only Elements being at least prepared are important: // For counting, only Elements being at least prepared are important:
if (request.effectStart().is_set() && ifs->isObjectModifiable()) if (request.effectStart.is_set() && ifs->isObjectModifiable())
{ {
@@ -326,8 +326,8 @@ Core::FunctionReplyObject HandlerFunctionalArea::functionalAreaModifyRequest(con
// Change from central to training area // Change from central to training area
if (wasCentral) if (wasCentral)
{ {
if (totalAreas() >= s_maxActiveAreas[AesType::AtFunctionalArea]) if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtFunctionalArea)])
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active functional areas.")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active functional areas."));
m_areaCount++; m_areaCount++;
m_areaCountCentral--; m_areaCountCentral--;
@@ -336,8 +336,8 @@ Core::FunctionReplyObject HandlerFunctionalArea::functionalAreaModifyRequest(con
} }
else // Change from training area to central else // Change from training area to central
{ {
if (totalAreasCentral() >= s_maxActiveAreasCentral[AesType::AtFunctionalArea]) if (totalAreasCentral() >= s_maxActiveAreasCentral[static_cast<int>(AesType::AtFunctionalArea)])
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active central functional areas.")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active central functional areas."));
m_areaCount--; m_areaCount--;
m_areaCountCentral++; m_areaCountCentral++;
DEBUG_LOG(m_logger) << "s_areaCount[AesType::AtFunctionalArea] = " << m_areaCount; DEBUG_LOG(m_logger) << "s_areaCount[AesType::AtFunctionalArea] = " << m_areaCount;
@@ -346,7 +346,7 @@ Core::FunctionReplyObject HandlerFunctionalArea::functionalAreaModifyRequest(con
} }
} }
if (request.id() < 0 && checkStateForSfm(ifs)) if (request.id < 0 && checkStateForSfm(ifs))
{ {
DEBUG_LOG(m_logger) << "Overwrite functinal area Effect State for OC"; DEBUG_LOG(m_logger) << "Overwrite functinal area Effect State for OC";
aea.effectStateId = AesEffectState::EsPrepared; aea.effectStateId = AesEffectState::EsPrepared;
@@ -17,7 +17,7 @@ namespace AreaEffectSimulation
{ {
HandlerGasPipe::HandlerGasPipe(MainHandler *mainHandler) HandlerGasPipe::HandlerGasPipe(MainHandler *mainHandler)
: HandlerBaseTmpl<ObjectGasPipe>(mainHandler, QStringLiteral("ExplosionArea"), s_areaCount[AesType::AtGasPipe], s_areaCountCentral[AesType::AtGasPipe]) : HandlerBaseTmpl<ObjectGasPipe>(mainHandler, QStringLiteral("ExplosionArea"), s_areaCount[static_cast<int>(AesType::AtGasPipe)], s_areaCountCentral[static_cast<int>(AesType::AtGasPipe)])
, Interface::Fts::GasPipeModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::GasPipeModifyRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::GasPipeRemoveRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::GasPipeRemoveRequestHandler(mainHandler->dds()->fts())
{ {
@@ -52,7 +52,7 @@ bool HandlerGasPipe::init()
for (const Database::AesGasPipe &dbGasPipe : qAsConst(gasPipeVec)) for (const Database::AesGasPipe &dbGasPipe : qAsConst(gasPipeVec))
{ {
if (dbGasPipe.effectStateId == AesEffectState_def::EsRemoved) if (dbGasPipe.effectStateId == AesEffectState::EsRemoved)
continue; continue;
dbGasPipeSegments.clear(); dbGasPipeSegments.clear();
@@ -84,7 +84,7 @@ void HandlerGasPipe::onGasPipeModifyRequest(const rti::core::SampleIdentity &coo
const GasPipeModifyRequest &request) const GasPipeModifyRequest &request)
{ {
DEBUG_LOG(m_logger) << "onGasPipeModifyRequest: " << request; DEBUG_LOG(m_logger) << "onGasPipeModifyRequest: " << request;
Core::FunctionReplyObject ret = request.id() > 0 ? gasPipeModifyRequest(request) : gasPipeCreateRequest(request); Core::FunctionReplyObject ret = request.id > 0 ? gasPipeModifyRequest(request) : gasPipeCreateRequest(request);
if (ret.error()) if (ret.error())
WARNING_LOG(m_logger) << ret(); WARNING_LOG(m_logger) << ret();
m_mainHandler->dds()->fts()->gasPipeModifyReply(cookie, ret); m_mainHandler->dds()->fts()->gasPipeModifyReply(cookie, ret);
@@ -95,15 +95,15 @@ Core::FunctionReplyObject HandlerGasPipe::gasPipeCreateRequest(const GasPipeModi
{ {
Database::AesGasPipe newData; Database::AesGasPipe newData;
newData.name = QString::fromStdString(request.name()); newData.name = QString::fromStdString(request.name);
newData.effectStart = request.effectStart().is_set() && request.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(request.effectStart().get()) : QDateTime(); newData.effectStart = request.effectStart.is_set() && request.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(request.effectStart.get()) : QDateTime();
newData.partyId = request.partyId().is_set() ? request.partyId().get() : 0; newData.partyId = request.partyId.is_set() ? request.partyId.get() : 0;
newData.width = request.width(); newData.width = request.width;
newData.effectDuration = request.effectDuration(); newData.effectDuration = request.effectDuration;
ObjectGasPipe *ifs(new ObjectGasPipe(m_mainHandler, this)); ObjectGasPipe *ifs(new ObjectGasPipe(m_mainHandler, this));
Core::FunctionReplyObject ret = ifs->createObject(newData, Core::FunctionReplyObject ret = ifs->createObject(newData,
request.segments(), request.segments,
QVector<Database::AesGasPipeSegment>()); QVector<Database::AesGasPipeSegment>());
if (ret.error()) if (ret.error())
{ {
@@ -114,7 +114,7 @@ Core::FunctionReplyObject HandlerGasPipe::gasPipeCreateRequest(const GasPipeModi
if (ifs->data().isCentral) if (ifs->data().isCentral)
{ {
if (totalAreasCentral() >= s_maxActiveAreasCentral[AesType::AtGasPipe] && request.effectStart().is_set()) if (totalAreasCentral() >= s_maxActiveAreasCentral[static_cast<int>(AesType::AtGasPipe)] && request.effectStart.is_set())
{ {
ifs->removeObject(); ifs->removeObject();
delete ifs; delete ifs;
@@ -123,7 +123,7 @@ Core::FunctionReplyObject HandlerGasPipe::gasPipeCreateRequest(const GasPipeModi
} }
else else
{ {
if (totalAreas() >= s_maxActiveAreas[AesType::AtGasPipe] && request.effectStart().is_set()) if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtGasPipe)] && request.effectStart.is_set())
{ {
ifs->removeObject(); ifs->removeObject();
delete ifs; delete ifs;
@@ -151,18 +151,18 @@ Core::FunctionReplyObject HandlerGasPipe::gasPipeCreateRequest(const GasPipeModi
Core::FunctionReplyObject HandlerGasPipe::gasPipeModifyRequest(const GasPipeModifyRequest &request) Core::FunctionReplyObject HandlerGasPipe::gasPipeModifyRequest(const GasPipeModifyRequest &request)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectGasPipe *ifs = getObjectFromMap(m_objectMap, request.id(), ret); ObjectGasPipe *ifs = getObjectFromMap(m_objectMap, request.id, ret);
if (!ifs) if (!ifs)
return ret; return ret;
Database::AesGasPipe newData; Database::AesGasPipe newData;
newData.name = QString::fromStdString(request.name()); newData.name = QString::fromStdString(request.name);
newData.effectStart = request.effectStart().is_set() && request.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(request.effectStart().get()) : QDateTime(); newData.effectStart = request.effectStart.is_set() && request.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(request.effectStart.get()) : QDateTime();
newData.partyId = request.partyId().is_set() ? request.partyId().get() : 0; newData.partyId = request.partyId.is_set() ? request.partyId.get() : 0;
newData.width = request.width(); newData.width = request.width;
newData.effectDuration = request.effectDuration(); newData.effectDuration = request.effectDuration;
if (request.id() < 0 && checkStateForSfm(ifs)) if (request.id < 0 && checkStateForSfm(ifs))
{ {
DEBUG_LOG(m_logger) << "Overwrite gas pipe Effect State for OC"; DEBUG_LOG(m_logger) << "Overwrite gas pipe Effect State for OC";
newData.effectStateId = AesEffectState::EsPrepared; newData.effectStateId = AesEffectState::EsPrepared;
@@ -171,19 +171,19 @@ Core::FunctionReplyObject HandlerGasPipe::gasPipeModifyRequest(const GasPipeModi
/*! /*!
* If the effect start added after creation, the max amount need to be checked * If the effect start added after creation, the max amount need to be checked
!*/ !*/
if(!ifs->isActivationTimeSet() && request.effectStart().is_set()) if(!ifs->isActivationTimeSet() && request.effectStart.is_set())
{ {
if (ifs->data().isCentral) if (ifs->data().isCentral)
{ {
if (totalAreasCentral() >= s_maxActiveAreasCentral[AesType::AtGasPipe]) if (totalAreasCentral() >= s_maxActiveAreasCentral[static_cast<int>(AesType::AtGasPipe)])
{ {
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active central functional areas.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active central functional areas."));
} }
} }
else else
{ {
if (totalAreas() >= s_maxActiveAreas[AesType::AtGasPipe]) if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtGasPipe)])
{ {
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active functional areas areas.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active functional areas areas."));
} }
@@ -191,7 +191,7 @@ Core::FunctionReplyObject HandlerGasPipe::gasPipeModifyRequest(const GasPipeModi
} }
//TODO: Implement switch from decentral to central in gasp pipes //TODO: Implement switch from decentral to central in gasp pipes
// // For counting, only Elements being at least prepared are important: // // For counting, only Elements being at least prepared are important:
// if (request.effectStart().is_set() && ifs->isObjectModifiable()) // if (request.effectStart.is_set() && ifs->isObjectModifiable())
// { // {
// // Calculate new polygon here. Not nice, though // // Calculate new polygon here. Not nice, though
@@ -238,7 +238,7 @@ Core::FunctionReplyObject HandlerGasPipe::gasPipeModifyRequest(const GasPipeModi
// } // }
return ifs->updateObject(newData, request.segments()); return ifs->updateObject(newData, request.segments);
} // end of onGasPipeModifyRequest() } // end of onGasPipeModifyRequest()
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@@ -22,7 +22,7 @@ namespace AreaEffectSimulation
{ {
HandlerMineArea::HandlerMineArea(MainHandler *mainHandler) HandlerMineArea::HandlerMineArea(MainHandler *mainHandler)
: HandlerBaseTmpl<ObjectMineArea>(mainHandler, QStringLiteral("MineArea"), s_areaCount[AesType::AtMineArea], s_areaCountCentral[AesType::AtMineArea]) : HandlerBaseTmpl<ObjectMineArea>(mainHandler, QStringLiteral("MineArea"), s_areaCount[static_cast<int>(AesType::AtMineArea)], s_areaCountCentral[static_cast<int>(AesType::AtMineArea)])
, Interface::Fts::MineAreaModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::MineAreaModifyRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::MineAreaRemoveRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::MineAreaRemoveRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::MineResetRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::MineResetRequestHandler(mainHandler->dds()->fts())
@@ -35,12 +35,12 @@ HandlerMineArea::HandlerMineArea(MainHandler *mainHandler)
bool HandlerMineArea::isDusMineArea(int chargeTypeId, int igniterTypeId, int igniterFunctionId) const bool HandlerMineArea::isDusMineArea(int chargeTypeId, int igniterTypeId, int igniterFunctionId) const
{ {
return static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(chargeTypeId, igniterTypeId, igniterFunctionId)) == MineClass::DUS; return static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(chargeTypeId, igniterTypeId, igniterFunctionId)) == MineClass::DUS;
} }
bool HandlerMineArea::isConcreteMine(int chargeTypeId, int igniterTypeId, int igniterFunctionId) const bool HandlerMineArea::isConcreteMine(int chargeTypeId, int igniterTypeId, int igniterFunctionId) const
{ {
return static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(chargeTypeId, igniterTypeId, igniterFunctionId)) == MineClass::Concrete; return static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(chargeTypeId, igniterTypeId, igniterFunctionId)) == MineClass::Concrete;
} }
bool HandlerMineArea::isFromMineLayer(int chargeTypeId, int igniterTypeId, int igniterFunctionId) const bool HandlerMineArea::isFromMineLayer(int chargeTypeId, int igniterTypeId, int igniterFunctionId) const
@@ -50,12 +50,12 @@ bool HandlerMineArea::isFromMineLayer(int chargeTypeId, int igniterTypeId, int i
bool HandlerMineArea::isSingleVirtualMine(int chargeTypeId, int igniterTypeId, int igniterFunctionId) const bool HandlerMineArea::isSingleVirtualMine(int chargeTypeId, int igniterTypeId, int igniterFunctionId) const
{ {
return static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(chargeTypeId, igniterTypeId, igniterFunctionId)) == MineClass::VirtualSingle; return static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(chargeTypeId, igniterTypeId, igniterFunctionId)) == MineClass::VirtualSingle;
} }
bool HandlerMineArea::isVirtualMine(int chargeTypeId, int igniterTypeId, int igniterFunctionId) const bool HandlerMineArea::isVirtualMine(int chargeTypeId, int igniterTypeId, int igniterFunctionId) const
{ {
return static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(chargeTypeId, igniterTypeId, igniterFunctionId)) == MineClass::Virtual; return static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(chargeTypeId, igniterTypeId, igniterFunctionId)) == MineClass::Virtual;
} }
bool HandlerMineArea::init() bool HandlerMineArea::init()
@@ -97,7 +97,7 @@ bool HandlerMineArea::init()
if (!ifs->data().isCentral) if (!ifs->data().isCentral)
{ {
if (totalAreas() >= s_maxActiveAreas[AesType::AtMineArea]) if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtMineArea)])
{ {
ERROR_LOG(m_logger) << "More active mine areas in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active mine areas in database than allowed - ignoring the rest!";
ifs->removeObject(); ifs->removeObject();
@@ -107,7 +107,7 @@ bool HandlerMineArea::init()
} }
else else
{ {
if (totalAreasCentral() >= s_maxActiveAreasCentral[AesType::AtMineArea]) if (totalAreasCentral() >= s_maxActiveAreasCentral[static_cast<int>(AesType::AtMineArea)])
{ {
ERROR_LOG(m_logger) << "More active mine areas in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active mine areas in database than allowed - ignoring the rest!";
ifs->removeObject(); ifs->removeObject();
@@ -196,9 +196,9 @@ bool HandlerMineArea::removeDuplicateMine(int mineId)
return false; return false;
} }
int HandlerMineArea::totalAreas() const { return s_areaCount[AesType::AtMineArea]; } int HandlerMineArea::totalAreas() const { return s_areaCount[static_cast<int>(AesType::AtMineArea)]; }
int HandlerMineArea::totalAreasCentral() const { return s_areaCountCentral[AesType::AtMineArea]; } int HandlerMineArea::totalAreasCentral() const { return s_areaCountCentral[static_cast<int>(AesType::AtMineArea)]; }
template <typename T> T getValueHelper(T in) { return in; } template <typename T> T getValueHelper(T in) { return in; }
@@ -206,23 +206,23 @@ template <typename T> T getValueHelper(const dds::core::optional<T> &in) { retur
template <typename T> static void fillData(const T &src, Database::AesMineArea &dst) template <typename T> static void fillData(const T &src, Database::AesMineArea &dst)
{ {
if (src.id() < 0) // is the id given as negative? set id -> used by OC-Laptop if (src.id < 0) // is the id given as negative? set id -> used by OC-Laptop
dst.id = src.id(); dst.id = src.id;
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.effectStart = src.effectStart().is_set() && src.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.effectDuration = src.effectDuration(); dst.effectDuration = src.effectDuration;
dst.effectSourceId = src.effectSourceId(); dst.effectSourceId = src.effectSourceId;
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.chargeTypeId = src.chargeStruct().chargeTypeId(); dst.chargeTypeId = src.chargeStruct.chargeTypeId;
dst.participantId = src.participantId().is_set() ? src.participantId().get() : 0; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0;
dst.density = src.density(); dst.density = src.density;
dst.width = src.width(); dst.width = src.width;
dst.layingProcedureTypeId = src.layingProcedureType(); dst.layingProcedureTypeId = src.layingProcedureType;
dst.isLaidHidden = src.isLaidHidden(); dst.isLaidHidden = src.isLaidHidden;
dst.effectMarkingInTa = src.effectMarkingInTa(); dst.effectMarkingInTa = src.effectMarkingInTa;
dst.isCenterLine = src.isCenterLine(); dst.isCenterLine = src.isCenterLine;
dst.externalId = getValueHelper(src.externalId()); dst.externalId = getValueHelper(src.externalId);
} }
static inline bool intersects(const QPolygonF &p1, const std::vector<Core::GeoPosition> &ddsp2) static inline bool intersects(const QPolygonF &p1, const std::vector<Core::GeoPosition> &ddsp2)
@@ -230,7 +230,7 @@ static inline bool intersects(const QPolygonF &p1, const std::vector<Core::GeoPo
QPolygonF p2(ddsp2.size()); QPolygonF p2(ddsp2.size());
int i = 0; int i = 0;
for (const auto &point : ddsp2) for (const auto &point : ddsp2)
p2[i++] = QPointF(point.lon(), point.lat()); p2[i++] = QPointF(point.lon, point.lat);
QPainterPath pp1; QPainterPath pp1;
pp1.addPolygon(p1); pp1.addPolygon(p1);
@@ -242,7 +242,7 @@ static inline bool intersects(const QPolygonF &p1, const std::vector<Core::GeoPo
void HandlerMineArea::onMineAreaModifyRequest(const rti::core::SampleIdentity &cookie, const MineAreaModifyRequest &request) void HandlerMineArea::onMineAreaModifyRequest(const rti::core::SampleIdentity &cookie, const MineAreaModifyRequest &request)
{ {
DEBUG_LOG(m_logger) << "onMineAreaModifyRequest: " << request << "totalAreas=" << totalAreas() DEBUG_LOG(m_logger) << "onMineAreaModifyRequest: " << request << "totalAreas=" << totalAreas()
<< " s_maxActiveAreas[AesType::AtMineArea]=" << s_maxActiveAreas[AesType::AtMineArea]; << " s_maxActiveAreas[AesType::AtMineArea]=" << s_maxActiveAreas[static_cast<int>(AesType::AtMineArea)];
const Core::FunctionReplyObject ret = mineAreaModifyRequest(request); const Core::FunctionReplyObject ret = mineAreaModifyRequest(request);
if (ret.error()) if (ret.error())
@@ -253,7 +253,7 @@ void HandlerMineArea::onMineAreaModifyRequest(const rti::core::SampleIdentity &c
template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaCreateRequest(const T &request) template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaCreateRequest(const T &request)
{ {
// if ( !isDusMineArea(request.chargeTypeId()) // if ( !isDusMineArea(request.chargeTypeId())
// && (totalAreas() >= s_maxActiveAreas[AesType::AtMineArea] && request.effectStart().is_set())) // && (totalAreas() >= s_maxActiveAreas[AesType::AtMineArea] && request.effectStart.is_set()))
// return Core::FunctionReplyObject(1, tr_lts("dds", "Too many peripheral mine areas.")); // return Core::FunctionReplyObject(1, tr_lts("dds", "Too many peripheral mine areas."));
Database::AesMineArea newData; Database::AesMineArea newData;
@@ -263,9 +263,9 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaCreateR
if (isDusMineArea(newData.chargeTypeId, newData.igniterTypeId, newData.igniterFunctionId) if (isDusMineArea(newData.chargeTypeId, newData.igniterTypeId, newData.igniterFunctionId)
|| isConcreteMine(newData.chargeTypeId, newData.igniterTypeId, newData.igniterFunctionId)) || isConcreteMine(newData.chargeTypeId, newData.igniterTypeId, newData.igniterFunctionId))
{ {
if (!checkIfNullMineIsInArea(request.segments(), newData, request.distance())) if (!checkIfNullMineIsInArea(request.segments, newData, request.distance))
{ {
QString chargeTypeName = QString::fromStdString(m_mainHandler->dds()->pdmDtc()->chargeType(newData.chargeTypeId).name()); QString chargeTypeName = QString::fromStdString(m_mainHandler->dds()->pdmDtc()->chargeType(newData.chargeTypeId).name);
return Core::FunctionReplyObject(1, tr_lts("dds", "No mines of type '%1' found in chosen area")).arg(chargeTypeName); return Core::FunctionReplyObject(1, tr_lts("dds", "No mines of type '%1' found in chosen area")).arg(chargeTypeName);
} }
} }
@@ -274,9 +274,9 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaCreateR
ObjectMineArea *ifs(new ObjectMineArea(m_mainHandler, this)); ObjectMineArea *ifs(new ObjectMineArea(m_mainHandler, this));
connect(ifs, &ObjectMineArea::effectStateChanged, this, &HandlerMineArea::onEffectStateChanged); connect(ifs, &ObjectMineArea::effectStateChanged, this, &HandlerMineArea::onEffectStateChanged);
Core::FunctionReplyObject ret = ifs->createObject(newData, request.segments()); Core::FunctionReplyObject ret = ifs->createObject(newData, request.segments);
DEBUG_LOG(m_logger) << ">>> mineAreaCreateRequest: re.segSize: " << request.segments().size() << " // ifs.segSize: " << ifs->segments().size() DEBUG_LOG(m_logger) << ">>> mineAreaCreateRequest: re.segSize: " << request.segments.size() << " // ifs.segSize: " << ifs->segments().size()
<< " // mineCount: " << ifs->mineCount(); << " // mineCount: " << ifs->mineCount();
if (ret.error()) if (ret.error())
{ {
@@ -301,7 +301,7 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaCreateR
bool isCentral = ifs->checkIsCentral(_form); bool isCentral = ifs->checkIsCentral(_form);
if (isCentral) if (isCentral)
{ {
if (totalAreasCentral() >= s_maxActiveAreasCentral[AesType::AtMineArea] && request.effectStart().is_set()) if (totalAreasCentral() >= s_maxActiveAreasCentral[static_cast<int>(AesType::AtMineArea)] && request.effectStart.is_set())
{ {
ifs->removeObject(); // Not finally deleted from db after this,Fallback if DB deletion is not working correct ifs->removeObject(); // Not finally deleted from db after this,Fallback if DB deletion is not working correct
ifs->removeObjectFromDb(); ifs->removeObjectFromDb();
@@ -329,14 +329,14 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaCreateR
if (newData.layingProcedureTypeId == AesMaLayingProcedureType::LptArtillery /*PzAbwWmiV */) if (newData.layingProcedureTypeId == AesMaLayingProcedureType::LptArtillery /*PzAbwWmiV */)
{ {
if (request.effectStart().is_set()) if (request.effectStart.is_set())
--pzAbwWMiSafe; --pzAbwWMiSafe;
} }
if (pzAbwWMiSafe < 0) if (pzAbwWMiSafe < 0)
pzAbwWMiSafe = 0; pzAbwWMiSafe = 0;
if (totalAreas() >= s_maxActiveAreas[AesType::AtMineArea] - pzAbwWMiSafe && request.effectStart().is_set()) if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtMineArea)] - pzAbwWMiSafe && request.effectStart.is_set())
{ {
ifs->removeObject(); // Not finally deleted from db after this,Fallback if DB deletion is not working correct ifs->removeObject(); // Not finally deleted from db after this,Fallback if DB deletion is not working correct
ifs->removeObjectFromDb(); ifs->removeObjectFromDb();
@@ -346,7 +346,7 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaCreateR
if (newData.layingProcedureTypeId == AesMaLayingProcedureType::LptArtillery /*PzAbwWmiV */) if (newData.layingProcedureTypeId == AesMaLayingProcedureType::LptArtillery /*PzAbwWmiV */)
{ {
if (request.effectStart().is_set()) if (request.effectStart.is_set())
++m_totalPzAbwWMis; ++m_totalPzAbwWMis;
} }
} }
@@ -374,8 +374,8 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaCreateR
if (ifs->isDusMineArea() || ifs->isConcreteMine()) if (ifs->isDusMineArea() || ifs->isConcreteMine())
{ {
assignMinesFromNullArea(ifs->id()); assignMinesFromNullArea(ifs->id());
DEBUG_LOG(m_logger) << "Start change to Line: " << request.setMineSorted(); DEBUG_LOG(m_logger) << "Start change to Line: " << request.setMineSorted;
ret = ifs->changeSegmentsToLine(request.setMineSorted()); ret = ifs->changeSegmentsToLine(request.setMineSorted);
} }
return ret; return ret;
} }
@@ -384,21 +384,21 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaModifyR
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectMineArea *ifs = nullptr; ObjectMineArea *ifs = nullptr;
if (getValueHelper(request.externalId()) > 0) if (getValueHelper(request.externalId) > 0)
ifs = getObjectFromMapByExternalId(m_objectMap, getValueHelper(request.externalId()), ret); ifs = getObjectFromMapByExternalId(m_objectMap, getValueHelper(request.externalId), ret);
if (!ifs) if (!ifs)
{ {
if (request.id() == 0 || ((request.id() < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id()), ret))) if (request.id == 0 || ((request.id < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id), ret)))
return mineAreaCreateRequest(request); return mineAreaCreateRequest(request);
ifs = getObjectFromMap(m_objectMap, std::abs(request.id()), ret); ifs = getObjectFromMap(m_objectMap, std::abs(request.id), ret);
if (!ifs) if (!ifs)
return ret; return ret;
} }
if (request.effectStart().is_set() && (request.effectStart().get() + request.effectDuration() < m_mainHandler->dds()->currentPartitionTime().toMSecsSinceEpoch())) if (request.effectStart.is_set() && (request.effectStart.get() + request.effectDuration < m_mainHandler->dds()->currentPartitionTime().toMSecsSinceEpoch()))
return removeObject(ifs); return removeObject(ifs);
Database::AesMineArea newData(ifs->data()); Database::AesMineArea newData(ifs->data());
@@ -407,7 +407,7 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaModifyR
QVector<Database::AesMineAreaSegment> vecSegments; QVector<Database::AesMineAreaSegment> vecSegments;
double totalLength = 0.0; double totalLength = 0.0;
ifs->createSegments(request.segments(), request.id(), vecSegments, totalLength); ifs->createSegments(request.segments, request.id, vecSegments, totalLength);
auto poly = Polygons::mineArea(vecSegments, newData.width, newData.density, newData.isCenterLine); // FIXME:Is segements filled here auto poly = Polygons::mineArea(vecSegments, newData.width, newData.density, newData.isCenterLine); // FIXME:Is segements filled here
// Check if mine field is in building only // Check if mine field is in building only
@@ -422,12 +422,12 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaModifyR
/*! /*!
* If the effect start added after creation, the max amount need to be checked * If the effect start added after creation, the max amount need to be checked
*/ */
if (!ifs->isActivationTimeSet() && request.effectStart().is_set()) if (!ifs->isActivationTimeSet() && request.effectStart.is_set())
{ {
if (isCentral) if (isCentral)
{ {
if (totalAreasCentral() >= s_maxActiveAreasCentral[AesType::AtMineArea] /*&& request.effectStart().is_set()*/) if (totalAreasCentral() >= s_maxActiveAreasCentral[static_cast<int>(AesType::AtMineArea)] /*&& request.effectStart.is_set()*/)
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many central mine areas.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many central mine areas."));
ret = ifs->checkDensity(newData.density, totalLength, s_maxCentralSingleMinesCount); ret = ifs->checkDensity(newData.density, totalLength, s_maxCentralSingleMinesCount);
@@ -453,7 +453,7 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaModifyR
if (pzAbwWMiSafe < 0) if (pzAbwWMiSafe < 0)
pzAbwWMiSafe = 0; pzAbwWMiSafe = 0;
if (totalAreas() >= s_maxActiveAreas[AesType::AtMineArea] - pzAbwWMiSafe /*&& request.effectStart().is_set()*/) if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtMineArea)] - pzAbwWMiSafe /*&& request.effectStart.is_set()*/)
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many peripheral mine areas.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many peripheral mine areas."));
if (newData.layingProcedureTypeId == AesMaLayingProcedureType::LptArtillery /*PzAbwWmiV */) if (newData.layingProcedureTypeId == AesMaLayingProcedureType::LptArtillery /*PzAbwWmiV */)
@@ -464,7 +464,7 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaModifyR
} }
// For counting, only Elements being at least prepared are important: // For counting, only Elements being at least prepared are important:
if (request.effectStart().is_set() && ifs->isObjectModifiable()) if (request.effectStart.is_set() && ifs->isObjectModifiable())
{ {
// Calculate new polygon here. Not nice, though // Calculate new polygon here. Not nice, though
@@ -481,15 +481,15 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaModifyR
if (newData.layingProcedureTypeId == AesMaLayingProcedureType::LptArtillery /*PzAbwWmiV */) if (newData.layingProcedureTypeId == AesMaLayingProcedureType::LptArtillery /*PzAbwWmiV */)
{ {
if (request.effectStart().is_set()) if (request.effectStart.is_set())
--pzAbwWMiSafe; --pzAbwWMiSafe;
} }
if (pzAbwWMiSafe < 0) if (pzAbwWMiSafe < 0)
pzAbwWMiSafe = 0; pzAbwWMiSafe = 0;
if (totalAreas() >= s_maxActiveAreas[AesType::AtMineArea] - pzAbwWMiSafe) // Minus PzAbwWmiV if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtMineArea)] - pzAbwWMiSafe) // Minus PzAbwWmiV
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many peripheral mine areas.")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many peripheral mine areas."));
if (newData.layingProcedureTypeId == AesMaLayingProcedureType::LptArtillery /*&& newData.chargeTypeId == 216*/ /*PzAbwWmiV */) if (newData.layingProcedureTypeId == AesMaLayingProcedureType::LptArtillery /*&& newData.chargeTypeId == 216*/ /*PzAbwWmiV */)
m_totalPzAbwWMis++; m_totalPzAbwWMis++;
@@ -501,8 +501,8 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaModifyR
else // Change from training area to central else // Change from training area to central
{ {
if (totalAreasCentral() >= s_maxActiveAreasCentral[AesType::AtMineArea]) if (totalAreasCentral() >= s_maxActiveAreasCentral[static_cast<int>(AesType::AtMineArea)])
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many central mine areas.")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many central mine areas."));
m_areaCount--; m_areaCount--;
m_areaCountCentral++; m_areaCountCentral++;
@@ -514,7 +514,7 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaModifyR
} }
} }
if (request.layingProcedureType() == AesMaLayingProcedureType::LptPioneer && ifs->get().layingProcedureTypeId == AesMaLayingProcedureType::LptArtillery && !isCentral) if (request.layingProcedureType == AesMaLayingProcedureType::LptPioneer && ifs->get().layingProcedureTypeId == AesMaLayingProcedureType::LptArtillery && !isCentral)
{ {
--m_totalPzAbwWMis; --m_totalPzAbwWMis;
@@ -525,13 +525,13 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaModifyR
if (pzAbwWMiSafe < 0) if (pzAbwWMiSafe < 0)
pzAbwWMiSafe = 0; pzAbwWMiSafe = 0;
if (totalAreas() > s_maxActiveAreas[AesType::AtMineArea] - pzAbwWMiSafe) // Minus PzAbwWmiV if (totalAreas() > s_maxActiveAreas[static_cast<int>(AesType::AtMineArea)] - pzAbwWMiSafe) // Minus PzAbwWmiV
{ {
++m_totalPzAbwWMis; ++m_totalPzAbwWMis;
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many peripheral mine areas.")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many peripheral mine areas."));
} }
} }
else if (request.layingProcedureType() == AesMaLayingProcedureType::LptArtillery && ifs->get().layingProcedureTypeId == AesMaLayingProcedureType::LptPioneer else if (request.layingProcedureType == AesMaLayingProcedureType::LptArtillery && ifs->get().layingProcedureTypeId == AesMaLayingProcedureType::LptPioneer
&& !isCentral) && !isCentral)
{ {
@@ -540,7 +540,7 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaModifyR
} }
} }
if (request.id() < 0 && checkStateForSfm(ifs)) if (request.id < 0 && checkStateForSfm(ifs))
{ {
DEBUG_LOG(m_logger) << "Overwrite mine area Effect State for OC"; DEBUG_LOG(m_logger) << "Overwrite mine area Effect State for OC";
newData.effectStateId = AesEffectState::EsPrepared; newData.effectStateId = AesEffectState::EsPrepared;
@@ -549,16 +549,16 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaModifyR
// check: effectStart > time(NULL) ? // check: effectStart > time(NULL) ?
int32_t oldChargeTypeId = ifs->data().chargeTypeId; int32_t oldChargeTypeId = ifs->data().chargeTypeId;
ret = ifs->updateObject(newData, request.segments()); ret = ifs->updateObject(newData, request.segments);
// assign mines from NullArea if applicable // assign mines from NullArea if applicable
if (oldChargeTypeId != newData.chargeTypeId) if (oldChargeTypeId != newData.chargeTypeId)
if (ifs->isDusMineArea() || ifs->isConcreteMine()) if (ifs->isDusMineArea() || ifs->isConcreteMine())
{ {
assignMinesFromNullArea(ifs->id()); assignMinesFromNullArea(ifs->id());
DEBUG_LOG(m_logger) << "Start change to Line(modify): " << request.setMineSorted(); DEBUG_LOG(m_logger) << "Start change to Line(modify): " << request.setMineSorted;
ifs->changeSegmentsToLine(request.setMineSorted()); ifs->changeSegmentsToLine(request.setMineSorted);
} }
ifs->clearBuildings(); ifs->clearBuildings();
@@ -569,7 +569,7 @@ template <typename T> Core::FunctionReplyObject HandlerMineArea::mineAreaModifyR
void HandlerMineArea::onMineAreaRemoveRequest(const rti::core::SampleIdentity &cookie, const Core::RemoveElementRequest &request) void HandlerMineArea::onMineAreaRemoveRequest(const rti::core::SampleIdentity &cookie, const Core::RemoveElementRequest &request)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
const qint32 id = request.id() < 0 ? (request.id() * -1) : request.id(); const qint32 id = request.id < 0 ? (request.id * -1) : request.id;
ObjectMineArea *ifs = getObjectFromMap(m_objectMap, id, ret); ObjectMineArea *ifs = getObjectFromMap(m_objectMap, id, ret);
if (ifs == nullptr) if (ifs == nullptr)
@@ -597,23 +597,23 @@ Core::FunctionReplyObject HandlerMineArea::mineResetRequest(const MineResetReque
{ {
// If they are DUS Mines that are not part of a mine area [yet] // If they are DUS Mines that are not part of a mine area [yet]
// request does not contain position, so it cannot be assigned to an area // request does not contain position, so it cannot be assigned to an area
if (request.mineAreaId() == 0) if (request.mineAreaId == 0)
{ {
// If single mine... // If single mine...
if (request.mineId().is_set()) if (request.mineId.is_set())
{ {
DEBUG_LOG(m_logger) << "Checking in DUS-Mine-Areas"; DEBUG_LOG(m_logger) << "Checking in DUS-Mine-Areas";
bool found = false; bool found = false;
auto it = m_objectMap.cbegin(); auto it = m_objectMap.cbegin();
while (it != m_objectMap.cend() && !found) while (it != m_objectMap.cend() && !found)
{ {
found = (*it)->resetMine(request.mineId().get()); found = (*it)->resetMine(request.mineId.get());
++it; ++it;
} }
if (!found) if (!found)
{ {
DEBUG_LOG(m_logger) << "Not found in DUS Mine Areas, resetting in NullArea!"; DEBUG_LOG(m_logger) << "Not found in DUS Mine Areas, resetting in NullArea!";
m_nullArea->resetMine(request.mineId().get()); m_nullArea->resetMine(request.mineId.get());
} }
} }
else else
@@ -628,24 +628,24 @@ Core::FunctionReplyObject HandlerMineArea::mineResetRequest(const MineResetReque
mineAreaObj->resetMines(); mineAreaObj->resetMines();
} }
} }
return Core::FunctionReplyObject(request.mineAreaId()); return Core::FunctionReplyObject(request.mineAreaId);
} }
// Both Virtual and DUS Mine Area // Both Virtual and DUS Mine Area
ObjectMineArea *ifs = m_objectMap.value(request.mineAreaId()); ObjectMineArea *ifs = m_objectMap.value(request.mineAreaId);
if (!ifs) if (!ifs)
return Core::FunctionReplyObject(request.mineAreaId(), tr_lts("dds", "Mine area with id %1 not found.")).arg(request.mineAreaId()); return Core::FunctionReplyObject(request.mineAreaId, tr_lts("dds", "Mine area with id %1 not found.")).arg(request.mineAreaId);
bool bOk; bool bOk;
if (request.mineId().is_set()) if (request.mineId.is_set())
bOk = ifs->resetMine(request.mineId().get()); bOk = ifs->resetMine(request.mineId.get());
else else
bOk = ifs->resetMines(); bOk = ifs->resetMines();
if (!bOk) if (!bOk)
return Core::FunctionReplyObject(request.mineAreaId(), tr_lts("dds", "Reset Virtual Mine(s) failed.")); return Core::FunctionReplyObject(request.mineAreaId, tr_lts("dds", "Reset Virtual Mine(s) failed."));
return Core::FunctionReplyObject(request.mineAreaId()); return Core::FunctionReplyObject(request.mineAreaId);
} }
void HandlerMineArea::onMineTriggered(const TrainingAreaBase::MineTriggered &data, DataModification modType) void HandlerMineArea::onMineTriggered(const TrainingAreaBase::MineTriggered &data, DataModification modType)
@@ -654,13 +654,13 @@ void HandlerMineArea::onMineTriggered(const TrainingAreaBase::MineTriggered &dat
return; return;
MineTriggeredRequest mtr; MineTriggeredRequest mtr;
mtr.mineAreaId(data.mineAreaId()); mtr.mineAreaId = data.mineAreaId;
// from tab - mine area mine index starts at 1 ... // from tab - mine area mine index starts at 1 ...
mtr.mineId(data.mineAreaId() == 0 ? data.mineIndex() : data.mineIndex() - 1); mtr.mineId = data.mineAreaId == 0 ? data.mineIndex : data.mineIndex - 1;
if (data.position().is_set()) if (data.position.is_set())
mtr.position(data.position().get()); mtr.position = data.position.get();
if (data.chargeTypeId().is_set()) if (data.chargeTypeId.is_set())
mtr.chargeTypeId(data.chargeTypeId().get()); mtr.chargeTypeId = data.chargeTypeId.get();
auto ret = mineTriggeredRequest(mtr); auto ret = mineTriggeredRequest(mtr);
if (ret.error()) if (ret.error())
@@ -679,17 +679,17 @@ Core::FunctionReplyObject HandlerMineArea::mineTriggeredRequest(const MineTrigge
{ {
DEBUG_LOG(m_logger) << "mineTriggeredRequest: " << request; DEBUG_LOG(m_logger) << "mineTriggeredRequest: " << request;
// NOTE: igniterType/IgniterFunciton = 0 as long as MineTriggeredRequest does not contain values // NOTE: igniterType/IgniterFunciton = 0 as long as MineTriggeredRequest does not contain values
if (request.mineAreaId() == 0 || (request.chargeTypeId().is_set() && isConcreteMine(request.chargeTypeId().get(), 0, 0))) if (request.mineAreaId == 0 || (request.chargeTypeId.is_set() && isConcreteMine(request.chargeTypeId.get(), 0, 0)))
{ {
int chargeTypeId = request.chargeTypeId().is_set() ? request.chargeTypeId().get() : 0; int chargeTypeId = request.chargeTypeId.is_set() ? request.chargeTypeId.get() : 0;
// DUS Mines: // DUS Mines:
// NOTE: igniterType/IgniterFunciton = 0 as long as MineTriggeredRequest does not contain values // NOTE: igniterType/IgniterFunciton = 0 as long as MineTriggeredRequest does not contain values
QPointF position; QPointF position;
if (request.position().is_set() && !isFromMineLayer(chargeTypeId, 0, 0)) if (request.position.is_set() && !isFromMineLayer(chargeTypeId, 0, 0))
{ {
position.setX(request.position().get().lon()); position.setX(request.position.get().lon);
position.setY(request.position().get().lat()); position.setY(request.position.get().lat);
} }
Database::AesMineAreaTriggeredMines mine; Database::AesMineAreaTriggeredMines mine;
@@ -699,20 +699,20 @@ Core::FunctionReplyObject HandlerMineArea::mineTriggeredRequest(const MineTrigge
auto it = m_objectMap.cbegin(); auto it = m_objectMap.cbegin();
while (it != m_objectMap.cend() && !mineFound) while (it != m_objectMap.cend() && !mineFound)
{ {
int mineId = request.mineId(); int mineId = request.mineId;
ObjectMineArea *mineArea = it.value(); ObjectMineArea *mineArea = it.value();
DEBUG_LOG(m_logger) << "mineId: " << mineId << ", areaId:" << mineArea->id(); DEBUG_LOG(m_logger) << "mineId: " << mineId << ", areaId:" << mineArea->id();
if (request.mineAreaId() > 0 && request.mineAreaId() != mineArea->id()) if (request.mineAreaId > 0 && request.mineAreaId != mineArea->id())
{ {
it++; it++;
continue; continue;
} }
DEBUG_LOG(m_logger) << "request.mineAreaId: " << request.mineAreaId(); DEBUG_LOG(m_logger) << "request.mineAreaId: " << request.mineAreaId;
if (mineArea->isConcreteMine()) if (mineArea->isConcreteMine())
{ {
DEBUG_LOG(m_logger) << "isConcrete = true"; DEBUG_LOG(m_logger) << "isConcrete = true";
mineId = mineArea->getMineIdByIndex(request.mineId()); mineId = mineArea->getMineIdByIndex(request.mineId);
} }
if ((mineArea->isDusMineArea() || mineArea->isConcreteMine()) && mineArea->hasMine(mineId)) // is mine in a DUS minearea if ((mineArea->isDusMineArea() || mineArea->isConcreteMine()) && mineArea->hasMine(mineId)) // is mine in a DUS minearea
@@ -723,7 +723,7 @@ Core::FunctionReplyObject HandlerMineArea::mineTriggeredRequest(const MineTrigge
{ {
DEBUG_LOG(m_logger) << "triggerMine: mineId: " << mineId; DEBUG_LOG(m_logger) << "triggerMine: mineId: " << mineId;
mineArea->triggerMine(mineId, true, position); mineArea->triggerMine(mineId, true, position);
return Core::FunctionReplyObject(request.mineAreaId()); return Core::FunctionReplyObject(request.mineAreaId);
} }
mine = mineArea->takeMine(mineId); // take the mine, as it is not handled anymore mine = mineArea->takeMine(mineId); // take the mine, as it is not handled anymore
} }
@@ -736,18 +736,18 @@ Core::FunctionReplyObject HandlerMineArea::mineTriggeredRequest(const MineTrigge
while (it != m_objectMap.cend() && handlingAreaId == 0) while (it != m_objectMap.cend() && handlingAreaId == 0)
{ {
const ObjectMineArea *mineArea = it.value(); const ObjectMineArea *mineArea = it.value();
if ((mineArea->isDusMineArea() || mineArea->isConcreteMine()) && mineArea->canHandleMine(request.mineId(), chargeTypeId, position)) if ((mineArea->isDusMineArea() || mineArea->isConcreteMine()) && mineArea->canHandleMine(request.mineId, chargeTypeId, position))
handlingAreaId = mineArea->id(); handlingAreaId = mineArea->id();
++it; ++it;
} }
// if mine was not already in a mine area and there is an area that wants the mine, check if it can be taken from the null area // if mine was not already in a mine area and there is an area that wants the mine, check if it can be taken from the null area
if (!mineFound && handlingAreaId != 0) if (!mineFound && handlingAreaId != 0)
mine = m_nullArea->takeMine(request.mineId()); mine = m_nullArea->takeMine(request.mineId);
if (mine.id != 0) // mine did exist already if (mine.id != 0) // mine did exist already
{ {
if (request.position().is_set()) // update position if (request.position.is_set()) // update position
mine.position = position; mine.position = position;
} }
@@ -764,7 +764,7 @@ Core::FunctionReplyObject HandlerMineArea::mineTriggeredRequest(const MineTrigge
else else
{ {
if (!triggerUnpairedMine(request)) if (!triggerUnpairedMine(request))
ifs->triggerMine(request.mineId(), true, position); ifs->triggerMine(request.mineId, true, position);
} }
} }
else else
@@ -775,20 +775,20 @@ Core::FunctionReplyObject HandlerMineArea::mineTriggeredRequest(const MineTrigge
else else
{ {
if (!triggerUnpairedMine(request)) if (!triggerUnpairedMine(request))
m_nullArea->triggerMine(request.mineId(), true, chargeTypeId, position); m_nullArea->triggerMine(request.mineId, true, chargeTypeId, position);
} }
} }
return Core::FunctionReplyObject(request.mineAreaId()); return Core::FunctionReplyObject(request.mineAreaId);
} }
// Virtual: // Virtual:
ObjectMineArea *ifs = m_objectMap.value(request.mineAreaId()); ObjectMineArea *ifs = m_objectMap.value(request.mineAreaId);
if (!ifs) if (!ifs)
return Core::FunctionReplyObject(request.mineAreaId(), tr_lts("dds", "Mine area with id %1 not found.")).arg(request.mineAreaId()); return Core::FunctionReplyObject(request.mineAreaId, tr_lts("dds", "Mine area with id %1 not found.")).arg(request.mineAreaId);
ifs->triggerMine(request.mineId()); ifs->triggerMine(request.mineId);
return Core::FunctionReplyObject(request.mineAreaId()); return Core::FunctionReplyObject(request.mineAreaId);
} }
void HandlerMineArea::onMineAreaModifyFromCtaDataRequest(const rti::core::SampleIdentity &cookie, const MineArea &request) void HandlerMineArea::onMineAreaModifyFromCtaDataRequest(const rti::core::SampleIdentity &cookie, const MineArea &request)
@@ -802,12 +802,12 @@ void HandlerMineArea::onMineAreaModifyFromCtaDataRequest(const rti::core::Sample
void HandlerMineArea::onNewMineCorridor(const AesItemView &aiv) void HandlerMineArea::onNewMineCorridor(const AesItemView &aiv)
{ {
if (aiv.effectStateId() != AesEffectState::EsActivated) if (aiv.effectStateId != AesEffectState::EsActivated)
return; return;
for (ObjectMineArea *ma : qAsConst(m_objectMap)) for (ObjectMineArea *ma : qAsConst(m_objectMap))
{ {
if (intersects(ma->boundingRect(), aiv.form())) if (intersects(ma->boundingRect(), aiv.form))
ma->clearCorridor(aiv); ma->clearCorridor(aiv);
} }
} }
@@ -821,11 +821,11 @@ void HandlerMineArea::onNewMineCorridor(const AesItemView &aiv)
Core::FunctionReplyObject HandlerMineArea::mineAreaReferenceCreateRequest(const MineAreaReferenceModifyRequest &refRequest) Core::FunctionReplyObject HandlerMineArea::mineAreaReferenceCreateRequest(const MineAreaReferenceModifyRequest &refRequest)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
if (refRequest.mineData().empty() || refRequest.referenceAesItemId() <= 0) if (refRequest.mineData.empty() || refRequest.referenceAesItemId <= 0)
return Core::FunctionReplyObject(1, tr_lts("dds", "Invalid MineAreaReference data")); return Core::FunctionReplyObject(1, tr_lts("dds", "Invalid MineAreaReference data"));
DEBUG_LOG(m_logger) << "--[mineAreaReferenceCreateRequest] referenceAesItemId: " << refRequest.referenceAesItemId() DEBUG_LOG(m_logger) << "--[mineAreaReferenceCreateRequest] referenceAesItemId: " << refRequest.referenceAesItemId
<< " mindeData size: " << refRequest.mineData().size(); << " mindeData size: " << refRequest.mineData.size();
Database::AesMineArea newData; Database::AesMineArea newData;
if (!fillFromMineAreaReferenceRequest(refRequest, newData)) if (!fillFromMineAreaReferenceRequest(refRequest, newData))
@@ -833,13 +833,13 @@ Core::FunctionReplyObject HandlerMineArea::mineAreaReferenceCreateRequest(const
// add referencedAesItemId into the properties // add referencedAesItemId into the properties
QJsonObject propObj = QJsonDocument::fromJson(newData.properties.toUtf8()).object(); QJsonObject propObj = QJsonDocument::fromJson(newData.properties.toUtf8()).object();
propObj.insert(QStringLiteral("referencedAesItemId"), refRequest.referenceAesItemId()); propObj.insert(QStringLiteral("referencedAesItemId"), refRequest.referenceAesItemId);
newData.properties = QString::fromStdString(QJsonDocument(propObj).toJson().toStdString()); newData.properties = QString::fromStdString(QJsonDocument(propObj).toJson().toStdString());
ObjectMineArea *ifs(new ObjectMineArea(m_mainHandler, this)); ObjectMineArea *ifs(new ObjectMineArea(m_mainHandler, this));
std::vector<Core::GeoPosition2D> vecGeoSegment; std::vector<Core::GeoPosition2D> vecGeoSegment;
double newWidth = newData.width; // always central double newWidth = newData.width; // always central
ret = ifs->createGeoSegmentsFromMineData(newWidth, refRequest.mineData(), vecGeoSegment); // segments will be filled through mineData ret = ifs->createGeoSegmentsFromMineData(newWidth, refRequest.mineData, vecGeoSegment); // segments will be filled through mineData
if (ret.error()) if (ret.error())
{ {
delete ifs; delete ifs;
@@ -848,7 +848,7 @@ Core::FunctionReplyObject HandlerMineArea::mineAreaReferenceCreateRequest(const
newData.width = newWidth; newData.width = newWidth;
connect(ifs, &ObjectMineArea::effectStateChanged, this, &HandlerMineArea::onEffectStateChanged); connect(ifs, &ObjectMineArea::effectStateChanged, this, &HandlerMineArea::onEffectStateChanged);
ret = ifs->createObjectFromMineData(newData, vecGeoSegment, refRequest.mineData()); ret = ifs->createObjectFromMineData(newData, vecGeoSegment, refRequest.mineData);
if (ret.error()) if (ret.error())
{ {
@@ -874,7 +874,7 @@ Core::FunctionReplyObject HandlerMineArea::mineAreaReferenceCreateRequest(const
if (ifs->isObjectInTrainingArea()) if (ifs->isObjectInTrainingArea())
++m_areaCount; ++m_areaCount;
DEBUG_LOG(m_logger) << "--[mineAreaReferenceCreateRequest]- -----> Mine Area created from MineData with refAesItemId: " << refRequest.referenceAesItemId() DEBUG_LOG(m_logger) << "--[mineAreaReferenceCreateRequest]- -----> Mine Area created from MineData with refAesItemId: " << refRequest.referenceAesItemId
<< " ifs->id: " << ifs->id(); << " ifs->id: " << ifs->id();
return ret; return ret;
} }
@@ -889,10 +889,10 @@ Core::FunctionReplyObject HandlerMineArea::mineAreaReferenceModifyRequest(const
{ {
DEBUG_LOG(m_logger) << "--[mineAreaReferenceModifyRequest]- Modify/Create Mine with refAesItemId: "; DEBUG_LOG(m_logger) << "--[mineAreaReferenceModifyRequest]- Modify/Create Mine with refAesItemId: ";
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectMineArea *ifs = getObjecMapByreferenceAesItemId(refRequest.referenceAesItemId()); ObjectMineArea *ifs = getObjecMapByreferenceAesItemId(refRequest.referenceAesItemId);
if (ifs == nullptr) if (ifs == nullptr)
{ {
DEBUG_LOG(m_logger) << "--[mineAreaReferenceModifyRequest]- #### no Ref mine create one... refAesItemId: "<<refRequest.referenceAesItemId(); DEBUG_LOG(m_logger) << "--[mineAreaReferenceModifyRequest]- #### no Ref mine create one... refAesItemId: "<<refRequest.referenceAesItemId;
return mineAreaReferenceCreateRequest(refRequest); return mineAreaReferenceCreateRequest(refRequest);
} }
@@ -905,7 +905,7 @@ Core::FunctionReplyObject HandlerMineArea::mineAreaReferenceModifyRequest(const
std::vector<Core::GeoPosition2D> vecGeoSegment; std::vector<Core::GeoPosition2D> vecGeoSegment;
DEBUG_LOG(m_logger) << "--[mineAreaReferenceModifyRequest] create vector GeoPos from Mine data segments.. "; DEBUG_LOG(m_logger) << "--[mineAreaReferenceModifyRequest] create vector GeoPos from Mine data segments.. ";
double newWidth = newData.width; double newWidth = newData.width;
ret = ifs->createGeoSegmentsFromMineData(newWidth, refRequest.mineData(), vecGeoSegment); ret = ifs->createGeoSegmentsFromMineData(newWidth, refRequest.mineData, vecGeoSegment);
if (ret.error()) if (ret.error())
return ret; return ret;
@@ -919,9 +919,9 @@ Core::FunctionReplyObject HandlerMineArea::mineAreaReferenceModifyRequest(const
return ret; return ret;
// run update // run update
ret = ifs->updateObjectFromMineData(newData, vecGeoSegment, refRequest.mineData()); ret = ifs->updateObjectFromMineData(newData, vecGeoSegment, refRequest.mineData);
ifs->clearBuildings(); ifs->clearBuildings();
DEBUG_LOG(m_logger) << "--[mineAreaReferenceModifyRequest] Mine Area Updated with MineData. AesItemId" << refRequest.referenceAesItemId() DEBUG_LOG(m_logger) << "--[mineAreaReferenceModifyRequest] Mine Area Updated with MineData. AesItemId" << refRequest.referenceAesItemId
<< " // data.id: " << ifs->id(); << " // data.id: " << ifs->id();
return ret; return ret;
@@ -929,7 +929,7 @@ Core::FunctionReplyObject HandlerMineArea::mineAreaReferenceModifyRequest(const
void HandlerMineArea::onMineAreaReferenceModifyRequest(const rti::core::SampleIdentity &cookie, const MineAreaReferenceModifyRequest &request) void HandlerMineArea::onMineAreaReferenceModifyRequest(const rti::core::SampleIdentity &cookie, const MineAreaReferenceModifyRequest &request)
{ {
DEBUG_LOG(m_logger) << " onMineAreaReferenceModifyRequest: ADD MINE DATA with refAesItemId: " << request.referenceAesItemId(); DEBUG_LOG(m_logger) << " onMineAreaReferenceModifyRequest: ADD MINE DATA with refAesItemId: " << request.referenceAesItemId;
const Core::FunctionReplyObject ret = mineAreaReferenceModifyRequest(request); const Core::FunctionReplyObject ret = mineAreaReferenceModifyRequest(request);
if (ret.error()) if (ret.error())
@@ -945,23 +945,23 @@ void HandlerMineArea::onMineAreaReferenceModifyRequest(const rti::core::SampleId
*/ */
bool HandlerMineArea::fillFromMineAreaReferenceRequest(const MineAreaReferenceModifyRequest &inReq, Database::AesMineArea &dbData) bool HandlerMineArea::fillFromMineAreaReferenceRequest(const MineAreaReferenceModifyRequest &inReq, Database::AesMineArea &dbData)
{ {
if (inReq.mineData().empty()) if (inReq.mineData.empty())
return false; return false;
const auto &mineData = std::min_element(inReq.mineData().begin(), const auto &mineData = std::min_element(inReq.mineData.begin(),
inReq.mineData().end(), inReq.mineData.end(),
[](const MineData &first, const MineData &second) { return first.armingTime() < second.armingTime(); }); [](const MineData &first, const MineData &second) { return first.armingTime < second.armingTime; });
// get effect duration from chargeType properties // get effect duration from chargeType properties
const auto chargeType = m_mainHandler->dds()->pdmDtc()->chargeType(inReq.chargeTypeId()); const auto chargeType = m_mainHandler->dds()->pdmDtc()->chargeType(inReq.chargeTypeId);
const QJsonObject chargeTypePropObj = QJsonDocument::fromJson(chargeType.properties().c_str()).object(); const QJsonObject chargeTypePropObj = QJsonDocument::fromJson(chargeType.properties.c_str()).object();
const qint64 effectStart = mineData->armingTime(); const qint64 effectStart = mineData->armingTime();
const int effectDurationMsec = inReq.effectDurationMsec(); const int effectDurationMsec = inReq.effectDurationMsec;
auto effectCluster = m_mainHandler->effectClusterHandler()->getEffectClusterObj(inReq.referenceAesItemId()); // get partyId from effect cluster object auto effectCluster = m_mainHandler->effectClusterHandler()->getEffectClusterObj(inReq.referenceAesItemId); // get partyId from effect cluster object
if (!effectCluster) if (!effectCluster)
{ {
ERROR_LOG(m_logger) << " -- fillFromMineAreaReferenceRequest Unknown effect cluster id: " << inReq.referenceAesItemId(); ERROR_LOG(m_logger) << " -- fillFromMineAreaReferenceRequest Unknown effect cluster id: " << inReq.referenceAesItemId;
return false; return false;
} }
@@ -970,12 +970,12 @@ bool HandlerMineArea::fillFromMineAreaReferenceRequest(const MineAreaReferenceMo
bool effectMarkingTa = false; // default bool effectMarkingTa = false; // default
bool isLaidHidden = false; // default bool isLaidHidden = false; // default
bool isCenterLine = true; // default bool isCenterLine = true; // default
AreaEffectSimulation::AesMaLayingProcedureType layingProcedure = AreaEffectSimulation::AesMaLayingProcedureType_def::LptPioneer; AreaEffectSimulation::AesMaLayingProcedureType layingProcedure = AreaEffectSimulation::AesMaLayingProcedureType::LptPioneer;
// get effectDuration from effectorData // get effectDuration from effectorData
int id = 0; int id = 0;
QString name = QStringLiteral("%1 %2"); QString name = QStringLiteral("%1 %2");
ObjectMineArea *ifs = getObjecMapByreferenceAesItemId(inReq.referenceAesItemId()); ObjectMineArea *ifs = getObjecMapByreferenceAesItemId(inReq.referenceAesItemId);
if (ifs) // purpose is to get existing segments if (ifs) // purpose is to get existing segments
{ {
id = ifs->id(); id = ifs->id();
@@ -990,7 +990,7 @@ bool HandlerMineArea::fillFromMineAreaReferenceRequest(const MineAreaReferenceMo
else else
{ {
const auto chargeEffectChargeType = m_mainHandler->dds()->pdmDtc()->chargeType(effectCluster->data().chargeTypeId); const auto chargeEffectChargeType = m_mainHandler->dds()->pdmDtc()->chargeType(effectCluster->data().chargeTypeId);
name = name.arg(QString::fromStdString(chargeEffectChargeType.shortName())).arg(effectCluster->name()); name = name.arg(QString::fromStdString(chargeEffectChargeType.shortName)).arg(effectCluster->name());
} }
DEBUG_LOG(m_logger) << " Fill Mine from MineData effectCluster: id: " << effectCluster->data().id << " // effectClusterParty: " << effectCluster->data().partyId; DEBUG_LOG(m_logger) << " Fill Mine from MineData effectCluster: id: " << effectCluster->data().id << " // effectClusterParty: " << effectCluster->data().partyId;
@@ -1000,7 +1000,7 @@ bool HandlerMineArea::fillFromMineAreaReferenceRequest(const MineAreaReferenceMo
dbData.effectDuration = effectDurationMsec; dbData.effectDuration = effectDurationMsec;
dbData.effectSourceId = effectCluster->data().effectSourceId; dbData.effectSourceId = effectCluster->data().effectSourceId;
dbData.partyId = effectCluster->data().partyId; dbData.partyId = effectCluster->data().partyId;
dbData.chargeTypeId = chargeType.id(); dbData.chargeTypeId = chargeType.id;
dbData.participantId = LtsUtils::toOptional(0); dbData.participantId = LtsUtils::toOptional(0);
dbData.density = density; dbData.density = density;
dbData.width = width; dbData.width = width;
@@ -1062,7 +1062,7 @@ void HandlerMineArea::assignMinesFromNullArea(int aesId)
void HandlerMineArea::onMinelayerPositionChanged(const TrainingAreaBase::MinelayerTrailerPosition &data, DataModification modType) void HandlerMineArea::onMinelayerPositionChanged(const TrainingAreaBase::MinelayerTrailerPosition &data, DataModification modType)
{ {
if (data.sampleTime() + 5000 < QDateTime::currentMSecsSinceEpoch()) if (data.sampleTime + 5000 < QDateTime::currentMSecsSinceEpoch())
{ {
DEBUG_LOG(m_logger) << "ignore old layer data"; DEBUG_LOG(m_logger) << "ignore old layer data";
return; return;
@@ -1070,41 +1070,41 @@ void HandlerMineArea::onMinelayerPositionChanged(const TrainingAreaBase::Minelay
if (modType == DataModification::eRemoved) if (modType == DataModification::eRemoved)
return; return;
DEBUG_LOG(m_logger) << "lat: " << data.position().lat() << ", lon: " << data.position().lon(); DEBUG_LOG(m_logger) << "lat: " << data.position.lat << ", lon: " << data.position.lon;
auto utm = LtsCoordTrans::UtmCoordinate::fromGeographic(data.position().lon(), data.position().lat()); auto utm = LtsCoordTrans::UtmCoordinate::fromGeographic(data.position.lon, data.position.lat);
QPointF position(utm.x, utm.y); QPointF position(utm.x, utm.y);
QPointF positionGeo(data.position().lon(), data.position().lat()); QPointF positionGeo(data.position.lon, data.position.lat);
m_zoneMap.insert(data.equipmentNumber(), utm.zone); m_zoneMap.insert(data.equipmentNumber, utm.zone);
DEBUG_LOG(m_logger) << "data." << data.equipmentNumber() << ", position: " << utm.mgrs(); DEBUG_LOG(m_logger) << "data." << data.equipmentNumber << ", position: " << utm.mgrs();
if (m_timerMap.contains(data.equipmentNumber())) if (m_timerMap.contains(data.equipmentNumber))
{ {
QTimer *timer = m_timerMap.value(data.equipmentNumber()); QTimer *timer = m_timerMap.value(data.equipmentNumber);
if (timer->isActive()) if (timer->isActive())
{ {
// Save Positions as QPolygon -> Vector not Map // Save Positions as QPolygon -> Vector not Map
QPolygonF pointsUtm = m_dusMinePosMapUtm.value(data.equipmentNumber()); QPolygonF pointsUtm = m_dusMinePosMapUtm.value(data.equipmentNumber);
pointsUtm.append(position); pointsUtm.append(position);
m_dusMinePosMapUtm.insert(data.equipmentNumber(), pointsUtm); m_dusMinePosMapUtm.insert(data.equipmentNumber, pointsUtm);
// Save Positions as QPolygon -> Vector not Map // Save Positions as QPolygon -> Vector not Map
QPolygonF pointsGeo = m_dusMinePosMapGeo.value(data.equipmentNumber()); QPolygonF pointsGeo = m_dusMinePosMapGeo.value(data.equipmentNumber);
pointsGeo.append(positionGeo); pointsGeo.append(positionGeo);
m_dusMinePosMapGeo.insert(data.equipmentNumber(), pointsGeo); m_dusMinePosMapGeo.insert(data.equipmentNumber, pointsGeo);
// m_dusMinePosMapUtm.insert(data.equipmentNumber(), position); // m_dusMinePosMapUtm.insert(data.equipmentNumber(), position);
// m_dusMinePosMapGeo.insert(data.equipmentNumber(), positionGeo); // m_dusMinePosMapGeo.insert(data.equipmentNumber(), positionGeo);
timer->start(); timer->start();
DEBUG_LOG(m_logger) << "Timer restart for equipNo: " << data.equipmentNumber(); DEBUG_LOG(m_logger) << "Timer restart for equipNo: " << data.equipmentNumber;
} }
} }
else else
{ {
DEBUG_LOG(m_logger) << "Start Timer for equipNo: " << data.equipmentNumber(); DEBUG_LOG(m_logger) << "Start Timer for equipNo: " << data.equipmentNumber;
QTimer *timer = new QTimer(this); QTimer *timer = new QTimer(this);
timer->setInterval(s_mineAreaCreationInterval); timer->setInterval(s_mineAreaCreationInterval);
int equipNo = data.equipmentNumber(); int equipNo = data.equipmentNumber;
int chargeTypeId = data.chargeTypeId(); int chargeTypeId = data.chargeTypeId;
connect(timer, connect(timer,
&QTimer::timeout, &QTimer::timeout,
this, this,
@@ -1115,11 +1115,11 @@ void HandlerMineArea::onMinelayerPositionChanged(const TrainingAreaBase::Minelay
}); });
QPolygonF pointUtm; QPolygonF pointUtm;
pointUtm.append(position); pointUtm.append(position);
m_dusMinePosMapUtm.insert(data.equipmentNumber(), pointUtm); m_dusMinePosMapUtm.insert(data.equipmentNumber, pointUtm);
QPolygonF pointGeo; QPolygonF pointGeo;
pointGeo.append(positionGeo); pointGeo.append(positionGeo);
m_dusMinePosMapGeo.insert(data.equipmentNumber(), pointGeo); m_dusMinePosMapGeo.insert(data.equipmentNumber, pointGeo);
// m_dusMinePosMapUtm.insert(data.equipmentNumber(), position); // m_dusMinePosMapUtm.insert(data.equipmentNumber(), position);
// m_dusMinePosMapGeo.insert(data.equipmentNumber(), positionGeo); // m_dusMinePosMapGeo.insert(data.equipmentNumber(), positionGeo);
@@ -1127,21 +1127,21 @@ void HandlerMineArea::onMinelayerPositionChanged(const TrainingAreaBase::Minelay
m_timerMap.insert(equipNo, timer); m_timerMap.insert(equipNo, timer);
} }
int dusSerialNo = data.dusSerialNo(); int dusSerialNo = data.dusSerialNo;
// DusMines with serialNo 0 should get a new serialNo ( > 70000), too // DusMines with serialNo 0 should get a new serialNo ( > 70000), too
// NOTE: igniterType/IgniterFunciton = 0 as long as MinelayerTrailerPosition does not contain values // NOTE: igniterType/IgniterFunciton = 0 as long as MinelayerTrailerPosition does not contain values
if (isConcreteMine(data.chargeTypeId(), 0, 0) || (isDusMineArea(data.chargeTypeId(), 0, 0) && dusSerialNo == 0)) if (isConcreteMine(data.chargeTypeId, 0, 0) || (isDusMineArea(data.chargeTypeId, 0, 0) && dusSerialNo == 0))
dusSerialNo = ++s_startPzAbwWMiCCount; dusSerialNo = ++s_startPzAbwWMiCCount;
else else
{ {
if (data.dusSerialNo() != 0 && removeDuplicateMine(data.dusSerialNo())) if (data.dusSerialNo != 0 && removeDuplicateMine(data.dusSerialNo))
INFO_LOG(m_logger) << "Existing mine with serialNo: " << data.dusSerialNo() << " removed"; INFO_LOG(m_logger) << "Existing mine with serialNo: " << data.dusSerialNo << " removed";
} }
DEBUG_LOG(m_logger) << "dusSerialNo: " << dusSerialNo; DEBUG_LOG(m_logger) << "dusSerialNo: " << dusSerialNo;
DEBUG_LOG(m_logger) << "isConcrete: " << isConcreteMine(data.chargeTypeId(), 0, 0); DEBUG_LOG(m_logger) << "isConcrete: " << isConcreteMine(data.chargeTypeId, 0, 0);
m_nullArea->triggerMine(dusSerialNo, false, data.chargeTypeId(), {data.position().lon(), data.position().lat()}); m_nullArea->triggerMine(dusSerialNo, false, data.chargeTypeId, {data.position.lon, data.position.lat});
} }
void HandlerMineArea::onTimeoutEquipNo(int equipNo, int chargeTypeId) void HandlerMineArea::onTimeoutEquipNo(int equipNo, int chargeTypeId)
@@ -1166,28 +1166,28 @@ void HandlerMineArea::onTimeoutEquipNo(int equipNo, int chargeTypeId)
// QPolygonF boundingBox = msGetBoundingBoxPolygon(points, &width); // QPolygonF boundingBox = msGetBoundingBoxPolygon(points, &width);
MineAreaModifyRequest req; MineAreaModifyRequest req;
req.chargeStruct().chargeTypeId(chargeTypeId); req.chargeStruct.chargeTypeId = chargeTypeId;
req.density(0.7); req.density = 0.7;
req.distance(0.5); req.distance = 0.5;
DEBUG_LOG(m_logger) << "density1: " << req.density(); DEBUG_LOG(m_logger) << "density1: " << req.density;
req.effectDuration(0); req.effectDuration = 0;
req.effectStart(QDateTime::currentMSecsSinceEpoch() + Settings::getMineAreaByMiVSysEffectStart()); req.effectStart = QDateTime::currentMSecsSinceEpoch() + Settings::getMineAreaByMiVSysEffectStart();
req.isCenterLine(true); req.isCenterLine = true;
req.isLaidHidden(false); req.isLaidHidden = false;
req.layingProcedureType(AesMaLayingProcedureType_def::LptPioneer); req.layingProcedureType = AesMaLayingProcedureType::LptPioneer;
QString name = QString::number(equipNo); QString name = QString::number(equipNo);
req.name(name.toStdString()); req.name = name.toStdString();
int participantID = m_mainHandler->dds()->ppmDtc()->participantIdByEquipmentNumber(equipNo); int participantID = m_mainHandler->dds()->ppmDtc()->participantIdByEquipmentNumber(equipNo);
req.partyId(m_mainHandler->dds()->ppmDtc()->participant(participantID).partyId()); req.partyId = m_mainHandler->dds()->ppmDtc()->participant(participantID).partyId;
req.width(0); req.width = 0;
std::vector<Core::GeoPosition2D> vec; std::vector<Core::GeoPosition2D> vec;
vec.reserve(points.size()); vec.reserve(points.size());
for (QPointF bbPoint : qAsConst(points)) for (QPointF bbPoint : qAsConst(points))
{ {
Core::GeoPosition2D pos; Core::GeoPosition2D pos;
pos.lon(bbPoint.x()); pos.lon = bbPoint.x();
pos.lat(bbPoint.y()); pos.lat = bbPoint.y();
vec.push_back(pos); vec.push_back(pos);
} }
@@ -1205,13 +1205,13 @@ void HandlerMineArea::onTimeoutEquipNo(int equipNo, int chargeTypeId)
// pos.lat(point.y()); // pos.lat(point.y());
// vec.push_back(pos); // vec.push_back(pos);
// } // }
req.segments(vec); req.segments = vec;
// Cannot create a minefield with only one segment => create two new segments with 10m distance // Cannot create a minefield with only one segment => create two new segments with 10m distance
if (req.segments().size() < 2) if (req.segments.size() < 2)
{ {
DEBUG_LOG(m_logger) << "only one segment - create 2 new with distance 10m"; DEBUG_LOG(m_logger) << "only one segment - create 2 new with distance 10m";
const LtsCoordTrans::UtmCoordinate pointUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(vec[0].lon(), vec[0].lat()); const LtsCoordTrans::UtmCoordinate pointUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(vec[0].lon, vec[0].lat);
LtsCoordTrans::UtmCoordinate point1Utm = pointUtm; LtsCoordTrans::UtmCoordinate point1Utm = pointUtm;
LtsCoordTrans::UtmCoordinate point2Utm = pointUtm; LtsCoordTrans::UtmCoordinate point2Utm = pointUtm;
point1Utm.y = pointUtm.y - 5.0; point1Utm.y = pointUtm.y - 5.0;
@@ -1223,11 +1223,11 @@ void HandlerMineArea::onTimeoutEquipNo(int equipNo, int chargeTypeId)
Core::GeoPosition2D pos(point.x(), point.y()); Core::GeoPosition2D pos(point.x(), point.y());
vec.push_back(pos); vec.push_back(pos);
point = point2Utm.geographic(); point = point2Utm.geographic();
pos.lon(point.x()); pos.lon = point.x();
pos.lat(point.y()); pos.lat = point.y();
vec.push_back(pos); vec.push_back(pos);
req.segments(vec); req.segments = vec;
req.distance(10.0); req.distance = 10.0;
} }
Core::FunctionReplyObject reply = mineAreaCreateRequest(req); Core::FunctionReplyObject reply = mineAreaCreateRequest(req);
@@ -1247,8 +1247,8 @@ bool HandlerMineArea::checkIfNullMineIsInArea(const std::vector<Core::GeoPositio
for (unsigned int i = 0; i < segments.size() - 1; i++) for (unsigned int i = 0; i < segments.size() - 1; i++)
{ {
Database::AesMineAreaSegment dataSeg; Database::AesMineAreaSegment dataSeg;
dataSeg.startPosition = QPointF(segments[i].lon(), segments[i].lat()); dataSeg.startPosition = QPointF(segments[i].lon, segments[i].lat);
dataSeg.endPosition = QPointF(segments[i + 1].lon(), segments[i + 1].lat()); dataSeg.endPosition = QPointF(segments[i + 1].lon, segments[i + 1].lat);
vecSeg.append(dataSeg); vecSeg.append(dataSeg);
} }
@@ -1262,8 +1262,8 @@ bool HandlerMineArea::checkIfNullMineIsInArea(const std::vector<AreaEffectSimula
for (const AreaEffectSimulation::MineSegment &seg : qAsConst(segments)) for (const AreaEffectSimulation::MineSegment &seg : qAsConst(segments))
{ {
Database::AesMineAreaSegment dbSeg; Database::AesMineAreaSegment dbSeg;
dbSeg.startPosition = QPointF(seg.positionStart().lon(), seg.positionStart().lat()); dbSeg.startPosition = QPointF(seg.positionStart.lon, seg.positionStart.lat);
dbSeg.endPosition = QPointF(seg.positionEnd().lon(), seg.positionEnd().lat()); dbSeg.endPosition = QPointF(seg.positionEnd.lon, seg.positionEnd.lat);
vecSeg.append(dbSeg); vecSeg.append(dbSeg);
} }
@@ -1443,7 +1443,7 @@ QPolygonF HandlerMineArea::msGetBoundingBoxPolygon(const QPolygonF &minen, doubl
bool HandlerMineArea::triggerUnpairedMine(const MineTriggeredRequest &request) bool HandlerMineArea::triggerUnpairedMine(const MineTriggeredRequest &request)
{ {
if (!request.position().is_set()) if (!request.position.is_set())
{ {
DEBUG_LOG(m_logger) << LOGFUNCTION << " failed, because there is no position."; DEBUG_LOG(m_logger) << LOGFUNCTION << " failed, because there is no position.";
@@ -1451,7 +1451,7 @@ bool HandlerMineArea::triggerUnpairedMine(const MineTriggeredRequest &request)
} }
qint32 halfLookupDistance = Settings::getUnpairedMinesLookupRange() / 2; qint32 halfLookupDistance = Settings::getUnpairedMinesLookupRange() / 2;
LtsCoordTrans::UtmCoordinate mineUtmPos = LtsCoordTrans::UtmCoordinate::fromGeographic(request.position().get().lon(), request.position().get().lat()); LtsCoordTrans::UtmCoordinate mineUtmPos = LtsCoordTrans::UtmCoordinate::fromGeographic(request.position.get().lon, request.position.get().lat);
QPointF lookupTopLeft = mineUtmPos.geographic(-halfLookupDistance, -halfLookupDistance); QPointF lookupTopLeft = mineUtmPos.geographic(-halfLookupDistance, -halfLookupDistance);
QPointF lookupBottomRight = mineUtmPos.geographic(halfLookupDistance, halfLookupDistance); QPointF lookupBottomRight = mineUtmPos.geographic(halfLookupDistance, halfLookupDistance);
QRectF lookupRect = QRectF(lookupTopLeft, lookupBottomRight); QRectF lookupRect = QRectF(lookupTopLeft, lookupBottomRight);
@@ -1469,8 +1469,8 @@ bool HandlerMineArea::triggerUnpairedMine(const MineTriggeredRequest &request)
for (const Database::AesMineAreaTriggeredMines &currentMine : unpairedMines) for (const Database::AesMineAreaTriggeredMines &currentMine : unpairedMines)
{ {
positionPoint.setX(request.position().get().lon()); positionPoint.setX(request.position.get().lon);
positionPoint.setY(request.position().get().lat()); positionPoint.setY(request.position.get().lat);
qreal currentDistance = LtsCoordTrans::distance(positionPoint, currentMine.position); qreal currentDistance = LtsCoordTrans::distance(positionPoint, currentMine.position);
@@ -1493,7 +1493,7 @@ bool HandlerMineArea::triggerUnpairedMine(const MineTriggeredRequest &request)
ObjectMineArea *ifs = m_objectMap.value(nearestMine.mineAreaId); ObjectMineArea *ifs = m_objectMap.value(nearestMine.mineAreaId);
qint32 oldMineId = nearestMine.mineId; qint32 oldMineId = nearestMine.mineId;
nearestMine.mineId = request.mineId(); nearestMine.mineId = request.mineId;
nearestMine.isTriggered = true; nearestMine.isTriggered = true;
ifs->updateMineByOldMineId(nearestMine, oldMineId); ifs->updateMineByOldMineId(nearestMine, oldMineId);
@@ -13,7 +13,7 @@
namespace AreaEffectSimulation namespace AreaEffectSimulation
{ {
HandlerMineCorridor::HandlerMineCorridor(MainHandler *mainHandler) HandlerMineCorridor::HandlerMineCorridor(MainHandler *mainHandler)
: HandlerBaseTmpl<ObjectMineCorridor>(mainHandler, QStringLiteral("MineCorridor"), s_areaCount[AesType::AtMineCorridor], s_areaCountCentral[AesType::AtMineCorridor]) : HandlerBaseTmpl<ObjectMineCorridor>(mainHandler, QStringLiteral("MineCorridor"), s_areaCount[static_cast<int>(AesType::AtMineCorridor)], s_areaCountCentral[static_cast<int>(AesType::AtMineCorridor)])
, Interface::Fts::MineCorridorModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::MineCorridorModifyRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::MineCorridorRemoveRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::MineCorridorRemoveRequestHandler(mainHandler->dds()->fts())
{} {}
@@ -87,13 +87,13 @@ void HandlerMineCorridor::onSpecialSensorDataChanged(const TrainingAreaBase::Spe
if (mod == DataModification::eRemoved) if (mod == DataModification::eRemoved)
return; return;
if (data.operationalState() != MRF_MARSCH && data.operationalState() != MRF_RAEUMEN) if (data.operationalState != MRF_MARSCH && data.operationalState != MRF_RAEUMEN)
return; return;
DEBUG_LOG(m_logger) << "onSpecialSensorDataChanged: " << data; DEBUG_LOG(m_logger) << "onSpecialSensorDataChanged: " << data;
if (data.operationalState() == MRF_RAEUMEN) if (data.operationalState == MRF_RAEUMEN)
{ {
auto it = m_corridorCreators.constFind(data.equipmentNumber()); auto it = m_corridorCreators.constFind(data.equipmentNumber);
if (data.position().is_set()) if (data.position.is_set())
{ {
MineCorridorCreator *mcc = nullptr; MineCorridorCreator *mcc = nullptr;
if (it == m_corridorCreators.constEnd()) if (it == m_corridorCreators.constEnd())
@@ -105,7 +105,7 @@ void HandlerMineCorridor::onSpecialSensorDataChanged(const TrainingAreaBase::Spe
Database::AesMineCorridor newData; Database::AesMineCorridor newData;
newData.name = QStringLiteral("MRF_%1").arg(data.equipmentNumber()); newData.name = QStringLiteral("MRF_%1").arg(data.equipmentNumber);
newData.effectStart = QDateTime::currentDateTime(); newData.effectStart = QDateTime::currentDateTime();
newData.chargeTypeId = 315; // Mine Corridor Dummy newData.chargeTypeId = 315; // Mine Corridor Dummy
newData.width = 5; // TODO: really? newData.width = 5; // TODO: really?
@@ -113,10 +113,10 @@ void HandlerMineCorridor::onSpecialSensorDataChanged(const TrainingAreaBase::Spe
ifs->createObject(newData, std::vector<Core::GeoPosition2D>()); ifs->createObject(newData, std::vector<Core::GeoPosition2D>());
m_objectMap.insert(ifs->id(), ifs); m_objectMap.insert(ifs->id(), ifs);
mcc = new MineCorridorCreator(data.equipmentNumber(), ifs); mcc = new MineCorridorCreator(data.equipmentNumber, ifs);
m_corridorCreators[data.equipmentNumber()] = mcc; m_corridorCreators[data.equipmentNumber] = mcc;
TrainingAreaBase::SpecialSensorData stopTele(data); TrainingAreaBase::SpecialSensorData stopTele(data);
stopTele.operationalState(MRF_MARSCH); stopTele.operationalState = MRF_MARSCH;
auto timeoutCb = [this, stopTele]() auto timeoutCb = [this, stopTele]()
{ {
onSpecialSensorDataChanged(stopTele, DataModification::eModified); onSpecialSensorDataChanged(stopTele, DataModification::eModified);
@@ -125,14 +125,14 @@ void HandlerMineCorridor::onSpecialSensorDataChanged(const TrainingAreaBase::Spe
} }
else else
mcc = it.value(); mcc = it.value();
mcc->addPosition(data.position().get(), data.sampleTime()); mcc->addPosition(data.position.get(), data.sampleTime);
} }
else else
{ {
// start a new corridor // start a new corridor
if (it != m_corridorCreators.constEnd()) if (it != m_corridorCreators.constEnd())
{ {
WARNING_LOG(m_logger) << "Starting a new mine corridor but the last one was not closed...: " << data.equipmentNumber(); WARNING_LOG(m_logger) << "Starting a new mine corridor but the last one was not closed...: " << data.equipmentNumber;
it.value()->creationFinished(); it.value()->creationFinished();
delete it.value(); delete it.value();
m_corridorCreators.erase(it); m_corridorCreators.erase(it);
@@ -141,10 +141,10 @@ void HandlerMineCorridor::onSpecialSensorDataChanged(const TrainingAreaBase::Spe
} }
else else
{ {
auto it = m_corridorCreators.constFind(data.equipmentNumber()); auto it = m_corridorCreators.constFind(data.equipmentNumber);
if (it == m_corridorCreators.constEnd()) if (it == m_corridorCreators.constEnd())
{ {
WARNING_LOG(m_logger) << "Finishing a mine corridor but no data available...: " << data.equipmentNumber(); WARNING_LOG(m_logger) << "Finishing a mine corridor but no data available...: " << data.equipmentNumber;
return; return;
} }
it.value()->creationFinished(); it.value()->creationFinished();
@@ -158,7 +158,7 @@ void HandlerMineCorridor::onMineCorridorModifyRequest(const rti::core::SampleIde
const MineCorridorModifyRequest &request) const MineCorridorModifyRequest &request)
{ {
DEBUG_LOG(m_logger) << "onMineCorridorModifyRequest: " << request; DEBUG_LOG(m_logger) << "onMineCorridorModifyRequest: " << request;
Core::FunctionReplyObject ret = request.id() > 0 ? mineCorridorModifyRequest(request) : mineCorridorCreateRequest(request); Core::FunctionReplyObject ret = request.id > 0 ? mineCorridorModifyRequest(request) : mineCorridorCreateRequest(request);
if (ret.error()) if (ret.error())
WARNING_LOG(m_logger) << ret(); WARNING_LOG(m_logger) << ret();
m_mainHandler->dds()->fts()->mineCorridorModifyReply(cookie, ret); m_mainHandler->dds()->fts()->mineCorridorModifyReply(cookie, ret);
@@ -168,20 +168,20 @@ Core::FunctionReplyObject HandlerMineCorridor::mineCorridorCreateRequest(const M
{ {
Database::AesMineCorridor newData; Database::AesMineCorridor newData;
newData.name = QString::fromStdString(request.name()); newData.name = QString::fromStdString(request.name);
newData.effectStart = request.effectStart().is_set() && request.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(request.effectStart().get()) : QDateTime(); newData.effectStart = request.effectStart.is_set() && request.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(request.effectStart.get()) : QDateTime();
newData.chargeTypeId = 315; newData.chargeTypeId = 315;
newData.effectDuration = request.effectDuration(); newData.effectDuration = request.effectDuration;
newData.effectSourceId = request.effectSourceId(); newData.effectSourceId = request.effectSourceId;
newData.partyId = request.partyId().is_set() ? request.partyId().get() : 0; newData.partyId = request.partyId.is_set() ? request.partyId.get() : 0;
newData.participantId = request.participantId().is_set() ? request.participantId().get() : 0; newData.participantId = request.participantId.is_set() ? request.participantId.get() : 0;
newData.width = request.width(); newData.width = request.width;
newData.externalId = request.externalId().is_set() ? request.externalId().get() : 0; newData.externalId = request.externalId.is_set() ? request.externalId.get() : 0;
ObjectMineCorridor *ifs(new ObjectMineCorridor(m_mainHandler, this)); ObjectMineCorridor *ifs(new ObjectMineCorridor(m_mainHandler, this));
Core::FunctionReplyObject ret = ifs->createObject(newData, Core::FunctionReplyObject ret = ifs->createObject(newData,
request.segments()); request.segments);
if (ret.error()) if (ret.error())
{ {
delete ifs; delete ifs;
@@ -200,39 +200,39 @@ Core::FunctionReplyObject HandlerMineCorridor::mineCorridorModifyRequest(const M
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectMineCorridor *ifs = nullptr; ObjectMineCorridor *ifs = nullptr;
if (request.externalId().is_set() && request.externalId().get() > 0) if (request.externalId.is_set() && request.externalId.get() > 0)
ifs = getObjectFromMapByExternalId(m_objectMap, request.externalId().get(), ret); ifs = getObjectFromMapByExternalId(m_objectMap, request.externalId.get(), ret);
if (!ifs) if (!ifs)
{ {
if (request.id() == 0 || ((request.id() < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id()), ret))) if (request.id == 0 || ((request.id < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id), ret)))
return mineCorridorCreateRequest(request); return mineCorridorCreateRequest(request);
ifs = getObjectFromMap(m_objectMap, std::abs(request.id()), ret); ifs = getObjectFromMap(m_objectMap, std::abs(request.id), ret);
if (!ifs) if (!ifs)
return ret; return ret;
} }
if (request.effectStart().is_set() && (request.effectStart().get() + request.effectDuration() < m_mainHandler->dds()->currentPartitionTime().toMSecsSinceEpoch())) if (request.effectStart.is_set() && (request.effectStart.get() + request.effectDuration < m_mainHandler->dds()->currentPartitionTime().toMSecsSinceEpoch()))
return removeObject(ifs); return removeObject(ifs);
Database::AesMineCorridor newData(ifs->data()); Database::AesMineCorridor newData(ifs->data());
newData.id = request.id(); newData.id = request.id;
newData.name = QString::fromStdString(request.name()); newData.name = QString::fromStdString(request.name);
newData.effectStart = request.effectStart().is_set() && request.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(request.effectStart().get()) : QDateTime(); newData.effectStart = request.effectStart.is_set() && request.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(request.effectStart.get()) : QDateTime();
newData.chargeTypeId = 315; newData.chargeTypeId = 315;
newData.effectDuration = request.effectDuration(); newData.effectDuration = request.effectDuration;
newData.partyId = request.partyId().is_set() ? request.partyId().get() : 0; newData.partyId = request.partyId.is_set() ? request.partyId.get() : 0;
newData.participantId = request.participantId().is_set() ? request.participantId().get() : 0; newData.participantId = request.participantId.is_set() ? request.participantId.get() : 0;
newData.width = request.width(); newData.width = request.width;
newData.externalId = request.externalId().is_set() ? request.externalId().get() : 0; newData.externalId = request.externalId.is_set() ? request.externalId.get() : 0;
if (request.id() < 0 && checkStateForSfm(ifs)) if (request.id < 0 && checkStateForSfm(ifs))
{ {
DEBUG_LOG(m_logger) << "Overwrite mine corridor Effect State for OC"; DEBUG_LOG(m_logger) << "Overwrite mine corridor Effect State for OC";
newData.effectStateId = AesEffectState::EsPrepared; newData.effectStateId = AesEffectState::EsPrepared;
} }
return ifs->updateObject(newData, request.segments()); return ifs->updateObject(newData, request.segments);
} }
void HandlerMineCorridor::onMineCorridorRemoveRequest(const rti::core::SampleIdentity &cookie, void HandlerMineCorridor::onMineCorridorRemoveRequest(const rti::core::SampleIdentity &cookie,
@@ -15,7 +15,7 @@ namespace AreaEffectSimulation
{ {
HandlerNContamination::HandlerNContamination(MainHandler *mainHandler) HandlerNContamination::HandlerNContamination(MainHandler *mainHandler)
: HandlerBaseTmpl<ObjectNContamination>(mainHandler, QStringLiteral("NContamination"), s_areaCount[AesType::AtNContamination], s_areaCountCentral[AesType::AtNContamination]) : HandlerBaseTmpl<ObjectNContamination>(mainHandler, QStringLiteral("NContamination"), s_areaCount[static_cast<int>(AesType::AtNContamination)], s_areaCountCentral[static_cast<int>(AesType::AtNContamination)])
, Interface::Fts::NContaminationModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::NContaminationModifyRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::NContaminationRemoveRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::NContaminationRemoveRequestHandler(mainHandler->dds()->fts())
{} {}
@@ -48,7 +48,7 @@ bool HandlerNContamination::init()
} }
if(!ifs->data().isCentral) if(!ifs->data().isCentral)
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtBCContamination] + s_maxActiveAreas[AesType::AtNContamination])) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtBCContamination)] + s_maxActiveAreas[static_cast<int>(AesType::AtNContamination)]))
{ {
ERROR_LOG(m_logger) << "More active n contaminations in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active n contaminations in database than allowed - ignoring the rest!";
ifs->removeObject(); ifs->removeObject();
@@ -58,7 +58,7 @@ bool HandlerNContamination::init()
} }
else else
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtBCContamination] + s_maxActiveAreasCentral[AesType::AtNContamination])) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtBCContamination)] + s_maxActiveAreasCentral[static_cast<int>(AesType::AtNContamination)]))
{ {
ERROR_LOG(m_logger) << "More active n contaminations in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active n contaminations in database than allowed - ignoring the rest!";
ifs->removeObject(); ifs->removeObject();
@@ -89,18 +89,18 @@ bool HandlerNContamination::init()
int HandlerNContamination::totalAreas() const int HandlerNContamination::totalAreas() const
{ {
return s_areaCount[AesType::AtBCContamination] + s_areaCount[AesType::AtNContamination]; return s_areaCount[static_cast<int>(AesType::AtBCContamination)] + s_areaCount[static_cast<int>(AesType::AtNContamination)];
} }
int HandlerNContamination::totalAreasCentral() const int HandlerNContamination::totalAreasCentral() const
{ {
return s_areaCountCentral[AesType::AtBCContamination] + s_areaCountCentral[AesType::AtNContamination]; return s_areaCountCentral[static_cast<int>(AesType::AtBCContamination)] + s_areaCountCentral[static_cast<int>(AesType::AtNContamination)];
} }
void HandlerNContamination::onChangedToCentral() void HandlerNContamination::onChangedToCentral()
{ {
s_areaCount[AesType::AtNContamination]--; s_areaCount[static_cast<int>(AesType::AtNContamination)]--;
s_areaCountCentral[AesType::AtNContamination]++; s_areaCountCentral[static_cast<int>(AesType::AtNContamination)]++;
DEBUG_LOG(m_logger) << "m_areaCount after Recount = " << m_areaCount; DEBUG_LOG(m_logger) << "m_areaCount after Recount = " << m_areaCount;
DEBUG_LOG(m_logger) << "m_areaCountCentral after Recount = " << m_areaCountCentral; DEBUG_LOG(m_logger) << "m_areaCountCentral after Recount = " << m_areaCountCentral;
@@ -110,25 +110,25 @@ void HandlerNContamination::onChangedToCentral()
static void fillData(const NContaminationModifyRequest &src, Database::AesNContamination &dst) static void fillData(const NContaminationModifyRequest &src, Database::AesNContamination &dst)
{ {
if (src.id() < 0) // is the id given as negative? set id -> used by OC-Laptop if (src.id < 0) // is the id given as negative? set id -> used by OC-Laptop
dst.id = src.id(); dst.id = src.id;
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.effectStart = src.effectStart().is_set() && src.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.effectDuration = src.effectDuration(); dst.effectDuration = src.effectDuration;
dst.impactPosition.rx() = src.impactPosition().lon(); dst.impactPosition.rx() = src.impactPosition.lon;
dst.impactPosition.ry() = src.impactPosition().lat(); dst.impactPosition.ry() = src.impactPosition.lat;
dst.impactRadius = src.impactRadius(); dst.impactRadius = src.impactRadius;
dst.borderLengthInner = src.borderLengthInner(); dst.borderLengthInner = src.borderLengthInner;
dst.borderLengthOuter = src.borderLengthOuter(); dst.borderLengthOuter = src.borderLengthOuter;
dst.spanAngle = src.spanAngle(); dst.spanAngle = src.spanAngle;
dst.rotationAngle = src.rotationAngle(); dst.rotationAngle = src.rotationAngle;
dst.detonationValue = src.detonationValue(); dst.detonationValue = src.detonationValue;
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.chargeTypeId = src.chargeTypeId(); dst.chargeTypeId = src.chargeTypeId;
dst.participantId = src.participantId().is_set() ? src.participantId().get() : 0; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0;
dst.externalId = src.externalId().is_set() ? src.externalId().get() : 0; dst.externalId = src.externalId.is_set() ? src.externalId.get() : 0;
dst.weatherSourceId = src.weatherSource(); dst.weatherSourceId = src.weatherSource;
} }
void HandlerNContamination::onNContaminationModifyRequest(const rti::core::SampleIdentity &cookie, void HandlerNContamination::onNContaminationModifyRequest(const rti::core::SampleIdentity &cookie,
@@ -162,7 +162,7 @@ Core::FunctionReplyObject HandlerNContamination::nContaminationCreateRequest(con
if (ifs->data().isCentral) if (ifs->data().isCentral)
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtNContamination] + s_maxActiveAreasCentral[AesType::AtBCContamination]) && request.effectStart().is_set()) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtNContamination)] + s_maxActiveAreasCentral[static_cast<int>(AesType::AtBCContamination)]) && request.effectStart.is_set())
{ {
ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct
ifs->removeObjectFromDb(); ifs->removeObjectFromDb();
@@ -172,7 +172,7 @@ Core::FunctionReplyObject HandlerNContamination::nContaminationCreateRequest(con
} }
else else
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtNContamination] + s_maxActiveAreas[AesType::AtBCContamination]) && request.effectStart().is_set()) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtNContamination)] + s_maxActiveAreas[static_cast<int>(AesType::AtBCContamination)]) && request.effectStart.is_set())
{ {
ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct ifs->removeObject(); //Not finally deleted from db after this,Fallback if DB deletion is not working correct
ifs->removeObjectFromDb(); ifs->removeObjectFromDb();
@@ -202,16 +202,16 @@ Core::FunctionReplyObject HandlerNContamination::nContaminationCreateRequest(con
Core::FunctionReplyObject HandlerNContamination::nContaminationModifyRequest(const NContaminationModifyRequest &request) Core::FunctionReplyObject HandlerNContamination::nContaminationModifyRequest(const NContaminationModifyRequest &request)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
if (request.id() == 0 || ((request.id() < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id()), ret))) if (request.id == 0 || ((request.id < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id), ret)))
return nContaminationCreateRequest(request); return nContaminationCreateRequest(request);
ObjectNContamination *ifs = getObjectFromMap(m_objectMap, std::abs(request.id()), ret); ObjectNContamination *ifs = getObjectFromMap(m_objectMap, std::abs(request.id), ret);
if (!ifs) if (!ifs)
return ret; return ret;
// Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war // Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war
// vorher noch ohne Wirkbeginn // vorher noch ohne Wirkbeginn
// if (totalAreas() >= (s_maxActiveAreas[AesType::AtBCContamination] + s_maxActiveAreas[AesType::AtNContamination]) && request.effectStart().is_set() && !ifs->isObjectModifiable()) // if (totalAreas() >= (s_maxActiveAreas[AesType::AtBCContamination] + s_maxActiveAreas[AesType::AtNContamination]) && request.effectStart.is_set() && !ifs->isObjectModifiable())
// return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active N contamination areas.")); // return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active N contamination areas."));
Database::AesNContamination aea(ifs->data()); Database::AesNContamination aea(ifs->data());
@@ -228,25 +228,25 @@ Core::FunctionReplyObject HandlerNContamination::nContaminationModifyRequest(con
/*! /*!
* If the effect start added after creation, the max amount need to be checked * If the effect start added after creation, the max amount need to be checked
*/ */
if(!ifs->isActivationTimeSet() && request.effectStart().is_set()) if(!ifs->isActivationTimeSet() && request.effectStart.is_set())
{ {
if (isCentral) if (isCentral)
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtNContamination] + s_maxActiveAreasCentral[AesType::AtBCContamination]) /*&& request.effectStart().is_set()*/) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtNContamination)] + s_maxActiveAreasCentral[static_cast<int>(AesType::AtBCContamination)]) /*&& request.effectStart.is_set()*/)
{ {
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active central N or B/C contamination areas.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active central N or B/C contamination areas."));
} }
} }
else else
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtNContamination] + s_maxActiveAreas[AesType::AtBCContamination]) /*&& request.effectStart().is_set()*/) // upper if-condition handle start-time if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtNContamination)] + s_maxActiveAreas[static_cast<int>(AesType::AtBCContamination)]) /*&& request.effectStart.is_set()*/) // upper if-condition handle start-time
{ {
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active N or B/C contamination areas.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active N or B/C contamination areas."));
} }
} }
} }
// For counting, only Elements being at least prepared are important: // For counting, only Elements being at least prepared are important:
if (request.effectStart().is_set() && ifs->isObjectModifiable()) if (request.effectStart.is_set() && ifs->isObjectModifiable())
{ {
DEBUG_LOG(m_logger) << "isCentral: " << isCentral; DEBUG_LOG(m_logger) << "isCentral: " << isCentral;
@@ -258,8 +258,8 @@ Core::FunctionReplyObject HandlerNContamination::nContaminationModifyRequest(con
// Change from central to training area // Change from central to training area
if (wasCentral) if (wasCentral)
{ {
if (totalAreas() >= (s_maxActiveAreas[AesType::AtBCContamination] + s_maxActiveAreas[AesType::AtNContamination])) if (totalAreas() >= (s_maxActiveAreas[static_cast<int>(AesType::AtBCContamination)] + s_maxActiveAreas[static_cast<int>(AesType::AtNContamination)]))
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active N or B/C contamination areas.")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active N or B/C contamination areas."));
m_areaCount++; m_areaCount++;
m_areaCountCentral--; m_areaCountCentral--;
@@ -268,8 +268,8 @@ Core::FunctionReplyObject HandlerNContamination::nContaminationModifyRequest(con
} }
else // Change from training area to central else // Change from training area to central
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtBCContamination] + s_maxActiveAreasCentral[AesType::AtNContamination])) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtBCContamination)] + s_maxActiveAreasCentral[static_cast<int>(AesType::AtNContamination)]))
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active central N or B/C contamination areas.")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active central N or B/C contamination areas."));
m_areaCount--; m_areaCount--;
m_areaCountCentral++; m_areaCountCentral++;
DEBUG_LOG(m_logger) << "s_areaCount[AesType::AtBCContamination] = " << m_areaCount; DEBUG_LOG(m_logger) << "s_areaCount[AesType::AtBCContamination] = " << m_areaCount;
@@ -281,7 +281,7 @@ Core::FunctionReplyObject HandlerNContamination::nContaminationModifyRequest(con
if (request.id() < 0 && checkStateForSfm(ifs)) if (request.id < 0 && checkStateForSfm(ifs))
{ {
DEBUG_LOG(m_logger) << "Overwrite n contamination Effect State for OC"; DEBUG_LOG(m_logger) << "Overwrite n contamination Effect State for OC";
aea.effectStateId = AesEffectState::EsPrepared; aea.effectStateId = AesEffectState::EsPrepared;
@@ -12,7 +12,7 @@ namespace AreaEffectSimulation
{ {
HandlerOffRouteMine::HandlerOffRouteMine(MainHandler *mainHandler) HandlerOffRouteMine::HandlerOffRouteMine(MainHandler *mainHandler)
: HandlerBaseTmpl<ObjectOffRouteMine>(mainHandler, QStringLiteral("OffRouteMine"), s_areaCount[AesType::AtOffRouteMine], s_areaCountCentral[AesType::AtOffRouteMine]) : HandlerBaseTmpl<ObjectOffRouteMine>(mainHandler, QStringLiteral("OffRouteMine"), s_areaCount[static_cast<int>(AesType::AtOffRouteMine)], s_areaCountCentral[static_cast<int>(AesType::AtOffRouteMine)])
, Interface::Fts::OffRouteMineModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::OffRouteMineModifyRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::OffRouteMineRemoveRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::OffRouteMineRemoveRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::OffRouteMineTriggerRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::OffRouteMineTriggerRequestHandler(mainHandler->dds()->fts())
@@ -33,7 +33,7 @@ bool HandlerOffRouteMine::init()
bRet = false; bRet = false;
return; return;
} }
if (totalAreasCentral() >= s_maxActiveAreasCentral[AesType::AtOffRouteMine]) if (totalAreasCentral() >= s_maxActiveAreasCentral[static_cast<int>(AesType::AtOffRouteMine)])
{ {
ERROR_LOG(m_logger) << "More active off route mines in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active off route mines in database than allowed - ignoring the rest!";
ifs->removeObject(); ifs->removeObject();
@@ -62,34 +62,34 @@ bool HandlerOffRouteMine::init()
int HandlerOffRouteMine::totalAreas() const int HandlerOffRouteMine::totalAreas() const
{ {
return s_areaCount[AesType::AtOffRouteMine]; return s_areaCount[static_cast<int>(AesType::AtOffRouteMine)];
} }
int HandlerOffRouteMine::totalAreasCentral() const int HandlerOffRouteMine::totalAreasCentral() const
{ {
return s_areaCountCentral[AesType::AtOffRouteMine]; return s_areaCountCentral[static_cast<int>(AesType::AtOffRouteMine)];
} }
static void fillData(const OffRouteMineModifyRequest &src, Database::AesOffRouteMine &dst) static void fillData(const OffRouteMineModifyRequest &src, Database::AesOffRouteMine &dst)
{ {
if (src.id() < 0) // is the id given as negative? set id -> used by OC-laptop if (src.id < 0) // is the id given as negative? set id -> used by OC-laptop
dst.id = src.id(); dst.id = src.id;
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.effectStart = src.effectStart().is_set() && src.effectStart().get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.effectDuration = src.effectDuration(); dst.effectDuration = src.effectDuration;
dst.impactPosition.rx() = src.area().cornerBottomLeft().lon(); dst.impactPosition.rx() = src.area.cornerBottomLeft.lon;
dst.impactPosition.ry() = src.area().cornerBottomLeft().lat(); dst.impactPosition.ry() = src.area.cornerBottomLeft.lat;
dst.width = src.area().width(); dst.width = src.area.width;
dst.length = src.area().height(); dst.length = src.area.height;
dst.rotationAngle = src.area().rotation(); dst.rotationAngle = src.area.rotation;
dst.impactRadius = src.impactRadius().is_set() ? src.impactRadius().get() : 0; dst.impactRadius = src.impactRadius.is_set() ? src.impactRadius.get() : 0;
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.chargeTypeId = src.chargeTypeId(); dst.chargeTypeId = src.chargeTypeId;
dst.isCentral = true; dst.isCentral = true;
dst.triggered = false; dst.triggered = false;
//dst.participantId = src.participantId().is_set() ? src.participantId().get() : 0; //dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0;
//dst.externalId = src.externalId().is_set() ? src.externalId().get() : 0; //dst.externalId = src.externalId.is_set() ? src.externalId.get() : 0;
} }
@@ -105,7 +105,7 @@ void HandlerOffRouteMine::onOffRouteMineModifyRequest(const rti::core::SampleIde
Core::FunctionReplyObject HandlerOffRouteMine::offRouteMineCreateRequest(const OffRouteMineModifyRequest &request) Core::FunctionReplyObject HandlerOffRouteMine::offRouteMineCreateRequest(const OffRouteMineModifyRequest &request)
{ {
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtOffRouteMine]) && request.effectStart().is_set()) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtOffRouteMine)]) && request.effectStart.is_set())
return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active off route mines.")); return Core::FunctionReplyObject(1, tr_lts("dds", "Too many active off route mines."));
Database::AesOffRouteMine newData; Database::AesOffRouteMine newData;
@@ -135,15 +135,15 @@ Core::FunctionReplyObject HandlerOffRouteMine::offRouteMineModifyRequest(const O
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectOffRouteMine *ifs = nullptr; ObjectOffRouteMine *ifs = nullptr;
if (request.id() == 0 || ((request.id() < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id()), ret))) if (request.id == 0 || ((request.id < 0) && !getObjectFromMap(m_objectMap, std::abs(request.id), ret)))
return offRouteMineCreateRequest(request); return offRouteMineCreateRequest(request);
ifs = getObjectFromMap(m_objectMap, std::abs(request.id()), ret); ifs = getObjectFromMap(m_objectMap, std::abs(request.id), ret);
if (!ifs) if (!ifs)
return ret; return ret;
if (request.effectStart().is_set() && (request.effectStart().get() + request.effectDuration() < m_mainHandler->dds()->currentPartitionTime().toMSecsSinceEpoch())) if (request.effectStart.is_set() && (request.effectStart.get() + request.effectDuration < m_mainHandler->dds()->currentPartitionTime().toMSecsSinceEpoch()))
return removeObject(ifs); return removeObject(ifs);
// Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war // Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war
@@ -151,16 +151,16 @@ Core::FunctionReplyObject HandlerOffRouteMine::offRouteMineModifyRequest(const O
/*! /*!
* If the effect start added after creation, the max amount need to be checked * If the effect start added after creation, the max amount need to be checked
!*/ !*/
if (totalAreasCentral() >= (s_maxActiveAreasCentral[AesType::AtOffRouteMine]) if (totalAreasCentral() >= (s_maxActiveAreasCentral[static_cast<int>(AesType::AtOffRouteMine)])
&& request.effectStart().is_set() && request.effectStart.is_set()
&& !ifs->isActivationTimeSet() // check if time before change was not setted. && !ifs->isActivationTimeSet() // check if time before change was not setted.
/*&& !ifs->isObjectModifiable()*/) /*&& !ifs->isObjectModifiable()*/)
{ {
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active off route mines.")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active off route mines."));
} }
Database::AesOffRouteMine aea(ifs->data()); Database::AesOffRouteMine aea(ifs->data());
fillData(request, aea); fillData(request, aea);
if (request.id() < 0 && checkStateForSfm(ifs)) if (request.id < 0 && checkStateForSfm(ifs))
{ {
DEBUG_LOG(m_logger) << "Overwrite off route mine Effect State for OC"; DEBUG_LOG(m_logger) << "Overwrite off route mine Effect State for OC";
aea.effectStateId = AesEffectState::EsPrepared; aea.effectStateId = AesEffectState::EsPrepared;
@@ -187,15 +187,15 @@ void HandlerOffRouteMine::onOffRouteMineTriggerRequest(const rti::core::SampleId
Core::FunctionReplyObject HandlerOffRouteMine::offRouteMineTriggerRequest(const OffRouteMineTriggerRequest &request) Core::FunctionReplyObject HandlerOffRouteMine::offRouteMineTriggerRequest(const OffRouteMineTriggerRequest &request)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectOffRouteMine *ifs = getObjectFromMap(m_objectMap, std::abs(request.id()), ret); ObjectOffRouteMine *ifs = getObjectFromMap(m_objectMap, std::abs(request.id), ret);
if (!ifs) if (!ifs)
return ret; return ret;
Database::AesOffRouteMine aea(ifs->data()); Database::AesOffRouteMine aea(ifs->data());
DEBUG_LOG(m_logger) << "Overwrite off route mine Effect State "; DEBUG_LOG(m_logger) << "Overwrite off route mine Effect State ";
aea.effectStateId = AesEffectState_def::EsExpired; aea.effectStateId = AesEffectState::EsExpired;
aea.triggered = request.triggered(); aea.triggered = request.triggered;
aea.effectDuration = aea.effectStart.msecsTo(QDateTime::currentDateTimeUtc()); aea.effectDuration = aea.effectStart.msecsTo(QDateTime::currentDateTimeUtc());
if (aea.effectDuration < 0) if (aea.effectDuration < 0)
aea.effectDuration = 1; aea.effectDuration = 1;
@@ -55,19 +55,19 @@ bool HandlerReconArea::init()
static void fillData(const ReconAreaModifyRequest &src, Database::AesReconArea &dst) static void fillData(const ReconAreaModifyRequest &src, Database::AesReconArea &dst)
{ {
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.chargeTypeId = 103; // recon area dummy dst.chargeTypeId = 103; // recon area dummy
dst.effectDuration = 0; // forever active dst.effectDuration = 0; // forever active
dst.position.rx() = src.area().cornerBottomLeft().lon(); dst.position.rx() = src.area.cornerBottomLeft.lon;
dst.position.ry() = src.area().cornerBottomLeft().lat(); dst.position.ry() = src.area.cornerBottomLeft.lat;
dst.rotationAngle = src.area().rotation(); dst.rotationAngle = src.area.rotation;
dst.height = src.area().height(); dst.height = src.area.height;
dst.width = src.area().width(); dst.width = src.area.width;
dst.effectMarkingInTa = false; dst.effectMarkingInTa = false;
dst.effectStart = src.effectStart().is_set() ? QDateTime::fromMSecsSinceEpoch(src.effectStart().get()) : QDateTime(); dst.effectStart = src.effectStart.is_set() ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime();
dst.participantId = src.participantId(); dst.participantId = src.participantId;
dst.partyId = src.partyId().is_set() ? src.partyId().get() : 0; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0;
dst.purpose = QString::fromStdString(src.purpose()); dst.purpose = QString::fromStdString(src.purpose);
} }
void HandlerReconArea::onReconAreaModifyRequest(const rti::core::SampleIdentity &cookie, void HandlerReconArea::onReconAreaModifyRequest(const rti::core::SampleIdentity &cookie,
@@ -100,8 +100,8 @@ Core::FunctionReplyObject HandlerReconArea::reconAreaCreateRequest(const ReconAr
m_objectMap.insert(ifs->id(), ifs); m_objectMap.insert(ifs->id(), ifs);
if (ifs->isObjectInTrainingArea()) if (ifs->isObjectInTrainingArea())
{ {
++s_areaCount[AesType::AtReconArea]; ++s_areaCount[static_cast<int>(AesType::AtReconArea)];
DEBUG_LOG(m_logger) << "s_areaCount[AesType::AtReconArea] = " << s_areaCount[AesType::AtReconArea]; DEBUG_LOG(m_logger) << "s_areaCount[AesType::AtReconArea] = " << s_areaCount[static_cast<int>(AesType::AtReconArea)];
} }
connect(ifs, &ObjectReconArea::newAiv, this, &HandlerReconArea::newAiv); connect(ifs, &ObjectReconArea::newAiv, this, &HandlerReconArea::newAiv);
connect(ifs, &ObjectReconArea::removeAiv, this, &HandlerReconArea::removeAiv); connect(ifs, &ObjectReconArea::removeAiv, this, &HandlerReconArea::removeAiv);
@@ -110,11 +110,11 @@ Core::FunctionReplyObject HandlerReconArea::reconAreaCreateRequest(const ReconAr
Core::FunctionReplyObject HandlerReconArea::reconAreaModifyRequest(const ReconAreaModifyRequest &request) Core::FunctionReplyObject HandlerReconArea::reconAreaModifyRequest(const ReconAreaModifyRequest &request)
{ {
if (request.id() <= 0) if (request.id <= 0)
return reconAreaCreateRequest(request); return reconAreaCreateRequest(request);
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectReconArea *ifs = getObjectFromMap(m_objectMap, request.id(), ret); ObjectReconArea *ifs = getObjectFromMap(m_objectMap, request.id, ret);
if (!ifs) if (!ifs)
return ret; return ret;
@@ -130,19 +130,19 @@ Core::FunctionReplyObject HandlerReconArea::reconAreaModifyGeometryRequest(const
{ {
// WARNING: request.area.cornerBottomLeft() contains center point! // WARNING: request.area.cornerBottomLeft() contains center point!
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectReconArea *ifs = getObjectFromMap(m_objectMap, request.id(), ret); ObjectReconArea *ifs = getObjectFromMap(m_objectMap, request.id, ret);
if (!ifs) if (!ifs)
return ret; return ret;
// Todo: IsObjectModifiable() ?!? // Todo: IsObjectModifiable() ?!?
AreaEffectSimulation::Database::AesReconArea aea(ifs->data()); AreaEffectSimulation::Database::AesReconArea aea(ifs->data());
aea.position = Polygons::centerPoint2BottomLeft(QPointF(request.area().cornerBottomLeft().lon(), aea.position = Polygons::centerPoint2BottomLeft(QPointF(request.area.cornerBottomLeft.lon,
request.area().cornerBottomLeft().lat()), request.area.cornerBottomLeft.lat),
ifs->data().width, ifs->data().width,
ifs->data().height, ifs->data().height,
request.area().rotation()); request.area.rotation);
aea.rotationAngle = request.area().rotation(); aea.rotationAngle = request.area.rotation;
return ifs->updateObject(aea); return ifs->updateObject(aea);
} }
@@ -163,23 +163,23 @@ Core::FunctionReplyObject HandlerReconArea::switchTo(int id, AesEffectState effe
return Core::FunctionReplyObject(id, tr_lts("dds", "Recon area with id %1 not found.")).arg(id); return Core::FunctionReplyObject(id, tr_lts("dds", "Recon area with id %1 not found.")).arg(id);
bool succ = false; bool succ = false;
switch (effectState.underlying()) { switch (effectState) {
case AesEffectState_def::EsActivated: case AesEffectState::EsActivated:
succ = !ifs->activateObjectNow().error(); succ = !ifs->activateObjectNow().error();
break; break;
case AesEffectState_def::EsPrepared: case AesEffectState::EsPrepared:
succ = ifs->trySwitchToPrepared(); succ = ifs->trySwitchToPrepared();
break; break;
case AesEffectState_def::EsPaused: case AesEffectState::EsPaused:
succ = ifs->trySwitchToPaused(); succ = ifs->trySwitchToPaused();
break; break;
case AesEffectState_def::EsExpired: case AesEffectState::EsExpired:
succ = ifs->trySwitchToExpired(); succ = ifs->trySwitchToExpired();
break; break;
case AesEffectState_def::EsRemoved: case AesEffectState::EsRemoved:
succ = ifs->trySwitchToRemoved(); succ = ifs->trySwitchToRemoved();
break; break;
case AesEffectState_def::EsCreated: case AesEffectState::EsCreated:
succ = ifs->trySwitchToCreated(); succ = ifs->trySwitchToCreated();
break; break;
default: default:
@@ -187,7 +187,7 @@ Core::FunctionReplyObject HandlerReconArea::switchTo(int id, AesEffectState effe
} }
if (succ) if (succ)
return Core::FunctionReplyObject(); return Core::FunctionReplyObject();
return Core::FunctionReplyObject(id, tr_lts("dds", "Could not switch effect simulation with id %1 to state with id %2.")).arg(id).arg(effectState.underlying()); return Core::FunctionReplyObject(id, tr_lts("dds", "Could not switch effect simulation with id %1 to state with id %2.")).arg(id).arg(effectState);
} }
void HandlerReconArea::onReconAreaRemoveRequest(const rti::core::SampleIdentity &cookie, void HandlerReconArea::onReconAreaRemoveRequest(const rti::core::SampleIdentity &cookie,
@@ -195,7 +195,7 @@ void HandlerReconArea::onReconAreaRemoveRequest(const rti::core::SampleIdentity
{ {
DEBUG_LOG(m_logger) << "onReconAreaRemoveRequest: " << request; DEBUG_LOG(m_logger) << "onReconAreaRemoveRequest: " << request;
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectReconArea *ifs = getObjectFromMap(m_objectMap, request.id(), ret); ObjectReconArea *ifs = getObjectFromMap(m_objectMap, request.id, ret);
if (!ifs) if (!ifs)
{ {
m_mainHandler->dds()->fts()->reconAreaRemoveReply(cookie, ret); m_mainHandler->dds()->fts()->reconAreaRemoveReply(cookie, ret);
@@ -14,7 +14,7 @@ namespace AreaEffectSimulation
{ {
HandlerTechnicalArea::HandlerTechnicalArea(MainHandler *mainHandler) HandlerTechnicalArea::HandlerTechnicalArea(MainHandler *mainHandler)
: HandlerBaseTmpl<ObjectTechnicalArea>(mainHandler, QStringLiteral("TechnicalArea"), s_areaCount[AesType::AtTechnicalArea], s_areaCountCentral[AesType::AtTechnicalArea]) : HandlerBaseTmpl<ObjectTechnicalArea>(mainHandler, QStringLiteral("TechnicalArea"), s_areaCount[static_cast<int>(AesType::AtTechnicalArea)], s_areaCountCentral[static_cast<int>(AesType::AtTechnicalArea)])
, Interface::Fts::TechnicalAreaModifyRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::TechnicalAreaModifyRequestHandler(mainHandler->dds()->fts())
, Interface::Fts::TechnicalAreaRemoveRequestHandler(mainHandler->dds()->fts()) , Interface::Fts::TechnicalAreaRemoveRequestHandler(mainHandler->dds()->fts())
{ {
@@ -43,7 +43,7 @@ bool HandlerTechnicalArea::init()
return false; return false;
} }
if (totalAreas() >= s_maxActiveAreas[AesType::AtTechnicalArea]) if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtTechnicalArea)])
{ {
ERROR_LOG(m_logger) << "More active technical areas in database than allowed - ignoring the rest!"; ERROR_LOG(m_logger) << "More active technical areas in database than allowed - ignoring the rest!";
delete ifs; delete ifs;
@@ -65,31 +65,31 @@ bool HandlerTechnicalArea::init()
int HandlerTechnicalArea::totalAreas() const int HandlerTechnicalArea::totalAreas() const
{ {
return s_areaCount[AesType::AtTechnicalArea]; return s_areaCount[static_cast<int>(AesType::AtTechnicalArea)];
} }
int HandlerTechnicalArea::totalAreasCentral() const int HandlerTechnicalArea::totalAreasCentral() const
{ {
return s_areaCountCentral[AesType::AtTechnicalArea]; return s_areaCountCentral[static_cast<int>(AesType::AtTechnicalArea)];
} }
static void fillData(const TechnicalAreaModifyRequest &src, Database::AesTechnicalArea &dst) static void fillData(const TechnicalAreaModifyRequest &src, Database::AesTechnicalArea &dst)
{ {
dst.name = QString::fromStdString(src.name()); dst.name = QString::fromStdString(src.name);
dst.chargeTypeId = 421; // dummy dst.chargeTypeId = 421; // dummy
dst.effectDuration = 0; // forever active dst.effectDuration = 0; // forever active
dst.typeId = src.type().underlying(); dst.typeId = src.type;
dst.position.rx() = src.area().cornerBottomLeft().lon(); dst.position.rx() = src.area.cornerBottomLeft.lon;
dst.position.ry() = src.area().cornerBottomLeft().lat(); dst.position.ry() = src.area.cornerBottomLeft.lat;
dst.length = src.area().height(); dst.length = src.area.height;
dst.width = src.area().width(); dst.width = src.area.width;
} }
void HandlerTechnicalArea::onTechnicalAreaModifyRequest(const rti::core::SampleIdentity &cookie, void HandlerTechnicalArea::onTechnicalAreaModifyRequest(const rti::core::SampleIdentity &cookie,
const TechnicalAreaModifyRequest &request) const TechnicalAreaModifyRequest &request)
{ {
DEBUG_LOG(m_logger) << "onTechnicalAreaModifyRequest: " << request; DEBUG_LOG(m_logger) << "onTechnicalAreaModifyRequest: " << request;
Core::FunctionReplyObject ret = request.id() > 0 ? technicalAreaModifyRequest(request) : technicalAreaCreateRequest(request); Core::FunctionReplyObject ret = request.id > 0 ? technicalAreaModifyRequest(request) : technicalAreaCreateRequest(request);
if (ret.error()) if (ret.error())
WARNING_LOG(m_logger) << ret(); WARNING_LOG(m_logger) << ret();
m_mainHandler->dds()->fts()->technicalAreaModifyReply(cookie, ret); m_mainHandler->dds()->fts()->technicalAreaModifyReply(cookie, ret);
@@ -97,7 +97,7 @@ void HandlerTechnicalArea::onTechnicalAreaModifyRequest(const rti::core::SampleI
Core::FunctionReplyObject HandlerTechnicalArea::technicalAreaCreateRequest(const TechnicalAreaModifyRequest &request) Core::FunctionReplyObject HandlerTechnicalArea::technicalAreaCreateRequest(const TechnicalAreaModifyRequest &request)
{ {
if (totalAreas() >= s_maxActiveAreas[AesType::AtTechnicalArea]) if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtTechnicalArea)])
return Core::FunctionReplyObject(tr_lts("dds", "Too many active technical areas.")); return Core::FunctionReplyObject(tr_lts("dds", "Too many active technical areas."));
Database::AesTechnicalArea newData; Database::AesTechnicalArea newData;
@@ -129,20 +129,20 @@ Core::FunctionReplyObject HandlerTechnicalArea::technicalAreaCreateRequest(const
Core::FunctionReplyObject HandlerTechnicalArea::technicalAreaModifyRequest(const TechnicalAreaModifyRequest &request) Core::FunctionReplyObject HandlerTechnicalArea::technicalAreaModifyRequest(const TechnicalAreaModifyRequest &request)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
ObjectTechnicalArea *ifs = getObjectFromMap(m_objectMap, request.id(), ret); ObjectTechnicalArea *ifs = getObjectFromMap(m_objectMap, request.id, ret);
if (!ifs) if (!ifs)
return ret; return ret;
// Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war // Anzahl aktiver Areas ist erreicht, der Wirkbeginn ist (soll) gesetzt sein, aber die Area war
// vorher noch ohne Wirkbeginn // vorher noch ohne Wirkbeginn
if (totalAreas() >= s_maxActiveAreas[AesType::AtTechnicalArea] && !ifs->isObjectModifiable()) if (totalAreas() >= s_maxActiveAreas[static_cast<int>(AesType::AtTechnicalArea)] && !ifs->isObjectModifiable())
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Too many active technical areas.")); return Core::FunctionReplyObject(request.id, tr_lts("dds", "Too many active technical areas."));
// Todo: IsObjectModifiable() ?!? // Todo: IsObjectModifiable() ?!?
AreaEffectSimulation::Database::AesTechnicalArea aea(ifs->data()); AreaEffectSimulation::Database::AesTechnicalArea aea(ifs->data());
fillData(request, aea); fillData(request, aea);
if (request.id() < 0 && checkStateForSfm(ifs)) if (request.id < 0 && checkStateForSfm(ifs))
{ {
DEBUG_LOG(m_logger) << "Overwrite technical area Effect State for OC"; DEBUG_LOG(m_logger) << "Overwrite technical area Effect State for OC";
aea.effectStateId = AesEffectState::EsPrepared; aea.effectStateId = AesEffectState::EsPrepared;
@@ -178,7 +178,7 @@ bool MainHandler::initAESHandler()
if (!ltsElevationManager) if (!ltsElevationManager)
{ {
ERROR_LOG(m_logger) << LOGFUNCTION << " LtsElevation::createInstance failed."; ERROR_LOG(m_logger) << LOGFUNCTION << " LtsElevation::createInstance failed.";
m_ddsHandler->pacemaker()->setNewState(Core::RunningState::inner_enum::StoppedError); m_ddsHandler->pacemaker()->setNewState(Core::RunningState::StoppedError);
return false; return false;
} }
#endif // Q_OS_WIN #endif // Q_OS_WIN
@@ -190,7 +190,7 @@ bool MainHandler::initAESHandler()
if (!trajectoryGenerator) if (!trajectoryGenerator)
{ {
ERROR_LOG(m_logger) << LOGFUNCTION << " TrajectoryGenerator::getInstance failed."; ERROR_LOG(m_logger) << LOGFUNCTION << " TrajectoryGenerator::getInstance failed.";
m_ddsHandler->pacemaker()->setNewState(Core::RunningState::inner_enum::StoppedError); m_ddsHandler->pacemaker()->setNewState(Core::RunningState::StoppedError);
return false; return false;
} }
@@ -250,7 +250,7 @@ bool MainHandler::initAESHandler()
if (!m_handlerBorderline->init()) if (!m_handlerBorderline->init())
{ {
ERROR_LOG(m_logger) << LOGFUNCTION << " Initialisation HandlerBorderline failed."; ERROR_LOG(m_logger) << LOGFUNCTION << " Initialisation HandlerBorderline failed.";
m_ddsHandler->pacemaker()->setNewState(Core::RunningState::inner_enum::StoppedError); m_ddsHandler->pacemaker()->setNewState(Core::RunningState::StoppedError);
return false; return false;
} }
@@ -259,7 +259,7 @@ bool MainHandler::initAESHandler()
if (!m_handlerGasPipe->init()) if (!m_handlerGasPipe->init())
{ {
ERROR_LOG(m_logger) << LOGFUNCTION << " Initialisation HandlerGasPipe failed."; ERROR_LOG(m_logger) << LOGFUNCTION << " Initialisation HandlerGasPipe failed.";
m_ddsHandler->pacemaker()->setNewState(Core::RunningState::inner_enum::StoppedError); m_ddsHandler->pacemaker()->setNewState(Core::RunningState::StoppedError);
return false; return false;
} }
@@ -268,7 +268,7 @@ bool MainHandler::initAESHandler()
if (!m_handlerChargeEffect->init()) if (!m_handlerChargeEffect->init())
{ {
ERROR_LOG(m_logger) << LOGFUNCTION << " Initialisation HandlerChargeEffect failed."; ERROR_LOG(m_logger) << LOGFUNCTION << " Initialisation HandlerChargeEffect failed.";
m_ddsHandler->pacemaker()->setNewState(Core::RunningState::inner_enum::StoppedError); m_ddsHandler->pacemaker()->setNewState(Core::RunningState::StoppedError);
return false; return false;
} }
@@ -281,7 +281,7 @@ bool MainHandler::initAESHandler()
if (!m_handlerEffector->init()) if (!m_handlerEffector->init())
{ {
ERROR_LOG(m_logger) << LOGFUNCTION << " Initialisation HandlerChargeEffect failed."; ERROR_LOG(m_logger) << LOGFUNCTION << " Initialisation HandlerChargeEffect failed.";
m_ddsHandler->pacemaker()->setNewState(Core::RunningState::inner_enum::StoppedError); m_ddsHandler->pacemaker()->setNewState(Core::RunningState::StoppedError);
return false; return false;
} }
// Effect Cluster last as we need Effector first // Effect Cluster last as we need Effector first
@@ -37,38 +37,38 @@ MeteoDataManagement::MeteoData MeteoDataProvider::getStaticWeather()
} }
// default values from wikipedia for aviations // default values from wikipedia for aviations
MeteoDataManagement::MeteoData dummyWeather; MeteoDataManagement::MeteoData dummyWeather;
dummyWeather.pressure(1013.25); dummyWeather.pressure = 1013.25;
dummyWeather.temperature(15); dummyWeather.temperature = 15;
dummyWeather.humidity(0); dummyWeather.humidity = 0;
dummyWeather.timeStamp(m_mainHandler->dds()->currentPartitionTimeMSec()); dummyWeather.timeStamp = m_mainHandler->dds()->currentPartitionTimeMSec();
dummyWeather.windDirection(0); dummyWeather.windDirection = 0;
dummyWeather.windSpeed(0); dummyWeather.windSpeed = 0;
dummyWeather.windOk(true); dummyWeather.windOk = true;
dummyWeather.climateOk(true); dummyWeather.climateOk = true;
return dummyWeather; return dummyWeather;
} }
MeteoDataManagement::MeteoData MeteoDataProvider::getNearestWeather(const Core::GeoPosition2D &pos) MeteoDataManagement::MeteoData MeteoDataProvider::getNearestWeather(const Core::GeoPosition2D &pos)
{ {
initWeatherData(); initWeatherData();
LtsCoordTrans::UtmCoordinate utm(LtsCoordTrans::UtmCoordinate::fromGeographic(pos.lon(), pos.lat())); LtsCoordTrans::UtmCoordinate utm(LtsCoordTrans::UtmCoordinate::fromGeographic(pos.lon, pos.lat));
double nearestDistanceSquared = std::numeric_limits<double>::max(); double nearestDistanceSquared = std::numeric_limits<double>::max();
MeteoDataManagement::MeteoData retMd; MeteoDataManagement::MeteoData retMd;
for (const auto &md : qAsConst(m_meteoData)) for (const auto &md : qAsConst(m_meteoData))
{ {
if (md.isStaticMeteoData()) if (md.isStaticMeteoData)
continue; continue;
if (QDateTime::fromMSecsSinceEpoch(md.timeStamp()).addMSecs(Settings::getValidityPeriodWeatherData()) < m_mainHandler->dds()->currentPartitionTime()) if (QDateTime::fromMSecsSinceEpoch(md.timeStamp).addMSecs(Settings::getValidityPeriodWeatherData()) < m_mainHandler->dds()->currentPartitionTime())
continue; continue;
const double distanceSquared = LtsCoordTrans::squareDistance(utm, md.pos().lon(), md.pos().lat()); const double distanceSquared = LtsCoordTrans::squareDistance(utm, md.pos.lon, md.pos.lat);
if (distanceSquared < nearestDistanceSquared) if (distanceSquared < nearestDistanceSquared)
{ {
retMd = md; retMd = md;
nearestDistanceSquared = distanceSquared; nearestDistanceSquared = distanceSquared;
} }
} }
return (retMd.id() > 0) ? retMd : getStaticWeather(); return (retMd.id > 0) ? retMd : getStaticWeather();
} }
void MeteoDataProvider::meteoDataChanged(const MeteoDataManagement::MeteoData &data, DataModification modType) void MeteoDataProvider::meteoDataChanged(const MeteoDataManagement::MeteoData &data, DataModification modType)
@@ -76,15 +76,15 @@ void MeteoDataProvider::meteoDataChanged(const MeteoDataManagement::MeteoData &d
switch (modType) switch (modType)
{ {
case DataModification::eRemoved: case DataModification::eRemoved:
m_meteoData.remove(data.id()); m_meteoData.remove(data.id);
if (m_staticWeatherId == data.id()) if (m_staticWeatherId == data.id)
m_staticWeatherId = 0; m_staticWeatherId = 0;
break; break;
case DataModification::eAdded: case DataModification::eAdded:
case DataModification::eModified: case DataModification::eModified:
m_meteoData[data.id()] = data; m_meteoData[data.id] = data;
if (data.isStaticMeteoData()) if (data.isStaticMeteoData)
m_staticWeatherId = data.id(); m_staticWeatherId = data.id;
break; break;
} }
} }
@@ -96,9 +96,9 @@ void MeteoDataProvider::initWeatherData()
m_mdmDtc->waitForHistoricalDataMeteoData(); m_mdmDtc->waitForHistoricalDataMeteoData();
m_meteoData = m_mdmDtc->meteoDatas(); m_meteoData = m_mdmDtc->meteoDatas();
for (const auto &data : qAsConst(m_meteoData)) for (const auto &data : qAsConst(m_meteoData))
if (data.isStaticMeteoData()) if (data.isStaticMeteoData)
{ {
m_staticWeatherId = data.id(); m_staticWeatherId = data.id;
return; return;
} }
} }
@@ -47,11 +47,11 @@ void MineCorridorCreator::addPosition(const Core::GeoPosition2D &pos, qint64 ts)
{ {
m_timeoutTimer->start(); m_timeoutTimer->start();
if (m_sortedCorridorData.isEmpty()) if (m_sortedCorridorData.isEmpty())
m_sortedCorridorData.insert(ts, LtsCoordTrans::UtmCoordinate::fromGeographic(pos.lon(), pos.lat())); m_sortedCorridorData.insert(ts, LtsCoordTrans::UtmCoordinate::fromGeographic(pos.lon, pos.lat));
else else
{ {
const auto &last = m_sortedCorridorData.last(); const auto &last = m_sortedCorridorData.last();
const auto utm = LtsCoordTrans::UtmCoordinate::fromGeographic(pos.lon(), pos.lat(), last.zone); const auto utm = LtsCoordTrans::UtmCoordinate::fromGeographic(pos.lon, pos.lat, last.zone);
if (isSamePoint(last, utm, s_samePointDistance)) if (isSamePoint(last, utm, s_samePointDistance))
{ {
DEBUG_LOG(m_logger) << "got duplicated point (" << last.x << "/" << last.y DEBUG_LOG(m_logger) << "got duplicated point (" << last.x << "/" << last.y
@@ -95,23 +95,23 @@ void ObjectAirSupportImpact::publishAiv()
const QRectF bounds(poly.boundingRect()); const QRectF bounds(poly.boundingRect());
AesItemView aiv(m_aiv); AesItemView aiv(m_aiv);
aiv.aesItemId(m_data.id); aiv.aesItemId = m_data.id;
aiv.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv.chargeStruct.chargeTypeId = m_data.chargeTypeId;
ddsVecFromPoly(poly, aiv.form()); ddsVecFromPoly(poly, aiv.form);
aiv.effectStart(toMSec(m_data.effectStart)); aiv.effectStart = toMSec(m_data.effectStart);
aiv.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y())); aiv.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y());
aiv.boundingBoxTopRight(Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y())); aiv.boundingBoxTopRight = Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y());
aiv.aesTypeId(AesType::AtAirSupportImpact); aiv.aesTypeId = AesType::AtAirSupportImpact;
aiv.effectStateId(effectState()); aiv.effectStateId = effectState();
aiv.id(1000 * m_data.id + AesType::AtAirSupportImpact); aiv.id = 1000 * m_data.id + static_cast<int>(AesType::AtAirSupportImpact);
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv.partyId(m_data.partyId); aiv.partyId = m_data.partyId;
checkIsCentralAndPublish(aiv.form(), m_aiv.form(), m_data.isCentral); checkIsCentralAndPublish(aiv.form, m_aiv.form, m_data.isCentral);
if (aiv != m_aiv) if (aiv != m_aiv)
{ {
aiv.sampleTime(partitionTimeMSec()); aiv.sampleTime = partitionTimeMSec();
m_aiv = aiv; m_aiv = aiv;
m_mainHandler->dds()->dts()->publish(aiv); m_mainHandler->dds()->dts()->publish(aiv);
emit newAiv(aiv); emit newAiv(aiv);
@@ -122,7 +122,7 @@ void ObjectAirSupportImpact::removeTopics()
{ {
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
dts->removeExplosionSingleByKey(m_data.id); dts->removeExplosionSingleByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtAirSupportImpact); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtAirSupportImpact));
emit removeAiv(m_data.id); emit removeAiv(m_data.id);
} }
@@ -22,7 +22,7 @@ public:
Core::FunctionReplyObject updateObject(const Database::AesAirSupportImpact &data) override; Core::FunctionReplyObject updateObject(const Database::AesAirSupportImpact &data) override;
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType::AtAirSupportImpact; } AesType aesType() const override { return AesType::AtAirSupportImpact; }
bool isCentral() const override { return m_data.isCentral; } bool isCentral() const override { return m_data.isCentral; }
@@ -93,7 +93,7 @@ AesEffectState ObjectBase::checkEnterNewState()
{ {
DEBUG_LOG(m_logger) << id() << " checkEnterNewState - cur effect state is " << effectState(); DEBUG_LOG(m_logger) << id() << " checkEnterNewState - cur effect state is " << effectState();
bool bNeedToPublishNewData = false; bool bNeedToPublishNewData = false;
switch (effectState().underlying()) switch (effectState())
{ {
case AesEffectState::EsUnknown: case AesEffectState::EsUnknown:
// initial state, switch to Received or Created // initial state, switch to Received or Created
@@ -376,7 +376,7 @@ bool ObjectBase::trySwitchToExpired()
bool ObjectBase::trySwitchToRemoved() bool ObjectBase::trySwitchToRemoved()
{ {
DEBUG_LOG(m_logger) << id() << " trySwitchToRemoved: " << effectState(); DEBUG_LOG(m_logger) << id() << " trySwitchToRemoved: " << effectState();
switch (effectState().underlying()) switch (effectState())
{ {
case AesEffectState::EsReceived: case AesEffectState::EsReceived:
setUseEffectStateReceived(false); setUseEffectStateReceived(false);
@@ -149,7 +149,7 @@ class ObjectBase : public QObject
QPolygonF out; QPolygonF out;
out.reserve(in.size()); out.reserve(in.size());
for (const auto &pos : qAsConst(in)) for (const auto &pos : qAsConst(in))
out.push_back(QPointF(pos.lon(), pos.lat())); out.push_back(QPointF(pos.lon, pos.lat));
return out; return out;
} }
@@ -300,7 +300,7 @@ template <typename T> class ObjectBaseTmpl : public ObjectBase
m_data.effectStart = tTempStart; m_data.effectStart = tTempStart;
return Core::FunctionReplyObject(m_data.id, tr_lts("dds", "Can not activate effect simulation with id %1 which is in the effect state with id %2.")) return Core::FunctionReplyObject(m_data.id, tr_lts("dds", "Can not activate effect simulation with id %1 which is in the effect state with id %2."))
.arg(m_data.id) .arg(m_data.id)
.arg(m_data.effectStateId.underlying()); .arg(static_cast<int>(m_data.effectStateId));
} }
return Core::FunctionReplyObject(); return Core::FunctionReplyObject();
@@ -357,10 +357,10 @@ template <typename T> class ObjectBaseTmpl : public ObjectBase
if (wasCentral && (effectState() == AesEffectState::EsExpired || effectState() == AesEffectState::EsActivated || effectState() == AesEffectState::EsPaused)) if (wasCentral && (effectState() == AesEffectState::EsExpired || effectState() == AesEffectState::EsActivated || effectState() == AesEffectState::EsPaused))
return true; return true;
if (static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId)) == MineClass::VirtualSingle) if (static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId)) == MineClass::VirtualSingle)
return true; return true;
if (m_mainHandler->dds()->pdmDtc()->gearClassFromChargeTypeId(m_data.chargeTypeId) == ProjectDataManagement::GearClass::AirSupport) if (m_mainHandler->dds()->pdmDtc()->gearClassFromChargeTypeId(m_data.chargeTypeId) == ProjectDataManagement::GearClass::GearClass_AirSupport)
return true; return true;
// Laser-Guidable Weapons must always be calculated by CES // Laser-Guidable Weapons must always be calculated by CES
@@ -368,7 +368,7 @@ template <typename T> class ObjectBaseTmpl : public ObjectBase
return true; return true;
// PzAbwVMi B always true // PzAbwVMi B always true
if (static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId)) == MineClass::Concrete) if (static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId)) == MineClass::Concrete)
return true; return true;
// If form didn't change, isCentral cannot change either: // If form didn't change, isCentral cannot change either:
@@ -379,9 +379,9 @@ template <typename T> class ObjectBaseTmpl : public ObjectBase
const QMap<int, InfrastructureManagement::SpecialArea> spAMap = m_mainHandler->specialAreaProvider()->getSpecialAreas(); const QMap<int, InfrastructureManagement::SpecialArea> spAMap = m_mainHandler->specialAreaProvider()->getSpecialAreas();
for (const InfrastructureManagement::SpecialArea &sa : spAMap) for (const InfrastructureManagement::SpecialArea &sa : spAMap)
{ {
if (sa.specialType() != InfrastructureManagement::SpecialAreaType::SatCesArea) if (sa.specialType != InfrastructureManagement::SpecialAreaType::SatCesArea)
continue; continue;
if (intersects(form, sa.polygon())) if (intersects(form, sa.polygon))
return true; return true;
} }
return false; return false;
@@ -139,8 +139,8 @@ void ObjectBCContamination::onUpdateWeatherData()
else else
md = m_mainHandler->meteoData()->getStaticWeather(); md = m_mainHandler->meteoData()->getStaticWeather();
if (qFuzzyCompare(md.windDirection(), fmod(m_data.propagationDirection + 180.0, 360.0)) && if (qFuzzyCompare(md.windDirection, fmod(m_data.propagationDirection + 180.0, 360.0)) &&
qFuzzyCompare(md.windSpeed(), m_data.windSpeed)) qFuzzyCompare(md.windSpeed, m_data.windSpeed))
{ {
DEBUG_LOG(m_logger) << id() << " weather for " << m_typeName DEBUG_LOG(m_logger) << id() << " weather for " << m_typeName
<< " did not change - no need to publish new data"; << " did not change - no need to publish new data";
@@ -148,8 +148,8 @@ void ObjectBCContamination::onUpdateWeatherData()
} }
DEBUG_LOG(m_logger) << id() << " updating weather for " << m_typeName; DEBUG_LOG(m_logger) << id() << " updating weather for " << m_typeName;
m_data.propagationDirection = fmod(md.windDirection() + 180.0, 360.0); m_data.propagationDirection = fmod(md.windDirection + 180.0, 360.0);
m_data.windSpeed = md.windSpeed(); m_data.windSpeed = md.windSpeed;
m_data.weatherTimestamp = partitionTime() > m_data.effectStart ? partitionTime() : m_data.effectStart; m_data.weatherTimestamp = partitionTime() > m_data.effectStart ? partitionTime() : m_data.effectStart;
m_data.weatherPosition = curCenterPointGeographic; m_data.weatherPosition = curCenterPointGeographic;
m_publishDataTimer->start(); m_publishDataTimer->start();
@@ -217,26 +217,26 @@ void ObjectBCContamination::publishAiv()
const QRectF bounds(poly.boundingRect()); const QRectF bounds(poly.boundingRect());
AesItemView aiv(m_aiv); AesItemView aiv(m_aiv);
aiv.aesItemId(m_data.id); aiv.aesItemId = m_data.id;
aiv.effectStart(toMSec(m_data.effectStart)); aiv.effectStart = toMSec(m_data.effectStart);
aiv.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv.chargeStruct.chargeTypeId = m_data.chargeTypeId;
ddsVecFromPoly(poly, aiv.form()); ddsVecFromPoly(poly, aiv.form);
aiv.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y())); aiv.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y());
aiv.boundingBoxTopRight(Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y())); aiv.boundingBoxTopRight = Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y());
aiv.aesTypeId(AesType::AtBCContamination); aiv.aesTypeId = AesType::AtBCContamination;
aiv.effectStateId(data().effectStateId); aiv.effectStateId = data().effectStateId;
aiv.id(1000 * m_data.id + AesType::AtBCContamination); aiv.id = 1000 * m_data.id + static_cast<int>(AesType::AtBCContamination);
// Check if aiv is in special area // Check if aiv is in special area
// effectStart needs to be set // effectStart needs to be set
checkIsCentralAndPublish(aiv.form(), m_aiv.form(), m_data.isCentral); checkIsCentralAndPublish(aiv.form, m_aiv.form, m_data.isCentral);
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv.partyId(m_data.partyId); aiv.partyId = m_data.partyId;
if (aiv != m_aiv) if (aiv != m_aiv)
{ {
aiv.sampleTime(partitionTimeMSec()); aiv.sampleTime = partitionTimeMSec();
m_aiv = aiv; m_aiv = aiv;
m_mainHandler->dds()->dts()->publish(aiv); m_mainHandler->dds()->dts()->publish(aiv);
emit newAiv(m_aiv); emit newAiv(m_aiv);
@@ -278,7 +278,7 @@ void ObjectBCContamination::removeTopics()
m_aivUpdateTimer->stop(); m_aivUpdateTimer->stop();
m_weatherTimer->stop(); m_weatherTimer->stop();
dts->removeBCContaminationByKey(m_data.id); dts->removeBCContaminationByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtBCContamination); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtBCContamination));
emit removeAiv(m_data.id); emit removeAiv(m_data.id);
} }
@@ -29,7 +29,7 @@ public:
*/ */
bool removeObjectFromDb(); bool removeObjectFromDb();
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType::AtBCContamination; } AesType aesType() const override { return AesType::AtBCContamination; }
@@ -164,22 +164,22 @@ void ObjectBoobyTrap::publishAiv()
const QRectF bounds(poly.boundingRect()); const QRectF bounds(poly.boundingRect());
AesItemView aiv(m_aiv); AesItemView aiv(m_aiv);
aiv.aesItemId(m_data.id); aiv.aesItemId = m_data.id;
aiv.effectStart(toMSec(m_data.effectStart)); aiv.effectStart = toMSec(m_data.effectStart);
aiv.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv.chargeStruct.chargeTypeId = m_data.chargeTypeId;
ddsVecFromPoly(poly, aiv.form()); ddsVecFromPoly(poly, aiv.form);
aiv.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y())); aiv.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y());
aiv.boundingBoxTopRight(Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y())); aiv.boundingBoxTopRight = Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y());
aiv.aesTypeId(AesType::AtBoobyTrap); aiv.aesTypeId = AesType::AtBoobyTrap;
aiv.effectStateId(data().effectStateId); aiv.effectStateId = data().effectStateId;
aiv.id(1000 * m_data.id + AesType::AtBoobyTrap); aiv.id = 1000 * m_data.id + static_cast<int>(AesType::AtBoobyTrap);
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv.partyId(m_data.partyId); aiv.partyId = m_data.partyId;
if (aiv != m_aiv) if (aiv != m_aiv)
{ {
aiv.sampleTime(partitionTimeMSec()); aiv.sampleTime = partitionTimeMSec();
m_aiv = aiv; m_aiv = aiv;
m_mainHandler->dds()->dts()->publish(aiv); m_mainHandler->dds()->dts()->publish(aiv);
emit newAiv(m_aiv); emit newAiv(m_aiv);
@@ -191,21 +191,21 @@ void ObjectBoobyTrap::publishAiv()
const QPolygonF poly = Polygons::boobyTrapCake(data(), data().impactRadius); const QPolygonF poly = Polygons::boobyTrapCake(data(), data().impactRadius);
const QRectF bounds(poly.boundingRect()); const QRectF bounds(poly.boundingRect());
AesItemView aiv2(m_aiv2); AesItemView aiv2(m_aiv2);
aiv2.aesItemId(m_data.id); aiv2.aesItemId = m_data.id;
aiv2.effectStart(toMSec(m_data.effectStart)); aiv2.effectStart = toMSec(m_data.effectStart);
aiv2.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv2.chargeStruct.chargeTypeId = m_data.chargeTypeId;
ddsVecFromPoly(poly, aiv2.form()); ddsVecFromPoly(poly, aiv2.form);
aiv2.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y())); aiv2.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y());
aiv2.boundingBoxTopRight(Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y())); aiv2.boundingBoxTopRight = Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y());
aiv2.aesTypeId(AesType::AtBoobyTrapSecondary); aiv2.aesTypeId = AesType::AtBoobyTrapSecondary;
aiv2.effectStateId(data().effectStateId); aiv2.effectStateId = data().effectStateId;
aiv2.id(1000 * m_data.id + AesType::AtBoobyTrapSecondary); aiv2.id = 1000 * m_data.id + static_cast<int>(AesType::AtBoobyTrapSecondary);
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv2.partyId(m_data.partyId); aiv2.partyId = m_data.partyId;
if (aiv2 != m_aiv2) if (aiv2 != m_aiv2)
{ {
aiv2.sampleTime(partitionTimeMSec()); aiv2.sampleTime = partitionTimeMSec();
m_aiv2 = aiv2; m_aiv2 = aiv2;
m_mainHandler->dds()->dts()->publish(aiv2); m_mainHandler->dds()->dts()->publish(aiv2);
emit newAiv(aiv2); emit newAiv(aiv2);
@@ -218,7 +218,7 @@ void ObjectBoobyTrap::removeTopics()
{ {
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
dts->removeBoobyTrapByKey(m_data.id); dts->removeBoobyTrapByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtBoobyTrap); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtBoobyTrap));
emit removeAiv(m_data.id); emit removeAiv(m_data.id);
} }
@@ -29,7 +29,7 @@ public:
*/ */
bool removeObjectFromDb(); bool removeObjectFromDb();
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType::AtBoobyTrap; } AesType aesType() const override { return AesType::AtBoobyTrap; }
bool isCentral() const override { return m_data.isCentral; } bool isCentral() const override { return m_data.isCentral; }
@@ -36,7 +36,7 @@ Core::FunctionReplyObject ObjectBorderline::createObject(const Database::AesBord
m_data = dbData; m_data = dbData;
m_data.effectStart = partitionTime(); m_data.effectStart = partitionTime();
m_data.effectStateId = AreaEffectSimulation::AesEffectState_def::EsCreated; m_data.effectStateId = AreaEffectSimulation::AesEffectState::EsCreated;
m_data.effectDuration = 0; m_data.effectDuration = 0;
m_data.chargeTypeId = 312; // see GearClass 1 -> 'pdm.pdm_charge_type' und 'pdm.pdm_gear_type_charge_type' in insert_pdm_values_xxx.sql m_data.chargeTypeId = 312; // see GearClass 1 -> 'pdm.pdm_charge_type' und 'pdm.pdm_gear_type_charge_type' in insert_pdm_values_xxx.sql
@@ -58,7 +58,7 @@ Core::FunctionReplyObject ObjectBorderline::createObject(const Database::AesBord
{ {
dbSegment.id = 0; // Reset for insert. Otherwise second segment cannot be inserted! dbSegment.id = 0; // Reset for insert. Otherwise second segment cannot be inserted!
dbSegment.borderlineId = m_data.privBorderlineId; // db dbSegment.borderlineId = m_data.privBorderlineId; // db
dbSegment.position = QPointF(ddsSegments[i].lon(), ddsSegments[i].lat()); dbSegment.position = QPointF(ddsSegments[i].lon, ddsSegments[i].lat);
dbSegment.positionIndex = i; dbSegment.positionIndex = i;
if (!m_mainHandler->db()->insert(dbSegment)) if (!m_mainHandler->db()->insert(dbSegment))
@@ -120,7 +120,7 @@ Core::FunctionReplyObject ObjectBorderline::updateObject(const Database::AesBord
// update all segments in tmpDbSegments // update all segments in tmpDbSegments
for (size_t i = 0; i < ddsSegments.size(); ++i) for (size_t i = 0; i < ddsSegments.size(); ++i)
{ {
tmpDbSegments[i].position = QPointF(ddsSegments[i].lon(), ddsSegments[i].lat()); tmpDbSegments[i].position = QPointF(ddsSegments[i].lon, ddsSegments[i].lat);
tmpDbSegments[i].positionIndex = i; tmpDbSegments[i].positionIndex = i;
} }
@@ -174,19 +174,19 @@ void ObjectBorderline::onPublishData()
AreaEffectSimulation::Borderline ddsData; AreaEffectSimulation::Borderline ddsData;
ddsData.id(m_data.id); ddsData.id = m_data.id;
ddsData.name(m_data.name.toStdString()); ddsData.name = m_data.name.toStdString();
ddsData.operatorId(m_data.operatorId.isNull() ? 0 : m_data.operatorId.toInt()); ddsData.operatorId = m_data.operatorId.isNull() ? 0 : m_data.operatorId.toInt();
ddsData.isDeleted(effectState() == AesEffectState::EsRemoved); ddsData.isDeleted = effectState() == AesEffectState::EsRemoved;
ddsData.isUsed(false); ddsData.isUsed = false;
ddsData.sampleTime(m_mainHandler->dds()->currentPartitionTimeMSec()); ddsData.sampleTime = m_mainHandler->dds()->currentPartitionTimeMSec();
ddsData.chargeStruct().chargeTypeId(m_data.chargeTypeId); ddsData.chargeStruct.chargeTypeId = m_data.chargeTypeId;
ddsData.effectDuration(m_data.effectDuration); ddsData.effectDuration = m_data.effectDuration;
ddsData.effectStart(toOptional(toMSec(m_data.effectStart))); ddsData.effectStart = toOptional(toMSec(m_data.effectStart));
ddsData.effectStateId(effectState()); ddsData.effectStateId = effectState();
ddsData.partyId(toOptional(m_data.partyId)); ddsData.partyId = toOptional(m_data.partyId);
ddsData.participantId(toOptional(m_data.participantId)); ddsData.participantId = toOptional(m_data.participantId);
dbSegment2DdsSegment(m_dbSegments, ddsData.segments()); dbSegment2DdsSegment(m_dbSegments, ddsData.segments);
if (!m_mainHandler->dds()->dts()->publish(ddsData)) if (!m_mainHandler->dds()->dts()->publish(ddsData))
ERROR_LOG(m_logger) << "Error publishing AesBorderline-data to dds"; ERROR_LOG(m_logger) << "Error publishing AesBorderline-data to dds";
@@ -203,10 +203,10 @@ void ObjectBorderline::publishAiv()
poly[i] = m_dbSegments.at(i).position; poly[i] = m_dbSegments.at(i).position;
AesItemView aiv(m_aiv); AesItemView aiv(m_aiv);
aiv.aesItemId(m_data.id); aiv.aesItemId = m_data.id;
aiv.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv.chargeStruct.chargeTypeId = m_data.chargeTypeId;
aiv.effectStart(partitionTimeMSec()); aiv.effectStart = partitionTimeMSec();
ddsVecFromPoly(poly, aiv.form()); ddsVecFromPoly(poly, aiv.form);
const QRectF bounds(poly.boundingRect()); const QRectF bounds(poly.boundingRect());
// Hack // Hack
@@ -220,18 +220,18 @@ void ObjectBorderline::publishAiv()
y_topRight = bounds.topRight().y(); y_topRight = bounds.topRight().y();
y_bottmLeft = bounds.bottomLeft().y(); y_bottmLeft = bounds.bottomLeft().y();
} }
aiv.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.bottomLeft().x(), y_bottmLeft)); aiv.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.bottomLeft().x(), y_bottmLeft);
aiv.boundingBoxTopRight(Core::GeoPosition2D(bounds.topRight().x(), y_topRight)); aiv.boundingBoxTopRight = Core::GeoPosition2D(bounds.topRight().x(), y_topRight);
aiv.aesTypeId(AesType::AtBorderline); aiv.aesTypeId = AesType::AtBorderline;
aiv.effectStateId(effectState()); aiv.effectStateId = effectState();
aiv.id(1000 * m_data.id + AesType::AtBorderline); aiv.id = 1000 * m_data.id + static_cast<int>(AesType::AtBorderline);
aiv.partyId(m_data.partyId); aiv.partyId = m_data.partyId;
checkIsCentralAndPublish(aiv.form(), m_aiv.form(), m_data.isCentral); checkIsCentralAndPublish(aiv.form, m_aiv.form, m_data.isCentral);
if (aiv != m_aiv) if (aiv != m_aiv)
{ {
aiv.sampleTime(partitionTimeMSec()); aiv.sampleTime = partitionTimeMSec();
m_aiv = aiv; m_aiv = aiv;
m_mainHandler->dds()->dts()->publish(aiv); m_mainHandler->dds()->dts()->publish(aiv);
emit newAiv(aiv); emit newAiv(aiv);
@@ -243,7 +243,7 @@ void ObjectBorderline::removeTopics()
{ {
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
dts->removeBorderlineByKey(m_data.id); dts->removeBorderlineByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtBorderline); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtBorderline));
} }
QPolygonF ObjectBorderline::generateForm() QPolygonF ObjectBorderline::generateForm()
@@ -40,7 +40,7 @@ public:
Core::FunctionReplyObject removeObject() override; Core::FunctionReplyObject removeObject() override;
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType::AtBorderline; } AesType aesType() const override { return AesType::AtBorderline; }
bool isCentral() const override { return m_data.isCentral; } bool isCentral() const override { return m_data.isCentral; }
@@ -24,7 +24,7 @@ ObjectChargeEffect::ObjectChargeEffect(MainHandler *mainHandler, QObject *parent
: QObject(parent) : QObject(parent)
, m_mainHandler(mainHandler) , m_mainHandler(mainHandler)
, m_trajectoryId(-1) , m_trajectoryId(-1)
, m_state(AesEffectState::inner_enum::EsUnknown) , m_state(AesEffectState::EsUnknown)
, m_stateChanged(false) , m_stateChanged(false)
, m_stateTimer(new QTimer(this)) , m_stateTimer(new QTimer(this))
, m_logger(getLogger(QStringLiteral("ObjectChargeEffect"))) , m_logger(getLogger(QStringLiteral("ObjectChargeEffect")))
@@ -38,16 +38,16 @@ ObjectChargeEffect::ObjectChargeEffect(MainHandler *mainHandler, QObject *parent
Core::FunctionReplyObject ObjectChargeEffect::create(const ChargeEffectModifyRequest &data) Core::FunctionReplyObject ObjectChargeEffect::create(const ChargeEffectModifyRequest &data)
{ {
Core::FunctionReplyObject reply(data.id()); Core::FunctionReplyObject reply(data.id);
Database::AesChargeEffect dbData = functionTopicToDatabase(data); Database::AesChargeEffect dbData = functionTopicToDatabase(data);
if (!m_mainHandler) if (!m_mainHandler)
reply.setStr("Not possible to create ChargeEffect --> No MainHandler present."); reply.setStr("Not possible to create ChargeEffect --> No MainHandler present.");
else if (data.effectStart() < QDateTime::currentMSecsSinceEpoch()) else if (data.effectStart < QDateTime::currentMSecsSinceEpoch())
reply.setStr("Not possible to create ChargeEffect --> EffectStart has to be in the future."); reply.setStr("Not possible to create ChargeEffect --> EffectStart has to be in the future.");
else if (data.effectDuration() < 1000) else if (data.effectDuration < 1000)
reply.setStr("Not possible to create ChargeEffect --> EffectDuration must be at least 1000ms."); reply.setStr("Not possible to create ChargeEffect --> EffectDuration must be at least 1000ms.");
else if (data.name().empty()) else if (data.name.empty())
reply.setStr("Not possible to create ChargeEffect --> Name must not be empty."); reply.setStr("Not possible to create ChargeEffect --> Name must not be empty.");
else if (!m_mainHandler->db()->insert(dbData)) else if (!m_mainHandler->db()->insert(dbData))
reply.setStr("Not possible to create ChargeEffect --> Database insert failed."); reply.setStr("Not possible to create ChargeEffect --> Database insert failed.");
@@ -68,14 +68,14 @@ Core::FunctionReplyObject ObjectChargeEffect::create(const ChargeEffectModifyReq
Core::FunctionReplyObject ObjectChargeEffect::update(const ChargeEffectModifyRequest &data) Core::FunctionReplyObject ObjectChargeEffect::update(const ChargeEffectModifyRequest &data)
{ {
Core::FunctionReplyObject reply(data.id()); Core::FunctionReplyObject reply(data.id);
Database::AesChargeEffect dbData = functionTopicToDatabase(data); Database::AesChargeEffect dbData = functionTopicToDatabase(data);
if (!m_mainHandler) if (!m_mainHandler)
reply.setStr("Not possible to update ChargeEffect --> No MainHandler present."); reply.setStr("Not possible to update ChargeEffect --> No MainHandler present.");
else if (data.id() != m_data.id) else if (data.id != m_data.id)
reply.setStr("Not possible to update ChargeEffect --> Id mismatch."); reply.setStr("Not possible to update ChargeEffect --> Id mismatch.");
else if (m_state != AesEffectState::inner_enum::EsPrepared) else if (m_state != AesEffectState::EsPrepared)
{ {
// properties update is allowed!!! // properties update is allowed!!!
if (dbData.properties != m_data.properties) if (dbData.properties != m_data.properties)
@@ -83,7 +83,7 @@ Core::FunctionReplyObject ObjectChargeEffect::update(const ChargeEffectModifyReq
else else
reply.setStr("Not possible to update ChargeEffect --> It is not allowed to make changes EsState doesn't allow it."); reply.setStr("Not possible to update ChargeEffect --> It is not allowed to make changes EsState doesn't allow it.");
} }
else if (data.name().empty()) else if (data.name.empty())
reply.setStr("Not possible to update ChargeEffect --> Name must not be empty."); reply.setStr("Not possible to update ChargeEffect --> Name must not be empty.");
else if (!hasChanges(dbData)) else if (!hasChanges(dbData))
reply.setStr("Not possible to update ChargeEffect --> There are no changes."); reply.setStr("Not possible to update ChargeEffect --> There are no changes.");
@@ -150,19 +150,19 @@ Database::AesChargeEffect ObjectChargeEffect::functionTopicToDatabase(const Char
{ {
Database::AesChargeEffect dbData; Database::AesChargeEffect dbData;
dbData.id = data.id(); dbData.id = data.id;
dbData.name = QString::fromStdString(data.name()); dbData.name = QString::fromStdString(data.name);
dbData.chargeTypeId = data.chargeTypeId(); dbData.chargeTypeId = data.chargeTypeId;
dbData.igniterTypeId = data.igniterTypeId(); dbData.igniterTypeId = data.igniterTypeId;
dbData.effectDuration = data.effectDuration(); dbData.effectDuration = data.effectDuration;
dbData.effectStart = QDateTime::fromMSecsSinceEpoch(data.effectStart()); dbData.effectStart = QDateTime::fromMSecsSinceEpoch(data.effectStart);
dbData.gearTypeId = data.gearTypeId(); dbData.gearTypeId = data.gearTypeId;
dbData.originatorId = data.originatorId(); dbData.originatorId = data.originatorId;
dbData.originatorTypeId = static_cast<int>(data.originatorTypeId().underlying()); dbData.originatorTypeId = static_cast<int>(data.originatorTypeId);
dbData.position.setX(data.position().lon()); dbData.position.setX(data.position.lon);
dbData.position.setY(data.position().lat()); dbData.position.setY(data.position.lat);
dbData.position.setZ(data.position().z()); dbData.position.setZ(data.position.z);
dbData.properties = QString::fromStdString(data.properties()); dbData.properties = QString::fromStdString(data.properties);
return dbData; return dbData;
} }
@@ -173,21 +173,21 @@ ChargeEffect ObjectChargeEffect::dataBaseToDataTopic(const Database::AesChargeEf
{ {
ChargeEffect dataTopic; ChargeEffect dataTopic;
dataTopic.id(data.id); dataTopic.id = data.id;
dataTopic.name(data.name.toStdString()); dataTopic.name = data.name.toStdString();
dataTopic.chargeTypeId(data.chargeTypeId); dataTopic.chargeTypeId = data.chargeTypeId;
dataTopic.effectDuration(data.effectDuration); dataTopic.effectDuration = data.effectDuration;
dataTopic.effectStart(data.effectStart.toMSecsSinceEpoch()); dataTopic.effectStart = data.effectStart.toMSecsSinceEpoch();
dataTopic.igniterTypeId(data.igniterTypeId); dataTopic.igniterTypeId = data.igniterTypeId;
dataTopic.gearTypeId(data.gearTypeId); dataTopic.gearTypeId = data.gearTypeId;
dataTopic.originatorId(data.originatorId); dataTopic.originatorId = data.originatorId;
dataTopic.originatorTypeId(static_cast<ProjectDataManagement::StateChangeOriginator::inner_enum>(data.originatorTypeId)); dataTopic.originatorTypeId = static_cast<ProjectDataManagement::StateChangeOriginator>(data.originatorTypeId);
dataTopic.position().lon(data.position.x()); dataTopic.position.lon = data.position.x();
dataTopic.position().lat(data.position.y()); dataTopic.position.lat = data.position.y();
dataTopic.position().z(data.position.z()); dataTopic.position.z = data.position.z();
dataTopic.state(m_state); dataTopic.state = m_state;
dataTopic.properties(data.properties.toStdString()); dataTopic.properties = data.properties.toStdString();
dataTopic.sampleTime(m_mainHandler->dds()->currentPartitionTimeMSec()); dataTopic.sampleTime = m_mainHandler->dds()->currentPartitionTimeMSec();
return dataTopic; return dataTopic;
} }
@@ -243,24 +243,24 @@ bool ObjectChargeEffect::isFinished() const
void ObjectChargeEffect::onStateTimerTimeout() void ObjectChargeEffect::onStateTimerTimeout()
{ {
switch (m_state.underlying()) switch (m_state)
{ {
case AesEffectState::inner_enum::EsPrepared: case AesEffectState::EsPrepared:
case AesEffectState::inner_enum::EsActivated: case AesEffectState::EsActivated:
setNextState(); setNextState();
startStateTimer(); startStateTimer();
publish(); publish();
return; return;
case AesEffectState::inner_enum::EsExpired: case AesEffectState::EsExpired:
emit finished(m_data.id); emit finished(m_data.id);
return; return;
case AesEffectState::inner_enum::EsUnknown: case AesEffectState::EsUnknown:
case AesEffectState::inner_enum::EsError: case AesEffectState::EsError:
case AesEffectState::inner_enum::EsRemoved: case AesEffectState::EsRemoved:
case AesEffectState::inner_enum::EsCreated: case AesEffectState::EsCreated:
case AesEffectState::inner_enum::EsPaused: case AesEffectState::EsPaused:
default: default:
return; return;
} }
@@ -273,20 +273,20 @@ void ObjectChargeEffect::setNextState()
AesEffectState oldState = m_state; AesEffectState oldState = m_state;
m_stateChanged = false; m_stateChanged = false;
switch (m_state.underlying()) switch (m_state)
{ {
case AesEffectState::inner_enum::EsPrepared: case AesEffectState::EsPrepared:
m_state = AesEffectState::EsActivated; m_state = AesEffectState::EsActivated;
break; break;
case AesEffectState::inner_enum::EsActivated: case AesEffectState::EsActivated:
m_state = AesEffectState::EsExpired; m_state = AesEffectState::EsExpired;
break; break;
case AesEffectState::inner_enum::EsExpired: case AesEffectState::EsExpired:
case AesEffectState::inner_enum::EsUnknown: case AesEffectState::EsUnknown:
case AesEffectState::inner_enum::EsError: case AesEffectState::EsError:
case AesEffectState::inner_enum::EsRemoved: case AesEffectState::EsRemoved:
case AesEffectState::inner_enum::EsCreated: case AesEffectState::EsCreated:
case AesEffectState::inner_enum::EsPaused: case AesEffectState::EsPaused:
default: default:
m_state = AesEffectState::EsUnknown; m_state = AesEffectState::EsUnknown;
break; break;
@@ -309,11 +309,11 @@ void ObjectChargeEffect::calculateInitEffectState()
m_stateChanged = false; m_stateChanged = false;
if (QDateTime::currentMSecsSinceEpoch() < effectStartMsecs) if (QDateTime::currentMSecsSinceEpoch() < effectStartMsecs)
m_state = AesEffectState::inner_enum::EsPrepared; m_state = AesEffectState::EsPrepared;
else if (QDateTime::currentMSecsSinceEpoch() >= effectStartMsecs && QDateTime::currentMSecsSinceEpoch() < durationEndMsecs) else if (QDateTime::currentMSecsSinceEpoch() >= effectStartMsecs && QDateTime::currentMSecsSinceEpoch() < durationEndMsecs)
m_state = AesEffectState::inner_enum::EsActivated; m_state = AesEffectState::EsActivated;
else // expired else // expired
m_state = AesEffectState::inner_enum::EsExpired; m_state = AesEffectState::EsExpired;
if (oldState != m_state) if (oldState != m_state)
m_stateChanged = true; m_stateChanged = true;
@@ -324,9 +324,9 @@ void ObjectChargeEffect::calculateInitEffectState()
void ObjectChargeEffect::startStateTimer() void ObjectChargeEffect::startStateTimer()
{ {
switch (m_state.underlying()) switch (m_state)
{ {
case AesEffectState::inner_enum::EsPrepared: case AesEffectState::EsPrepared:
{ {
qint64 timeToActivatedMsecs = m_data.effectStart.toMSecsSinceEpoch() - QDateTime::currentMSecsSinceEpoch(); qint64 timeToActivatedMsecs = m_data.effectStart.toMSecsSinceEpoch() - QDateTime::currentMSecsSinceEpoch();
@@ -336,7 +336,7 @@ void ObjectChargeEffect::startStateTimer()
return; return;
} }
case AesEffectState::inner_enum::EsActivated: case AesEffectState::EsActivated:
{ {
qint64 timeToExpiredMsecs = m_data.effectStart.toMSecsSinceEpoch() + m_data.effectDuration - QDateTime::currentMSecsSinceEpoch(); qint64 timeToExpiredMsecs = m_data.effectStart.toMSecsSinceEpoch() + m_data.effectDuration - QDateTime::currentMSecsSinceEpoch();
@@ -346,7 +346,7 @@ void ObjectChargeEffect::startStateTimer()
return; return;
} }
case AesEffectState::inner_enum::EsExpired: case AesEffectState::EsExpired:
{ {
qint64 timeToFinishMsecs = m_data.effectStart.toMSecsSinceEpoch() + m_data.effectDuration + s_afterglowMsecs - QDateTime::currentMSecsSinceEpoch(); qint64 timeToFinishMsecs = m_data.effectStart.toMSecsSinceEpoch() + m_data.effectDuration + s_afterglowMsecs - QDateTime::currentMSecsSinceEpoch();
@@ -356,11 +356,11 @@ void ObjectChargeEffect::startStateTimer()
return; return;
} }
case AesEffectState::inner_enum::EsUnknown: case AesEffectState::EsUnknown:
case AesEffectState::inner_enum::EsError: case AesEffectState::EsError:
case AesEffectState::inner_enum::EsRemoved: case AesEffectState::EsRemoved:
case AesEffectState::inner_enum::EsCreated: case AesEffectState::EsCreated:
case AesEffectState::inner_enum::EsPaused: case AesEffectState::EsPaused:
default: default:
return; return;
} }
@@ -72,7 +72,7 @@ Core::FunctionReplyObject ObjectDangerArea::createObject(const Database::AesDang
Database::AesDangerSegment segment; Database::AesDangerSegment segment;
segment.id = 0; segment.id = 0;
segment.dangerAreaId = m_data.privDangerAreaId; // db segment.dangerAreaId = m_data.privDangerAreaId; // db
segment.position = QPointF(segmentDds.lon(), segmentDds.lat()); segment.position = QPointF(segmentDds.lon, segmentDds.lat);
// will update segment.id // will update segment.id
if (!m_mainHandler->db()->insert(segment)) if (!m_mainHandler->db()->insert(segment))
return Core::FunctionReplyObject(getRightId(m_data.id, originOc), tr_lts("dds", "Error inserting AesDangerSegment-data into database.")); return Core::FunctionReplyObject(getRightId(m_data.id, originOc), tr_lts("dds", "Error inserting AesDangerSegment-data into database."));
@@ -128,7 +128,7 @@ Core::FunctionReplyObject ObjectDangerArea::updateObject(const Database::AesDang
tmpSegments.resize(newSegmentSize); // if count is decreased tmpSegments.resize(newSegmentSize); // if count is decreased
for (size_t i = 0; i < segments.size(); ++i) for (size_t i = 0; i < segments.size(); ++i)
tmpSegments[i].position = QPointF(segments[i].lon(), segments[i].lat()); tmpSegments[i].position = QPointF(segments[i].lon, segments[i].lat);
for (const Database::AesDangerSegment &segment : qAsConst(tmpSegments)) for (const Database::AesDangerSegment &segment : qAsConst(tmpSegments))
{ {
@@ -174,7 +174,7 @@ void ObjectDangerArea::onPublishData()
m_data.properties.toStdString(), m_data.properties.toStdString(),
{}, {},
toOptional(m_data.associatedAesId)); toOptional(m_data.associatedAesId));
dbSegment2DdsSegment(m_segments, ddsData.segments()); dbSegment2DdsSegment(m_segments, ddsData.segments);
m_mainHandler->dds()->dts()->publish(ddsData); m_mainHandler->dds()->dts()->publish(ddsData);
publishAiv(); publishAiv();
@@ -191,30 +191,30 @@ void ObjectDangerArea::publishAiv()
poly[i] = m_segments.at(i).position; poly[i] = m_segments.at(i).position;
AesItemView aiv(m_aiv); AesItemView aiv(m_aiv);
aiv.aesItemId(m_data.id); aiv.aesItemId = m_data.id;
aiv.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv.chargeStruct.chargeTypeId = m_data.chargeTypeId;
aiv.effectStart(toMSec(m_data.effectStart)); aiv.effectStart = toMSec(m_data.effectStart);
ddsVecFromPoly(poly, aiv.form()); ddsVecFromPoly(poly, aiv.form);
const QRectF bounds(poly.boundingRect()); const QRectF bounds(poly.boundingRect());
aiv.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y())); aiv.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y());
aiv.boundingBoxTopRight(Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y())); aiv.boundingBoxTopRight = Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y());
aiv.aesTypeId(AesType::AtDangerArea); aiv.aesTypeId = AesType::AtDangerArea;
aiv.effectStateId(effectState()); aiv.effectStateId = effectState();
aiv.id(1000 * m_data.id + AesType::AtDangerArea); aiv.id = 1000 * m_data.id + static_cast<int>(AesType::AtDangerArea);
aiv.partyId(0); aiv.partyId = 0;
checkIsCentralAndPublish(aiv.form(), m_aiv.form(), m_data.isCentral); checkIsCentralAndPublish(aiv.form, m_aiv.form, m_data.isCentral);
if (aiv != m_aiv) if (aiv != m_aiv)
{ {
aiv.sampleTime(partitionTimeMSec()); aiv.sampleTime = partitionTimeMSec();
m_aiv = aiv; m_aiv = aiv;
m_mainHandler->dds()->dts()->publish(aiv); m_mainHandler->dds()->dts()->publish(aiv);
emit newAiv(aiv); emit newAiv(aiv);
} }
m_zone = LtsCoordTrans::UtmCoordinate::fromGeographic(poly[0]).zone; m_zone = LtsCoordTrans::UtmCoordinate::fromGeographic(poly[0]).zone;
m_utmPoly = utmPolyFromGeoVec(aiv.form(), m_zone); m_utmPoly = utmPolyFromGeoVec(aiv.form, m_zone);
onUpdateCorrelation(); onUpdateCorrelation();
} }
@@ -224,13 +224,13 @@ QPolygonF ObjectDangerArea::utmPolyFromGeoVec(const std::vector<Core::GeoPositio
if (geoPos.size() == 0) if (geoPos.size() == 0)
return QPolygonF(); return QPolygonF();
int actZone = LtsCoordTrans::UtmCoordinate::fromGeographic(geoPos.at(0).lon(),geoPos.at(0).lat(), zone).zone; int actZone = LtsCoordTrans::UtmCoordinate::fromGeographic(geoPos.at(0).lon,geoPos.at(0).lat, zone).zone;
QPolygonF retVal(geoPos.size()); QPolygonF retVal(geoPos.size());
int i=0; int i=0;
for(const auto &pos : geoPos) for(const auto &pos : geoPos)
{ {
LtsCoordTrans::UtmCoordinate utm = LtsCoordTrans::UtmCoordinate::fromGeographic(QPointF(pos.lon(), pos.lat()), actZone); LtsCoordTrans::UtmCoordinate utm = LtsCoordTrans::UtmCoordinate::fromGeographic(QPointF(pos.lon, pos.lat), actZone);
retVal[i++] = QPointF(utm.x, utm.y); retVal[i++] = QPointF(utm.x, utm.y);
} }
return retVal; return retVal;
@@ -240,7 +240,7 @@ void ObjectDangerArea::removeTopics()
{ {
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
dts->removeDangerAreaByKey(m_data.id); dts->removeDangerAreaByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::inner_enum::AtDangerArea); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtDangerArea));
for (int idx : qAsConst(m_correlatedAesItems)) for (int idx : qAsConst(m_correlatedAesItems))
dts->removeDangerAreaCorrelatedAesItemByKey(idForCorrelatedItem(idx)); dts->removeDangerAreaCorrelatedAesItemByKey(idForCorrelatedItem(idx));
m_correlatedAesItems.clear(); m_correlatedAesItems.clear();
@@ -285,9 +285,9 @@ void ObjectDangerArea::onUpdateCorrelation()
for(int newItem : newItems) for(int newItem : newItems)
{ {
DangerAreaCorrelatedAesItem item; DangerAreaCorrelatedAesItem item;
item.id(idForCorrelatedItem(newItem)); item.id = idForCorrelatedItem(newItem);
item.aesItemId(newItem); item.aesItemId = newItem;
item.dangerAreaId(m_data.id); // on dds - correct item.dangerAreaId = m_data.id; // on dds - correct
m_mainHandler->dds()->dts()->publish(item); m_mainHandler->dds()->dts()->publish(item);
} }
@@ -303,30 +303,30 @@ void ObjectDangerArea::onNewAiv(const AesItemView &itemView)
// Warning: TypeId not in Key, so don't process multiple AIV per Type! // Warning: TypeId not in Key, so don't process multiple AIV per Type!
// Todo: Change here if more than BC is needed // Todo: Change here if more than BC is needed
if (itemView.aesTypeId() != AesType_def::AtBCContamination) if (itemView.aesTypeId != AesType::AtBCContamination)
return; return;
if (effectState() != AesEffectState_def::EsActivated || if (effectState() != AesEffectState::EsActivated ||
itemView.effectStateId() != AesEffectState_def::EsActivated) itemView.effectStateId != AesEffectState::EsActivated)
{ {
// If ES of this DA or the Contamination changed from(!) Activated to Whatever, kill the correlation // If ES of this DA or the Contamination changed from(!) Activated to Whatever, kill the correlation
m_mainHandler->dds()->dts()->removeDangerAreaCorrelatedAesItemByKey(idForCorrelatedItem(itemView.aesItemId())); m_mainHandler->dds()->dts()->removeDangerAreaCorrelatedAesItemByKey(idForCorrelatedItem(itemView.aesItemId));
return; return;
} }
DEBUG_LOG(m_logger) << "New Aiv iof Type BC Contamination: " << itemView.aesItemId(); DEBUG_LOG(m_logger) << "New Aiv iof Type BC Contamination: " << itemView.aesItemId;
QPolygonF utmPolyBc = utmPolyFromGeoVec(itemView.form(), m_zone); QPolygonF utmPolyBc = utmPolyFromGeoVec(itemView.form, m_zone);
if (!intersects(m_utmPoly, utmPolyBc)) if (!intersects(m_utmPoly, utmPolyBc))
return; return;
DEBUG_LOG(m_logger) << "intersects with Danger Area:" << m_data.id; DEBUG_LOG(m_logger) << "intersects with Danger Area:" << m_data.id;
DangerAreaCorrelatedAesItem item; DangerAreaCorrelatedAesItem item;
item.id(idForCorrelatedItem(itemView.aesItemId())); item.id = idForCorrelatedItem(itemView.aesItemId);
item.aesItemId(itemView.aesItemId()); item.aesItemId = itemView.aesItemId;
item.dangerAreaId(m_data.id); item.dangerAreaId = m_data.id;
m_mainHandler->dds()->dts()->publish(item); m_mainHandler->dds()->dts()->publish(item);
m_correlatedAesItems += itemView.aesItemId(); m_correlatedAesItems += itemView.aesItemId;
} }
void ObjectDangerArea::onRemoveAiv(int32_t aesItemId) void ObjectDangerArea::onRemoveAiv(int32_t aesItemId)
@@ -33,7 +33,7 @@ public:
QVector<Database::AesDangerSegment> segments() const { return m_segments; } QVector<Database::AesDangerSegment> segments() const { return m_segments; }
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType::AtDangerArea; } AesType aesType() const override { return AesType::AtDangerArea; }
bool isCentral() const override { return m_data.isCentral; } bool isCentral() const override { return m_data.isCentral; }
@@ -96,7 +96,7 @@ public:
bool initialCalculations(QString *reasonOut = nullptr); bool initialCalculations(QString *reasonOut = nullptr);
void abortPreStartTimer(); void abortPreStartTimer();
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType::AtExplosionArea; } AesType aesType() const override { return AesType::AtExplosionArea; }
bool isCentral() const override { return m_data.isCentral; } bool isCentral() const override { return m_data.isCentral; }
@@ -169,10 +169,10 @@ void ObjectEffector::sendEffectorToDds()
DEBUG_LOG(m_logger) << "sendEffectorToDds NewState= " << m_effectorStateMachine->getCurrentStateStr() << ", participantId=" << m_participantId DEBUG_LOG(m_logger) << "sendEffectorToDds NewState= " << m_effectorStateMachine->getCurrentStateStr() << ", participantId=" << m_participantId
<< ", aesItemId=" << m_aesItemId; << ", aesItemId=" << m_aesItemId;
AreaEffectSimulation::Effector effector; AreaEffectSimulation::Effector effector;
effector.id(m_participantId); effector.id = m_participantId;
effector.effectorState(m_effectorStateMachine->getCurrentState()); effector.effectorState = m_effectorStateMachine->getCurrentState();
effector.aesItemId(m_aesItemId); effector.aesItemId = m_aesItemId;
effector.participantId(m_participantId); effector.participantId = m_participantId;
m_mainHandler->dds()->dts()->publish(effector); m_mainHandler->dds()->dts()->publish(effector);
} }
@@ -205,20 +205,20 @@ void ObjectEffector::setIndendedTrajectory(const std::vector<Core::RelativePosit
m_intendendTrajectory.clear(); m_intendendTrajectory.clear();
for (const Core::RelativePositionRelativeTime &geoPosRelTime : geometryRelativeToLaunchOrigin) for (const Core::RelativePositionRelativeTime &geoPosRelTime : geometryRelativeToLaunchOrigin)
{ {
double t = geoPosRelTime.relativeTime(); double t = geoPosRelTime.relativeTime;
double x = geoPosRelTime.offsetX(); double x = geoPosRelTime.offsetX;
double y = geoPosRelTime.offsetY(); double y = geoPosRelTime.offsetY;
double z = geoPosRelTime.offsetZ(); double z = geoPosRelTime.offsetZ;
m_intendendTrajectory.push_back({LtsUtils::QPoint3D(x, y, z), t}); m_intendendTrajectory.push_back({LtsUtils::QPoint3D(x, y, z), t});
} }
} }
void ObjectEffector::setEffectorData(const EffectorData &effectorData) void ObjectEffector::setEffectorData(const EffectorData &effectorData)
{ {
DEBUG_LOG(m_logger) << "setEffectorData" << ", effectorData.properties() = '" << effectorData.properties() << "'"; DEBUG_LOG(m_logger) << "setEffectorData" << ", effectorData.properties() = '" << effectorData.properties << "'";
m_effectorData = effectorData; m_effectorData = effectorData;
setIndendedTrajectory(effectorData.trajectoryRelative()); setIndendedTrajectory(effectorData.trajectoryRelative);
delete m_firingStrategy; delete m_firingStrategy;
m_firingStrategy = FiringStrategyFactory::createFiringStrategy(this); m_firingStrategy = FiringStrategyFactory::createFiringStrategy(this);
connect(m_firingStrategy, &AbstractFiringStrategy::signalFired, connect(m_firingStrategy, &AbstractFiringStrategy::signalFired,
@@ -176,15 +176,15 @@ bool ObjectExplosionArea::removeObjectFromDb()
Core::FunctionReplyObject ObjectExplosionArea::resumePause(const ExplosionAreaPauseResumeRequest &req) Core::FunctionReplyObject ObjectExplosionArea::resumePause(const ExplosionAreaPauseResumeRequest &req)
{ {
if (req.resumeExecution()) if (req.resumeExecution)
{ {
if (req.timeToResume().is_set()) if (req.timeToResume.is_set())
m_data.effectStart = QDateTime::fromMSecsSinceEpoch(req.timeToResume().get()); m_data.effectStart = QDateTime::fromMSecsSinceEpoch(req.timeToResume.get());
else else
m_data.effectStart = partitionTime(); m_data.effectStart = partitionTime();
if (req.remainingDuration().is_set()) if (req.remainingDuration.is_set())
m_data.effectDuration = req.remainingDuration().get(); m_data.effectDuration = req.remainingDuration.get();
// req.resumeSeed() currently not used, as it is calculated internaly. maybe in the future // req.resumeSeed() currently not used, as it is calculated internaly. maybe in the future
@@ -262,38 +262,38 @@ void ObjectExplosionArea::publishAiv()
const QRectF bounds(poly.boundingRect()); const QRectF bounds(poly.boundingRect());
AesItemView aiv(m_aiv); AesItemView aiv(m_aiv);
aiv.aesItemId(m_data.id); aiv.aesItemId = m_data.id;
aiv.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv.chargeStruct.chargeTypeId = m_data.chargeTypeId;
aiv.effectStart(toMSec(m_data.effectStart)); aiv.effectStart = toMSec(m_data.effectStart);
ddsVecFromPoly(poly, aiv.form()); ddsVecFromPoly(poly, aiv.form);
aiv.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.topLeft().x(), bounds.topLeft().y())); // QRectF's bigger values are at bottom aiv.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.topLeft().x(), bounds.topLeft().y()); // QRectF's bigger values are at bottom
aiv.boundingBoxTopRight(Core::GeoPosition2D(bounds.bottomRight().x(), bounds.bottomRight().y())); aiv.boundingBoxTopRight = Core::GeoPosition2D(bounds.bottomRight().x(), bounds.bottomRight().y());
aiv.aesTypeId(AesType::AtExplosionArea); aiv.aesTypeId = AesType::AtExplosionArea;
aiv.effectStateId(effectState()); aiv.effectStateId = effectState();
aiv.id(1000 * m_data.id + AesType::AtExplosionArea); aiv.id = 1000 * m_data.id + static_cast<int>(AesType::AtExplosionArea);
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv.partyId(m_data.partyId); aiv.partyId = m_data.partyId;
checkIsCentralAndPublish(aiv.form(), m_aiv.form(), m_data.isCentral); checkIsCentralAndPublish(aiv.form, m_aiv.form, m_data.isCentral);
const QVector<QPointF> singleExplosions = Polygons::explosionAreaSingleExplosions(data()); const QVector<QPointF> singleExplosions = Polygons::explosionAreaSingleExplosions(data());
AesItemView aiv2(m_aiv2); AesItemView aiv2(m_aiv2);
aiv2.aesItemId(m_data.id); aiv2.aesItemId = m_data.id;
aiv2.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv2.chargeStruct.chargeTypeId = m_data.chargeTypeId;
aiv2.effectStart(toMSec(m_data.effectStart)); aiv2.effectStart = toMSec(m_data.effectStart);
ddsVecFromPoly(singleExplosions, aiv2.form()); ddsVecFromPoly(singleExplosions, aiv2.form);
aiv2.boundingBoxBottomLeft(aiv.boundingBoxBottomLeft()); aiv2.boundingBoxBottomLeft = aiv.boundingBoxBottomLeft;
aiv2.boundingBoxTopRight(aiv.boundingBoxTopRight()); aiv2.boundingBoxTopRight = aiv.boundingBoxTopRight;
aiv2.aesTypeId(AesType::AtExplosionAreaSingleExplosions); aiv2.aesTypeId = AesType::AtExplosionAreaSingleExplosions;
aiv2.id(1000 * m_data.id + AesType::AtExplosionAreaSingleExplosions); aiv2.id = 1000 * m_data.id + static_cast<int>(AesType::AtExplosionAreaSingleExplosions);
aiv2.effectStateId(effectState()); aiv2.effectStateId = effectState();
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv2.partyId(m_data.partyId); aiv2.partyId = m_data.partyId;
if (aiv != m_aiv) if (aiv != m_aiv)
{ {
aiv.sampleTime(partitionTimeMSec()); aiv.sampleTime = partitionTimeMSec();
m_aiv = aiv; m_aiv = aiv;
m_mainHandler->dds()->dts()->publish(aiv); m_mainHandler->dds()->dts()->publish(aiv);
emit newAiv(aiv); emit newAiv(aiv);
@@ -301,7 +301,7 @@ void ObjectExplosionArea::publishAiv()
if (aiv2 != m_aiv2) if (aiv2 != m_aiv2)
{ {
aiv2.sampleTime(partitionTimeMSec()); aiv2.sampleTime = partitionTimeMSec();
m_aiv2 = aiv2; m_aiv2 = aiv2;
m_mainHandler->dds()->dts()->publish(aiv2); m_mainHandler->dds()->dts()->publish(aiv2);
emit newAiv(aiv2); emit newAiv(aiv2);
@@ -312,8 +312,8 @@ void ObjectExplosionArea::removeTopics()
{ {
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
dts->removeExplosionAreaByKey(m_data.id); dts->removeExplosionAreaByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtExplosionArea); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtExplosionArea));
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtExplosionAreaSingleExplosions); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtExplosionAreaSingleExplosions));
emit removeAiv(m_data.id); emit removeAiv(m_data.id);
} }
@@ -336,7 +336,7 @@ void ObjectExplosionArea::stopSingleExplosionHandling(AesEffectState newState)
{ {
m_singleExplosionTriggerTimer->stop(); m_singleExplosionTriggerTimer->stop();
if (m_data.effectStateId != AesEffectState_def::EsActivated) if (m_data.effectStateId != AesEffectState::EsActivated)
return; return;
// int chargeCountUntilLastStart = lrint((m_data.originalEffectDuration - m_data.effectDuration) / impactDeltaMSec()); // int chargeCountUntilLastStart = lrint((m_data.originalEffectDuration - m_data.effectDuration) / impactDeltaMSec());
@@ -401,18 +401,18 @@ void ObjectExplosionArea::checkNextSingleExplosion()
// publish new triggered explosions data here // publish new triggered explosions data here
TriggeredImpacts ti; TriggeredImpacts ti;
ti.id(1000 * m_data.id + AesType::AtExplosionAreaSingleExplosions); ti.id = 1000 * m_data.id + static_cast<int>(AesType::AtExplosionAreaSingleExplosions);
ti.aesItemId(m_data.id); ti.aesItemId = m_data.id;
ti.aesTypeId(AesType::AtExplosionAreaSingleExplosions); ti.aesTypeId = AesType::AtExplosionAreaSingleExplosions;
ti.sampleTime(partitionTimeMSec()); ti.sampleTime = partitionTimeMSec();
ti.impactCount(impactCount); ti.impactCount = impactCount;
ti.bitfield().resize((impactCount + 7) / 8); ti.bitfield.resize((impactCount + 7) / 8);
// not very fast but ok for now // not very fast but ok for now
for(int i = 0; i < impactCount; ++i) for(int i = 0; i < impactCount; ++i)
{ {
// Triggered Impact == 0, if impact has taken place // Triggered Impact == 0, if impact has taken place
LtsUtils::BitArray::setBit(ti.bitfield(), i, i >= curExplosionNumber); // not "<" -> explosion NUMBER LtsUtils::BitArray::setBit(ti.bitfield, i, i >= curExplosionNumber); // not "<" -> explosion NUMBER
} }
DEBUG_LOG(m_logger) << "Publishing TriggeredExplosions with curExplosionNumber " << curExplosionNumber; DEBUG_LOG(m_logger) << "Publishing TriggeredExplosions with curExplosionNumber " << curExplosionNumber;
@@ -31,7 +31,7 @@ public:
bool removeObjectFromDb(); bool removeObjectFromDb();
Core::FunctionReplyObject resumePause(const ExplosionAreaPauseResumeRequest &req); Core::FunctionReplyObject resumePause(const ExplosionAreaPauseResumeRequest &req);
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType::AtExplosionArea; } AesType aesType() const override { return AesType::AtExplosionArea; }
bool isCentral() const override { return m_data.isCentral; } bool isCentral() const override { return m_data.isCentral; }
@@ -80,7 +80,7 @@ Trajectory:
#define DUMP() dump(__FILE__, __LINE__) #define DUMP() dump(__FILE__, __LINE__)
// ToDo: mark the end of aes enum and update following (check Endemarke) // ToDo: mark the end of aes enum and update following (check Endemarke)
static_assert((int)AreaEffectSimulation::AesType_def::AtExplosionClusterGunToTargetLine < 100, "id may overlap at runtime"); static_assert((int)AreaEffectSimulation::AesType::AtExplosionClusterGunToTargetLine < 100, "id may overlap at runtime");
// Aufteilung der ids: // Aufteilung der ids:
// ExplosionCluster ddsData(m_data.id, // ExplosionCluster ddsData(m_data.id,
@@ -204,7 +204,7 @@ Core::FunctionReplyObject ObjectExplosionCluster::createObject(const Database::A
// external (externalId==0) -> claim required // external (externalId==0) -> claim required
// NASAT: AirSupport -> no claim required // NASAT: AirSupport -> no claim required
const bool bDoClaimPlannedCharge const bool bDoClaimPlannedCharge
= (data.id == 0) && (data.externalId <= 0) && (m_mainHandler->gearClassOfChargeTypeId(data.chargeTypeId) != ProjectDataManagement::GearClass_def::AirSupport); = (data.id == 0) && (data.externalId <= 0) && (m_mainHandler->gearClassOfChargeTypeId(data.chargeTypeId) != ProjectDataManagement::GearClass::GearClass_AirSupport);
if (bDoClaimPlannedCharge) // new, not read from db if (bDoClaimPlannedCharge) // new, not read from db
ret = m_mainHandler->chargeAdministrationHandler()->claimPlannedCharge(data.chargeTypeId, data.partyId, data.impactCount); ret = m_mainHandler->chargeAdministrationHandler()->claimPlannedCharge(data.chargeTypeId, data.partyId, data.impactCount);
@@ -392,7 +392,7 @@ Core::FunctionReplyObject ObjectExplosionCluster::updateObject(const Database::A
return Core::FunctionReplyObject(data.id, tr_lts("dds", "Error updating explosion cluster with id %1 in database.")).arg(m_data.id); return Core::FunctionReplyObject(data.id, tr_lts("dds", "Error updating explosion cluster with id %1 in database.")).arg(m_data.id);
} }
if ((data.externalId <= 0) && m_mainHandler->gearClassOfChargeTypeId(m_data.chargeTypeId) != ProjectDataManagement::GearClass_def::AirSupport) // internal if ((data.externalId <= 0) && m_mainHandler->gearClassOfChargeTypeId(m_data.chargeTypeId) != ProjectDataManagement::GearClass::GearClass_AirSupport) // internal
{ {
// this is for party change or charge type change // this is for party change or charge type change
if (data.partyId != m_data.partyId || data.chargeTypeId != m_data.chargeTypeId) if (data.partyId != m_data.partyId || data.chargeTypeId != m_data.chargeTypeId)
@@ -422,9 +422,9 @@ Core::FunctionReplyObject ObjectExplosionCluster::updateObject(const Database::A
// m_lastSentTriggeredExplosionNumber = -1; // m_lastSentTriggeredExplosionNumber = -1;
// reset some data: // reset some data:
m_aiv2.form().clear(); // enforce recalculation m_aiv2.form.clear(); // enforce recalculation
m_effects.singleEffects().clear(); m_effects.singleEffects.clear();
m_aivGunToTargetTrajectory.form().clear(); // enforce recalculation m_aivGunToTargetTrajectory.form.clear(); // enforce recalculation
m_temporaryData.reset(); // estimatedMaxFlightDurationMSec, mhPoints, mhWidth... m_temporaryData.reset(); // estimatedMaxFlightDurationMSec, mhPoints, mhWidth...
// keep in mind: if no participantId is provided: no gunToTargetLine will be calculated // keep in mind: if no participantId is provided: no gunToTargetLine will be calculated
@@ -495,7 +495,7 @@ bool ObjectExplosionCluster::initialCalculations(QString *reasonOut)
QVector<QPointF> mtps_asUtm; QVector<QPointF> mtps_asUtm;
if (m_data.explosionGeometryId.underlying() == AreaEffectSimulation::AesExplosionGeometry_def::EgRadial) if (m_data.explosionGeometryId == AreaEffectSimulation::AesExplosionGeometry::EgRadial)
mtps_asUtm = explosionClusterRadialToMtps(areaBlWithTla, m_data.mhpCountRequest, firingOriginUtm, centerUtm, &singleWidthOut, &singleHeightOut); mtps_asUtm = explosionClusterRadialToMtps(areaBlWithTla, m_data.mhpCountRequest, firingOriginUtm, centerUtm, &singleWidthOut, &singleHeightOut);
else else
mtps_asUtm = explosionClusterAreaToMtps(areaBlWithTla, m_data.mhpCountRequest, &singleWidthOut, &singleHeightOut); mtps_asUtm = explosionClusterAreaToMtps(areaBlWithTla, m_data.mhpCountRequest, &singleWidthOut, &singleHeightOut);
@@ -561,17 +561,17 @@ bool ObjectExplosionCluster::initialCalculations(QString *reasonOut)
// ... and retrieve the duration: // ... and retrieve the duration:
const TracjectoryData &tdRefGTL = m_trajectoryCont[-1]; const TracjectoryData &tdRefGTL = m_trajectoryCont[-1];
const TrajectoryTimeAware &trajTimeAwareGTL = tdRefGTL.trajectoryTimeAware; const TrajectoryTimeAware &trajTimeAwareGTL = tdRefGTL.trajectoryTimeAware;
const Core::GeoPositionRelativeTime &geoPosRelTimeRef = trajTimeAwareGTL.geometry().back(); const Core::GeoPositionRelativeTime &geoPosRelTimeRef = trajTimeAwareGTL.geometry.back();
m_temporaryData.calculatedFlightDurationMsec = geoPosRelTimeRef.relativeTime(); m_temporaryData.calculatedFlightDurationMsec = geoPosRelTimeRef.relativeTime;
m_temporaryData.estimatedMaxFlightDurationMSec = (geoPosRelTimeRef.relativeTime() * 1.1) + 5 * 1000; // ( *1.1) + (10 *1000) m_temporaryData.estimatedMaxFlightDurationMSec = (geoPosRelTimeRef.relativeTime * 1.1) + 5 * 1000; // ( *1.1) + (10 *1000)
m_temporaryData.calculatedFiringSpeed = TrajectoryGeneratorVulcano::defaultv0(); m_temporaryData.calculatedFiringSpeed = TrajectoryGeneratorVulcano::defaultv0();
m_temporaryData.calculatedPeakHeightAbs = tdRefGTL.peakHeightAbs; m_temporaryData.calculatedPeakHeightAbs = tdRefGTL.peakHeightAbs;
// to avoid re-calculation, store that at m_aivGunToTargetTrajectory. // to avoid re-calculation, store that at m_aivGunToTargetTrajectory.
// At publishAiv the new calculation will be skipped: // At publishAiv the new calculation will be skipped:
m_aivGunToTargetTrajectory.form(tdRefGTL.trajectoryGeometry); m_aivGunToTargetTrajectory.form = tdRefGTL.trajectoryGeometry;
m_aivGunToTargetTrajectoryDirty = true; m_aivGunToTargetTrajectoryDirty = true;
} }
else else
@@ -649,11 +649,11 @@ Core::FunctionReplyObject ObjectExplosionCluster::checkObjectData(const Database
using geoType = AreaEffectSimulation::AesExplosionGeometry_def; using geoType = AreaEffectSimulation::AesExplosionGeometry_def;
const geoType::type curExGeoType = data.explosionGeometryId.underlying(); const geoType::type curExGeoType = data.explosionGeometryId.underlying();
static const QVector<geoType::type> ecValidGeos = {AreaEffectSimulation::AesExplosionGeometry_def::EgAimPoint, // 0 -> default static const QVector<geoType::type> ecValidGeos = {AreaEffectSimulation::AesExplosionGeometry::EgAimPoint, // 0 -> default
AreaEffectSimulation::AesExplosionGeometry_def::EgPoint, AreaEffectSimulation::AesExplosionGeometry::EgPoint,
AreaEffectSimulation::AesExplosionGeometry_def::EgArea, AreaEffectSimulation::AesExplosionGeometry::EgArea,
AreaEffectSimulation::AesExplosionGeometry_def::EgRadial, AreaEffectSimulation::AesExplosionGeometry::EgRadial,
AreaEffectSimulation::AesExplosionGeometry_def::EgLine}; AreaEffectSimulation::AesExplosionGeometry::EgLine};
QString reason; QString reason;
@@ -707,7 +707,7 @@ bool ObjectExplosionCluster::removeObjectFromDb() { return m_mainHandler->db()->
Core::FunctionReplyObject ObjectExplosionCluster::resumePause(const ExplosionClusterPauseResumeRequest &req) Core::FunctionReplyObject ObjectExplosionCluster::resumePause(const ExplosionClusterPauseResumeRequest &req)
{ {
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
if (req.resumeExecution()) if (req.resumeExecution)
{ {
// resume // resume
DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " RESUME" << " ... "; DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " RESUME" << " ... ";
@@ -743,13 +743,13 @@ Core::FunctionReplyObject ObjectExplosionCluster::resumePause(const ExplosionClu
// if (req.resumeExecution()) // if (req.resumeExecution())
// { // {
// // resume // // resume
// if (req.timeToResume().is_set()) // if (req.timeToResume.is_set())
// m_data.effectStart = QDateTime::fromMSecsSinceEpoch(req.timeToResume().get()); // m_data.effectStart = QDateTime::fromMSecsSinceEpoch(req.timeToResume.get());
// else // else
// m_data.effectStart = partitionTime(); // m_data.effectStart = partitionTime();
// if (req.remainingDuration().is_set()) // if (req.remainingDuration.is_set())
// m_data.effectDuration = req.remainingDuration().get(); // m_data.effectDuration = req.remainingDuration.get();
// // req.resumeSeed() currently not used, as it is calculated internaly. maybe in the future // // req.resumeSeed() currently not used, as it is calculated internaly. maybe in the future
@@ -772,16 +772,16 @@ Core::FunctionReplyObject ObjectExplosionCluster::targetPositionsModify(const Ta
const qint64 now = partitionTimeMSec(); const qint64 now = partitionTimeMSec();
const qint64 remainingMsec = m_data.effectStart.toMSecsSinceEpoch() - now; const qint64 remainingMsec = m_data.effectStart.toMSecsSinceEpoch() - now;
DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " START" DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " START"
<< " TargetPositionsModifyRequest = " << req << ", s_counter = " << s_counter++ << ", current state = " << m_data.effectStateId.underlying() << " TargetPositionsModifyRequest = " << req << ", s_counter = " << s_counter++ << ", current state = " << m_data.effectStateId
<< ", now = " << now << ", effectStart = " << m_data.effectStart.toMSecsSinceEpoch() << ", remainingMsec = " << remainingMsec; << ", now = " << now << ", effectStart = " << m_data.effectStart.toMSecsSinceEpoch() << ", remainingMsec = " << remainingMsec;
DUMP(); DUMP();
const std::vector<Core::GeoPosition> &positions = req.positions(); const std::vector<Core::GeoPosition> &positions = req.positions;
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
if (m_data.effectStateId.underlying() == AreaEffectSimulation::AesEffectState_def::EsExpired) if (m_data.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired)
{ {
ret = Core::FunctionReplyObject(m_data.id, tr_lts("dds", "Error modifying explosion cluster with id %1 since object is already expired")).arg(m_data.id); ret = Core::FunctionReplyObject(m_data.id, tr_lts("dds", "Error modifying explosion cluster with id %1 since object is already expired")).arg(m_data.id);
ERROR_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " Error: " << ret.str(); ERROR_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " Error: " << ret.str();
@@ -815,11 +815,11 @@ Core::FunctionReplyObject ObjectExplosionCluster::targetPositionsModify(const Ta
return ret; return ret;
} }
const Core::GeoPosition &newTargetPos = req.positions().front(); const Core::GeoPosition &newTargetPos = req.positions.front();
const int explosionIndex = 0; const int explosionIndex = 0;
TracjectoryData &tdRef = m_trajectoryCont[explosionIndex]; TracjectoryData &tdRef = m_trajectoryCont[explosionIndex];
TrajectoryTimeAware &trajTimeAwareRef = tdRef.trajectoryTimeAware; TrajectoryTimeAware &trajTimeAwareRef = tdRef.trajectoryTimeAware;
std::vector<Core::GeoPositionRelativeTime> &trajectoryTimeAwareGeometry = trajTimeAwareRef.geometry(); std::vector<Core::GeoPositionRelativeTime> &trajectoryTimeAwareGeometry = trajTimeAwareRef.geometry;
if (trajectoryTimeAwareGeometry.empty()) if (trajectoryTimeAwareGeometry.empty())
{ {
@@ -860,17 +860,17 @@ Core::FunctionReplyObject ObjectExplosionCluster::targetPositionsModify(const Ta
// m_aiv2 CHANGES HERE // m_aiv2 CHANGES HERE
// //
std::vector<Core::GeoPosition> &formRef = m_aiv2.form(); std::vector<Core::GeoPosition> &formRef = m_aiv2.form;
// compare former and updated ImpactPos: context targetModify // compare former and updated ImpactPos: context targetModify
if (m_logger.isDebugEnabled()) if (m_logger.isDebugEnabled())
{ {
Core::GeoPosition &curImpactPosRef = formRef[explosionIndex]; Core::GeoPosition &curImpactPosRef = formRef[explosionIndex];
LtsCoordTrans::UtmCoordinate utm1 = LtsCoordTrans::UtmCoordinate::fromGeographic(curImpactPosRef.lon(), curImpactPosRef.lat()); LtsCoordTrans::UtmCoordinate utm1 = LtsCoordTrans::UtmCoordinate::fromGeographic(curImpactPosRef.lon, curImpactPosRef.lat);
const QVector3D u1Vec(utm1.x, utm1.y, curImpactPosRef.z()); const QVector3D u1Vec(utm1.x, utm1.y, curImpactPosRef.z);
LtsCoordTrans::UtmCoordinate utm2 = LtsCoordTrans::UtmCoordinate::fromGeographic(newTargetPos.lon(), newTargetPos.lat(), utm1.zone); LtsCoordTrans::UtmCoordinate utm2 = LtsCoordTrans::UtmCoordinate::fromGeographic(newTargetPos.lon, newTargetPos.lat, utm1.zone);
const QVector3D u2Vec(utm2.x, utm2.y, newTargetPos.z()); const QVector3D u2Vec(utm2.x, utm2.y, newTargetPos.z);
const QVector3D diff = u2Vec - u1Vec; const QVector3D diff = u2Vec - u1Vec;
DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " for explosionIndex " << explosionIndex << ", curImpactPosRef " << curImpactPosRef << ", utm1 " << utm1 DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " for explosionIndex " << explosionIndex << ", curImpactPosRef " << curImpactPosRef << ", utm1 " << utm1
@@ -882,10 +882,10 @@ Core::FunctionReplyObject ObjectExplosionCluster::targetPositionsModify(const Ta
curImpactPosRef = newTargetPos; curImpactPosRef = newTargetPos;
// Effects: // Effects:
std::vector<AreaEffectSimulation::SingleEffect> &singleEffectsRef = m_effects.singleEffects(); std::vector<AreaEffectSimulation::SingleEffect> &singleEffectsRef = m_effects.singleEffects;
SingleEffect &ref = singleEffectsRef[explosionIndex]; SingleEffect &ref = singleEffectsRef[explosionIndex];
ref.position(newTargetPos); ref.position = newTargetPos;
ref.zPlacement(AesZPlacement_def::ZpAbsolute); // intersection: change from draped to absolute ref.zPlacement = AesZPlacement::ZpAbsolute; // intersection: change from draped to absolute
// Trajectory // Trajectory
publishTrajectory(explosionIndex); publishTrajectory(explosionIndex);
@@ -937,7 +937,7 @@ Core::FunctionReplyObject ObjectExplosionCluster::checkPreConditionsComplete()
// keep start of svc in mind: // keep start of svc in mind:
Core::FunctionReplyObject ret; Core::FunctionReplyObject ret;
if (m_data.effectStateId.underlying() != AreaEffectSimulation::AesEffectState_def::EsExpired) if (m_data.effectStateId != AreaEffectSimulation::AesEffectState::EsExpired)
ret = checkPreConditions(); ret = checkPreConditions();
DUMP(); DUMP();
@@ -1109,20 +1109,20 @@ void ObjectExplosionCluster::onPublishData()
m_temporaryData.calculatedFlightDurationMsec, m_temporaryData.calculatedFlightDurationMsec,
m_data.peakHeight, m_data.peakHeight,
m_data.flightDuration); m_data.flightDuration);
ddsData.flightCurve(toOptional(fc)); ddsData.flightCurve = toOptional(fc);
} }
if (isVulcano()) if (isVulcano())
{ {
LaserGuiding lg(m_data.lcPrf, m_data.lcTermination, m_data.tapTimepoint, m_data.cloudBase); LaserGuiding lg(m_data.lcPrf, m_data.lcTermination, m_data.tapTimepoint, m_data.cloudBase);
ddsData.laserGuiding(toOptional(lg)); ddsData.laserGuiding = toOptional(lg);
} }
// publish only on real changes: // publish only on real changes:
if (m_explosionCluster != ddsData) if (m_explosionCluster != ddsData)
{ {
m_explosionCluster = ddsData; m_explosionCluster = ddsData;
ddsData.sampleTime(partitionTimeMSec()); // publish sampleTime, but do not store ddsData.sampleTime = partitionTimeMSec(); // publish sampleTime, but do not store
m_mainHandler->dds()->dts()->publish(ddsData); m_mainHandler->dds()->dts()->publish(ddsData);
} }
@@ -1138,14 +1138,14 @@ void ObjectExplosionCluster::onDetonationLocationReply(const DetonationLocationR
// int32_t explosionIndex, // explosionIndex // int32_t explosionIndex, // explosionIndex
// const Core::GeoPosition& position); // const Core::GeoPosition& position);
if (reply.id() != m_data.id) // aesItemId if (reply.id != m_data.id) // aesItemId
{ {
DEBUG_LOG(m_logger) << "ID mismatch: " << reply.id() << " != " << m_data.id; DEBUG_LOG(m_logger) << "ID mismatch: " << reply.id << " != " << m_data.id;
return; return;
} }
// do we have the initial geometry? // do we have the initial geometry?
const int explosionIndex = reply.index(); const int explosionIndex = reply.index;
if (!m_trajectoryCont.contains(explosionIndex)) if (!m_trajectoryCont.contains(explosionIndex))
{ {
DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << "unknown explosionIndex " DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << "unknown explosionIndex "
@@ -1153,8 +1153,8 @@ void ObjectExplosionCluster::onDetonationLocationReply(const DetonationLocationR
return; return;
} }
const Core::GeoPosition &replyPos = reply.position(); const Core::GeoPosition &replyPos = reply.position;
if ((replyPos.lon() < 0.00001) || (replyPos.lat() < 0.00001)) if ((replyPos.lon < 0.00001) || (replyPos.lat < 0.00001))
{ {
// no intersection // no intersection
DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " got DetonationLocationReply" DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " got DetonationLocationReply"
@@ -1167,7 +1167,7 @@ void ObjectExplosionCluster::onDetonationLocationReply(const DetonationLocationR
<< " : INTERSECTION - reply.position is: " << " : INTERSECTION - reply.position is: "
<< ", reply.index() = " << explosionIndex << ", reply.position() " << replyPos; << ", reply.index() = " << explosionIndex << ", reply.position() " << replyPos;
adjustTrajectoryToDetonationLocation(explosionIndex, replyPos, reply.buildingId()); adjustTrajectoryToDetonationLocation(explosionIndex, replyPos, reply.buildingId);
} }
// publish new triggered explosions data here // publish new triggered explosions data here
@@ -1178,7 +1178,7 @@ void ObjectExplosionCluster::onDetonationLocationReply(const DetonationLocationR
DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " Publishing AesItemView (AtExplosionClusterSingleExplosions) for TriggeredExplosions, explosionIndex " DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " Publishing AesItemView (AtExplosionClusterSingleExplosions) for TriggeredExplosions, explosionIndex "
<< explosionIndex; << explosionIndex;
m_aiv2.sampleTime(partitionTimeMSec()); m_aiv2.sampleTime = partitionTimeMSec();
// // m_mainHandler->dds()->dts()->publish(m_aiv2); // does anyone needs this topic??? // // m_mainHandler->dds()->dts()->publish(m_aiv2); // does anyone needs this topic???
m_aiv2HasChanged = false; m_aiv2HasChanged = false;
emit newAiv(m_aiv2); emit newAiv(m_aiv2);
@@ -1226,16 +1226,16 @@ void ObjectExplosionCluster::adjustTrajectoryToDetonationLocation(int explosionI
} }
const Core::GeoPosition &trajFront = trajectoryGeometry.front(); const Core::GeoPosition &trajFront = trajectoryGeometry.front();
const double distToOriginSquared = LtsCoordTrans::squareDistance(trajFront.lon(), trajFront.lat(), intersectionLocation.lon(), intersectionLocation.lat()); const double distToOriginSquared = LtsCoordTrans::squareDistance(trajFront.lon, trajFront.lat, intersectionLocation.lon, intersectionLocation.lat);
ProjectDataManagement::IgniterFunctionBase ignFunctionBase ProjectDataManagement::IgniterFunctionBase ignFunctionBase
= m_mainHandler->dds() = m_mainHandler->dds()
->pdmDtc() ->pdmDtc()
->getChargeTypeIgniterTypeIgniterFunction(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId) ->getChargeTypeIgniterTypeIgniterFunction(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId)
.igniterFunctionBaseId(); .igniterFunctionBaseId;
if ((ignFunctionBase == ProjectDataManagement::IgniterFunctionBase::IfbProximity) || (ignFunctionBase == ProjectDataManagement::IgniterFunctionBase::IfbImpact)) if ((ignFunctionBase == ProjectDataManagement::IgniterFunctionBase::IfbProximity) || (ignFunctionBase == ProjectDataManagement::IgniterFunctionBase::IfbImpact))
{ {
const double distTrajectorySquared = LtsCoordTrans::squareDistance(trajFront.lon(), trajFront.lat(), trajBack.lon(), trajBack.lat()); const double distTrajectorySquared = LtsCoordTrans::squareDistance(trajFront.lon, trajFront.lat, trajBack.lon, trajBack.lat);
if (distToOriginSquared > distTrajectorySquared) if (distToOriginSquared > distTrajectorySquared)
{ {
ERROR_LOG(m_logger) << "adjustTrajectoryToDetonationLocation " << m_data.id << "Detonation location is outside of trajectory for ID: " << m_data.id ERROR_LOG(m_logger) << "adjustTrajectoryToDetonationLocation " << m_data.id << "Detonation location is outside of trajectory for ID: " << m_data.id
@@ -1252,7 +1252,7 @@ void ObjectExplosionCluster::adjustTrajectoryToDetonationLocation(int explosionI
{ {
const Core::GeoPosition &curItem_geo = trajectoryGeometry[i - 1]; const Core::GeoPosition &curItem_geo = trajectoryGeometry[i - 1];
const double distStartSegmentSquared = LtsCoordTrans::squareDistance(curItem_geo.lon(), curItem_geo.lat(), trajectoryOrigin_geo.lon(), trajectoryOrigin_geo.lat()); const double distStartSegmentSquared = LtsCoordTrans::squareDistance(curItem_geo.lon, curItem_geo.lat, trajectoryOrigin_geo.lon, trajectoryOrigin_geo.lat);
// remove... // remove...
if (distStartSegmentSquared > distToOriginSquared) if (distStartSegmentSquared > distToOriginSquared)
{ {
@@ -1273,17 +1273,17 @@ void ObjectExplosionCluster::adjustTrajectoryToDetonationLocation(int explosionI
// //
// m_aiv2 CHANGES HERE // m_aiv2 CHANGES HERE
// //
std::vector<Core::GeoPosition> &formRef = m_aiv2.form(); std::vector<Core::GeoPosition> &formRef = m_aiv2.form;
Core::GeoPosition &curImpactPosRef = formRef[explosionIndex]; Core::GeoPosition &curImpactPosRef = formRef[explosionIndex];
// compare former and updated ImpactPos: context intersection // compare former and updated ImpactPos: context intersection
if (m_logger.isDebugEnabled()) if (m_logger.isDebugEnabled())
{ {
LtsCoordTrans::UtmCoordinate utm1 = LtsCoordTrans::UtmCoordinate::fromGeographic(curImpactPosRef.lon(), curImpactPosRef.lat()); LtsCoordTrans::UtmCoordinate utm1 = LtsCoordTrans::UtmCoordinate::fromGeographic(curImpactPosRef.lon, curImpactPosRef.lat);
const QVector3D u1Vec(utm1.x, utm1.y, curImpactPosRef.z()); const QVector3D u1Vec(utm1.x, utm1.y, curImpactPosRef.z);
LtsCoordTrans::UtmCoordinate utm2 = LtsCoordTrans::UtmCoordinate::fromGeographic(intersectionLocation.lon(), intersectionLocation.lat(), utm1.zone); LtsCoordTrans::UtmCoordinate utm2 = LtsCoordTrans::UtmCoordinate::fromGeographic(intersectionLocation.lon, intersectionLocation.lat, utm1.zone);
const QVector3D u2Vec(utm2.x, utm2.y, intersectionLocation.z()); const QVector3D u2Vec(utm2.x, utm2.y, intersectionLocation.z);
const QVector3D diff = u2Vec - u1Vec; const QVector3D diff = u2Vec - u1Vec;
DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " for explosionIndex " << explosionIndex << ", curImpactPosRef " << curImpactPosRef << ", utm1 " << utm1 DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " for explosionIndex " << explosionIndex << ", curImpactPosRef " << curImpactPosRef << ", utm1 " << utm1
@@ -1295,11 +1295,11 @@ void ObjectExplosionCluster::adjustTrajectoryToDetonationLocation(int explosionI
m_aiv2HasChanged = true; m_aiv2HasChanged = true;
// Effects: // Effects:
std::vector<AreaEffectSimulation::SingleEffect> &singleEffectsRef = m_effects.singleEffects(); std::vector<AreaEffectSimulation::SingleEffect> &singleEffectsRef = m_effects.singleEffects;
SingleEffect &ref = singleEffectsRef[explosionIndex]; SingleEffect &ref = singleEffectsRef[explosionIndex];
// ref.effectState(AesSingleEffectState_def::SesScheduled); // ref.effectState(AesSingleEffectState_def::SesScheduled);
ref.position(intersectionLocation); ref.position = intersectionLocation;
ref.zPlacement(AesZPlacement_def::ZpAbsolute); // intersection: change from draped to relative ref.zPlacement = AesZPlacement::ZpAbsolute; // intersection: change from draped to relative
// m_effectsHaveChanged = true; // m_effectsHaveChanged = true;
if (explosionIndex == m_data.impactCount - 1) if (explosionIndex == m_data.impactCount - 1)
@@ -1392,7 +1392,7 @@ void ObjectExplosionCluster::publishAiv()
if (bIsPoint && (m_lastSentTriggeredExplosionNumber == 1)) // 'move' only AFTER impact if (bIsPoint && (m_lastSentTriggeredExplosionNumber == 1)) // 'move' only AFTER impact
{ {
// on svcRestart, m_aiv2 may not been set. To avoid crash: // on svcRestart, m_aiv2 may not been set. To avoid crash:
const std::vector<Core::GeoPosition> &formRef = m_aiv2.form(); const std::vector<Core::GeoPosition> &formRef = m_aiv2.form;
DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " since isPointSimilar==true form has to be updated" DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " since isPointSimilar==true form has to be updated"
<< ", m_data.effectStateId = " << m_data.effectStateId << ", m_data.impactWidth = " << m_data.impactWidth << ", m_data.effectStateId = " << m_data.effectStateId << ", m_data.impactWidth = " << m_data.impactWidth
<< ", m_lastSentTriggeredExplosionNumber = " << m_lastSentTriggeredExplosionNumber << ", formRef.size() = " << formRef.size(); << ", m_lastSentTriggeredExplosionNumber = " << m_lastSentTriggeredExplosionNumber << ", formRef.size() = " << formRef.size();
@@ -1406,7 +1406,7 @@ void ObjectExplosionCluster::publishAiv()
else else
{ {
const Core::GeoPosition &impactPosition_geo3D = formRef[0]; const Core::GeoPosition &impactPosition_geo3D = formRef[0];
centerGeo = QPointF(impactPosition_geo3D.lon(), impactPosition_geo3D.lat()); centerGeo = QPointF(impactPosition_geo3D.lon, impactPosition_geo3D.lat);
} }
// ... and now take zog into account: // ... and now take zog into account:
double radius = m_data.impactWidth / 2.0; double radius = m_data.impactWidth / 2.0;
@@ -1425,22 +1425,22 @@ void ObjectExplosionCluster::publishAiv()
// Major // Major
// //
AesItemView aiv(m_aiv); AesItemView aiv(m_aiv);
aiv.aesItemId(m_data.id); aiv.aesItemId = m_data.id;
aiv.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv.chargeStruct.chargeTypeId = m_data.chargeTypeId;
aiv.effectStart(toMSec(m_data.effectStart)); aiv.effectStart = toMSec(m_data.effectStart);
ddsVecFromPoly(poly, aiv.form()); ddsVecFromPoly(poly, aiv.form);
aiv.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.topLeft().x(), bounds.topLeft().y())); // QRectF's bigger values are at bottom aiv.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.topLeft().x(), bounds.topLeft().y()); // QRectF's bigger values are at bottom
aiv.boundingBoxTopRight(Core::GeoPosition2D(bounds.bottomRight().x(), bounds.bottomRight().y())); aiv.boundingBoxTopRight = Core::GeoPosition2D(bounds.bottomRight().x(), bounds.bottomRight().y());
aiv.aesTypeId(AesType::AtExplosionCluster); aiv.aesTypeId = AesType::AtExplosionCluster;
aiv.effectStateId(effectState()); aiv.effectStateId = effectState();
aiv.id(1000 * m_data.id + AesType::AtExplosionCluster); aiv.id = 1000 * m_data.id + static_cast<int>(AesType::AtExplosionCluster);
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv.partyId(m_data.partyId); aiv.partyId = m_data.partyId;
// ObjectBaseTmpl::checkIsCentral honors pdm->isLaserGuidable // ObjectBaseTmpl::checkIsCentral honors pdm->isLaserGuidable
// and therefore isCentral is set to true; ) // and therefore isCentral is set to true; )
checkIsCentralAndPublish(aiv.form(), m_aiv.form(), m_data.isCentral); checkIsCentralAndPublish(aiv.form, m_aiv.form, m_data.isCentral);
// //
// SingleExplosions // SingleExplosions
@@ -1449,33 +1449,33 @@ void ObjectExplosionCluster::publishAiv()
if (isEcValid) if (isEcValid)
{ {
AesItemView aiv2(m_aiv2); AesItemView aiv2(m_aiv2);
aiv2.aesItemId(m_data.id); aiv2.aesItemId = m_data.id;
aiv2.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv2.chargeStruct.chargeTypeId = m_data.chargeTypeId;
aiv2.effectStart(toMSec(m_data.effectStart)); aiv2.effectStart = toMSec(m_data.effectStart);
// calculate just one time. // calculate just one time.
// maybe intersections of trajectories with building will 'adjust' some impact positions later. // maybe intersections of trajectories with building will 'adjust' some impact positions later.
if (aiv2.form().empty()) if (aiv2.form.empty())
{ {
if (isVulcano() || (m_data.externalId > 0)) // m_data.externalId > 0 -> HLA / SingleFire / PointGeometry if (isVulcano() || (m_data.externalId > 0)) // m_data.externalId > 0 -> HLA / SingleFire / PointGeometry
{ {
const QPointF &impactPointGeo const QPointF &impactPointGeo
= AreaEffectSimulation::Polygons::bottomLeft2CenterPoint(m_data.impactPosition, m_data.impactWidth, m_data.impactLength, m_data.rotationAngle); = AreaEffectSimulation::Polygons::bottomLeft2CenterPoint(m_data.impactPosition, m_data.impactWidth, m_data.impactLength, m_data.rotationAngle);
ddsVecFromPoly(QVector<QPointF>() << impactPointGeo, aiv2.form()); ddsVecFromPoly(QVector<QPointF>() << impactPointGeo, aiv2.form);
} }
else else
{ {
const QVector<QPointF> &singleExplosions = Polygons::explosionClusterSingleExplosionsGAUSS_Mtp(m_data, m_temporaryData.calculatedMhpRotationNorthDeg); const QVector<QPointF> &singleExplosions = Polygons::explosionClusterSingleExplosionsGAUSS_Mtp(m_data, m_temporaryData.calculatedMhpRotationNorthDeg);
ddsVecFromPoly(singleExplosions, aiv2.form()); ddsVecFromPoly(singleExplosions, aiv2.form);
} }
} }
aiv2.boundingBoxBottomLeft(aiv.boundingBoxBottomLeft()); aiv2.boundingBoxBottomLeft = aiv.boundingBoxBottomLeft;
aiv2.boundingBoxTopRight(aiv.boundingBoxTopRight()); aiv2.boundingBoxTopRight = aiv.boundingBoxTopRight;
aiv2.aesTypeId(AesType::AtExplosionClusterSingleExplosions); aiv2.aesTypeId = AesType::AtExplosionClusterSingleExplosions;
aiv2.id(1000 * m_data.id + AesType::AtExplosionClusterSingleExplosions); aiv2.id = 1000 * m_data.id + static_cast<int>(AesType::AtExplosionClusterSingleExplosions);
aiv2.effectStateId(effectState()); aiv2.effectStateId = effectState();
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv2.partyId(m_data.partyId); aiv2.partyId = m_data.partyId;
// //
// m_aiv2 CHANGES HERE // m_aiv2 CHANGES HERE
@@ -1489,25 +1489,25 @@ void ObjectExplosionCluster::publishAiv()
// emit newAiv(aiv2); // emit newAiv(aiv2);
// } // }
m_effects.id(1000 * m_data.id + AesType::AtExplosionClusterSingleExplosions); m_effects.id = 1000 * m_data.id + static_cast<int>(AesType::AtExplosionClusterSingleExplosions);
m_effects.aesItemId(m_data.id); m_effects.aesItemId = m_data.id;
m_effects.aesTypeId(AesType::AtExplosionClusterSingleExplosions); m_effects.aesTypeId = AesType::AtExplosionClusterSingleExplosions;
std::vector<AreaEffectSimulation::SingleEffect> &singleEffectsRef = m_effects.singleEffects(); std::vector<AreaEffectSimulation::SingleEffect> &singleEffectsRef = m_effects.singleEffects;
if (singleEffectsRef.empty()) if (singleEffectsRef.empty())
{ {
if (isVulcano() || (m_data.externalId > 0)) // m_data.externalId > 0 -> HLA / SingleFire / PointGeometry if (isVulcano() || (m_data.externalId > 0)) // m_data.externalId > 0 -> HLA / SingleFire / PointGeometry
{ {
singleEffectsRef.resize(1); singleEffectsRef.resize(1);
SingleEffect &seRef = singleEffectsRef.front(); SingleEffect &seRef = singleEffectsRef.front();
seRef.singleEffectState(AesSingleEffectState_def::SesScheduled); seRef.singleEffectState = AesSingleEffectState::SesScheduled;
const QPointF &impactPointGeo const QPointF &impactPointGeo
= AreaEffectSimulation::Polygons::bottomLeft2CenterPoint(m_data.impactPosition, m_data.impactWidth, m_data.impactLength, m_data.rotationAngle); = AreaEffectSimulation::Polygons::bottomLeft2CenterPoint(m_data.impactPosition, m_data.impactWidth, m_data.impactLength, m_data.rotationAngle);
// seRef.position(Core::GeoPosition(impactPointGeo.x(), impactPointGeo.y(), 0.0)); // seRef.position(Core::GeoPosition(impactPointGeo.x(), impactPointGeo.y(), 0.0));
const double elevation = getElevationFor(impactPointGeo, QStringLiteral("getElevationForSingleImpactVulcano")); const double elevation = getElevationFor(impactPointGeo, QStringLiteral("getElevationForSingleImpactVulcano"));
seRef.position(Core::GeoPosition(impactPointGeo.x(), impactPointGeo.y(), elevation)); seRef.position = Core::GeoPosition(impactPointGeo.x(), impactPointGeo.y(), elevation);
seRef.zPlacement(AesZPlacement_def::ZpDraped); seRef.zPlacement = AesZPlacement::ZpDraped;
} }
else else
{ {
@@ -1518,13 +1518,13 @@ void ObjectExplosionCluster::publishAiv()
for (const QPointF &singleExplosion : qAsConst(singleExplosions)) for (const QPointF &singleExplosion : qAsConst(singleExplosions))
{ {
SingleEffect se; SingleEffect se;
se.singleEffectState(AesSingleEffectState_def::SesScheduled); se.singleEffectState = AesSingleEffectState::SesScheduled;
// se.position(Core::GeoPosition(singleExplosion.x(), singleExplosion.y(), 0.0)); // se.position(Core::GeoPosition(singleExplosion.x(), singleExplosion.y(), 0.0));
const double elevation = getElevationFor(singleExplosion, QStringLiteral("getElevationForSingleEffect")); const double elevation = getElevationFor(singleExplosion, QStringLiteral("getElevationForSingleEffect"));
se.position(Core::GeoPosition(singleExplosion.x(), singleExplosion.y(), elevation)); se.position = Core::GeoPosition(singleExplosion.x(), singleExplosion.y(), elevation);
se.zPlacement(AesZPlacement_def::ZpDraped); se.zPlacement = AesZPlacement::ZpDraped;
// // se.effectTime(); // // se.effectTime();
singleEffectsRef.push_back(se); singleEffectsRef.push_back(se);
++explosionIndex; ++explosionIndex;
@@ -1535,11 +1535,11 @@ void ObjectExplosionCluster::publishAiv()
else else
{ {
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtExplosionClusterSingleExplosions); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtExplosionClusterSingleExplosions));
// up to s_maxTrajectoriesPerExplosionCluster are supported. One sample per trajectory. // up to s_maxTrajectoriesPerExplosionCluster are supported. One sample per trajectory.
const bool errorMsgIfSampleDoesNotExists = false; const bool errorMsgIfSampleDoesNotExists = false;
dts->removeEffectsByKey(1000 * m_data.id + AesType::AtExplosionClusterSingleExplosions, errorMsgIfSampleDoesNotExists); dts->removeEffectsByKey(1000 * m_data.id + static_cast<int>(AesType::AtExplosionClusterSingleExplosions), errorMsgIfSampleDoesNotExists);
} }
// //
@@ -1558,49 +1558,49 @@ void ObjectExplosionCluster::publishAiv()
// AtExplosionClusterGunToTargetLine is suppressed at map display, when main object changes to EsActivated // AtExplosionClusterGunToTargetLine is suppressed at map display, when main object changes to EsActivated
// So it does not have to be changed/published anymore. // So it does not have to be changed/published anymore.
// Especially helpful while restarting scvAes! // Especially helpful while restarting scvAes!
static QVector<AesEffectState_def::type> relevantEffStates = { static QVector<AesEffectState::type> relevantEffStates = {
AesEffectState_def::EsCreated, AesEffectState::EsCreated,
AesEffectState_def::EsPrepared, AesEffectState::EsPrepared,
AesEffectState_def::EsActivated, // 2026-05-27, N.Thoden: E01562-393: GTL auch bei EsFired anzeigen, daher auch bei EsActivated AesEffectState::EsActivated, // 2026-05-27, N.Thoden: E01562-393: GTL auch bei EsFired anzeigen, daher auch bei EsActivated
AesEffectState_def::EsFired, // 2026-05-27, N.Thoden: E01562-393: GTL auch bei EsFired anzeigen AesEffectState::EsFired, // 2026-05-27, N.Thoden: E01562-393: GTL auch bei EsFired anzeigen
}; };
DEBUG_LOG(m_logger) << " AtExplosionClusterGunToTargetLine RELEVANT " << relevantEffStates.contains(effectState().underlying()) << ", id " << m_data.id; DEBUG_LOG(m_logger) << " AtExplosionClusterGunToTargetLine RELEVANT " << relevantEffStates.contains(effectState()) << ", id " << m_data.id;
if (isEcValid && isOriginatorParticipantIdProvided() && // no Originator -> no curve if (isEcValid && isOriginatorParticipantIdProvided() && // no Originator -> no curve
relevantEffStates.contains(effectState().underlying())) relevantEffStates.contains(effectState()))
{ {
AesItemView aiv3(m_aivGunToTargetTrajectory); AesItemView aiv3(m_aivGunToTargetTrajectory);
aiv3.aesItemId(m_data.id); aiv3.aesItemId = m_data.id;
aiv3.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv3.chargeStruct.chargeTypeId = m_data.chargeTypeId;
// aiv3.effectStart(0); // aiv3.effectStart(0);
if (aiv3.form().empty()) if (aiv3.form.empty())
{ {
const std::vector<Core::GeoPosition> &form = ObjectExplosionCluster::generateGunToTargetForm(); const std::vector<Core::GeoPosition> &form = ObjectExplosionCluster::generateGunToTargetForm();
aiv3.form(form); aiv3.form = form;
if (form.size() > 2) if (form.size() > 2)
{ {
QPolygonF polyGTL; QPolygonF polyGTL;
polyGTL.reserve(2); polyGTL.reserve(2);
polyGTL.push_back(QPointF(form.front().lon(), form.front().lat())); polyGTL.push_back(QPointF(form.front().lon, form.front().lat));
polyGTL.push_back(QPointF(form.back().lon(), form.back().lat())); polyGTL.push_back(QPointF(form.back().lon, form.back().lat));
const QRectF boundsGTL(polyGTL.boundingRect()); const QRectF boundsGTL(polyGTL.boundingRect());
aiv3.boundingBoxBottomLeft(Core::GeoPosition2D(boundsGTL.topLeft().x(), boundsGTL.topLeft().y())); // QRectF's bigger values are at bottom aiv3.boundingBoxBottomLeft = Core::GeoPosition2D(boundsGTL.topLeft().x(), boundsGTL.topLeft().y()); // QRectF's bigger values are at bottom
aiv3.boundingBoxTopRight(Core::GeoPosition2D(boundsGTL.bottomRight().x(), boundsGTL.bottomRight().y())); aiv3.boundingBoxTopRight = Core::GeoPosition2D(boundsGTL.bottomRight().x(), boundsGTL.bottomRight().y());
} }
} }
aiv3.aesTypeId(AesType::AtExplosionClusterGunToTargetLine); aiv3.aesTypeId = AesType::AtExplosionClusterGunToTargetLine;
aiv3.id(1000 * m_data.id + AesType::AtExplosionClusterGunToTargetLine); aiv3.id = 1000 * m_data.id + static_cast<int>(AesType::AtExplosionClusterGunToTargetLine);
// aiv3.effectStateId(effectState()); // aiv3.effectStateId(effectState());
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv3.partyId(m_data.partyId); aiv3.partyId = m_data.partyId;
if (m_aivGunToTargetTrajectoryDirty || (aiv3 != m_aivGunToTargetTrajectory)) if (m_aivGunToTargetTrajectoryDirty || (aiv3 != m_aivGunToTargetTrajectory))
{ {
m_aivGunToTargetTrajectoryDirty = false; m_aivGunToTargetTrajectoryDirty = false;
m_aivGunToTargetTrajectory = aiv3; m_aivGunToTargetTrajectory = aiv3;
aiv3.sampleTime(partitionTimeMSec()); // publish sampleTime, but do not store aiv3.sampleTime = partitionTimeMSec(); // publish sampleTime, but do not store
m_mainHandler->dds()->dts()->publish(aiv3); m_mainHandler->dds()->dts()->publish(aiv3);
emit newAiv(aiv3); emit newAiv(aiv3);
} }
@@ -1609,7 +1609,7 @@ void ObjectExplosionCluster::publishAiv()
{ {
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
const bool errorMsgIfSampleDoesNotExists = false; const bool errorMsgIfSampleDoesNotExists = false;
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtExplosionClusterGunToTargetLine, errorMsgIfSampleDoesNotExists); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtExplosionClusterGunToTargetLine), errorMsgIfSampleDoesNotExists);
} }
// if (!setupParticipantOrigin()) // if (!setupParticipantOrigin())
@@ -1620,7 +1620,7 @@ void ObjectExplosionCluster::publishAiv()
if (aiv != m_aiv) if (aiv != m_aiv)
{ {
m_aiv = aiv; m_aiv = aiv;
aiv.sampleTime(partitionTimeMSec()); // publish sampleTime, but do not store aiv.sampleTime = partitionTimeMSec(); // publish sampleTime, but do not store
m_mainHandler->dds()->dts()->publish(aiv); m_mainHandler->dds()->dts()->publish(aiv);
emit newAiv(aiv); emit newAiv(aiv);
} }
@@ -1642,12 +1642,12 @@ void ObjectExplosionCluster::removeTopics()
dts->removeExplosionClusterByKey(m_data.id, errorMsgIfSampleDoesNotExists); dts->removeExplosionClusterByKey(m_data.id, errorMsgIfSampleDoesNotExists);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtExplosionCluster, errorMsgIfSampleDoesNotExists); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtExplosionCluster), errorMsgIfSampleDoesNotExists);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtExplosionClusterSingleExplosions, errorMsgIfSampleDoesNotExists); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtExplosionClusterSingleExplosions), errorMsgIfSampleDoesNotExists);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtExplosionClusterGunToTargetLine, errorMsgIfSampleDoesNotExists); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtExplosionClusterGunToTargetLine), errorMsgIfSampleDoesNotExists);
// ti.id(1000 * m_data.id + AesType::AtExplosionClusterSingleExplosions); // ti.id(1000 * m_data.id + AesType::AtExplosionClusterSingleExplosions);
dts->removeTriggeredImpactsByKey(1000 * m_data.id + AesType::AtExplosionClusterSingleExplosions, errorMsgIfSampleDoesNotExists); dts->removeTriggeredImpactsByKey(1000 * m_data.id + static_cast<int>(AesType::AtExplosionClusterSingleExplosions), errorMsgIfSampleDoesNotExists);
#ifdef USE_TRAJECTORY_VIA_HANDLER #ifdef USE_TRAJECTORY_VIA_HANDLER
// remove TrajectoryTimeAware created via Handler: // remove TrajectoryTimeAware created via Handler:
@@ -1666,7 +1666,7 @@ void ObjectExplosionCluster::removeTopics()
// Effects / Impacts // Effects / Impacts
// m_effects.id (1000 * m_data.id + AesType::AtExplosionClusterSingleExplosions) // m_effects.id (1000 * m_data.id + AesType::AtExplosionClusterSingleExplosions)
dts->removeEffectsByKey(1000 * m_data.id + AesType::AtExplosionClusterSingleExplosions, errorMsgIfSampleDoesNotExists); dts->removeEffectsByKey(1000 * m_data.id + static_cast<int>(AesType::AtExplosionClusterSingleExplosions), errorMsgIfSampleDoesNotExists);
emit removeAiv(m_data.id); emit removeAiv(m_data.id);
} }
@@ -1694,7 +1694,7 @@ void ObjectExplosionCluster::removeTopics()
//{ //{
// m_singleExplosionTriggerTimer->stop(); // m_singleExplosionTriggerTimer->stop();
// if (m_data.effectStateId != AesEffectState_def::EsActivated) // if (m_data.effectStateId != AesEffectState::EsActivated)
// return; // return;
// // int chargeCountUntilLastStart = lrint((m_data.originalEffectDuration - m_data.effectDuration) / impactDeltaMSec()); // // int chargeCountUntilLastStart = lrint((m_data.originalEffectDuration - m_data.effectDuration) / impactDeltaMSec());
@@ -1752,7 +1752,7 @@ void ObjectExplosionCluster::checkNextFire()
// if (m_data.name.startsWith(QStringLiteral("SAAB"))) // if (m_data.name.startsWith(QStringLiteral("SAAB")))
// return; // return;
if (m_data.effectStateId == AreaEffectSimulation::AesEffectState_def::EsCreated) if (m_data.effectStateId == AreaEffectSimulation::AesEffectState::EsCreated)
{ {
DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " OBJECT IS EsCreated, RETURN;"; DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " OBJECT IS EsCreated, RETURN;";
return; return;
@@ -1923,7 +1923,7 @@ void ObjectExplosionCluster::onFiringTimerImpact(int currentExplosionNumber, int
const int curExplosionIndex = currentExplosionNumber - 1; const int curExplosionIndex = currentExplosionNumber - 1;
// Effects: // Effects:
std::vector<AreaEffectSimulation::SingleEffect> &singleEffectsRef = m_effects.singleEffects(); std::vector<AreaEffectSimulation::SingleEffect> &singleEffectsRef = m_effects.singleEffects;
if (singleEffectsRef.empty()) if (singleEffectsRef.empty())
{ {
WARNING_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " singleEffectsRef empty, currentExplosionNumber" << currentExplosionNumber; WARNING_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " singleEffectsRef empty, currentExplosionNumber" << currentExplosionNumber;
@@ -1938,16 +1938,16 @@ void ObjectExplosionCluster::onFiringTimerImpact(int currentExplosionNumber, int
continue; continue;
SingleEffect &ref = singleEffectsRef[idx]; SingleEffect &ref = singleEffectsRef[idx];
if (ref.singleEffectState().underlying() != AesSingleEffectState_def::SesTriggered) if (ref.singleEffectState != AesSingleEffectState::SesTriggered)
{ {
ref.singleEffectState(AesSingleEffectState_def::SesTriggered); ref.singleEffectState = AesSingleEffectState::SesTriggered;
ref.singleEffectTime(curPartTime); ref.singleEffectTime = curPartTime;
bChanged = true; bChanged = true;
} }
} // for } // for
if (bChanged) if (bChanged)
{ {
m_effects.sampleTime(curPartTime); m_effects.sampleTime = curPartTime;
m_mainHandler->dds()->dts()->publish(m_effects); m_mainHandler->dds()->dts()->publish(m_effects);
} }
} // if (singleEffectsRef.empty()) } // if (singleEffectsRef.empty())
@@ -1976,18 +1976,18 @@ void ObjectExplosionCluster::onFiringTimerStateChangeDelayedCommandAsInt(int cmd
// setEffectState(AesEffectState::EsActivated); // setEffectState(AesEffectState::EsActivated);
// return true; // return true;
AesEffectState newState = AesEffectState_def::EsUnknown; AesEffectState newState = AesEffectState::EsUnknown;
switch (cmd) switch (cmd)
{ {
case FiringTimer::CMD::CMD_START: case FiringTimer::CMD::CMD_START:
case FiringTimer::CMD::CMD_RESUME: case FiringTimer::CMD::CMD_RESUME:
newState = AesEffectState_def::EsActivated; newState = AesEffectState::EsActivated;
m_data.effectStart = partitionTime(); m_data.effectStart = partitionTime();
break; break;
case FiringTimer::CMD::CMD_PAUSE: case FiringTimer::CMD::CMD_PAUSE:
{ {
newState = AesEffectState_def::EsPaused; newState = AesEffectState::EsPaused;
m_data.effectStart = QDateTime(); // Invalid QDateTime to mark it paused m_data.effectStart = QDateTime(); // Invalid QDateTime to mark it paused
// //
@@ -2015,7 +2015,7 @@ void ObjectExplosionCluster::onFiringTimerStateChangeDelayedCommandAsInt(int cmd
} }
break; break;
case FiringTimer::CMD::CMD_EXPIRED_PLUS: case FiringTimer::CMD::CMD_EXPIRED_PLUS:
newState = AesEffectState_def::EsExpired; newState = AesEffectState::EsExpired;
DEBUG_LOG(m_logger) << "Expired!"; DEBUG_LOG(m_logger) << "Expired!";
m_data.effectDuration = m_data.originalEffectDuration; m_data.effectDuration = m_data.originalEffectDuration;
m_data.effectStart = m_data.originalEffectStart; m_data.effectStart = m_data.originalEffectStart;
@@ -2029,7 +2029,7 @@ void ObjectExplosionCluster::onFiringTimerStateChangeDelayedCommandAsInt(int cmd
DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " got signal stateChangeDelayed, setNewState " << newState DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " got signal stateChangeDelayed, setNewState " << newState
<< ", m_data.effectDuration = " << m_data.effectDuration << ", m_data.remainExplosionNumber (nextExplosion) = " << m_data.remainExplosionNumber; << ", m_data.effectDuration = " << m_data.effectDuration << ", m_data.remainExplosionNumber (nextExplosion) = " << m_data.remainExplosionNumber;
if (newState != AesEffectState_def::EsUnknown) if (newState != AesEffectState::EsUnknown)
setEffectState(newState); setEffectState(newState);
} }
@@ -2084,12 +2084,12 @@ bool ObjectExplosionCluster::generateTrajectory(int explosionNumber, bool startD
else else
{ {
// take impactPosition from form: // take impactPosition from form:
const std::vector<Core::GeoPosition> &formRef = m_aiv2.form(); const std::vector<Core::GeoPosition> &formRef = m_aiv2.form;
Q_ASSERT(formRef.size() > 0); Q_ASSERT(formRef.size() > 0);
Q_ASSERT(explosionIndex >= 0); Q_ASSERT(explosionIndex >= 0);
const Core::GeoPosition &impactPosition_geo3D = formRef[explosionIndex]; const Core::GeoPosition &impactPosition_geo3D = formRef[explosionIndex];
endPosition_geo2D = QPointF(impactPosition_geo3D.lon(), impactPosition_geo3D.lat()); endPosition_geo2D = QPointF(impactPosition_geo3D.lon, impactPosition_geo3D.lat);
DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " *** generateTrajectory to: explosionIndex=" << explosionIndex DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " *** generateTrajectory to: explosionIndex=" << explosionIndex
<< ", endPosition_geo2D = " << endPosition_geo2D; << ", endPosition_geo2D = " << endPosition_geo2D;
} }
@@ -2276,8 +2276,8 @@ bool ObjectExplosionCluster::generateTrajectory(int explosionNumber, bool startD
else else
{ {
DetonationLocationReply reply; DetonationLocationReply reply;
reply.id(m_data.id); reply.id = m_data.id;
reply.index(explosionIndex); reply.index = explosionIndex;
// reply.position(); // leave on default :-) // reply.position(); // leave on default :-)
onDetonationLocationReply(reply); onDetonationLocationReply(reply);
} }
@@ -2373,7 +2373,7 @@ bool ObjectExplosionCluster::generateTrajectoryVulcanoSpecific(int explosionNumb
alphaRad, alphaRad,
tapTime, tapTime,
options, options,
tdRef.trajectoryTimeAware.geometry(), tdRef.trajectoryTimeAware.geometry,
idealTapAbsoluteGeoOut, idealTapAbsoluteGeoOut,
&localReasonOut); &localReasonOut);
if (!localReasonOut.isEmpty()) if (!localReasonOut.isEmpty())
@@ -2399,7 +2399,7 @@ bool ObjectExplosionCluster::generateTrajectoryVulcanoSpecific(int explosionNumb
if (m_data.cloudBase > std::numeric_limits<int>::min()) if (m_data.cloudBase > std::numeric_limits<int>::min())
{ {
// get access to point tapT: // get access to point tapT:
std::vector<Core::GeoPositionRelativeTime> &geometryRef = tdRef.trajectoryTimeAware.geometry(); std::vector<Core::GeoPositionRelativeTime> &geometryRef = tdRef.trajectoryTimeAware.geometry;
std::vector<Core::GeoPositionRelativeTime>::reverse_iterator rit = geometryRef.rbegin(); std::vector<Core::GeoPositionRelativeTime>::reverse_iterator rit = geometryRef.rbegin();
const Core::GeoPositionRelativeTime impact = *rit; const Core::GeoPositionRelativeTime impact = *rit;
@@ -2407,7 +2407,7 @@ bool ObjectExplosionCluster::generateTrajectoryVulcanoSpecific(int explosionNumb
++rit; ++rit;
const Core::GeoPositionRelativeTime tapT = *rit; const Core::GeoPositionRelativeTime tapT = *rit;
const bool bTapT_strichRequested = (m_data.cloudBase < tapT.z()) && (impact.z() < m_data.cloudBase); const bool bTapT_strichRequested = (m_data.cloudBase < tapT.z) && (impact.z < m_data.cloudBase);
ERROR_LOG(m_logger) << " XXX cloudBase modification: " ERROR_LOG(m_logger) << " XXX cloudBase modification: "
<< ", tapT = " << tapT << ", m_data.cloudBase = " << m_data.cloudBase << ", impact = " << impact << ", tapT = " << tapT << ", m_data.cloudBase = " << m_data.cloudBase << ", impact = " << impact
@@ -2415,11 +2415,11 @@ bool ObjectExplosionCluster::generateTrajectoryVulcanoSpecific(int explosionNumb
if (bTapT_strichRequested) if (bTapT_strichRequested)
{ {
const LtsCoordTrans::UtmCoordinate impactUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(impact.lon(), impact.lat()); const LtsCoordTrans::UtmCoordinate impactUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(impact.lon, impact.lat);
const LtsCoordTrans::UtmCoordinate tapTUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(tapT.lon(), tapT.lat(), impactUtm.zone); const LtsCoordTrans::UtmCoordinate tapTUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(tapT.lon, tapT.lat, impactUtm.zone);
const QVector3D impactVec3D(impactUtm.x, impactUtm.y, impact.z()); const QVector3D impactVec3D(impactUtm.x, impactUtm.y, impact.z);
const QVector3D tapTVec3D(tapTUtm.x, tapTUtm.y, tapT.z()); const QVector3D tapTVec3D(tapTUtm.x, tapTUtm.y, tapT.z);
/* x | Tap (aka TapT) /* x | Tap (aka TapT)
// \ | // \ |
@@ -2457,14 +2457,14 @@ bool ObjectExplosionCluster::generateTrajectoryVulcanoSpecific(int explosionNumb
const QPointF &tapT_strichGeo = tapT_strichUtm.geographic(); const QPointF &tapT_strichGeo = tapT_strichUtm.geographic();
// Time // Time
double timeOffset = impact.relativeTime() - tapT.relativeTime(); double timeOffset = impact.relativeTime - tapT.relativeTime;
timeOffset *= scaleFactor; timeOffset *= scaleFactor;
Core::GeoPositionRelativeTime tapT_strichRelTime; Core::GeoPositionRelativeTime tapT_strichRelTime;
tapT_strichRelTime.lon() = tapT_strichGeo.x(); tapT_strichRelTime.lon = tapT_strichGeo.x();
tapT_strichRelTime.lat() = tapT_strichGeo.y(); tapT_strichRelTime.lat = tapT_strichGeo.y();
tapT_strichRelTime.z() = tapT_strich.z(); tapT_strichRelTime.z = tapT_strich.z();
tapT_strichRelTime.relativeTime(impact.relativeTime() - timeOffset); tapT_strichRelTime.relativeTime = impact.relativeTime - timeOffset;
DEBUG_LOG(m_logger) << " tapT_strichRelTime " << tapT_strichRelTime; DEBUG_LOG(m_logger) << " tapT_strichRelTime " << tapT_strichRelTime;
@@ -2478,7 +2478,7 @@ bool ObjectExplosionCluster::generateTrajectoryVulcanoSpecific(int explosionNumb
// "convert" from time-aware curve 'back' to time-unaware trajectoryGeometry // "convert" from time-aware curve 'back' to time-unaware trajectoryGeometry
tdRef.trajectoryGeometry.clear(); tdRef.trajectoryGeometry.clear();
for (const Core::GeoPositionRelativeTime &geoPosRelTime : qAsConst(tdRef.trajectoryTimeAware.geometry())) for (const Core::GeoPositionRelativeTime &geoPosRelTime : qAsConst(tdRef.trajectoryTimeAware.geometry))
tdRef.trajectoryGeometry.emplace_back(geoPosRelTime); // implicit // downcast tdRef.trajectoryGeometry.emplace_back(geoPosRelTime); // implicit // downcast
tdRef.peakHeightAbs = peakHeightRelToOrigin + originatorPosition_geo.z(); tdRef.peakHeightAbs = peakHeightRelToOrigin + originatorPosition_geo.z();
@@ -2523,17 +2523,17 @@ bool ObjectExplosionCluster::getFiringUnitOrigin(const int firingParticipantId,
return false; return false;
} }
const bool isLeaf = ppmDtc->participant(firingParticipantId).inferiorIds().empty(); // isLeaf means single (Participant and not a Unit) const bool isLeaf = ppmDtc->participant(firingParticipantId).inferiorIds.empty(); // isLeaf means single (Participant and not a Unit)
if (isLeaf) if (isLeaf)
{ {
const ParticipantManagement::ParticipantPosition &partPos = ppmDtc->participantPosition(firingParticipantId); const ParticipantManagement::ParticipantPosition &partPos = ppmDtc->participantPosition(firingParticipantId);
if (partPos.participantId() != firingParticipantId) if (partPos.participantId != firingParticipantId)
return false; return false;
// relative zValue -> absolute zValue: // relative zValue -> absolute zValue:
// Keep NASAT in mind sending 'height' via NasatPosition (normally, 'height' is relative to ground) // Keep NASAT in mind sending 'height' via NasatPosition (normally, 'height' is relative to ground)
const double zValue = getElevationFor({partPos.pos().lon(), partPos.pos().lat()}, QString(QStringLiteral("participantPosition_partId=%1")).arg(firingParticipantId)); const double zValue = getElevationFor({partPos.pos.lon, partPos.pos.lat}, QString(QStringLiteral("participantPosition_partId=%1")).arg(firingParticipantId));
firingOriginOut = LtsUtils::QPoint3D(partPos.pos().lon(), partPos.pos().lat(), partPos.pos().z() + zValue); firingOriginOut = LtsUtils::QPoint3D(partPos.pos.lon, partPos.pos.lat, partPos.pos.z + zValue);
} }
else else
{ {
@@ -2552,8 +2552,8 @@ bool ObjectExplosionCluster::getFiringUnitOrigin(const int firingParticipantId,
int idx = 0; int idx = 0;
for (Core::GeoPosition &geoPosRef : m_temporaryData.singleFiringPositions) for (Core::GeoPosition &geoPosRef : m_temporaryData.singleFiringPositions)
{ {
const double zValue = getElevationFor({geoPosRef.lon(), geoPosRef.lat()}, QString(QStringLiteral("firingCannonPosition_index_%1")).arg(idx++)); const double zValue = getElevationFor({geoPosRef.lon, geoPosRef.lat}, QString(QStringLiteral("firingCannonPosition_index_%1")).arg(idx++));
geoPosRef.z(zValue); geoPosRef.z = zValue;
} }
if (m_logger.isDebugEnabled()) if (m_logger.isDebugEnabled())
for (const Core::GeoPosition geoPosRef : m_temporaryData.singleFiringPositions) for (const Core::GeoPosition geoPosRef : m_temporaryData.singleFiringPositions)
@@ -2632,10 +2632,10 @@ LtsUtils::QPoint3D ObjectExplosionCluster::getFiringCannonGeoPosition(int explos
Core::GeoPosition geoPos = m_temporaryData.getFiringCannonGeoPosition(explosionIndex); Core::GeoPosition geoPos = m_temporaryData.getFiringCannonGeoPosition(explosionIndex);
// in case of missing coordinates for single cannons (or ModuleTest): // in case of missing coordinates for single cannons (or ModuleTest):
if (std::isnan(geoPos.lon()) || std::isnan(geoPos.lat()) || std::isnan(geoPos.z())) if (std::isnan(geoPos.lon) || std::isnan(geoPos.lat) || std::isnan(geoPos.z))
return m_data.firingCenterPosition; return m_data.firingCenterPosition;
return LtsUtils::QPoint3D(geoPos.lon(), geoPos.lat(), geoPos.z()); return LtsUtils::QPoint3D(geoPos.lon, geoPos.lat, geoPos.z);
} }
LtsUtils::QPoint3D ObjectExplosionCluster::getFiringCannonUtmPosition(int explosionIndex, int zoneToUse) const LtsUtils::QPoint3D ObjectExplosionCluster::getFiringCannonUtmPosition(int explosionIndex, int zoneToUse) const
@@ -2703,19 +2703,19 @@ void ObjectExplosionCluster::publishTrajectory(int explosionIndex)
// enable access to TracjectoryData and add time-awarenes // enable access to TracjectoryData and add time-awarenes
TracjectoryData &tdRef = m_trajectoryCont[explosionIndex]; TracjectoryData &tdRef = m_trajectoryCont[explosionIndex];
TrajectoryTimeAware &trajectoryTimeAwareRef = tdRef.trajectoryTimeAware; TrajectoryTimeAware &trajectoryTimeAwareRef = tdRef.trajectoryTimeAware;
trajectoryTimeAwareRef.id(1000 * m_data.id + 100 + explosionIndex); trajectoryTimeAwareRef.id = 1000 * m_data.id + 100 + explosionIndex;
trajectoryTimeAwareRef.sampleTime(partitionTimeMSec()); trajectoryTimeAwareRef.sampleTime = partitionTimeMSec();
// [E01562-259] use originatorId, originatorTypeId (instead of aesItemId, aesTypeId) // [E01562-259] use originatorId, originatorTypeId (instead of aesItemId, aesTypeId)
// trajectoryTimeAwareRef.aesItemId(m_data.id); // trajectoryTimeAwareRef.aesItemId(m_data.id);
// trajectoryTimeAwareRef.aesTypeId(AesType::AtExplosionClusterSingleTrajectory); // trajectoryTimeAwareRef.aesTypeId(AesType::AtExplosionClusterSingleTrajectory);
trajectoryTimeAwareRef.index(explosionIndex); trajectoryTimeAwareRef.index = explosionIndex;
if (isVulcano()) if (isVulcano())
{ {
// Time: // Time:
trajectoryTimeAwareRef.trajectoryStartTime(m_data.effectStart.toMSecsSinceEpoch() - m_temporaryData.calculatedFlightDurationMsec); trajectoryTimeAwareRef.trajectoryStartTime = m_data.effectStart.toMSecsSinceEpoch() - m_temporaryData.calculatedFlightDurationMsec;
#ifdef USE_TRAJECTORY_VIA_HANDLER #ifdef USE_TRAJECTORY_VIA_HANDLER
publishTrajectoryViaHandler(trajectoryTimeAwareRef); publishTrajectoryViaHandler(trajectoryTimeAwareRef);
@@ -2731,7 +2731,7 @@ void ObjectExplosionCluster::publishTrajectory(int explosionIndex)
{ {
// Time: // Time:
// use sample time since FiringTimer is initiates trajectory calculation // use sample time since FiringTimer is initiates trajectory calculation
trajectoryTimeAwareRef.trajectoryStartTime(trajectoryTimeAwareRef.sampleTime()); trajectoryTimeAwareRef.trajectoryStartTime = trajectoryTimeAwareRef.sampleTime;
const std::vector<Core::GeoPosition> &trajectoryGeometry = tdRef.trajectoryGeometry; const std::vector<Core::GeoPosition> &trajectoryGeometry = tdRef.trajectoryGeometry;
Core::GeoPosition first; Core::GeoPosition first;
@@ -2740,7 +2740,7 @@ void ObjectExplosionCluster::publishTrajectory(int explosionIndex)
DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " trajectoryGeometry=" << trajectoryGeometry.size() << ", first = " << first; DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " trajectoryGeometry=" << trajectoryGeometry.size() << ", first = " << first;
std::vector<Core::GeoPositionRelativeTime> &geometryRef = trajectoryTimeAwareRef.geometry(); std::vector<Core::GeoPositionRelativeTime> &geometryRef = trajectoryTimeAwareRef.geometry;
geometryRef.clear(); geometryRef.clear();
geometryRef.reserve(trajectoryGeometry.size()); geometryRef.reserve(trajectoryGeometry.size());
int idx = 0; int idx = 0;
@@ -2772,7 +2772,7 @@ void ObjectExplosionCluster::publishTrajectory(int explosionIndex)
} // if ((trajSize > 20) && (idx>1)) } // if ((trajSize > 20) && (idx>1))
} // if (!m_isAirSupportSource) } // if (!m_isAirSupportSource)
geometryRef.emplace_back(Core::GeoPositionRelativeTime(pos3D.lon(), pos3D.lat(), pos3D.z(), idx * flightDurationMSecSeg)); geometryRef.emplace_back(Core::GeoPositionRelativeTime(pos3D.lon, pos3D.lat, pos3D.z, idx * flightDurationMSecSeg));
++idx; ++idx;
} // for } // for
@@ -2785,7 +2785,7 @@ void ObjectExplosionCluster::publishTrajectory(int explosionIndex)
#endif #endif
DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " explosionIndex=" << explosionIndex << " has flightDurationMSecSeg=" << flightDurationMSecSeg DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " explosionIndex=" << explosionIndex << " has flightDurationMSecSeg=" << flightDurationMSecSeg
<< ", startTime = " << trajectoryTimeAwareRef.trajectoryStartTime() << ", geometry().size() = " << trajectoryTimeAwareRef.geometry().size(); << ", startTime = " << trajectoryTimeAwareRef.trajectoryStartTime << ", geometry().size() = " << trajectoryTimeAwareRef.geometry.size();
#ifdef USE_TRAJECTORY_VIA_HANDLER #ifdef USE_TRAJECTORY_VIA_HANDLER
publishTrajectoryViaHandler(trajectoryTimeAwareRef); publishTrajectoryViaHandler(trajectoryTimeAwareRef);
@@ -2801,20 +2801,20 @@ void ObjectExplosionCluster::publishTrajectory(int explosionIndex)
m_publisedTrajectoriesForDebug[explosionIndex] = QString(QStringLiteral("trajectoryPublished m_data.id=%1 - explosionIndex=%2 - trajectoryStarttime=%3 - size=%4")) m_publisedTrajectoriesForDebug[explosionIndex] = QString(QStringLiteral("trajectoryPublished m_data.id=%1 - explosionIndex=%2 - trajectoryStarttime=%3 - size=%4"))
.arg(m_data.id) .arg(m_data.id)
.arg(explosionIndex) .arg(explosionIndex)
.arg(trajectoryTimeAwareRef.trajectoryStartTime()) .arg(trajectoryTimeAwareRef.trajectoryStartTime)
.arg(trajectoryTimeAwareRef.geometry().size()); .arg(trajectoryTimeAwareRef.geometry.size());
DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " add to m_publisedTrajectoriesForDebug " << m_publisedTrajectoriesForDebug[explosionIndex]; DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " add to m_publisedTrajectoriesForDebug " << m_publisedTrajectoriesForDebug[explosionIndex];
DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " add to m_publisedTrajectoriesForDebug.size = " << m_publisedTrajectoriesForDebug.size(); DEBUG_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " add to m_publisedTrajectoriesForDebug.size = " << m_publisedTrajectoriesForDebug.size();
TRACE_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " XXXX 4 trajectoryTimeAware.geometry().size() = " << trajectoryTimeAwareRef.geometry().size() TRACE_LOG(m_logger) << LOGFUNCTION << " " << m_data.id << " XXXX 4 trajectoryTimeAware.geometry().size() = " << trajectoryTimeAwareRef.geometry.size()
// << ", bPublished=" << bPublished // << ", bPublished=" << bPublished
; ;
} }
void ObjectExplosionCluster::publishTrajectoryViaHandler(const TrajectoryTimeAware &trajectoryTimeAwareRef) void ObjectExplosionCluster::publishTrajectoryViaHandler(const TrajectoryTimeAware &trajectoryTimeAwareRef)
{ {
const int explosionIndex = trajectoryTimeAwareRef.index(); const int explosionIndex = trajectoryTimeAwareRef.index;
TrajectoryData trajData; TrajectoryData trajData;
trajData.id = m_trajectoryHandlerExplosionIndexToTopicId.value(explosionIndex, -1); // default value of -1 mean, create trajData.id = m_trajectoryHandlerExplosionIndexToTopicId.value(explosionIndex, -1); // default value of -1 mean, create
@@ -2824,17 +2824,17 @@ void ObjectExplosionCluster::publishTrajectoryViaHandler(const TrajectoryTimeAwa
// trajData.aesTypeId = AesType::AtExplosionClusterSingleTrajectory; // trajData.aesTypeId = AesType::AtExplosionClusterSingleTrajectory;
trajData.index = explosionIndex; trajData.index = explosionIndex;
trajData.originatorId = m_data.id; // m_data.id == aesItemId trajData.originatorId = m_data.id; // m_data.id == aesItemId
trajData.originatorTypeId = ProjectDataManagement::StateChangeOriginator::AreaEffectSimulation; trajData.originatorTypeId = ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_AreaEffectSimulation;
trajData.startTime = trajectoryTimeAwareRef.trajectoryStartTime(); trajData.startTime = trajectoryTimeAwareRef.trajectoryStartTime;
trajData.geometry = trajectoryTimeAwareRef.geometry(); trajData.geometry = trajectoryTimeAwareRef.geometry;
const int id = m_mainHandler->trajectoryHandler()->createUpdate(trajData); const int id = m_mainHandler->trajectoryHandler()->createUpdate(trajData);
DEBUG_LOG(m_logger) << LOGFUNCTION << "trajectoryHandler::createUpdate with id= " << id; DEBUG_LOG(m_logger) << LOGFUNCTION << "trajectoryHandler::createUpdate with id= " << id;
if (id < 0) if (id < 0)
{ {
ERROR_LOG(m_logger) << LOGFUNCTION << " ERROR, publish failed" << m_data.id << " explosionIndex=" << explosionIndex ERROR_LOG(m_logger) << LOGFUNCTION << " ERROR, publish failed" << m_data.id << " explosionIndex=" << explosionIndex
<< ", startTime = " << trajectoryTimeAwareRef.trajectoryStartTime() << ", geometry().size() = " << trajectoryTimeAwareRef.geometry().size(); << ", startTime = " << trajectoryTimeAwareRef.trajectoryStartTime << ", geometry().size() = " << trajectoryTimeAwareRef.geometry.size();
} }
// update internal lookup table: // update internal lookup table:
@@ -2995,12 +2995,12 @@ void ObjectExplosionCluster::dump(const char *file, int lineNo) const
DetonationLocationRequest ObjectExplosionCluster::detonationLocationRequest(int explosionIndex) const DetonationLocationRequest ObjectExplosionCluster::detonationLocationRequest(int explosionIndex) const
{ {
DetonationLocationRequest req; DetonationLocationRequest req;
req.id(m_data.id); // m_data.id == AesItemId req.id = m_data.id; // m_data.id == AesItemId
req.index(explosionIndex); req.index = explosionIndex;
req.chargeTypeId(m_data.chargeTypeId); req.chargeTypeId = m_data.chargeTypeId;
req.igniterTypeId(m_data.igniterTypeId); req.igniterTypeId = m_data.igniterTypeId;
req.igniterFunctionId(m_data.igniterFunctionId); req.igniterFunctionId = m_data.igniterFunctionId;
req.trajectory(m_trajectoryCont[explosionIndex].trajectoryGeometry); req.trajectory = m_trajectoryCont[explosionIndex].trajectoryGeometry;
return req; return req;
} }
@@ -79,7 +79,7 @@ public:
bool initialCalculations(QString *reasonOut = nullptr); bool initialCalculations(QString *reasonOut = nullptr);
void abortPreStartTimer(); void abortPreStartTimer();
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType::AtExplosionArea; } AesType aesType() const override { return AesType::AtExplosionArea; }
bool isCentral() const override { return m_data.isCentral; } bool isCentral() const override { return m_data.isCentral; }
@@ -169,23 +169,23 @@ void ObjectExplosionSingle::publishAiv()
const QRectF bounds(poly.boundingRect()); const QRectF bounds(poly.boundingRect());
AesItemView aiv(m_aiv); AesItemView aiv(m_aiv);
aiv.aesItemId(m_data.id); aiv.aesItemId = m_data.id;
aiv.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv.chargeStruct.chargeTypeId = m_data.chargeTypeId;
ddsVecFromPoly(poly, aiv.form()); ddsVecFromPoly(poly, aiv.form);
aiv.effectStart(toMSec(m_data.effectStart)); aiv.effectStart = toMSec(m_data.effectStart);
aiv.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y())); aiv.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y());
aiv.boundingBoxTopRight(Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y())); aiv.boundingBoxTopRight = Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y());
aiv.aesTypeId(AesType::AtExplosionSingle); aiv.aesTypeId = AesType::AtExplosionSingle;
aiv.effectStateId(effectState()); aiv.effectStateId = effectState();
aiv.id(1000 * m_data.id + AesType::AtExplosionSingle); aiv.id = 1000 * m_data.id + static_cast<int>(AesType::AtExplosionSingle);
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv.partyId(m_data.partyId); aiv.partyId = m_data.partyId;
checkIsCentralAndPublish(aiv.form(), m_aiv.form(), m_data.isCentral); checkIsCentralAndPublish(aiv.form, m_aiv.form, m_data.isCentral);
if (aiv != m_aiv) if (aiv != m_aiv)
{ {
aiv.sampleTime(partitionTimeMSec()); aiv.sampleTime = partitionTimeMSec();
m_aiv = aiv; m_aiv = aiv;
m_mainHandler->dds()->dts()->publish(aiv); m_mainHandler->dds()->dts()->publish(aiv);
emit newAiv(aiv); emit newAiv(aiv);
@@ -196,7 +196,7 @@ void ObjectExplosionSingle::removeTopics()
{ {
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
dts->removeExplosionSingleByKey(m_data.id); dts->removeExplosionSingleByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtExplosionSingle); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtExplosionSingle));
emit removeAiv(m_data.id); emit removeAiv(m_data.id);
} }
@@ -33,7 +33,7 @@ public:
bool removeObjectFromDb(); bool removeObjectFromDb();
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType::AtExplosionSingle; } AesType aesType() const override { return AesType::AtExplosionSingle; }
bool isCentral() const override { return m_data.isCentral; } bool isCentral() const override { return m_data.isCentral; }
@@ -42,7 +42,7 @@ Core::FunctionReplyObject ObjectFunctionalArea::createObject(const Database::Aes
m_dataAesFunctionalArea = data; m_dataAesFunctionalArea = data;
if (data.supplyMode == AesOperatingMode_def::OmWaitingTime) if (data.supplyMode == AesOperatingMode::OmWaitingTime)
{ {
setIsCentral = true; setIsCentral = true;
m_data.participantId = data.participantId; m_data.participantId = data.participantId;
@@ -198,23 +198,23 @@ void ObjectFunctionalArea::publishAiv()
const QRectF bounds(poly.boundingRect()); const QRectF bounds(poly.boundingRect());
AesItemView aiv(m_aiv); AesItemView aiv(m_aiv);
aiv.aesItemId(m_data.id); aiv.aesItemId = m_data.id;
aiv.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv.chargeStruct.chargeTypeId = m_data.chargeTypeId;
aiv.effectStart(toMSec(m_data.effectStart)); aiv.effectStart = toMSec(m_data.effectStart);
ddsVecFromPoly(poly, aiv.form()); ddsVecFromPoly(poly, aiv.form);
aiv.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y())); aiv.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y());
aiv.boundingBoxTopRight(Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y())); aiv.boundingBoxTopRight = Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y());
aiv.aesTypeId(AesType::AtFunctionalArea); aiv.aesTypeId = AesType::AtFunctionalArea;
aiv.effectStateId(effectState()); aiv.effectStateId = effectState();
aiv.id(1000 * m_data.id + AesType::AtFunctionalArea); aiv.id = 1000 * m_data.id + static_cast<int>(AesType::AtFunctionalArea);
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv.partyId(m_data.partyId); aiv.partyId = m_data.partyId;
checkIsCentralAndPublish(aiv.form(), m_aiv.form(), m_data.isCentral); checkIsCentralAndPublish(aiv.form, m_aiv.form, m_data.isCentral);
if (aiv != m_aiv) if (aiv != m_aiv)
{ {
aiv.sampleTime(partitionTimeMSec()); aiv.sampleTime = partitionTimeMSec();
m_aiv = aiv; m_aiv = aiv;
m_mainHandler->dds()->dts()->publish(aiv); m_mainHandler->dds()->dts()->publish(aiv);
emit newAiv(aiv); emit newAiv(aiv);
@@ -225,7 +225,7 @@ void ObjectFunctionalArea::removeTopics()
{ {
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
dts->removeFunctionalAreaByKey(m_data.id); dts->removeFunctionalAreaByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtFunctionalArea); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtFunctionalArea));
emit removeAiv(m_data.id); emit removeAiv(m_data.id);
} }
@@ -237,7 +237,7 @@ QPolygonF ObjectFunctionalArea::generateForm()
QPointF ObjectFunctionalArea::geographic2Utm(const Core::GeoPosition2D &geoPos, int *zone) QPointF ObjectFunctionalArea::geographic2Utm(const Core::GeoPosition2D &geoPos, int *zone)
{ {
const int zoneToUse = zone ? *zone : -1; const int zoneToUse = zone ? *zone : -1;
auto utm = LtsCoordTrans::UtmCoordinate::fromGeographic(geoPos.lon(), geoPos.lat(), zoneToUse); auto utm = LtsCoordTrans::UtmCoordinate::fromGeographic(geoPos.lon, geoPos.lat, zoneToUse);
if (zone) if (zone)
*zone = utm.zone; *zone = utm.zone;
return QPointF(utm.x, utm.y); return QPointF(utm.x, utm.y);
@@ -247,10 +247,10 @@ QPointF ObjectFunctionalArea::geographic2Utm(const Core::GeoPosition2D &geoPos,
void ObjectFunctionalArea::onParticipantPositionChanged(const ParticipantManagement::ParticipantPosition &data, DataModification modType) void ObjectFunctionalArea::onParticipantPositionChanged(const ParticipantManagement::ParticipantPosition &data, DataModification modType)
{ {
if (modType != DataModification::eRemoved && (data.participantId() == m_data.participantId)) if (modType != DataModification::eRemoved && (data.participantId == m_data.participantId))
{ {
DEBUG_LOG(m_logger) << " onParticipantPositionChanged....." DEBUG_LOG(m_logger) << " onParticipantPositionChanged....."
<< " participantId=" << data.participantId() << " participantId=" << data.participantId
<< " aesId=" << m_data.id << " aesId=" << m_data.id
<< " suppyParticipantId=" << m_data.participantId; << " suppyParticipantId=" << m_data.participantId;
DEBUG_LOG(m_logger) << "Supply Truck: onParticipantPositionChanged: " << data; DEBUG_LOG(m_logger) << "Supply Truck: onParticipantPositionChanged: " << data;
@@ -258,10 +258,10 @@ void ObjectFunctionalArea::onParticipantPositionChanged(const ParticipantManagem
{ {
int zone = -1; int zone = -1;
DEBUG_LOG(m_logger) << "New Supply Truck Position participantId: " << data.participantId() DEBUG_LOG(m_logger) << "New Supply Truck Position participantId: " << data.participantId
<< " pos: lat=" << data.pos().lat() << " lon=" << data.pos().lon(); << " pos: lat=" << data.pos.lat << " lon=" << data.pos.lon;
const QPointF participantPosUtmPoint = geographic2Utm(data.pos(), &zone); const QPointF participantPosUtmPoint = geographic2Utm(data.pos, &zone);
DEBUG_LOG(m_logger) << "participantPosUtmPoint=" << participantPosUtmPoint.x() << "/" << participantPosUtmPoint.y() DEBUG_LOG(m_logger) << "participantPosUtmPoint=" << participantPosUtmPoint.x() << "/" << participantPosUtmPoint.y()
<< " zone=" << zone; << " zone=" << zone;
@@ -275,7 +275,7 @@ void ObjectFunctionalArea::onParticipantPositionChanged(const ParticipantManagem
//double squareDistance = LtsCoordTrans::squareDistance(participantPosUtmPoint, activationPosUtmPoint); //double squareDistance = LtsCoordTrans::squareDistance(participantPosUtmPoint, activationPosUtmPoint);
const double distanceSquared = LtsCoordTrans::squareDistance(data.pos().lon(), data.pos().lat(), m_activatePos.lon(), m_activatePos.lat()); const double distanceSquared = LtsCoordTrans::squareDistance(data.pos.lon, data.pos.lat, m_activatePos.lon, m_activatePos.lat);
DEBUG_LOG(m_logger) << "squareDistance=" << distanceSquared DEBUG_LOG(m_logger) << "squareDistance=" << distanceSquared
<< " distance = " << sqrt(distanceSquared) << " distance = " << sqrt(distanceSquared)
<< " getMaximumStepLengthStanding=" << Settings::getMaximumStepLengthStanding(); << " getMaximumStepLengthStanding=" << Settings::getMaximumStepLengthStanding();
@@ -299,23 +299,23 @@ void ObjectFunctionalArea::onParticipantPositionChanged(const ParticipantManagem
} }
} }
} }
m_data.position.setX(data.pos().lon()); m_data.position.setX(data.pos.lon);
m_data.position.setY(data.pos().lat()); m_data.position.setY(data.pos.lat);
m_data.partyId = data.partyId(); m_data.partyId = data.partyId;
m_data.isCentral = true; m_data.isCentral = true;
m_dataAesFunctionalArea.position.setX(data.pos().lon()); m_dataAesFunctionalArea.position.setX(data.pos.lon);
m_dataAesFunctionalArea.position.setY(data.pos().lat()); m_dataAesFunctionalArea.position.setY(data.pos.lat);
m_dataAesFunctionalArea.partyId = data.partyId(); m_dataAesFunctionalArea.partyId = data.partyId;
m_dataAesFunctionalArea.isCentral = true; m_dataAesFunctionalArea.isCentral = true;
{ {
int zone = -1; int zone = -1;
const QPointF participantPosUtmPoint = geographic2Utm(data.pos(), &zone); const QPointF participantPosUtmPoint = geographic2Utm(data.pos, &zone);
QPointF utmPointShift; QPointF utmPointShift;
utmPointShift.setX(participantPosUtmPoint.x() - m_dataAesFunctionalArea.length / 2); utmPointShift.setX(participantPosUtmPoint.x() - m_dataAesFunctionalArea.length / 2);
utmPointShift.setY(participantPosUtmPoint.y() - m_dataAesFunctionalArea.width / 2); utmPointShift.setY(participantPosUtmPoint.y() - m_dataAesFunctionalArea.width / 2);
DEBUG_LOG(m_logger) << "data.pos=" << data.pos() DEBUG_LOG(m_logger) << "data.pos=" << data.pos
<< " participantPosUtmPoint=" << participantPosUtmPoint.x() << "/" << participantPosUtmPoint.y() << " participantPosUtmPoint=" << participantPosUtmPoint.x() << "/" << participantPosUtmPoint.y()
<< " utmPointShift=" << utmPointShift.x() << "/" << utmPointShift.y() << " utmPointShift=" << utmPointShift.x() << "/" << utmPointShift.y()
<< " length=" << m_dataAesFunctionalArea.length << " length=" << m_dataAesFunctionalArea.length
@@ -330,8 +330,8 @@ void ObjectFunctionalArea::onParticipantPositionChanged(const ParticipantManagem
QPointF point = utm.geographic(); QPointF point = utm.geographic();
m_activatePos.lon(point.x()); m_activatePos.lon = point.x();
m_activatePos.lat(point.y()); m_activatePos.lat = point.y();
m_dataAesFunctionalArea.position.setX(point.x()); m_dataAesFunctionalArea.position.setX(point.x());
m_dataAesFunctionalArea.position.setY(point.y()); m_dataAesFunctionalArea.position.setY(point.y());
m_data.position.setX(point.x()); m_data.position.setX(point.x());
@@ -361,7 +361,7 @@ void ObjectFunctionalArea::myTimerSlot()
// m_activePosAvailable = false; // m_activePosAvailable = false;
m_data.effectStateId = AesEffectState::EsActivated; m_data.effectStateId = AesEffectState::EsActivated;
m_dataAesFunctionalArea.effectStateId = AesEffectState::EsActivated; m_dataAesFunctionalArea.effectStateId = AesEffectState::EsActivated;
DEBUG_LOG(m_logger) << "TimerSlot Setze Supply-Truck active aesItemId=" << m_aiv.aesItemId() DEBUG_LOG(m_logger) << "TimerSlot Setze Supply-Truck active aesItemId=" << m_aiv.aesItemId
<< " participantId=" << m_data.participantId << " participantId=" << m_data.participantId
<< " effectStateId=" << m_data.effectStateId; << " effectStateId=" << m_data.effectStateId;
DEBUG_LOG(m_logger) << "onParticipantPositionChanged: Vor updateObject"; DEBUG_LOG(m_logger) << "onParticipantPositionChanged: Vor updateObject";
@@ -33,12 +33,12 @@ public:
bool removeObjectFromDb(); bool removeObjectFromDb();
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType::AtFunctionalArea; } AesType aesType() const override { return AesType::AtFunctionalArea; }
bool isCentral() const override bool isCentral() const override
{ {
if (m_data.supplyMode == AesOperatingMode_def::OmWaitingTime) if (m_data.supplyMode == AesOperatingMode::OmWaitingTime)
return true; return true;
return m_data.isCentral; return m_data.isCentral;
} }
@@ -39,7 +39,7 @@ Core::FunctionReplyObject ObjectGasPipe::createObject(const Database::AesGasPipe
m_data.operatorId = dbData.operatorId; m_data.operatorId = dbData.operatorId;
m_data.partyId = dbData.partyId; m_data.partyId = dbData.partyId;
m_data.effectStart = dbData.effectStart; m_data.effectStart = dbData.effectStart;
m_data.effectStateId = AreaEffectSimulation::AesEffectState_def::EsCreated; m_data.effectStateId = AreaEffectSimulation::AesEffectState::EsCreated;
m_data.effectDuration = dbData.effectDuration; m_data.effectDuration = dbData.effectDuration;
m_data.chargeTypeId = 461; // 105 Dummy m_data.chargeTypeId = 461; // 105 Dummy
@@ -61,7 +61,7 @@ Core::FunctionReplyObject ObjectGasPipe::createObject(const Database::AesGasPipe
{ {
dbSegment.id = 0; // Reset for insert. Otherwise second segment cannot be inserted! dbSegment.id = 0; // Reset for insert. Otherwise second segment cannot be inserted!
dbSegment.gasPipeId = m_data.privGasPipeId; // db dbSegment.gasPipeId = m_data.privGasPipeId; // db
dbSegment.position = QPointF(ddsSegments[i].lon(), ddsSegments[i].lat()); dbSegment.position = QPointF(ddsSegments[i].lon, ddsSegments[i].lat);
dbSegment.positionIndex = i; dbSegment.positionIndex = i;
if (!m_mainHandler->db()->insert(dbSegment)) if (!m_mainHandler->db()->insert(dbSegment))
@@ -128,7 +128,7 @@ Core::FunctionReplyObject ObjectGasPipe::updateObject(const Database::AesGasPipe
// update all segments in tmpDbSegments // update all segments in tmpDbSegments
for (size_t i = 0; i < ddsSegments.size(); ++i) for (size_t i = 0; i < ddsSegments.size(); ++i)
{ {
tmpDbSegments[i].position = QPointF(ddsSegments[i].lon(), ddsSegments[i].lat()); tmpDbSegments[i].position = QPointF(ddsSegments[i].lon, ddsSegments[i].lat);
tmpDbSegments[i].positionIndex = i; tmpDbSegments[i].positionIndex = i;
} }
@@ -183,20 +183,20 @@ void ObjectGasPipe::onPublishData()
AreaEffectSimulation::GasPipe ddsData; AreaEffectSimulation::GasPipe ddsData;
ddsData.id(m_data.id); ddsData.id = m_data.id;
ddsData.name(m_data.name.toStdString()); ddsData.name = m_data.name.toStdString();
ddsData.isDeleted(effectState() == AesEffectState::EsRemoved); ddsData.isDeleted = effectState() == AesEffectState::EsRemoved;
ddsData.isUsed(false); ddsData.isUsed = false;
ddsData.sampleTime(m_mainHandler->dds()->currentPartitionTimeMSec()); ddsData.sampleTime = m_mainHandler->dds()->currentPartitionTimeMSec();
ddsData.chargeStruct().chargeTypeId(m_data.chargeTypeId); ddsData.chargeStruct.chargeTypeId = m_data.chargeTypeId;
ddsData.effectDuration(m_data.effectDuration); ddsData.effectDuration = m_data.effectDuration;
ddsData.effectStart(toOptional(toMSec(m_data.effectStart))); ddsData.effectStart = toOptional(toMSec(m_data.effectStart));
ddsData.width(m_data.width); ddsData.width = m_data.width;
ddsData.effectStateId(effectState()); ddsData.effectStateId = effectState();
ddsData.partyId(toOptional(m_data.partyId)); ddsData.partyId = toOptional(m_data.partyId);
ddsData.participantId(toOptional(m_data.participantId)); ddsData.participantId = toOptional(m_data.participantId);
ddsData.isCentral(m_data.isCentral); ddsData.isCentral = m_data.isCentral;
dbSegment2DdsSegment(m_dbSegments, ddsData.segments()); dbSegment2DdsSegment(m_dbSegments, ddsData.segments);
if (!m_mainHandler->dds()->dts()->publish(ddsData)) if (!m_mainHandler->dds()->dts()->publish(ddsData))
ERROR_LOG(m_logger) << "Error publishing AesGasPipe-data to dds"; ERROR_LOG(m_logger) << "Error publishing AesGasPipe-data to dds";
@@ -211,22 +211,22 @@ void ObjectGasPipe::publishAiv()
const QRectF bounds(poly.boundingRect()); const QRectF bounds(poly.boundingRect());
AesItemView aiv(m_aiv); AesItemView aiv(m_aiv);
aiv.aesItemId(m_data.id); aiv.aesItemId = m_data.id;
aiv.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv.chargeStruct.chargeTypeId = m_data.chargeTypeId;
aiv.effectStart(partitionTimeMSec()); aiv.effectStart = partitionTimeMSec();
ddsVecFromPoly(poly, aiv.form()); ddsVecFromPoly(poly, aiv.form);
aiv.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y())); aiv.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y());
aiv.boundingBoxTopRight(Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y())); aiv.boundingBoxTopRight = Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y());
aiv.aesTypeId(AesType::AtGasPipe); aiv.aesTypeId = AesType::AtGasPipe;
aiv.effectStateId(effectState()); aiv.effectStateId = effectState();
aiv.id(1000 * m_data.id + AesType::AtGasPipe); aiv.id = 1000 * m_data.id + static_cast<int>(AesType::AtGasPipe);
aiv.partyId(m_data.partyId); aiv.partyId = m_data.partyId;
checkIsCentralAndPublish(aiv.form(), m_aiv.form(), m_data.isCentral); checkIsCentralAndPublish(aiv.form, m_aiv.form, m_data.isCentral);
if (aiv != m_aiv) if (aiv != m_aiv)
{ {
aiv.sampleTime(partitionTimeMSec()); aiv.sampleTime = partitionTimeMSec();
m_aiv = aiv; m_aiv = aiv;
m_mainHandler->dds()->dts()->publish(aiv); m_mainHandler->dds()->dts()->publish(aiv);
emit newAiv(aiv); emit newAiv(aiv);
@@ -238,7 +238,7 @@ void ObjectGasPipe::removeTopics()
{ {
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
dts->removeGasPipeByKey(m_data.id); dts->removeGasPipeByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtGasPipe); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtGasPipe));
} }
QPolygonF ObjectGasPipe::generateForm() QPolygonF ObjectGasPipe::generateForm()
@@ -40,7 +40,7 @@ public:
Core::FunctionReplyObject removeObject() override; Core::FunctionReplyObject removeObject() override;
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType::AtGasPipe; } AesType aesType() const override { return AesType::AtGasPipe; }
bool isCentral() const override { return m_data.isCentral; } bool isCentral() const override { return m_data.isCentral; }
@@ -74,25 +74,25 @@ bool ObjectMineArea::removeObjectFromDb() { return m_mainHandler->db()->removeAe
bool ObjectMineArea::isDusMineArea() const bool ObjectMineArea::isDusMineArea() const
{ {
return static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId)) return static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId))
== MineClass::DUS; == MineClass::DUS;
} }
bool ObjectMineArea::isConcreteMine() const bool ObjectMineArea::isConcreteMine() const
{ {
return static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId)) return static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId))
== MineClass::Concrete; == MineClass::Concrete;
} }
bool ObjectMineArea::isSingleVirtual() const bool ObjectMineArea::isSingleVirtual() const
{ {
return static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId)) return static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId))
== MineClass::VirtualSingle; == MineClass::VirtualSingle;
} }
bool ObjectMineArea::isVirtualMine() const bool ObjectMineArea::isVirtualMine() const
{ {
return static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId)) return static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId))
== MineClass::Virtual; == MineClass::Virtual;
} }
@@ -140,11 +140,11 @@ void ObjectMineArea::clearCorridor(const AesItemView &aiv)
return; return;
QPolygonF aivUtmPoly; QPolygonF aivUtmPoly;
aivUtmPoly.reserve(aiv.form().size()); aivUtmPoly.reserve(aiv.form.size());
int zone = LtsCoordTrans::UtmCoordinate::fromGeographic(aiv.form()[0].lon(), aiv.form()[0].lat()).zone; int zone = LtsCoordTrans::UtmCoordinate::fromGeographic(aiv.form[0].lon, aiv.form[0].lat).zone;
for (const auto &pos : aiv.form()) // Last Pos just for Length and Direction... for (const auto &pos : aiv.form) // Last Pos just for Length and Direction...
{ {
LtsCoordTrans::UtmCoordinate utmPos = LtsCoordTrans::UtmCoordinate::fromGeographic(pos.lon(), pos.lat(), zone); LtsCoordTrans::UtmCoordinate utmPos = LtsCoordTrans::UtmCoordinate::fromGeographic(pos.lon, pos.lat, zone);
aivUtmPoly.push_back(QPointF(utmPos.x, utmPos.y)); aivUtmPoly.push_back(QPointF(utmPos.x, utmPos.y));
} }
@@ -263,7 +263,7 @@ Core::FunctionReplyObject ObjectMineArea::createSegments(const std::vector<Core:
int count = 0; int count = 0;
outSegments.reserve(inSegments.size()); outSegments.reserve(inSegments.size());
LtsCoordTrans::UtmCoordinate start = LtsCoordTrans::UtmCoordinate::fromGeographic(inSegments[0].lon(), inSegments[0].lat()); LtsCoordTrans::UtmCoordinate start = LtsCoordTrans::UtmCoordinate::fromGeographic(inSegments[0].lon, inSegments[0].lat);
int zone = start.zone; int zone = start.zone;
totalLengthOut = 0.0; totalLengthOut = 0.0;
for (size_t i = 0; i < inSegments.size() - 1; ++i) // Last Pos just for Length and Direction... for (size_t i = 0; i < inSegments.size() - 1; ++i) // Last Pos just for Length and Direction...
@@ -272,10 +272,10 @@ Core::FunctionReplyObject ObjectMineArea::createSegments(const std::vector<Core:
newSegment.elementNumber = ++count; newSegment.elementNumber = ++count;
newSegment.mineAreaId = mineAreaId; newSegment.mineAreaId = mineAreaId;
newSegment.id = 0; newSegment.id = 0;
newSegment.startPosition = QPointF(inSegments[i].lon(), inSegments[i].lat()); newSegment.startPosition = QPointF(inSegments[i].lon, inSegments[i].lat);
newSegment.endPosition = QPointF(inSegments[i + 1].lon(), inSegments[i + 1].lat()); newSegment.endPosition = QPointF(inSegments[i + 1].lon, inSegments[i + 1].lat);
// calculate length // calculate length
const LtsCoordTrans::UtmCoordinate end = LtsCoordTrans::UtmCoordinate::fromGeographic(inSegments[i + 1].lon(), inSegments[i + 1].lat(), zone); const LtsCoordTrans::UtmCoordinate end = LtsCoordTrans::UtmCoordinate::fromGeographic(inSegments[i + 1].lon, inSegments[i + 1].lat, zone);
// QLine's y-axis is southbound! // QLine's y-axis is southbound!
QLineF line(QPointF(start.x, start.y), QPointF(end.x, end.y)); QLineF line(QPointF(start.x, start.y), QPointF(end.x, end.y));
// if (line.length() * density < 0.95) // We top that up to one mine later on. // if (line.length() * density < 0.95) // We top that up to one mine later on.
@@ -329,8 +329,8 @@ Core::FunctionReplyObject ObjectMineArea::createSegments(
const AreaEffectSimulation::MineSegment &segment = inSegments.at(i); const AreaEffectSimulation::MineSegment &segment = inSegments.at(i);
dbSegment.elementNumber = i; dbSegment.elementNumber = i;
dbSegment.startPosition = QPointF(segment.positionStart().lon(), segment.positionStart().lat()); dbSegment.startPosition = QPointF(segment.positionStart.lon, segment.positionStart.lat);
dbSegment.endPosition = QPointF(segment.positionEnd().lon(), segment.positionEnd().lat()); dbSegment.endPosition = QPointF(segment.positionEnd.lon, segment.positionEnd.lat);
dbSegment.mineAreaId = mineAreaId; dbSegment.mineAreaId = mineAreaId;
outSegments.push_back(std::move(dbSegment)); outSegments.push_back(std::move(dbSegment));
@@ -345,20 +345,20 @@ bool ObjectMineArea::publishTriggeredImpacts()
// Build an own tes-bitfield and compare, only store and publish if changed. // Build an own tes-bitfield and compare, only store and publish if changed.
TriggeredImpacts tis(m_tis); TriggeredImpacts tis(m_tis);
tis.impactCount(m_triggeredMines.size()); tis.impactCount = m_triggeredMines.size();
tis.bitfield().resize((m_triggeredMines.size() + 7) / 8); tis.bitfield.resize((m_triggeredMines.size() + 7) / 8);
int i = 0; int i = 0;
for (const auto &mine : qAsConst(m_triggeredMines)) for (const auto &mine : qAsConst(m_triggeredMines))
{ {
// Triggered Impact == 0, if mine is disarmed/exploded // Triggered Impact == 0, if mine is disarmed/exploded
LtsUtils::BitArray::setBit(tis.bitfield(), i++, !mine.isTriggered); LtsUtils::BitArray::setBit(tis.bitfield, i++, !mine.isTriggered);
} }
if ((m_tis != tis) || m_triggeredMinesChanged) if ((m_tis != tis) || m_triggeredMinesChanged)
{ {
m_tis = tis; m_tis = tis;
m_tis.sampleTime(partitionTimeMSec()); m_tis.sampleTime = partitionTimeMSec();
return m_mainHandler->dds()->dts()->publish(m_tis); return m_mainHandler->dds()->dts()->publish(m_tis);
} }
return true; return true;
@@ -370,19 +370,19 @@ bool ObjectMineArea::publishDusMineStatus()
// DusMineStatus mines vector is coherent to triggered impacts bitfield // DusMineStatus mines vector is coherent to triggered impacts bitfield
DusMineState dms(m_dms); DusMineState dms(m_dms);
dms.mines().resize(m_triggeredMines.size()); dms.mines.resize(m_triggeredMines.size());
int i = 0; int i = 0;
for (const auto &mine : qAsConst(m_triggeredMines)) for (const auto &mine : qAsConst(m_triggeredMines))
{ {
const DusMine entry(mine.mineId, mine.isTriggered, mine.chargeTypeId, {mine.position.x(), mine.position.y()}); const DusMine entry(mine.mineId, mine.isTriggered, mine.chargeTypeId, {mine.position.x(), mine.position.y()});
dms.mines()[i++] = entry; dms.mines[i++] = entry;
} }
if (m_dms != dms || m_triggeredMinesChanged) if (m_dms != dms || m_triggeredMinesChanged)
{ {
m_dms = dms; m_dms = dms;
m_dms.sampleTime(partitionTimeMSec()); m_dms.sampleTime = partitionTimeMSec();
return m_mainHandler->dds()->dts()->publish(m_dms); return m_mainHandler->dds()->dts()->publish(m_dms);
} }
return true; return true;
@@ -449,7 +449,7 @@ Core::FunctionReplyObject ObjectMineArea::changeSegmentsToLine(bool sortMines)
DEBUG_LOG(m_logger) << "index: " << index; DEBUG_LOG(m_logger) << "index: " << index;
Core::GeoPosition2D startPos = vec[index]; Core::GeoPosition2D startPos = vec[index];
LtsCoordTrans::UtmCoordinate startPositionUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(startPos.lon(), startPos.lat()); LtsCoordTrans::UtmCoordinate startPositionUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(startPos.lon, startPos.lat);
DEBUG_LOG(m_logger) << "startPosUtm: " << startPositionUtm.mgrs(); DEBUG_LOG(m_logger) << "startPosUtm: " << startPositionUtm.mgrs();
double length = 0.0; double length = 0.0;
@@ -459,7 +459,7 @@ Core::FunctionReplyObject ObjectMineArea::changeSegmentsToLine(bool sortMines)
while (vec.size() > 0) while (vec.size() > 0)
{ {
Core::GeoPosition2D &pos = vec.first(); Core::GeoPosition2D &pos = vec.first();
DEBUG_LOG(m_logger) << "pos: " << pos.lon() << ", " << pos.lat(); DEBUG_LOG(m_logger) << "pos: " << pos.lon << ", " << pos.lat;
if (pos == startPos) if (pos == startPos)
{ {
@@ -468,7 +468,7 @@ Core::FunctionReplyObject ObjectMineArea::changeSegmentsToLine(bool sortMines)
continue; continue;
} }
length = LtsCoordTrans::squareDistance(startPositionUtm, pos.lon(), pos.lat()); length = LtsCoordTrans::squareDistance(startPositionUtm, pos.lon, pos.lat);
DEBUG_LOG(m_logger) << "Distance between startPos and pos: " << length; DEBUG_LOG(m_logger) << "Distance between startPos and pos: " << length;
Core::GeoPosition2D newPos = pos; Core::GeoPosition2D newPos = pos;
@@ -477,9 +477,9 @@ Core::FunctionReplyObject ObjectMineArea::changeSegmentsToLine(bool sortMines)
if (pos2 == pos || pos2 == startPos) if (pos2 == pos || pos2 == startPos)
continue; continue;
DEBUG_LOG(m_logger) << "pos2: " << pos2.lon() << ", " << pos2.lat(); DEBUG_LOG(m_logger) << "pos2: " << pos2.lon << ", " << pos2.lat;
double length2 = LtsCoordTrans::squareDistance(startPositionUtm, pos2.lon(), pos2.lat()); double length2 = LtsCoordTrans::squareDistance(startPositionUtm, pos2.lon, pos2.lat);
DEBUG_LOG(m_logger) << "Distance between startPos and pos2: " << length; DEBUG_LOG(m_logger) << "Distance between startPos and pos2: " << length;
if (length2 < length) if (length2 < length)
@@ -492,14 +492,14 @@ Core::FunctionReplyObject ObjectMineArea::changeSegmentsToLine(bool sortMines)
vecSorted.push_back(newPos); vecSorted.push_back(newPos);
vec.removeOne(newPos); vec.removeOne(newPos);
startPositionUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(newPos.lon(), newPos.lat(), startPositionUtm.zone); startPositionUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(newPos.lon, newPos.lat, startPositionUtm.zone);
DEBUG_LOG(m_logger) << "New startPosUtm: " << startPositionUtm.mgrs(); DEBUG_LOG(m_logger) << "New startPosUtm: " << startPositionUtm.mgrs();
} }
if (vecSorted.size() == 1) if (vecSorted.size() == 1)
{ {
DEBUG_LOG(m_logger) << "only one segment - create 2 new with distance 10m"; DEBUG_LOG(m_logger) << "only one segment - create 2 new with distance 10m";
const LtsCoordTrans::UtmCoordinate pointUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(vecSorted[0].lon(), vecSorted[0].lat()); const LtsCoordTrans::UtmCoordinate pointUtm = LtsCoordTrans::UtmCoordinate::fromGeographic(vecSorted[0].lon, vecSorted[0].lat);
LtsCoordTrans::UtmCoordinate point1Utm = pointUtm; LtsCoordTrans::UtmCoordinate point1Utm = pointUtm;
LtsCoordTrans::UtmCoordinate point2Utm = pointUtm; LtsCoordTrans::UtmCoordinate point2Utm = pointUtm;
point1Utm.y = pointUtm.y - 5.01; point1Utm.y = pointUtm.y - 5.01;
@@ -511,8 +511,8 @@ Core::FunctionReplyObject ObjectMineArea::changeSegmentsToLine(bool sortMines)
Core::GeoPosition2D pos(point.x(), point.y()); Core::GeoPosition2D pos(point.x(), point.y());
vecSorted.push_back(pos); vecSorted.push_back(pos);
point = point2Utm.geographic(); point = point2Utm.geographic();
pos.lon(point.x()); pos.lon = point.x();
pos.lat(point.y()); pos.lat = point.y();
vecSorted.push_back(pos); vecSorted.push_back(pos);
} }
} }
@@ -671,12 +671,12 @@ template <typename T> Core::FunctionReplyObject ObjectMineArea::createObjectTmpl
} }
// Set TriggeredExplosions Base Data // Set TriggeredExplosions Base Data
m_tis.id(1000 * m_data.id + AesType::AtMineAreaSingleMines); m_tis.id = 1000 * m_data.id + static_cast<int>(AesType::AtMineAreaSingleMines);
m_tis.aesItemId(m_data.id); m_tis.aesItemId = m_data.id;
m_tis.aesTypeId(AesType::AtMineAreaSingleMines); m_tis.aesTypeId = AesType::AtMineAreaSingleMines;
// Set DUS-Mine status Base Data // Set DUS-Mine status Base Data
m_dms.id(m_data.id); m_dms.id = m_data.id;
trans.commit(); trans.commit();
@@ -883,12 +883,12 @@ Core::FunctionReplyObject ObjectMineArea::createObjectFromMineData(const Databas
return Core::FunctionReplyObject(m_data.id, tr_lts("dds", "Error adding triggered mines to database.")); return Core::FunctionReplyObject(m_data.id, tr_lts("dds", "Error adding triggered mines to database."));
// Set TriggeredExplosions Base Data // Set TriggeredExplosions Base Data
m_tis.id(1000 * m_data.id + AesType::AtMineAreaSingleMines); m_tis.id = 1000 * m_data.id + static_cast<int>(AesType::AtMineAreaSingleMines);
m_tis.aesItemId(m_data.id); m_tis.aesItemId = m_data.id;
m_tis.aesTypeId(AesType::AtMineAreaSingleMines); m_tis.aesTypeId = AesType::AtMineAreaSingleMines;
// Set DUS-Mine status Base Data // Set DUS-Mine status Base Data
m_dms.id(m_data.id); m_dms.id = m_data.id;
trans.commit(); trans.commit();
@@ -1062,7 +1062,7 @@ bool ObjectMineArea::canHandleMine(int mineId, int chargeTypeId, const QPointF &
DEBUG_LOG(m_logger) << "Mine Area " << m_data.id << " is not a DUS mine area."; DEBUG_LOG(m_logger) << "Mine Area " << m_data.id << " is not a DUS mine area.";
// EffectState has to be Created, Prepared, Active and Paused Areas // EffectState has to be Created, Prepared, Active and Paused Areas
if (m_data.effectStateId.underlying() < AesEffectState::EsCreated) if (m_data.effectStateId < AesEffectState::EsCreated)
{ {
DEBUG_LOG(m_logger) << "Mine Area " << m_data.id << " can not handle mine because its current AesEffectState is" DEBUG_LOG(m_logger) << "Mine Area " << m_data.id << " can not handle mine because its current AesEffectState is"
<< AreaEffectSimulation::toString(m_data.effectStateId); << AreaEffectSimulation::toString(m_data.effectStateId);
@@ -1237,9 +1237,9 @@ bool ObjectMineArea::addMineData(const std::vector<MineData> &mineData)
tm.mineAreaId = m_data.id; tm.mineAreaId = m_data.id;
tm.chargeTypeId = m_data.chargeTypeId; tm.chargeTypeId = m_data.chargeTypeId;
tm.mineId = idx++; tm.mineId = idx++;
tm.appearenceTime = QDateTime::fromMSecsSinceEpoch(mine.appearenceTime()); tm.appearenceTime = QDateTime::fromMSecsSinceEpoch(mine.appearenceTime);
tm.armingTime = QDateTime::fromMSecsSinceEpoch(mine.armingTime()); tm.armingTime = QDateTime::fromMSecsSinceEpoch(mine.armingTime);
tm.position = QPointF(mine.position().lon(), mine.position().lat()); tm.position = QPointF(mine.position.lon, mine.position.lat);
if (!m_mainHandler->db()->insert(tm)) if (!m_mainHandler->db()->insert(tm))
{ {
ERROR_LOG(m_logger) << "--[addMineData] Couldn't insert trigger mine into db"; ERROR_LOG(m_logger) << "--[addMineData] Couldn't insert trigger mine into db";
@@ -1412,50 +1412,50 @@ void ObjectMineArea::publishAiv()
// Better than aiv.id(1000 * aesItemId + AesType::AtMineArea); // Better than aiv.id(1000 * aesItemId + AesType::AtMineArea);
AesItemView aiv(m_aiv); AesItemView aiv(m_aiv);
aiv.aesItemId(m_data.id); aiv.aesItemId = m_data.id;
aiv.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv.chargeStruct.chargeTypeId = m_data.chargeTypeId;
aiv.effectStart(toMSec(m_data.effectStart)); aiv.effectStart = toMSec(m_data.effectStart);
ddsVecFromPoly(m_mineAreaPolygon, aiv.form()); ddsVecFromPoly(m_mineAreaPolygon, aiv.form);
const auto br = boundingRect(); // m_mineAreaPolygon.boundingRect() const auto br = boundingRect(); // m_mineAreaPolygon.boundingRect()
aiv.boundingBoxBottomLeft(Core::GeoPosition2D(br.bottomLeft().x(), br.bottomLeft().y())); aiv.boundingBoxBottomLeft = Core::GeoPosition2D(br.bottomLeft().x(), br.bottomLeft().y());
aiv.boundingBoxTopRight(Core::GeoPosition2D(br.topRight().x(), br.topRight().y())); aiv.boundingBoxTopRight = Core::GeoPosition2D(br.topRight().x(), br.topRight().y());
aiv.aesTypeId(AesType::AtMineArea); aiv.aesTypeId = AesType::AtMineArea;
aiv.effectStateId(effectState()); aiv.effectStateId = effectState();
aiv.id(1000 * m_data.id + AesType::AtMineArea); aiv.id = 1000 * m_data.id + static_cast<int>(AesType::AtMineArea);
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv.partyId(m_data.partyId); aiv.partyId = m_data.partyId;
checkIsCentralAndPublish(aiv.form(), m_aiv.form(), m_data.isCentral); checkIsCentralAndPublish(aiv.form, m_aiv.form, m_data.isCentral);
if (aiv != m_aiv) if (aiv != m_aiv)
{ {
DEBUG_LOG(m_logger) << "aiv changed - publish"; DEBUG_LOG(m_logger) << "aiv changed - publish";
aiv.sampleTime(partitionTimeMSec()); aiv.sampleTime = partitionTimeMSec();
m_aiv = aiv; m_aiv = aiv;
m_mainHandler->dds()->dts()->publish(aiv); m_mainHandler->dds()->dts()->publish(aiv);
emit newAiv(aiv); emit newAiv(aiv);
} }
AesItemView aiv2(m_aiv2); AesItemView aiv2(m_aiv2);
aiv2.aesItemId(m_data.id); aiv2.aesItemId = m_data.id;
aiv2.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv2.chargeStruct.chargeTypeId = m_data.chargeTypeId;
aiv2.effectStart(toMSec(m_data.effectStart)); aiv2.effectStart = toMSec(m_data.effectStart);
aiv2.form().clear(); aiv2.form.clear();
aiv2.form().reserve(m_triggeredMines.size()); aiv2.form.reserve(m_triggeredMines.size());
for (const auto &tm : qAsConst(m_triggeredMines)) for (const auto &tm : qAsConst(m_triggeredMines))
aiv2.form().resize(aiv2.form().size() + 1, Core::GeoPosition(tm.position.x(), tm.position.y(), 0.0)); aiv2.form.resize(aiv2.form.size() + 1, Core::GeoPosition(tm.position.x(), tm.position.y(), 0.0));
aiv2.boundingBoxBottomLeft(aiv.boundingBoxBottomLeft()); aiv2.boundingBoxBottomLeft = aiv.boundingBoxBottomLeft;
aiv2.boundingBoxTopRight(aiv.boundingBoxTopRight()); aiv2.boundingBoxTopRight = aiv.boundingBoxTopRight;
aiv2.aesTypeId(AesType::inner_enum::AtMineAreaSingleMines); aiv2.aesTypeId = AesType::AtMineAreaSingleMines;
aiv2.id(1000 * m_data.id + AesType::inner_enum::AtMineAreaSingleMines); aiv2.id = 1000 * m_data.id + static_cast<int>(AesType::AtMineAreaSingleMines);
aiv2.effectStateId(m_data.effectStateId); aiv2.effectStateId = m_data.effectStateId;
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv2.partyId(m_data.partyId); aiv2.partyId = m_data.partyId;
if (aiv2 != m_aiv2 || m_triggeredMinesChanged) if (aiv2 != m_aiv2 || m_triggeredMinesChanged)
{ {
DEBUG_LOG(m_logger) << "aiv2 changed"; DEBUG_LOG(m_logger) << "aiv2 changed";
aiv2.sampleTime(partitionTimeMSec()); aiv2.sampleTime = partitionTimeMSec();
m_aiv2 = aiv2; m_aiv2 = aiv2;
m_mainHandler->dds()->dts()->publish(aiv2); m_mainHandler->dds()->dts()->publish(aiv2);
emit newAiv(aiv2); emit newAiv(aiv2);
@@ -1468,9 +1468,9 @@ void ObjectMineArea::removeTopics()
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
dts->removeMineAreaByKey(m_data.id); dts->removeMineAreaByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::inner_enum::AtMineArea); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtMineArea));
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::inner_enum::AtMineAreaSingleMines); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtMineAreaSingleMines));
dts->removeTriggeredImpactsByKey(1000 * m_data.id + AesType::inner_enum::AtMineAreaSingleMines); dts->removeTriggeredImpactsByKey(1000 * m_data.id + static_cast<int>(AesType::AtMineAreaSingleMines));
removeDusMineStateTopic(); removeDusMineStateTopic();
emit removeAiv(m_data.id); emit removeAiv(m_data.id);
} }
@@ -1497,14 +1497,14 @@ Core::FunctionReplyObject ObjectMineArea::createGeoSegmentsFromMineData(double &
tempMinePos.emplace_back(Core::GeoPosition2D(t.position.x(), t.position.y())); tempMinePos.emplace_back(Core::GeoPosition2D(t.position.x(), t.position.y()));
for (const auto &md : mineData) for (const auto &md : mineData)
tempMinePos.emplace_back(md.position()); tempMinePos.emplace_back(md.position);
DEBUG_LOG(m_logger) << "--[createSegmentsFromMineData]: --> tempMinePos.Size: " << tempMinePos.size() << " m_triggeredMinesSIze: " << m_triggeredMines.size() DEBUG_LOG(m_logger) << "--[createSegmentsFromMineData]: --> tempMinePos.Size: " << tempMinePos.size() << " m_triggeredMinesSIze: " << m_triggeredMines.size()
<< " mineDataSize " << mineData.size(); << " mineDataSize " << mineData.size();
if (tempMinePos.empty()) if (tempMinePos.empty())
return Core::FunctionReplyObject(m_data.id, tr_lts("dds", "Mine data couldn't be added")); return Core::FunctionReplyObject(m_data.id, tr_lts("dds", "Mine data couldn't be added"));
LtsCoordTrans::UtmCoordinate tempCoord = LtsCoordTrans::UtmCoordinate::fromGeographic(tempMinePos.front().lon(), tempMinePos.front().lat()); LtsCoordTrans::UtmCoordinate tempCoord = LtsCoordTrans::UtmCoordinate::fromGeographic(tempMinePos.front().lon, tempMinePos.front().lat);
// calculate position // calculate position
double angleDeg = 0.0; double angleDeg = 0.0;
@@ -1557,7 +1557,7 @@ void ObjectMineArea::onEffectStateChanged()
DEBUG_LOG(m_logger) << id() << " EffectStateChanged for MineArea " << m_data.id << ". Check if mines have to be released."; DEBUG_LOG(m_logger) << id() << " EffectStateChanged for MineArea " << m_data.id << ". Check if mines have to be released.";
// If is an DUS-MineArea and it's state is Expired or Removed and still has mines // If is an DUS-MineArea and it's state is Expired or Removed and still has mines
if ((isDusMineArea() || isConcreteMine()) if ((isDusMineArea() || isConcreteMine())
&& (m_data.effectStateId.underlying() == AesEffectState::EsExpired || m_data.effectStateId.underlying() == AesEffectState::EsRemoved) && (m_data.effectStateId == AesEffectState::EsExpired || m_data.effectStateId == AesEffectState::EsRemoved)
&& !m_triggeredMines.isEmpty()) && !m_triggeredMines.isEmpty())
{ {
DEBUG_LOG(m_logger) << id() << " Releasing all mines from " << toString(m_data.effectStateId) << " MineArea " << m_data.id; DEBUG_LOG(m_logger) << id() << " Releasing all mines from " << toString(m_data.effectStateId) << " MineArea " << m_data.id;
@@ -60,7 +60,7 @@ class ObjectMineArea final : public ObjectBaseTmpl<Database::AesMineArea>
void clearBuildings(); void clearBuildings();
QVector<Database::AesMineAreaTriggeredMines> unpairedMines() const; QVector<Database::AesMineAreaTriggeredMines> unpairedMines() const;
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType::AtMineArea; } AesType aesType() const override { return AesType::AtMineArea; }
bool isCentral() const override { return m_data.isCentral; } bool isCentral() const override { return m_data.isCentral; }
@@ -33,12 +33,12 @@ ObjectMineAreaNull::ObjectMineAreaNull(MainHandler *mainHandler,
} }
// Set TriggeredExplosions Base Data // Set TriggeredExplosions Base Data
m_tis.id(AesType::AtMineAreaSingleMines); m_tis.id = AesType::AtMineAreaSingleMines;
m_tis.aesItemId(0); m_tis.aesItemId = 0;
m_tis.aesTypeId(AesType::AtMineAreaSingleMines); m_tis.aesTypeId = AesType::AtMineAreaSingleMines;
// Set DUS-Mine status Base Data // Set DUS-Mine status Base Data
m_dms.mines().resize(m_triggeredMines.size()); m_dms.mines.resize(m_triggeredMines.size());
onPublishData(); onPublishData();
} }
@@ -49,25 +49,25 @@ ObjectMineAreaNull::~ObjectMineAreaNull()
} }
bool ObjectMineAreaNull::isDusMineArea() const bool ObjectMineAreaNull::isDusMineArea() const
{ {
return static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId)) return static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId))
== MineClass::DUS; == MineClass::DUS;
} }
bool ObjectMineAreaNull::isConcreteMine() const bool ObjectMineAreaNull::isConcreteMine() const
{ {
return static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId)) return static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId))
== MineClass::Concrete; == MineClass::Concrete;
} }
bool ObjectMineAreaNull::isVirtualSingleMine() const bool ObjectMineAreaNull::isVirtualSingleMine() const
{ {
return static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId)) return static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId))
== MineClass::VirtualSingle; == MineClass::VirtualSingle;
} }
bool ObjectMineAreaNull::isVirtualMine() const bool ObjectMineAreaNull::isVirtualMine() const
{ {
return static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId)) return static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId))
== MineClass::Virtual; == MineClass::Virtual;
} }
int ObjectMineAreaNull::lastConcreteMineNo() int ObjectMineAreaNull::lastConcreteMineNo()
@@ -232,8 +232,8 @@ void ObjectMineAreaNull::removeTopics()
{ {
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
dts->removeMineAreaByKey(m_data.id); dts->removeMineAreaByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtMineAreaSingleMines); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtMineAreaSingleMines));
dts->removeTriggeredImpactsByKey(1000 * m_data.id + AesType::AtMineAreaSingleMines); dts->removeTriggeredImpactsByKey(1000 * m_data.id + static_cast<int>(AesType::AtMineAreaSingleMines));
emit removeAiv(m_data.id); emit removeAiv(m_data.id);
} }
@@ -252,24 +252,24 @@ void ObjectMineAreaNull::publishAiv()
} }
AesItemView aiv2(m_aiv2); AesItemView aiv2(m_aiv2);
aiv2.aesItemId(0); aiv2.aesItemId = 0;
aiv2.chargeStruct().chargeTypeId(m_data.chargeTypeId); // Shall be invalid. EffectSimulation has been conducted before, so not necessary for service sCES aiv2.chargeStruct.chargeTypeId = m_data.chargeTypeId; // Shall be invalid. EffectSimulation has been conducted before, so not necessary for service sCES
aiv2.effectStart(0); aiv2.effectStart = 0;
aiv2.form(vec); aiv2.form = vec;
aiv2.boundingBoxBottomLeft() = Core::GeoPosition2D(tmp.boundingRect().bottomLeft().x(), tmp.boundingRect().bottomLeft().y()); aiv2.boundingBoxBottomLeft = Core::GeoPosition2D(tmp.boundingRect().bottomLeft().x(), tmp.boundingRect().bottomLeft().y());
aiv2.boundingBoxTopRight() = Core::GeoPosition2D(tmp.boundingRect().topRight().x(), tmp.boundingRect().topRight().y()); aiv2.boundingBoxTopRight = Core::GeoPosition2D(tmp.boundingRect().topRight().x(), tmp.boundingRect().topRight().y());
aiv2.aesTypeId(AesType::inner_enum::AtMineAreaSingleMines); aiv2.aesTypeId = AesType::AtMineAreaSingleMines;
aiv2.id(AesType::inner_enum::AtMineAreaSingleMines); aiv2.id = AesType::AtMineAreaSingleMines;
aiv2.effectStateId(AesEffectState::inner_enum::EsActivated); aiv2.effectStateId = AesEffectState::EsActivated;
aiv2.setId(dds::core::optional<rti::core::int64>(m_setId)); aiv2.setId = dds::core::optional<rti::core::int64>(m_setId);
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv2.partyId(m_data.partyId); aiv2.partyId = m_data.partyId;
checkIsCentralAndPublish(aiv2.form(), m_aiv2.form(), m_data.isCentral); checkIsCentralAndPublish(aiv2.form, m_aiv2.form, m_data.isCentral);
if (aiv2 != m_aiv2) if (aiv2 != m_aiv2)
{ {
aiv2.sampleTime(partitionTimeMSec()); aiv2.sampleTime = partitionTimeMSec();
m_aiv2 = aiv2; m_aiv2 = aiv2;
m_mainHandler->dds()->dts()->publish(aiv2); m_mainHandler->dds()->dts()->publish(aiv2);
emit newAiv(aiv2); emit newAiv(aiv2);
@@ -280,20 +280,20 @@ bool ObjectMineAreaNull::publishTriggeredImpacts()
{ {
// Build an own tes-bitfield and compare, only store and publish if changed. // Build an own tes-bitfield and compare, only store and publish if changed.
TriggeredImpacts tis(m_tis); TriggeredImpacts tis(m_tis);
tis.impactCount(m_triggeredMines.size()); tis.impactCount = m_triggeredMines.size();
tis.bitfield().resize((m_triggeredMines.size() + 7) / 8); tis.bitfield.resize((m_triggeredMines.size() + 7) / 8);
tis.setId(dds::core::optional<rti::core::int64>(m_setId)); tis.setId = dds::core::optional<rti::core::int64>(m_setId);
int i = 0; int i = 0;
for (const auto &mine : qAsConst(m_triggeredMines)) for (const auto &mine : qAsConst(m_triggeredMines))
{ {
// Triggered Impact == 0, if mine is disarmed/exploded // Triggered Impact == 0, if mine is disarmed/exploded
LtsUtils::BitArray::setBit(tis.bitfield(), i++, !mine.isTriggered); LtsUtils::BitArray::setBit(tis.bitfield, i++, !mine.isTriggered);
} }
if (m_tis != tis) if (m_tis != tis)
{ {
m_tis = tis; m_tis = tis;
m_tis.sampleTime(partitionTimeMSec()); m_tis.sampleTime = partitionTimeMSec();
return m_mainHandler->dds()->dts()->publish(m_tis); return m_mainHandler->dds()->dts()->publish(m_tis);
} }
return true; return true;
@@ -304,19 +304,19 @@ bool ObjectMineAreaNull::publishDusMineStatus()
// DusMineStatus mines vector is coherent to triggered impacts bitfield // DusMineStatus mines vector is coherent to triggered impacts bitfield
DusMineState dms(m_dms); DusMineState dms(m_dms);
dms.mines().resize(m_triggeredMines.size()); dms.mines.resize(m_triggeredMines.size());
dms.setId(dds::core::optional<rti::core::int64>(m_setId)); dms.setId = dds::core::optional<rti::core::int64>(m_setId);
int i = 0; int i = 0;
for (const auto &mine : qAsConst(m_triggeredMines)) for (const auto &mine : qAsConst(m_triggeredMines))
{ {
const DusMine entry(mine.mineId, mine.isTriggered, mine.chargeTypeId, {mine.position.x(), mine.position.y()}); const DusMine entry(mine.mineId, mine.isTriggered, mine.chargeTypeId, {mine.position.x(), mine.position.y()});
dms.mines()[i++] = entry; dms.mines[i++] = entry;
} }
if (m_dms != dms) if (m_dms != dms)
{ {
m_dms = dms; m_dms = dms;
m_dms.sampleTime(partitionTimeMSec()); m_dms.sampleTime = partitionTimeMSec();
return m_mainHandler->dds()->dts()->publish(m_dms); return m_mainHandler->dds()->dts()->publish(m_dms);
} }
return true; return true;
@@ -38,7 +38,7 @@ public:
std::vector<Core::GeoPosition> form() const override { return {}; } std::vector<Core::GeoPosition> form() const override { return {}; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType_def::AtMineArea; } AesType aesType() const override { return AesType::AtMineArea; }
bool isCentral() const override { return m_data.isCentral; } bool isCentral() const override { return m_data.isCentral; }
int lastConcreteMineNo(); int lastConcreteMineNo();
public Q_SLOTS: public Q_SLOTS:
@@ -74,7 +74,7 @@ Core::FunctionReplyObject ObjectMineCorridor::createObject(const Database::AesMi
{ {
segment.id = 0; segment.id = 0;
segment.mineCorridorId = m_data.id; segment.mineCorridorId = m_data.id;
segment.position = QPointF(ddsSeg.lon(), ddsSeg.lat()); segment.position = QPointF(ddsSeg.lon, ddsSeg.lat);
// will update segment.id // will update segment.id
if (!m_mainHandler->db()->insert(segment)) if (!m_mainHandler->db()->insert(segment))
return Core::FunctionReplyObject(getRightId(m_data.id, originOc), tr_lts("dds", "Error inserting AesMineAreaSegment-data into database.")); return Core::FunctionReplyObject(getRightId(m_data.id, originOc), tr_lts("dds", "Error inserting AesMineAreaSegment-data into database."));
@@ -138,7 +138,7 @@ Core::FunctionReplyObject ObjectMineCorridor::updateObject(const Database::AesMi
tmpSegments.resize(newSegmentSize); // if count is decreased tmpSegments.resize(newSegmentSize); // if count is decreased
for (size_t i = 0; i < segments.size(); ++i) for (size_t i = 0; i < segments.size(); ++i)
tmpSegments[i].position = QPointF(segments[i].lon(), segments[i].lat()); tmpSegments[i].position = QPointF(segments[i].lon, segments[i].lat);
for (const Database::AesMineCorridorSegment &segment : qAsConst(tmpSegments)) for (const Database::AesMineCorridorSegment &segment : qAsConst(tmpSegments))
{ {
@@ -183,7 +183,7 @@ void ObjectMineCorridor::onPublishData()
m_data.isCentral, m_data.isCentral,
m_data.properties.toStdString(), m_data.properties.toStdString(),
m_data.width, {}); m_data.width, {});
dbSegment2DdsSegment(m_segments, ddsData.segments()); dbSegment2DdsSegment(m_segments, ddsData.segments);
m_mainHandler->dds()->dts()->publish(ddsData); m_mainHandler->dds()->dts()->publish(ddsData);
publishAiv(); publishAiv();
@@ -201,22 +201,22 @@ void ObjectMineCorridor::publishAiv()
const QRectF bounds(poly.boundingRect()); const QRectF bounds(poly.boundingRect());
AesItemView aiv(m_aiv); AesItemView aiv(m_aiv);
aiv.aesItemId(m_data.id); aiv.aesItemId = m_data.id;
aiv.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv.chargeStruct.chargeTypeId = m_data.chargeTypeId;
aiv.effectStart(toMSec(m_data.effectStart)); aiv.effectStart = toMSec(m_data.effectStart);
ddsVecFromPoly(poly, aiv.form()); ddsVecFromPoly(poly, aiv.form);
aiv.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y())); aiv.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y());
aiv.boundingBoxTopRight(Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y())); aiv.boundingBoxTopRight = Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y());
aiv.aesTypeId(AesType::AtMineCorridor); aiv.aesTypeId = AesType::AtMineCorridor;
aiv.effectStateId(effectState()); aiv.effectStateId = effectState();
aiv.id(1000 * m_data.id + AesType::AtMineCorridor); aiv.id = 1000 * m_data.id + static_cast<int>(AesType::AtMineCorridor);
aiv.partyId(0); aiv.partyId = 0;
checkIsCentralAndPublish(aiv.form(), m_aiv.form(), m_data.isCentral); checkIsCentralAndPublish(aiv.form, m_aiv.form, m_data.isCentral);
if (aiv != m_aiv) if (aiv != m_aiv)
{ {
aiv.sampleTime(partitionTimeMSec()); aiv.sampleTime = partitionTimeMSec();
m_aiv = aiv; m_aiv = aiv;
m_mainHandler->dds()->dts()->publish(aiv); m_mainHandler->dds()->dts()->publish(aiv);
emit newAiv(aiv); emit newAiv(aiv);
@@ -225,7 +225,7 @@ void ObjectMineCorridor::publishAiv()
const int zone = LtsCoordTrans::UtmCoordinate::fromGeographic(poly[0]).zone; const int zone = LtsCoordTrans::UtmCoordinate::fromGeographic(poly[0]).zone;
// Unused, Future use: Intersection with Mine Area to deactivate Mines // Unused, Future use: Intersection with Mine Area to deactivate Mines
m_utmPoly = utmPolyFromGeoVec(aiv.form(), zone); m_utmPoly = utmPolyFromGeoVec(aiv.form, zone);
} }
@@ -234,13 +234,13 @@ QPolygonF ObjectMineCorridor::utmPolyFromGeoVec(const std::vector<Core::GeoPosit
if (geoPos.size() == 0) if (geoPos.size() == 0)
return QPolygonF(); return QPolygonF();
int actZone = LtsCoordTrans::UtmCoordinate::fromGeographic(geoPos.at(0).lon(),geoPos.at(0).lat(), zone).zone; int actZone = LtsCoordTrans::UtmCoordinate::fromGeographic(geoPos.at(0).lon,geoPos.at(0).lat, zone).zone;
QPolygonF retVal(geoPos.size()); QPolygonF retVal(geoPos.size());
int i=0; int i=0;
for (const auto &pos : geoPos) for (const auto &pos : geoPos)
{ {
LtsCoordTrans::UtmCoordinate utm = LtsCoordTrans::UtmCoordinate::fromGeographic(QPointF(pos.lon(), pos.lat()), actZone); LtsCoordTrans::UtmCoordinate utm = LtsCoordTrans::UtmCoordinate::fromGeographic(QPointF(pos.lon, pos.lat), actZone);
retVal[i++] = QPointF(utm.x, utm.y); retVal[i++] = QPointF(utm.x, utm.y);
} }
return retVal; return retVal;
@@ -250,7 +250,7 @@ void ObjectMineCorridor::removeTopics()
{ {
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
dts->removeMineCorridorByKey(m_data.id); dts->removeMineCorridorByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::inner_enum::AtMineCorridor); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtMineCorridor));
emit removeAiv(m_data.id); emit removeAiv(m_data.id);
} }
@@ -30,7 +30,7 @@ public:
Core::FunctionReplyObject updateObject(const Database::AesMineCorridor &data, Core::FunctionReplyObject updateObject(const Database::AesMineCorridor &data,
const std::vector<Core::GeoPosition2D> &segments); const std::vector<Core::GeoPosition2D> &segments);
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType::AtMineCorridor; } AesType aesType() const override { return AesType::AtMineCorridor; }
bool isCentral() const override { return m_data.isCentral; } bool isCentral() const override { return m_data.isCentral; }
@@ -28,7 +28,7 @@ ObjectNContamination::~ObjectNContamination()
Core::FunctionReplyObject ObjectNContamination::createObject(const Database::AesNContamination &data) Core::FunctionReplyObject ObjectNContamination::createObject(const Database::AesNContamination &data)
{ {
Core::FunctionReplyObject ret = ObjectBaseTmpl::createObject(data); Core::FunctionReplyObject ret = ObjectBaseTmpl::createObject(data);
if (m_data.effectStateId == AesEffectState_def::EsActivated) if (m_data.effectStateId == AesEffectState::EsActivated)
m_updateWeatherData = true; m_updateWeatherData = true;
return ret; return ret;
@@ -92,7 +92,7 @@ void ObjectNContamination::onUpdateWeatherData()
if (m_data.weatherSourceId != AesWeatherSource::AwsNone) if (m_data.weatherSourceId != AesWeatherSource::AwsNone)
{ {
m_data.rotationAngle = fmod(md.windDirection() + 180.0, 360.0); m_data.rotationAngle = fmod(md.windDirection + 180.0, 360.0);
m_publishDataTimer->start(); m_publishDataTimer->start();
} }
@@ -107,7 +107,7 @@ void ObjectNContamination::onPublishData()
if (!m_mainHandler->db()->update(m_data)) if (!m_mainHandler->db()->update(m_data))
ERROR_LOG(m_logger) << "Error updating AesIndirectFireSingle-data in database"; ERROR_LOG(m_logger) << "Error updating AesIndirectFireSingle-data in database";
if (m_data.effectStateId == AesEffectState_def::EsActivated && !m_updateWeatherData) if (m_data.effectStateId == AesEffectState::EsActivated && !m_updateWeatherData)
onUpdateWeatherData(); onUpdateWeatherData();
NContamination ddsData(m_data.id, NContamination ddsData(m_data.id,
@@ -142,9 +142,9 @@ void ObjectNContamination::onPublishData()
void ObjectNContamination::publishAiv() void ObjectNContamination::publishAiv()
{ {
QPolygonF poly; QPolygonF poly;
if ((m_data.effectStateId == AesEffectState_def::EsCreated || if ((m_data.effectStateId == AesEffectState::EsCreated ||
m_data.effectStateId == AesEffectState_def::EsPrepared || m_data.effectStateId == AesEffectState::EsPrepared ||
m_data.effectStateId == AesEffectState_def::EsReceived) && m_data.weatherSourceId != AesWeatherSource_def::AwsNone) m_data.effectStateId == AesEffectState::EsReceived) && m_data.weatherSourceId != AesWeatherSource::AwsNone)
{ {
Database::AesNContamination tmpData = m_data; Database::AesNContamination tmpData = m_data;
tmpData.borderLengthInner = tmpData.impactRadius; tmpData.borderLengthInner = tmpData.impactRadius;
@@ -158,23 +158,23 @@ void ObjectNContamination::publishAiv()
const QRectF bounds(poly.boundingRect()); const QRectF bounds(poly.boundingRect());
AesItemView aiv(m_aiv); AesItemView aiv(m_aiv);
aiv.aesItemId(m_data.id); aiv.aesItemId = m_data.id;
aiv.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv.chargeStruct.chargeTypeId = m_data.chargeTypeId;
aiv.effectStart(toMSec(m_data.effectStart)); aiv.effectStart = toMSec(m_data.effectStart);
ddsVecFromPoly(poly, aiv.form()); ddsVecFromPoly(poly, aiv.form);
aiv.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y())); aiv.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y());
aiv.boundingBoxTopRight(Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y())); aiv.boundingBoxTopRight = Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y());
aiv.aesTypeId(AesType::AtNContamination); aiv.aesTypeId = AesType::AtNContamination;
aiv.effectStateId(effectState()); aiv.effectStateId = effectState();
aiv.id(1000 * m_data.id + AesType::AtNContamination); aiv.id = 1000 * m_data.id + static_cast<int>(AesType::AtNContamination);
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv.partyId(m_data.partyId); aiv.partyId = m_data.partyId;
checkIsCentralAndPublish(aiv.form(), m_aiv.form(), m_data.isCentral); checkIsCentralAndPublish(aiv.form, m_aiv.form, m_data.isCentral);
if (aiv != m_aiv) if (aiv != m_aiv)
{ {
aiv.sampleTime(partitionTimeMSec()); aiv.sampleTime = partitionTimeMSec();
m_aiv = aiv; m_aiv = aiv;
m_mainHandler->dds()->dts()->publish(aiv); m_mainHandler->dds()->dts()->publish(aiv);
emit newAiv(aiv); emit newAiv(aiv);
@@ -185,7 +185,7 @@ void ObjectNContamination::removeTopics()
{ {
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
dts->removeNContaminationByKey(m_data.id); dts->removeNContaminationByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtNContamination); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtNContamination));
emit removeAiv(m_data.id); emit removeAiv(m_data.id);
} }
@@ -29,7 +29,7 @@ public:
*/ */
bool removeObjectFromDb(); bool removeObjectFromDb();
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType::AtNContamination; } AesType aesType() const override { return AesType::AtNContamination; }
bool isCentral() const override { return m_data.isCentral; } bool isCentral() const override { return m_data.isCentral; }
@@ -163,22 +163,22 @@ void ObjectOffRouteMine::publishAiv()
const QPolygonF poly = Polygons::offRouteMineArea(m_data); const QPolygonF poly = Polygons::offRouteMineArea(m_data);
const QRectF bounds(poly.boundingRect()); const QRectF bounds(poly.boundingRect());
AesItemView aiv(m_aiv); AesItemView aiv(m_aiv);
aiv.aesItemId(m_data.id); aiv.aesItemId = m_data.id;
aiv.effectStart(toMSec(m_data.effectStart)); aiv.effectStart = toMSec(m_data.effectStart);
aiv.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv.chargeStruct.chargeTypeId = m_data.chargeTypeId;
ddsVecFromPoly(poly, aiv.form()); ddsVecFromPoly(poly, aiv.form);
aiv.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y())); aiv.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y());
aiv.boundingBoxTopRight(Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y())); aiv.boundingBoxTopRight = Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y());
aiv.aesTypeId(AesType::AtOffRouteMine); aiv.aesTypeId = AesType::AtOffRouteMine;
aiv.effectStateId(data().effectStateId); aiv.effectStateId = data().effectStateId;
aiv.id(1000 * m_data.id + AesType::AtOffRouteMine); aiv.id = 1000 * m_data.id + static_cast<int>(AesType::AtOffRouteMine);
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv.partyId(m_data.partyId); aiv.partyId = m_data.partyId;
if (aiv != m_aiv) if (aiv != m_aiv)
{ {
aiv.sampleTime(partitionTimeMSec()); aiv.sampleTime = partitionTimeMSec();
m_aiv = aiv; m_aiv = aiv;
m_mainHandler->dds()->dts()->publish(aiv); m_mainHandler->dds()->dts()->publish(aiv);
emit newAiv(m_aiv); emit newAiv(m_aiv);
@@ -193,22 +193,22 @@ void ObjectOffRouteMine::publishAiv()
const QRectF bounds(poly.boundingRect()); const QRectF bounds(poly.boundingRect());
AesItemView aiv2(m_aiv2); AesItemView aiv2(m_aiv2);
aiv2.aesItemId(m_data.id); aiv2.aesItemId = m_data.id;
aiv2.effectStart(toMSec(m_data.effectStart)); aiv2.effectStart = toMSec(m_data.effectStart);
aiv2.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv2.chargeStruct.chargeTypeId = m_data.chargeTypeId;
ddsVecFromPoly(poly, aiv2.form()); ddsVecFromPoly(poly, aiv2.form);
aiv2.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y())); aiv2.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y());
aiv2.boundingBoxTopRight(Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y())); aiv2.boundingBoxTopRight = Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y());
aiv2.aesTypeId(AesType::AtOffRouteMineSecondary); aiv2.aesTypeId = AesType::AtOffRouteMineSecondary;
aiv2.effectStateId(data().effectStateId); aiv2.effectStateId = data().effectStateId;
aiv2.id(1000 * m_data.id + AesType::AtOffRouteMineSecondary); aiv2.id = 1000 * m_data.id + static_cast<int>(AesType::AtOffRouteMineSecondary);
if (m_data.partyId != 0) if (m_data.partyId != 0)
aiv2.partyId(m_data.partyId); aiv2.partyId = m_data.partyId;
if (aiv2 != m_aiv2) if (aiv2 != m_aiv2)
{ {
aiv2.sampleTime(partitionTimeMSec()); aiv2.sampleTime = partitionTimeMSec();
m_aiv2 = aiv2; m_aiv2 = aiv2;
m_mainHandler->dds()->dts()->publish(aiv2); m_mainHandler->dds()->dts()->publish(aiv2);
emit newAiv(aiv2); emit newAiv(aiv2);
@@ -221,7 +221,7 @@ void ObjectOffRouteMine::removeTopics()
{ {
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
dts->removeOffRouteMineByKey(m_data.id); dts->removeOffRouteMineByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtOffRouteMine); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtOffRouteMine));
emit removeAiv(m_data.id); emit removeAiv(m_data.id);
} }
@@ -29,7 +29,7 @@ public:
*/ */
bool removeObjectFromDb(); bool removeObjectFromDb();
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType::AtOffRouteMine; } AesType aesType() const override { return AesType::AtOffRouteMine; }
bool isCentral() const override { return m_data.isCentral; } bool isCentral() const override { return m_data.isCentral; }
@@ -123,21 +123,21 @@ void ObjectReconArea::publishAiv()
const QRectF bounds(poly.boundingRect()); const QRectF bounds(poly.boundingRect());
AesItemView aiv(m_aiv); AesItemView aiv(m_aiv);
aiv.aesItemId(m_data.id); aiv.aesItemId = m_data.id;
aiv.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv.chargeStruct.chargeTypeId = m_data.chargeTypeId;
aiv.effectStart(toMSec(m_data.effectStart)); aiv.effectStart = toMSec(m_data.effectStart);
ddsVecFromPoly(poly, aiv.form()); ddsVecFromPoly(poly, aiv.form);
aiv.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y())); aiv.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y());
aiv.boundingBoxTopRight(Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y())); aiv.boundingBoxTopRight = Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y());
aiv.aesTypeId(AesType::AtReconArea); aiv.aesTypeId = AesType::AtReconArea;
aiv.effectStateId(effectState()); aiv.effectStateId = effectState();
aiv.id(1000 * m_data.id + AesType::AtReconArea); aiv.id = 1000 * m_data.id + static_cast<int>(AesType::AtReconArea);
checkIsCentralAndPublish(aiv.form(), m_aiv.form(), m_data.isCentral); checkIsCentralAndPublish(aiv.form, m_aiv.form, m_data.isCentral);
if (aiv != m_aiv) if (aiv != m_aiv)
{ {
aiv.sampleTime(partitionTimeMSec()); aiv.sampleTime = partitionTimeMSec();
m_aiv = aiv; m_aiv = aiv;
m_mainHandler->dds()->dts()->publish(aiv); m_mainHandler->dds()->dts()->publish(aiv);
emit newAiv(aiv); emit newAiv(aiv);
@@ -148,7 +148,7 @@ void ObjectReconArea::removeTopics()
{ {
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
dts->removeReconAreaByKey(m_data.id); dts->removeReconAreaByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtReconArea); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtReconArea));
emit removeAiv(m_data.id); emit removeAiv(m_data.id);
} }
@@ -24,7 +24,7 @@ public:
Core::FunctionReplyObject updateObject(const Database::AesReconArea &data) override; Core::FunctionReplyObject updateObject(const Database::AesReconArea &data) override;
Core::FunctionReplyObject removeObject() override; Core::FunctionReplyObject removeObject() override;
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType::AtReconArea; } AesType aesType() const override { return AesType::AtReconArea; }
bool isCentral() const override { return m_data.isCentral; } bool isCentral() const override { return m_data.isCentral; }
@@ -119,21 +119,21 @@ void ObjectTechnicalArea::publishAiv()
const QRectF bounds(poly.boundingRect()); const QRectF bounds(poly.boundingRect());
AesItemView aiv(m_aiv); AesItemView aiv(m_aiv);
aiv.aesItemId(m_data.id); aiv.aesItemId = m_data.id;
aiv.chargeStruct().chargeTypeId(m_data.chargeTypeId); aiv.chargeStruct.chargeTypeId = m_data.chargeTypeId;
aiv.effectStart(toMSec(m_data.effectStart)); aiv.effectStart = toMSec(m_data.effectStart);
ddsVecFromPoly(poly, aiv.form()); ddsVecFromPoly(poly, aiv.form);
aiv.boundingBoxBottomLeft(Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y())); aiv.boundingBoxBottomLeft = Core::GeoPosition2D(bounds.bottomLeft().x(), bounds.bottomLeft().y());
aiv.boundingBoxTopRight(Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y())); aiv.boundingBoxTopRight = Core::GeoPosition2D(bounds.topRight().x(), bounds.topRight().y());
aiv.aesTypeId(AesType::AtTechnicalArea); aiv.aesTypeId = AesType::AtTechnicalArea;
aiv.effectStateId(effectState()); aiv.effectStateId = effectState();
aiv.id(1000 * m_data.id + AesType::AtTechnicalArea); aiv.id = 1000 * m_data.id + static_cast<int>(AesType::AtTechnicalArea);
checkIsCentralAndPublish(aiv.form(), m_aiv.form(), m_data.isCentral); checkIsCentralAndPublish(aiv.form, m_aiv.form, m_data.isCentral);
if (aiv != m_aiv) if (aiv != m_aiv)
{ {
aiv.sampleTime(partitionTimeMSec()); aiv.sampleTime = partitionTimeMSec();
m_aiv = aiv; m_aiv = aiv;
m_mainHandler->dds()->dts()->publish(aiv); m_mainHandler->dds()->dts()->publish(aiv);
emit newAiv(aiv); emit newAiv(aiv);
@@ -144,7 +144,7 @@ void ObjectTechnicalArea::removeTopics()
{ {
auto dts = m_mainHandler->dds()->dts(); auto dts = m_mainHandler->dds()->dts();
dts->removeTechnicalAreaByKey(m_data.id); dts->removeTechnicalAreaByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtTechnicalArea); dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtTechnicalArea));
emit removeAiv(m_data.id); emit removeAiv(m_data.id);
} }
@@ -24,9 +24,9 @@ public:
Core::FunctionReplyObject updateObject(const Database::AesTechnicalArea &data) override; Core::FunctionReplyObject updateObject(const Database::AesTechnicalArea &data) override;
Core::FunctionReplyObject removeObject() override; Core::FunctionReplyObject removeObject() override;
std::vector<Core::GeoPosition> form() const override { return m_aiv.form(); } std::vector<Core::GeoPosition> form() const override { return m_aiv.form; }
QPolygonF generateForm() override; QPolygonF generateForm() override;
AesType aesType() const override { return AesType_def::AtTechnicalArea; } AesType aesType() const override { return AesType::AtTechnicalArea; }
bool isCentral() const override { return m_data.isCentral; } bool isCentral() const override { return m_data.isCentral; }
void removeTopics(); void removeTopics();
Loaded 100 of 102 files, more files were not shown because too many files have changed in this diff. Show more