DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dump_dunedaq__confmodel.cpp File Reference
#include "conffwk/ConfigObject.hpp"
#include "conffwk/Configuration.hpp"
#include "confmodel/ActionPlan.hpp"
#include "confmodel/Application.hpp"
#include "confmodel/Component.hpp"
#include "confmodel/Connection.hpp"
#include "confmodel/ConnectionService.hpp"
#include "confmodel/ConnectivityService.hpp"
#include "confmodel/DaqApplication.hpp"
#include "confmodel/DaqModule.hpp"
#include "confmodel/DaqModulesGroup.hpp"
#include "confmodel/DaqModulesGroupById.hpp"
#include "confmodel/DaqModulesGroupByType.hpp"
#include "confmodel/DetDataReceiver.hpp"
#include "confmodel/DetDataSender.hpp"
#include "confmodel/DetectorConfig.hpp"
#include "confmodel/DetectorStream.hpp"
#include "confmodel/DetectorToDaqConnection.hpp"
#include "confmodel/FSMCommand.hpp"
#include "confmodel/FSMaction.hpp"
#include "confmodel/FSMconfiguration.hpp"
#include "confmodel/FSMsequence.hpp"
#include "confmodel/FSMtransition.hpp"
#include "confmodel/FSMxTransition.hpp"
#include "confmodel/GeoId.hpp"
#include "confmodel/HostComponent.hpp"
#include "confmodel/Jsonable.hpp"
#include "confmodel/JsonableTest.hpp"
#include "confmodel/NetworkConnection.hpp"
#include "confmodel/NetworkDevice.hpp"
#include "confmodel/NetworkInterface.hpp"
#include "confmodel/OpMonConf.hpp"
#include "confmodel/OpMonURI.hpp"
#include "confmodel/PhysicalHost.hpp"
#include "confmodel/ProcessingResource.hpp"
#include "confmodel/Queue.hpp"
#include "confmodel/QueueWithSourceId.hpp"
#include "confmodel/RCApplication.hpp"
#include "confmodel/RCBroadcaster.hpp"
#include "confmodel/Resource.hpp"
#include "confmodel/ResourceBase.hpp"
#include "confmodel/ResourceSet.hpp"
#include "confmodel/ResourceSetAND.hpp"
#include "confmodel/ResourceSetOR.hpp"
#include "confmodel/Segment.hpp"
#include "confmodel/Service.hpp"
#include "confmodel/Session.hpp"
#include "confmodel/StorageDevice.hpp"
#include "confmodel/Variable.hpp"
#include "confmodel/VariableBase.hpp"
#include "confmodel/VariableSet.hpp"
#include "confmodel/VirtualHost.hpp"

Go to the source code of this file.

Functions

static void usage (const char *s)
 
static void no_param (const char *s)
 
int main (int argc, char *argv[])
 

Function Documentation

◆ main()

int main ( int argc,
char * argv[] )

Definition at line 84 of file dump_dunedaq__confmodel.cpp.

