Galaxis Codebase  1.0.0
Team Galaxis software stack for the Carolo Cup 2023 - ROS2 based software
settings.cpp
Go to the documentation of this file.
1 #include "utils/settings.hpp"
2 #include "utils/file.hpp"
3 #include "utils/logger.hpp"
4 
5 shared_ptr<json> galaxis::utils::read_json_file(std::string path) {
6  auto fileContentRawSPtr = read_file_to_string(path);
7 
8  auto filecontentSPtr = std::make_shared<json>();
9  *filecontentSPtr = nlohmann::json::parse(*fileContentRawSPtr);
10 
11  return filecontentSPtr;
12 }
13 
14 shared_ptr<json> galaxis::utils::read_system_settings(std::string key) {
15  std::string systemSettingsPath = "settings/runtime_system.json";
16 
17  auto fileContentRawSPtr = read_file_to_string(systemSettingsPath);
18 
19  auto filecontentSPtr = std::make_shared<json>();
20  *filecontentSPtr = nlohmann::json::parse(*fileContentRawSPtr)[key];
21  return filecontentSPtr;
22 }
23 
24 shared_ptr<std::string> galaxis::utils::read_file_to_string(std::string path) {
25  // open file and append to string
26  std::ifstream file;
27  file.open(path);
28  std::shared_ptr<std::string> fileContent = std::make_shared<std::string>();
29 
30  if(file.is_open()) {
31  std::string line;
32 
33  while(getline(file, line)) {
34  (*fileContent) += line;
35  }
36 
37  file.close();
38  }
39  else {
40  log_debug("Failed to load file: ", path);
41  throw std::runtime_error("Failed to load file.");
42  }
43 
44  return fileContent;
45 }
46 
47 // using namespace galaxis::utils;
48 // // ############### SETTINGS CLASS #####################
49 // Settings::Settings() {}
50 // Settings::~Settings() {}
51 
52 // void Settings::load(std::shared_ptr<json> settingsJson) {
53 // if(loadLock == true) {
54 // log_warning("[utils/settings.hpp | Settings] Settings already loaded. Cannot load them again!");
55 // return;
56 // }
57 
58 // booleanParamMap.clear();
59 // integerParamMap.clear();
60 // doubleParamMap.clear();
61 // stringParamMap.clear();
62 
63 // for (json::iterator paramIt = settingsJson->begin(); paramIt != settingsJson->end(); ++paramIt) {
64 // try {
65 // if(itParam.value().is_boolean()) {
66 // booleanParamMap.insert(std::make_pair(paramIt.key(), paramIt.value()))
67 // }
68 // else if(itParam.value().is_number()) {
69 // if(itParam.value().is_number_integer()) {
70 // integerParamMap.insert(std::make_pair(paramIt.key(), paramIt.value()))
71 // }
72 // else if(itParam.value().is_number_float()) {
73 // doubleParamMap.insert(std::make_pair(paramIt.key(), paramIt.value()))
74 // }
75 // }
76 // else if (itParam.value().is_string()) {
77 // stringParamMap.insert(std::make_pair(paramIt.key(), paramIt.value()))
78 // }
79 // else {
80 // log_warning("[utils/settings.hpp | Settings] Parameter Type not implemented!");
81 // }
82 // }
83 // catch (std::exception &e) {
84 // log_warning("[utils/settings.hpp | Settings] Parameter Type not implemented!");
85 // }
86 // }
87 
88 // loadLock = true;
89 // }
90 
91 // ParameterType Settings::getType(std::string key) {
92 // if(booleanParamMap.find(key) != booleanParamMap.end()) {
93 // return BOOLEAN;
94 // }
95 // if(integerParamMap.find(key) != integerParamMap.end()) {
96 // return INTEGER;
97 // }
98 // if(doubleParamMap.find(key) != doubleParamMap.end()) {
99 // return DOUBLE;
100 // }
101 // if(stringParamMap.find(key) != stringParamMap.end()) {
102 // return STRING;
103 // }
104 // return NOTEXIST;
105 // }
106 
107 // bool Settings::getParamBool(std::string key) {
108 // if(booleanParamMap.find(key) != booleanParamMap.end()) {
109 // return booleanParamMap[key];
110 // }
111 // else {
112 // log_warning("[utils/settings.hpp | Settings] Bool Parameter not found: ", key);
113 // return false;
114 // }
115 // }
116 
117 // double Settings::getParamInteger(std::string key) {
118 // if(integerParamMap.find(key) != integerParamMap.end()) {
119 // return integerParamMap[key];
120 // }
121 // else {
122 // log_warning("[utils/settings.hpp | Settings] Integer Parameter not found: ", key);
123 // return false;
124 // }
125 // }
126 
127 // double Settings::getParamDouble(std::string key) {
128 // if(doubleParamMap.find(key) != doubleParamMap.end()) {
129 // return doubleParamMap[key];
130 // }
131 // else {
132 // log_warning("[utils/settings.hpp | Settings] Double Parameter not found: ", key);
133 // return false;
134 // }
135 // }
136 
137 // std::string Settings::getParamString(std::string key) {
138 // if(stringParamMap.find(key) != stringParamMap.end()) {
139 // return stringParamMap[key];
140 // }
141 // else {
142 // log_warning("[utils/settings.hpp | Settings] String Parameter not found: ", key);
143 // return "";
144 // }
145 // }
galaxis::utils::read_file_to_string
shared_ptr< std::string > read_file_to_string(std::string path)
Definition: settings.cpp:24
settings.hpp
galaxis::utils::read_system_settings
shared_ptr< json > read_system_settings(std::string key)
Definition: settings.cpp:14
file.hpp
galaxis::utils::read_json_file
shared_ptr< json > read_json_file(std::string path)
Definition: settings.cpp:5
logger.hpp
galaxis::utils::log_debug
void log_debug(const Args &... args)
Definition: logger.hpp:62