#include "SettingsHandler.h" #include "../itc_pressure_optimizer.h" #include "SettingsHandlerConfig.h" #include using namespace SettingsHandlerConfig; void SettingsHandler::pullEquipmentName() { midas::odb o(this->path); std::string equipmentName = o[SettingsHandlerConfig::EQUIPMENT_NAME]; Event event = {EventType::EQUIPMENT_NAME, equipmentName}; eventBus.publish(event); } void SettingsHandler::pullOutputPressureSPIndex() { midas::odb o(this->path); int outputPressureSPIndex = o[SettingsHandlerConfig::OUTPUT_PRESSURE_SP_INDEX]; Event event = {EventType::OUTPUT_PRESSURE_SP_INDEX, outputPressureSPIndex}; eventBus.publish(event); } void SettingsHandler::pullInputSPIndex() { midas::odb o(this->path); int inputSPIndex = o[SettingsHandlerConfig::INPUT_SP_INDEX]; Event event = {EventType::INPUT_SP_INDEX, inputSPIndex}; eventBus.publish(event); } void SettingsHandler::pullInputTemperatureIndex() { midas::odb o(this->path); int temperatureIndex = o[SettingsHandlerConfig::INPUT_TEMPERATURE_INDEX]; Event event = {EventType::INPUT_TEMPERATURE_INDEX, temperatureIndex}; eventBus.publish(event); } void SettingsHandler::pullInputPowerIndex() { midas::odb o(this->path); int powerIndex = o[SettingsHandlerConfig::INPUT_POWER_INDEX]; Event event = {EventType::INPUT_POWER_INDEX, powerIndex}; eventBus.publish(event); } SettingsHandler::SettingsHandler(EventBus &eventBusReference, std::string equipmentName) : path(SettingsHandlerConfig::PATH_PREFIX + equipmentName + SettingsHandlerConfig::PATH_SUFFIX), eventBus(eventBusReference) { eventBus.subscribe( [this](const itcPressureOptimizer::EquipmentInitEvent &e) { this->init(); }); } bool SettingsHandler::init() { midas::odb o(this->path); bool areKeysValids = true; if (!midas::odb::exists(path + SettingsHandlerConfig::EQUIPMENT_NAME)) { TMFE::Instance()->Msg(MERROR, __FUNCTION__, "Key at %s%s doesn't exists", path.c_str(), SettingsHandlerConfig::EQUIPMENT_NAME.c_str()); areKeysValids = false; } if (!midas::odb::exists(path + SettingsHandlerConfig::OUTPUT_PRESSURE_SP_INDEX)) { TMFE::Instance()->Msg( MERROR, __FUNCTION__, "Key at %s%s doesn't exists", path.c_str(), SettingsHandlerConfig::OUTPUT_PRESSURE_SP_INDEX.c_str()); areKeysValids = false; } if (!midas::odb::exists(path + SettingsHandlerConfig::INPUT_SP_INDEX)) { TMFE::Instance()->Msg(MERROR, __FUNCTION__, "Key at %s%s doesn't exists", path.c_str(), SettingsHandlerConfig::INPUT_SP_INDEX.c_str()); areKeysValids = false; } if (!midas::odb::exists(path + SettingsHandlerConfig::INPUT_TEMPERATURE_INDEX)) { TMFE::Instance()->Msg( MERROR, __FUNCTION__, "Key at %s%s doesn't exists", path.c_str(), SettingsHandlerConfig::INPUT_TEMPERATURE_INDEX.c_str()); areKeysValids = false; } if (!midas::odb::exists(path + SettingsHandlerConfig::INPUT_POWER_INDEX)) { TMFE::Instance()->Msg(MERROR, __FUNCTION__, "Key at %s%s doesn't exists", path.c_str(), SettingsHandlerConfig::INPUT_POWER_INDEX.c_str()); areKeysValids = false; } if (!areKeysValids) { midas::odb o = { {SettingsHandlerConfig::EQUIPMENT_NAME.c_str(), {SettingsHandlerConfig::DEFAULT_EQUIPMENT_NAME.c_str()}}, {SettingsHandlerConfig::OUTPUT_PRESSURE_SP_INDEX.c_str(), {SettingsHandlerConfig::DEFAULT_INDEX_VALUE}}, {SettingsHandlerConfig::INPUT_SP_INDEX.c_str(), {SettingsHandlerConfig::DEFAULT_INDEX_VALUE}}, {SettingsHandlerConfig::INPUT_TEMPERATURE_INDEX.c_str(), {SettingsHandlerConfig::DEFAULT_INDEX_VALUE}}, {SettingsHandlerConfig::INPUT_POWER_INDEX.c_str(), {SettingsHandlerConfig::DEFAULT_INDEX_VALUE}}, {SettingsHandlerConfig::TIME_WINDOW.c_str(), {SettingsHandlerConfig::DEFAULT_TIME_WINDOWS_SIZE}}}; TMFE::Instance()->Msg( MERROR, __FUNCTION__, "Some keys are missing at %s. Please fill the generated template.", path.c_str()); o.connect(this->path); throw std::runtime_error("SettinsHandler init failed - see MIDAS " "console and take care of all the errors\n"); } this->pullEquipmentName(); this->pullOutputPressureSPIndex(); this->pullInputSPIndex(); this->pullInputTemperatureIndex(); this->pullInputPowerIndex(); return true; }