92int main(
int argc,
char *argv[])
96 const char * db_name =
nullptr;
97 const char * object_id =
nullptr;
98 const char * query =
"";
99 std::string class_name;
100 bool init_children =
false;
102 for(
int i = 1; i < argc; i++) {
103 const char * cp = argv[i];
104 if(!strcmp(cp,
"-h") || !strcmp(cp,
"--help")) {
108 if(!strcmp(cp,
"-t") || !strcmp(cp,
"--init-children")) {
109 init_children =
true;
111 else if(!strcmp(cp,
"-d") || !strcmp(cp,
"--data")) {
112 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { db_name = argv[i]; }
114 else if(!strcmp(cp,
"-c") || !strcmp(cp,
"--class-name")) {
115 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { class_name = argv[i]; }
117 else if(!strcmp(cp,
"-i") || !strcmp(cp,
"--object-id")) {
118 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { object_id = argv[i]; }
120 else if(!strcmp(cp,
"-q") || !strcmp(cp,
"--query")) {
121 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { query = argv[i]; }
124 std::cerr <<
"ERROR: bad parameter " << cp << std::endl;
126 return (EXIT_FAILURE);
130 if(db_name ==
nullptr) {
131 std::cerr <<
"ERROR: no database name provided\n";
132 return (EXIT_FAILURE);
135 if(class_name.empty()) {
136 std::cerr <<
"ERROR: no class name provided\n";
137 return (EXIT_FAILURE);
140 if(*query != 0 && object_id !=
nullptr) {
141 std::cerr <<
"ERROR: only one parameter -i or -q can be provided\n";
142 return (EXIT_FAILURE);
146std::cout << std::boolalpha;
152 std::cerr <<
"Can not load database: " << db_name << std::endl;
153 return (EXIT_FAILURE);
156 std::vector< dunedaq::conffwk::ConfigObject > objects;
161 conf.
get(class_name, object_id, obj, 1);
163 catch (dunedaq::conffwk::NotFound & ex) {
164 std::cerr <<
"Can not get object \'" << object_id <<
"\' of class \'" << class_name <<
"\':\n" << ex << std::endl;
165 return (EXIT_FAILURE);
167 objects.push_back(obj);
171 conf.
get(class_name, objects, query, 1);
173 catch (dunedaq::conffwk::NotFound & ex) {
174 std::cerr <<
"Can not get objects of class \'" << class_name <<
"\':\n" << ex << std::endl;
175 return (EXIT_FAILURE);
181 return (o1->
UID() < o2->
UID());
185 std::set< dunedaq::conffwk::ConfigObject *, SortByUId > sorted_objects;
187 for(
auto& i : objects)
188 sorted_objects.insert(&i);
190 for(
auto& i : sorted_objects) {
191 if(class_name ==
"ActionPlan") {
194 else if(class_name ==
"Application") {
197 else if(class_name ==
"Connection") {
200 else if(class_name ==
"ConnectionService") {
203 else if(class_name ==
"ConnectivityService") {
206 else if(class_name ==
"DaqApplication") {
209 else if(class_name ==
"DaqModule") {
212 else if(class_name ==
"DaqModulesGroup") {
215 else if(class_name ==
"DaqModulesGroupById") {
218 else if(class_name ==
"DaqModulesGroupByType") {
221 else if(class_name ==
"DetDataReceiver") {
224 else if(class_name ==
"DetDataSender") {
227 else if(class_name ==
"DetectorConfig") {
230 else if(class_name ==
"DetectorStream") {
233 else if(class_name ==
"DetectorToDaqConnection") {
236 else if(class_name ==
"DummyApplication") {
239 else if(class_name ==
"DummyD2D") {
242 else if(class_name ==
"DummyReceiver") {
245 else if(class_name ==
"DummyResource") {
248 else if(class_name ==
"DummyResourceSet") {
251 else if(class_name ==
"DummyResourceSetAND") {
254 else if(class_name ==
"DummySender") {
257 else if(class_name ==
"DummySmartResource") {
260 else if(class_name ==
"DummyStream") {
263 else if(class_name ==
"FSMCommand") {
266 else if(class_name ==
"FSMaction") {
269 else if(class_name ==
"FSMconfiguration") {
272 else if(class_name ==
"FSMsequence") {
275 else if(class_name ==
"FSMtransition") {
278 else if(class_name ==
"FSMxTransition") {
281 else if(class_name ==
"GeoId") {
284 else if(class_name ==
"HostComponent") {
287 else if(class_name ==
"Jsonable") {
290 else if(class_name ==
"JsonableTest") {
293 else if(class_name ==
"NetworkConnection") {
296 else if(class_name ==
"NetworkDevice") {
299 else if(class_name ==
"NetworkInterface") {
302 else if(class_name ==
"OpMonConf") {
305 else if(class_name ==
"OpMonURI") {
308 else if(class_name ==
"PhysicalHost") {
311 else if(class_name ==
"ProcessingResource") {
314 else if(class_name ==
"Queue") {
317 else if(class_name ==
"QueueWithSourceId") {
320 else if(class_name ==
"RCApplication") {
323 else if(class_name ==
"RCBroadcaster") {
326 else if(class_name ==
"Resource") {
329 else if(class_name ==
"ResourceSet") {
332 else if(class_name ==
"ResourceSetDisableAND") {
335 else if(class_name ==
"ResourceSetDisableOR") {
338 else if(class_name ==
"ResourceTree") {
341 else if(class_name ==
"Segment") {
344 else if(class_name ==
"Service") {
347 else if(class_name ==
"Session") {
350 else if(class_name ==
"StorageDevice") {
353 else if(class_name ==
"Variable") {
356 else if(class_name ==
"VariableBase") {
359 else if(class_name ==
"VariableSet") {
362 else if(class_name ==
"VirtualHost") {
366 std::cerr <<
"ERROR: do not know how to dump object of " << class_name <<
" class\n";
367 return (EXIT_FAILURE);
371 catch (dunedaq::conffwk::Exception & ex) {
372 std::cerr <<
"Caught " << ex << std::endl;
373 return (EXIT_FAILURE);