85{
86 // parse parameters
87
88 const char * db_name = nullptr;
89 const char * object_id = nullptr;
90 const char * query = "";
91 std::string class_name;
92 bool init_children = false;
93
94 for(int i = 1; i < argc; i++) {
95 const char * cp = argv[i];
96 if(!strcmp(cp, "-h") || !strcmp(cp, "--help")) {
97 usage(argv[0]);
98 return 0;
99 }
100 if(!strcmp(cp, "-t") || !strcmp(cp, "--init-children")) {
101 init_children = true;
102 }
103 else if(!strcmp(cp, "-d") || !strcmp(cp, "--data")) {
104 if(++i == argc || argv[i][0] == '-') { no_param(cp); } else { db_name = argv[i]; }
105 }
106 else if(!strcmp(cp, "-c") || !strcmp(cp, "--class-name")) {
107 if(++i == argc || argv[i][0] == '-') { no_param(cp); } else { class_name = argv[i]; }
108 }
109 else if(!strcmp(cp, "-i") || !strcmp(cp, "--object-id")) {
110 if(++i == argc || argv[i][0] == '-') { no_param(cp); } else { object_id = argv[i]; }
111 }
112 else if(!strcmp(cp, "-q") || !strcmp(cp, "--query")) {
113 if(++i == argc || argv[i][0] == '-') { no_param(cp); } else { query = argv[i]; }
114 }
115 else {
116 std::cerr << "ERROR: bad parameter " << cp << std::endl;
117 usage(argv[0]);
118 return (EXIT_FAILURE);
119 }
120 }
121
122 if(db_name == nullptr) {
123 std::cerr << "ERROR: no database name provided\n";
124 return (EXIT_FAILURE);
125 }
126
127 if(class_name.empty()) {
128 std::cerr << "ERROR: no class name provided\n";
129 return (EXIT_FAILURE);
130 }
131
132 if(*query != 0 && object_id != nullptr) {
133 std::cerr << "ERROR: only one parameter -i or -q can be provided\n";
134 return (EXIT_FAILURE);
135 }
136
137
138std::cout << std::boolalpha;
139
140 try {
142
143 if(!conf.loaded()) {
144 std::cerr << "Can not load database: " << db_name << std::endl;
145 return (EXIT_FAILURE);
146 }
147
148 std::vector< dunedaq::conffwk::ConfigObject > objects;
149
150 if(object_id) {
152 try {
153 conf.get(class_name, object_id, obj, 1);
154 }
155 catch (dunedaq::conffwk::NotFound & ex) {
156 std::cerr << "Can not get object \'" << object_id << "\' of class \'" << class_name << "\':\n" << ex << std::endl;
157 return (EXIT_FAILURE);
158 }
159 objects.push_back(obj);
160 }
161 else {
162 try {
163 conf.get(class_name, objects, query, 1);
164 }
165 catch (dunedaq::conffwk::NotFound & ex) {
166 std::cerr << "Can not get objects of class \'" << class_name << "\':\n" << ex << std::endl;
167 return (EXIT_FAILURE);
168 }
169 }
170
171 struct SortByUId {
172 bool operator() (const dunedaq::conffwk::ConfigObject * o1, const dunedaq::conffwk::ConfigObject * o2) const {
173 return (o1->UID() < o2->UID());
174 };
175 };
176
177 std::set< dunedaq::conffwk::ConfigObject *, SortByUId > sorted_objects;
178
179 for(auto& i : objects)
180 sorted_objects.insert(&i);
181
182 for(auto& i : sorted_objects) {
183 if(class_name == "ActionPlan") {
184 std::cout << *conf.get<dunedaq::confmodel::ActionPlan>(*i, init_children) << std::endl;
185 }
186 else if(class_name == "Application") {
187 std::cout << *conf.get<dunedaq::confmodel::Application>(*i, init_children) << std::endl;
188 }
189 else if(class_name == "Component") {
190 std::cout << *conf.get<dunedaq::confmodel::Component>(*i, init_children) << std::endl;
191 }
192 else if(class_name == "Connection") {
193 std::cout << *conf.get<dunedaq::confmodel::Connection>(*i, init_children) << std::endl;
194 }
195 else if(class_name == "ConnectionService") {
196 std::cout << *conf.get<dunedaq::confmodel::ConnectionService>(*i, init_children) << std::endl;
197 }
198 else if(class_name == "ConnectivityService") {
199 std::cout << *conf.get<dunedaq::confmodel::ConnectivityService>(*i, init_children) << std::endl;
200 }
201 else if(class_name == "DaqApplication") {
202 std::cout << *conf.get<dunedaq::confmodel::DaqApplication>(*i, init_children) << std::endl;
203 }
204 else if(class_name == "DaqModule") {
205 std::cout << *conf.get<dunedaq::confmodel::DaqModule>(*i, init_children) << std::endl;
206 }
207 else if(class_name == "DaqModulesGroup") {
208 std::cout << *conf.get<dunedaq::confmodel::DaqModulesGroup>(*i, init_children) << std::endl;
209 }
210 else if(class_name == "DaqModulesGroupById") {
211 std::cout << *conf.get<dunedaq::confmodel::DaqModulesGroupById>(*i, init_children) << std::endl;
212 }
213 else if(class_name == "DaqModulesGroupByType") {
214 std::cout << *conf.get<dunedaq::confmodel::DaqModulesGroupByType>(*i, init_children) << std::endl;
215 }
216 else if(class_name == "DetDataReceiver") {
217 std::cout << *conf.get<dunedaq::confmodel::DetDataReceiver>(*i, init_children) << std::endl;
218 }
219 else if(class_name == "DetDataSender") {
220 std::cout << *conf.get<dunedaq::confmodel::DetDataSender>(*i, init_children) << std::endl;
221 }
222 else if(class_name == "DetectorConfig") {
223 std::cout << *conf.get<dunedaq::confmodel::DetectorConfig>(*i, init_children) << std::endl;
224 }
225 else if(class_name == "DetectorStream") {
226 std::cout << *conf.get<dunedaq::confmodel::DetectorStream>(*i, init_children) << std::endl;
227 }
228 else if(class_name == "DetectorToDaqConnection") {
229 std::cout << *conf.get<dunedaq::confmodel::DetectorToDaqConnection>(*i, init_children) << std::endl;
230 }
231 else if(class_name == "FSMCommand") {
232 std::cout << *conf.get<dunedaq::confmodel::FSMCommand>(*i, init_children) << std::endl;
233 }
234 else if(class_name == "FSMaction") {
235 std::cout << *conf.get<dunedaq::confmodel::FSMaction>(*i, init_children) << std::endl;
236 }
237 else if(class_name == "FSMconfiguration") {
238 std::cout << *conf.get<dunedaq::confmodel::FSMconfiguration>(*i, init_children) << std::endl;
239 }
240 else if(class_name == "FSMsequence") {
241 std::cout << *conf.get<dunedaq::confmodel::FSMsequence>(*i, init_children) << std::endl;
242 }
243 else if(class_name == "FSMtransition") {
244 std::cout << *conf.get<dunedaq::confmodel::FSMtransition>(*i, init_children) << std::endl;
245 }
246 else if(class_name == "FSMxTransition") {
247 std::cout << *conf.get<dunedaq::confmodel::FSMxTransition>(*i, init_children) << std::endl;
248 }
249 else if(class_name == "GeoId") {
250 std::cout << *conf.get<dunedaq::confmodel::GeoId>(*i, init_children) << std::endl;
251 }
252 else if(class_name == "HostComponent") {
253 std::cout << *conf.get<dunedaq::confmodel::HostComponent>(*i, init_children) << std::endl;
254 }
255 else if(class_name == "Jsonable") {
256 std::cout << *conf.get<dunedaq::confmodel::Jsonable>(*i, init_children) << std::endl;
257 }
258 else if(class_name == "JsonableTest") {
259 std::cout << *conf.get<dunedaq::confmodel::JsonableTest>(*i, init_children) << std::endl;
260 }
261 else if(class_name == "NetworkConnection") {
262 std::cout << *conf.get<dunedaq::confmodel::NetworkConnection>(*i, init_children) << std::endl;
263 }
264 else if(class_name == "NetworkDevice") {
265 std::cout << *conf.get<dunedaq::confmodel::NetworkDevice>(*i, init_children) << std::endl;
266 }
267 else if(class_name == "NetworkInterface") {
268 std::cout << *conf.get<dunedaq::confmodel::NetworkInterface>(*i, init_children) << std::endl;
269 }
270 else if(class_name == "OpMonConf") {
271 std::cout << *conf.get<dunedaq::confmodel::OpMonConf>(*i, init_children) << std::endl;
272 }
273 else if(class_name == "OpMonURI") {
274 std::cout << *conf.get<dunedaq::confmodel::OpMonURI>(*i, init_children) << std::endl;
275 }
276 else if(class_name == "PhysicalHost") {
277 std::cout << *conf.get<dunedaq::confmodel::PhysicalHost>(*i, init_children) << std::endl;
278 }
279 else if(class_name == "ProcessingResource") {
280 std::cout << *conf.get<dunedaq::confmodel::ProcessingResource>(*i, init_children) << std::endl;
281 }
282 else if(class_name == "Queue") {
283 std::cout << *conf.get<dunedaq::confmodel::Queue>(*i, init_children) << std::endl;
284 }
285 else if(class_name == "QueueWithSourceId") {
286 std::cout << *conf.get<dunedaq::confmodel::QueueWithSourceId>(*i, init_children) << std::endl;
287 }
288 else if(class_name == "RCApplication") {
289 std::cout << *conf.get<dunedaq::confmodel::RCApplication>(*i, init_children) << std::endl;
290 }
291 else if(class_name == "RCBroadcaster") {
292 std::cout << *conf.get<dunedaq::confmodel::RCBroadcaster>(*i, init_children) << std::endl;
293 }
294 else if(class_name == "Resource") {
295 std::cout << *conf.get<dunedaq::confmodel::Resource>(*i, init_children) << std::endl;
296 }
297 else if(class_name == "ResourceBase") {
298 std::cout << *conf.get<dunedaq::confmodel::ResourceBase>(*i, init_children) << std::endl;
299 }
300 else if(class_name == "ResourceSet") {
301 std::cout << *conf.get<dunedaq::confmodel::ResourceSet>(*i, init_children) << std::endl;
302 }
303 else if(class_name == "ResourceSetAND") {
304 std::cout << *conf.get<dunedaq::confmodel::ResourceSetAND>(*i, init_children) << std::endl;
305 }
306 else if(class_name == "ResourceSetOR") {
307 std::cout << *conf.get<dunedaq::confmodel::ResourceSetOR>(*i, init_children) << std::endl;
308 }
309 else if(class_name == "Segment") {
310 std::cout << *conf.get<dunedaq::confmodel::Segment>(*i, init_children) << std::endl;
311 }
312 else if(class_name == "Service") {
313 std::cout << *conf.get<dunedaq::confmodel::Service>(*i, init_children) << std::endl;
314 }
315 else if(class_name == "Session") {
316 std::cout << *conf.get<dunedaq::confmodel::Session>(*i, init_children) << std::endl;
317 }
318 else if(class_name == "StorageDevice") {
319 std::cout << *conf.get<dunedaq::confmodel::StorageDevice>(*i, init_children) << std::endl;
320 }
321 else if(class_name == "Variable") {
322 std::cout << *conf.get<dunedaq::confmodel::Variable>(*i, init_children) << std::endl;
323 }
324 else if(class_name == "VariableBase") {
325 std::cout << *conf.get<dunedaq::confmodel::VariableBase>(*i, init_children) << std::endl;
326 }
327 else if(class_name == "VariableSet") {
328 std::cout << *conf.get<dunedaq::confmodel::VariableSet>(*i, init_children) << std::endl;
329 }
330 else if(class_name == "VirtualHost") {
331 std::cout << *conf.get<dunedaq::confmodel::VirtualHost>(*i, init_children) << std::endl;
332 }
333 else {
334 std::cerr << "ERROR: do not know how to dump object of " << class_name << " class\n";
335 return (EXIT_FAILURE);
336 }
337 }
338 }
339 catch (dunedaq::conffwk::Exception & ex) {
340 std::cerr << "Caught " << ex << std::endl;
341 return (EXIT_FAILURE);
342 }
343
344 return 0;
345}
Represents database objects.
const std::string & UID() const noexcept
Return object identity.
Defines base class for cache of template objects.
Try to access non-existent object or class.
Definition Errors.hpp:47
static void no_param(const char *s)
static void usage()

◆ no_param()

static void no_param ( const char * s)
static

Definition at line 78 of file dump_dunedaq__confmodel.cpp.

79{
80 std::cerr << "ERROR: the required argument for option \'" << s << "\' is missing\n\n";
81 exit (EXIT_FAILURE);
82}

◆ usage()

static void usage ( const char * s)
static

Definition at line 58 of file dump_dunedaq__confmodel.cpp.

59{
60 std::cout << s << " -d db-name -c class-name [-q query | -i object-id] [-t]\n"
61 "\n"
62 "Options/Arguments:\n"
63 " -d | --data db-name mandatory name of the database\n"
64 " -c | --class-name class-name mandatory name of class\n"
65 " -q | --query query optional query to select class objects\n"
66 " -i | --object-id object-id optional identity to select one object\n"
67 " -t | --init-children all referenced objects are initialized (is used\n"
68 " for debug purposes and performance measurements)\n"
69 " -h | --help print this message\n"
70 "\n"
71 "Description:\n"
72 " The program prints out object(s) of given class.\n"
73 " If no query or object id is provided, all objects of the class are printed.\n"
74 " It is automatically generated by oksdalgen utility.\n"
75 "\n";
76}