/** * MainHandler for AssetManagement * $Id$ * $HeadURL$ * $Author$ */ #include "main_handler.h" #include #include #include #include "settings.h" #include namespace TargetManagement { MainHandler::MainHandler(QObject *parent) : QObject(parent) , m_ddsHandler(nullptr) , m_dbHandler(nullptr) , m_logger(getLogger("MainHandler")) {} MainHandler::~MainHandler() { m_handlerTargetConfig.reset(); // Land400 : m_shootbackController.reset(); m_elevationMap.reset(); m_handlerTargetAreaAssignment.reset(); m_handlerShootbackArea.reset(); m_handlerShootbackTarget.reset(); // : Land400 m_ddsHandler.reset(); m_dbHandler.reset(); } bool MainHandler::init(int domainId, int exerciseId) { INFO_LOG(m_logger) << "MainHandler::init"; // initialize database m_dbHandler = std::make_shared(); if (!m_dbHandler->init(exerciseId, Settings::settings())) return false; // initialize DDS m_ddsHandler = std::make_shared(domainId, exerciseId); if (!m_ddsHandler->init()) { ERROR_LOG(m_logger) << "Initialisation ddsHandler failed."; return false; } DEBUG_LOG(m_logger) << "Initialisation ddsHandler succesful."; NOTICE_LOG(m_logger) << "setNewState Core::RunningState::Starting "; m_ddsHandler->pacemaker()->setNewState(Core::RunningState::Starting); // initialize handlerTargetConfig m_handlerTargetConfig = std::make_shared(m_ddsHandler, this); if (!m_handlerTargetConfig->init()) { ERROR_LOG(m_logger) << "Initialisation HandlerTargetConfig failed."; m_ddsHandler->pacemaker()->setNewState(Core::RunningState::StartingError); return false; } if (TargetManagement::Settings::useL400Targets()) { // // L400: ElevationMap, ShootbackArea, ShootbackTarget .. // use srtm_38_02.tif for Bremen, until general solution is provided: // loading ElevationMap (async): // // use srtm_38_02.tif for Bremen, until general solution is provided: QString elevationFileAbs(QLatin1String("/usr/share/arcgis/resources/elevation/srtm_38_02.tif")); // srtm_38_02.tif -> Bremen QFileInfo fi(elevationFileAbs); if (!fi.exists(elevationFileAbs)) { ERROR_LOG(m_logger) << LOGFUNCTION << ", elevationFile '" << elevationFileAbs << "' doesn't exists"; return false; } m_elevationMap = std::make_shared(fi); m_elevationMap->waitForInitialization(); // needs some seconds: // // initialize handlerShootbackArea m_handlerShootbackArea = std::make_shared(this); if (!m_handlerShootbackArea->init()) { ERROR_LOG(m_logger) << "Initialisation HandlerShootbackArea failed."; m_ddsHandler->pacemaker()->setNewState(Core::RunningState::StartingError); return false; } // initialize handlerShootbackTarget m_handlerShootbackTarget = std::make_shared(this); if (!m_handlerShootbackTarget->init()) { ERROR_LOG(m_logger) << "Initialisation HandlerShootbackTarget failed."; m_ddsHandler->pacemaker()->setNewState(Core::RunningState::StartingError); return false; } // initialize handlerTargetAreaAssignment m_handlerTargetAreaAssignment = std::make_shared(this); if (!m_handlerTargetAreaAssignment->init()) { ERROR_LOG(m_logger) << "Initialisation HandlerTargetAreaAssignment failed."; m_ddsHandler->pacemaker()->setNewState(Core::RunningState::StartingError); return false; } // shootbackController m_shootbackController = std::make_shared(this); bool initLos = m_shootbackController->initLOS(m_elevationMap.get()); bool initDds = m_shootbackController->initDds(m_handlerShootbackArea, m_handlerShootbackTarget, m_handlerTargetAreaAssignment); if (!(initLos && initDds)) { ERROR_LOG(m_logger) << "Initialisation ShootbackController failed."; m_ddsHandler->pacemaker()->setNewState(Core::RunningState::StartingError); return false; } } NOTICE_LOG(m_logger) << "setNewState Core::RunningState::Running "; m_ddsHandler->pacemaker()->setNewState(Core::RunningState::Running); return true; } std::shared_ptr MainHandler::db() const { return m_dbHandler->db(); } } // namespace TargetManagement