84int main(
int argc,
char *argv[])
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;
94 for(
int i = 1; i < argc; i++) {
95 const char * cp = argv[i];
96 if(!strcmp(cp,
"-h") || !strcmp(cp,
"--help")) {
100 if(!strcmp(cp,
"-t") || !strcmp(cp,
"--init-children")) {
101 init_children =
true;
103 else if(!strcmp(cp,
"-d") || !strcmp(cp,
"--data")) {
104 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { db_name = argv[i]; }
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]; }
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]; }
112 else if(!strcmp(cp,
"-q") || !strcmp(cp,
"--query")) {
113 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { query = argv[i]; }
116 std::cerr <<
"ERROR: bad parameter " << cp << std::endl;
118 return (EXIT_FAILURE);
122 if(db_name ==
nullptr) {
123 std::cerr <<
"ERROR: no database name provided\n";
124 return (EXIT_FAILURE);
127 if(class_name.empty()) {
128 std::cerr <<
"ERROR: no class name provided\n";
129 return (EXIT_FAILURE);
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);
138std::cout << std::boolalpha;
144 std::cerr <<
"Can not load database: " << db_name << std::endl;
145 return (EXIT_FAILURE);
148 std::vector< dunedaq::conffwk::ConfigObject > objects;
153 conf.
get(class_name, object_id, obj, 1);
156 std::cerr <<
"Can not get object \'" << object_id <<
"\' of class \'" << class_name <<
"\':\n" << ex << std::endl;
157 return (EXIT_FAILURE);
159 objects.push_back(obj);
163 conf.
get(class_name, objects, query, 1);
166 std::cerr <<
"Can not get objects of class \'" << class_name <<
"\':\n" << ex << std::endl;
167 return (EXIT_FAILURE);
173 return (o1->
UID() < o2->
UID());
177 std::set< dunedaq::conffwk::ConfigObject *, SortByUId > sorted_objects;
179 for(
auto& i : objects)
180 sorted_objects.insert(&i);
182 for(
auto& i : sorted_objects) {
183 if(class_name ==
"ActionPlan") {
186 else if(class_name ==
"Application") {
189 else if(class_name ==
"Component") {
192 else if(class_name ==
"Connection") {
195 else if(class_name ==
"ConnectionService") {
198 else if(class_name ==
"ConnectivityService") {
201 else if(class_name ==
"DaqApplication") {
204 else if(class_name ==
"DaqModule") {
207 else if(class_name ==
"DaqModulesGroup") {
210 else if(class_name ==
"DaqModulesGroupById") {
213 else if(class_name ==
"DaqModulesGroupByType") {
216 else if(class_name ==
"DetDataReceiver") {
219 else if(class_name ==
"DetDataSender") {
222 else if(class_name ==
"DetectorConfig") {
225 else if(class_name ==
"DetectorStream") {
228 else if(class_name ==
"DetectorToDaqConnection") {
231 else if(class_name ==
"FSMCommand") {
234 else if(class_name ==
"FSMaction") {
237 else if(class_name ==
"FSMconfiguration") {
240 else if(class_name ==
"FSMsequence") {
243 else if(class_name ==
"FSMtransition") {
246 else if(class_name ==
"FSMxTransition") {
249 else if(class_name ==
"GeoId") {
252 else if(class_name ==
"HostComponent") {
255 else if(class_name ==
"Jsonable") {
258 else if(class_name ==
"JsonableTest") {
261 else if(class_name ==
"NetworkConnection") {
264 else if(class_name ==
"NetworkDevice") {
267 else if(class_name ==
"NetworkInterface") {
270 else if(class_name ==
"OpMonConf") {
273 else if(class_name ==
"OpMonURI") {
276 else if(class_name ==
"PhysicalHost") {
279 else if(class_name ==
"ProcessingResource") {
282 else if(class_name ==
"Queue") {
285 else if(class_name ==
"QueueWithSourceId") {
288 else if(class_name ==
"RCApplication") {
291 else if(class_name ==
"RCBroadcaster") {
294 else if(class_name ==
"Resource") {
297 else if(class_name ==
"ResourceBase") {
300 else if(class_name ==
"ResourceSet") {
303 else if(class_name ==
"ResourceSetAND") {
306 else if(class_name ==
"ResourceSetOR") {
309 else if(class_name ==
"Segment") {
312 else if(class_name ==
"Service") {
315 else if(class_name ==
"Session") {
318 else if(class_name ==
"StorageDevice") {
321 else if(class_name ==
"Variable") {
324 else if(class_name ==
"VariableBase") {
327 else if(class_name ==
"VariableSet") {
330 else if(class_name ==
"VirtualHost") {
334 std::cerr <<
"ERROR: do not know how to dump object of " << class_name <<
" class\n";
335 return (EXIT_FAILURE);
339 catch (dunedaq::conffwk::Exception & ex) {
340 std::cerr <<
"Caught " << ex << std::endl;
341 return (EXIT_FAILURE);