/** * Handler for dynamic participant data * $Id$ * $HeadURL$ * $Author$ * Created by Iuliana Ojog, SLSE, 2016-09-21 */ #pragma once #include "dds_handler.h" #include "rep_db.h" #include "logger.h" #include #include #ifdef GUEZ_MODE #include #endif #include #include #include #include #include namespace ReportManagement { class HandlerDynamicParticipantData : public QObject { Q_OBJECT public: explicit HandlerDynamicParticipantData(const std::shared_ptr &ddsHandler, const std::shared_ptr &db); ~HandlerDynamicParticipantData(); /** * Initialize the handler to manage information from infrastructure management */ bool init(); private Q_SLOTS: /** * Handle the signals from 'ParticipantManagement' and 'AreaEffectSimulation' */ void onDynamicParticipantDataChanged(const ParticipantManagement::DynamicParticipantData &data, DataModification modType); void onParticipantGearEventChanged(const ParticipantManagement::ParticipantGearEvent &data, DataModification modType); void onParticipantChanged(const ParticipantManagement::Participant &data, DataModification modType); void onParticipantPositionChanged(const ParticipantManagement::ParticipantPosition &data, DataModification modType); void onAesItemViewChanged(const AreaEffectSimulation::AesItemView &data, DataModification modType); void onAesEffectsChanged(const AreaEffectSimulation::Effects &data, DataModification modType); #ifdef GUEZ_MODE void onIedChanged(const GuezIedManagement::Ied &data, DataModification modType); #endif void onBuildingStateChanged(const Buildings::BuildingState &data, DataModification modType); private: // methoden AreaEffectSimulation::AesItemView getAesItemView(int effectSimulationId); QString getAesName(int effectSimulationId); static bool containsGearTypeId(const std::vector &gi, int gearTypeId, int chargeTypeId); bool checkVulnerabilityStateChange(ProjectDataManagement::VulnerabilityState vulnState, int participantId); qint64 lastVulnerabilityChanged(const std::vector &stateHistory); qint64 getLastSignificantParticipantPositionChanged(int participantId, qint64 currTime, const Core::GeoPosition &currPos); qint64 getLastSignificantPositionMountedChanged(int participantId, qint64 currTime, const Core::GeoPosition &currPos); Core::GeoPosition getLastPosition(int participantId) const; qint32 lastVitality(int participantId, qint64 currTime); qint32 lastVulnerabilityKind(int participantId, qint64 currTime); QJsonObject areaToJson(int id, const QString &name) const; QJsonObject sanToJson(qint64 procTaken) const; qint64 sinceWhenVitality(int participantId, int vitality, qint64 currTime); qint64 sinceWhenVulnerability(int participantId, int vulnerability, qint64 currTime); private: // attributes std::shared_ptr m_ddsHandler; ///< Pointer to DDS handler std::shared_ptr m_db; std::shared_ptr m_ppmDtc; ///< Pointer to DTC ParticipantManagement interface object std::shared_ptr m_aesDtc; #ifdef GUEZ_MODE std::shared_ptr m_gimDtc; QMap m_iedMap; #endif std::shared_ptr m_pdmDtc; std::shared_ptr m_bldDtc; QMap m_partMap; QMap m_vulnStateMap; QMap m_aesItemViewMap; // aesId, aesName QMap m_aesNamesMap; QMap m_partPositionMap; QHash m_lastDynData; QVector m_isMounted; // QMap, chargeRemain>> QMap, int > > m_chargeGearInfo; LOGGER_T m_logger; ///< Interface to the Logging-Facility }; } // namespace ReportManagement