/** * Handler for infrastructure data * $Id$ * $HeadURL$ * $Author$ * Created by hjl, SLSE, 2016-09-21 */ #pragma once #include "dds_handler.h" #include "logger.h" #include "handler_meteo_data_units.h" #include #include #include #include #include namespace MeteoDataManagement { class HandlerInfrastructureData : public QObject { Q_OBJECT public: explicit HandlerInfrastructureData(const std::shared_ptr &ddsHandler, const std::shared_ptr &handlerMeteoDataUnits, QObject *parent = nullptr); /** * Initialize the handler to manage information from infrastructure management */ bool init(); /** * Returns the Position of the StructureElement for the given assetId (if available). */ Core::GeoPosition getStructureElementPosition(int assetId) const; /** * Returns the shared pointer to ISM DTC Interface. */ std::shared_ptr dtc() const { return m_dtc; } private Q_SLOTS: /** * Handle the signals from 'InfrastructureManagement' */ void onAssetChanged(const InfrastructureManagement::InstrumentationAsset &data, DataModification modType = DataModification::eAdded); void onMountingPointAssetChanged(const InfrastructureManagement::MountingPointAsset &data, DataModification modType = DataModification::eAdded); void onMainStructureElementChanged(const InfrastructureManagement::MainStructureElement &data, DataModification modType = DataModification::eAdded); private: // attributes std::shared_ptr m_ddsHandler; ///< Pointer to MDM DDS handler std::shared_ptr m_handlerMeteoDataUnits; ///< Pointer to meteo data units handler std::shared_ptr m_dtc; ///< Pointer to DTC InfrastructureManagement interface object std::unique_ptr m_dtcInstrumentationAssetCF; QHash m_mountingPointAssetsMap; ///< Hold all available structure element ids for meteo data units (key == assetId) QHash m_mainStructureElements; NGL::INGLLogger &m_logger; ///< Interface to the Logging-Facility }; } // namespace MeteoDataManagement