/** * MainHandler for MeteoDataManagement * $Id$ * $HeadURL$ * $Author$ * Created by hjl, SLSE, 2016-09-21 */ #include "main_handler.h" #include "settings.h" #include #include #include namespace MeteoDataManagement { MainHandler::MainHandler() : m_ddsHandler(nullptr) , m_dbHandler(nullptr) , m_handlerMeteoDataUnits(nullptr) , m_handlerInfrastructureData(nullptr) , m_handlerStaticMeteoData(nullptr) , m_gnaService(nullptr) , m_logger(getLogger("MainHandler")) { } // end of ctor() //----------------------------------------------------------------------------- MainHandler::~MainHandler() { delete m_gnaService; m_handlerMeteoDataUnits = nullptr; m_handlerInfrastructureData = nullptr; m_handlerStaticMeteoData = nullptr; m_ddsHandler = nullptr; m_dbHandler = nullptr; } // end of dtor() //----------------------------------------------------------------------------- bool MainHandler::init(int domainId) { INFO_LOG(m_logger) << "Start MeteoDataManagement MainHandler."; const QString errStr = initInternal(domainId); if (!errStr.isEmpty()) { ERROR_LOG(m_logger) << errStr; if (m_ddsHandler && m_ddsHandler->pacemaker()) m_ddsHandler->pacemaker()->setNewState(Core::RunningState::StartingError, errStr); return false; } m_ddsHandler->pacemaker()->setNewState(Core::RunningState::Running); INFO_LOG(m_logger) << "MeteoDataManagement MainHandler initialized."; return true; } QString MainHandler::initInternal(int domainId) { // initialize DDS m_ddsHandler = std::make_shared(domainId); if (!m_ddsHandler->init()) return QStringLiteral("Initialisation DdsHandler failed."); // initialize database m_dbHandler = std::make_shared(); if (!m_dbHandler->init(0, Settings::settings())) return QStringLiteral("Initialisation DbHandler failed."); // create HandlerMeteoDataUnits INFO_LOG(m_logger) << "create HandlerMeteoDataUnits."; m_handlerMeteoDataUnits = std::make_shared(this); if (!m_handlerMeteoDataUnits->init()) return QStringLiteral("create HandlerMeteoDataUnits failed."); // initialize handlerInfraStructureData m_handlerInfrastructureData = std::make_shared(m_ddsHandler, m_handlerMeteoDataUnits); if (!m_handlerInfrastructureData->init()) return QStringLiteral("Initialisation HandlerInfrastructureData failed."); // Info: Initialisierung der einzelnen Wetterstationen erfolgt direkt aus ISM. // initialize HandlerStaticMeteoData m_handlerStaticMeteoData = std::make_shared(m_ddsHandler, db()); if (!m_handlerStaticMeteoData->init()) return QStringLiteral("Initialisation HandlerStaticMeteoData failed."); m_gnaService = new GuezNasat::Initialization; if (!m_gnaService->initialize(m_ddsHandler->dds(), m_dbHandler->db()->database()) || !m_gnaService->loadFromDatabase()) return QStringLiteral("Can not initialize GNA service."); return QString(); } // end of init() //----------------------------------------------------------------------------- std::shared_ptr MainHandler::db() const { return m_dbHandler->db(); } } // namespace MeteoDataManagement