244{
245
246
247 const char * db_name = nullptr;
248 const char * object_id = nullptr;
249 const char * query = "";
250 std::string class_name;
251 bool init_children = false;
252
253 for(int i = 1; i < argc; i++) {
254 const char * cp = argv[i];
255 if(!strcmp(cp, "-h") || !strcmp(cp, "--help")) {
257 return 0;
258 }
259 if(!strcmp(cp, "-t") || !strcmp(cp, "--init-children")) {
260 init_children = true;
261 }
262 else if(!strcmp(cp, "-d") || !strcmp(cp, "--data")) {
263 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { db_name = argv[i]; }
264 }
265 else if(!strcmp(cp, "-c") || !strcmp(cp, "--class-name")) {
266 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { class_name = argv[i]; }
267 }
268 else if(!strcmp(cp, "-i") || !strcmp(cp, "--object-id")) {
269 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { object_id = argv[i]; }
270 }
271 else if(!strcmp(cp, "-q") || !strcmp(cp, "--query")) {
272 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { query = argv[i]; }
273 }
274 else {
275 std::cerr << "ERROR: bad parameter " << cp << std::endl;
277 return (EXIT_FAILURE);
278 }
279 }
280
281 if(db_name == nullptr) {
282 std::cerr << "ERROR: no database name provided\n";
283 return (EXIT_FAILURE);
284 }
285
286 if(class_name.empty()) {
287 std::cerr << "ERROR: no class name provided\n";
288 return (EXIT_FAILURE);
289 }
290
291 if(*query != 0 && object_id != nullptr) {
292 std::cerr << "ERROR: only one parameter -i or -q can be provided\n";
293 return (EXIT_FAILURE);
294 }
295
296
297std::cout << std::boolalpha;
298
299 try {
301
302 if(!conf.loaded()) {
303 std::cerr << "Can not load database: " << db_name << std::endl;
304 return (EXIT_FAILURE);
305 }
306
307 std::vector< dunedaq::conffwk::ConfigObject > objects;
308
309 if(object_id) {
311 try {
312 conf.get(class_name, object_id, obj, 1);
313 }
315 std::cerr << "Can not get object \'" << object_id << "\' of class \'" << class_name << "\':\n" << ex << std::endl;
316 return (EXIT_FAILURE);
317 }
318 objects.push_back(obj);
319 }
320 else {
321 try {
322 conf.get(class_name, objects, query, 1);
323 }
325 std::cerr << "Can not get objects of class \'" << class_name << "\':\n" << ex << std::endl;
326 return (EXIT_FAILURE);
327 }
328 }
329
330 struct SortByUId {
332 return (o1->
UID() < o2->
UID());
333 };
334 };
335
336 std::set< dunedaq::conffwk::ConfigObject *, SortByUId > sorted_objects;
337
338 for(auto& i : objects)
339 sorted_objects.insert(&i);
340
341 for(auto& i : sorted_objects) {
342 if(class_name == "AVXAbsRunSumProcessor") {
344 }
345 else if(class_name == "AVXFixedPedestalSubtractProcessor") {
347 }
348 else if(class_name == "AVXFrugalPedestalSubtractProcessor") {
350 }
351 else if(class_name == "AVXRunSumProcessor") {
353 }
354 else if(class_name == "AVXThresholdProcessor") {
356 }
357 else if(class_name == "CRTBernReaderConf") {
359 }
360 else if(class_name == "CRTBernReaderModule") {
362 }
363 else if(class_name == "CRTGrenobleReaderConf") {
365 }
366 else if(class_name == "CRTGrenobleReaderModule") {
368 }
369 else if(class_name == "CRTReaderApplication") {
371 }
372 else if(class_name == "CRTReaderConf") {
374 }
375 else if(class_name == "CTBApplication") {
377 }
378 else if(class_name == "CTBCRTSubsystem") {
380 }
381 else if(class_name == "CTBCalibrationStream") {
383 }
384 else if(class_name == "CTBConf") {
386 }
387 else if(class_name == "CTBCountLLT") {
389 }
390 else if(class_name == "CTBHLT") {
392 }
393 else if(class_name == "CTBLLT") {
395 }
396 else if(class_name == "CTBMisc") {
398 }
399 else if(class_name == "CTBModule") {
401 }
402 else if(class_name == "CTBMonitorSocket") {
404 }
405 else if(class_name == "CTBPDSLLT") {
407 }
408 else if(class_name == "CTBPDSSubsystem") {
410 }
411 else if(class_name == "CTBPulser") {
413 }
414 else if(class_name == "CTBRandomTrigger") {
416 }
417 else if(class_name == "CTBReceiverSocket") {
419 }
420 else if(class_name == "CTBSocket") {
422 }
423 else if(class_name == "CTBSockets") {
425 }
426 else if(class_name == "CTBStatisticsSocket") {
428 }
429 else if(class_name == "CTBSubsystem") {
431 }
432 else if(class_name == "CTBTiming") {
434 }
435 else if(class_name == "CTBTrigger") {
437 }
438 else if(class_name == "CTBTriggerReport") {
440 }
441 else if(class_name == "CTBoardConf") {
443 }
444 else if(class_name == "ColdADCSettings") {
446 }
447 else if(class_name == "DFApplication") {
449 }
450 else if(class_name == "DFHWConf") {
452 }
453 else if(class_name == "DFOApplication") {
455 }
456 else if(class_name == "DFOConf") {
458 }
459 else if(class_name == "DFOModule") {
461 }
462 else if(class_name == "DPDKPortConfiguration") {
464 }
465 else if(class_name == "DPDKReaderConf") {
467 }
468 else if(class_name == "DPDKReaderModule") {
470 }
471 else if(class_name == "DPDKReceiver") {
473 }
474 else if(class_name == "DTSHSIApplication") {
476 }
477 else if(class_name == "DaphneApplication") {
479 }
480 else if(class_name == "DaphneConf") {
482 }
483 else if(class_name == "DaphneControllerModule") {
485 }
486 else if(class_name == "DaphneMapEntry") {
488 }
489 else if(class_name == "DaphneV2ADC") {
491 }
492 else if(class_name == "DaphneV2AFE") {
494 }
495 else if(class_name == "DaphneV2BoardConf") {
497 }
498 else if(class_name == "DaphneV2Channel") {
500 }
501 else if(class_name == "DaphneV2ControllerModule") {
503 }
504 else if(class_name == "DaphneV2LNA") {
506 }
507 else if(class_name == "DaphneV2PGA") {
509 }
510 else if(class_name == "DaphneV3ControllerModule") {
512 }
513 else if(class_name == "DataHandlerConf") {
515 }
516 else if(class_name == "DataHandlerModule") {
518 }
519 else if(class_name == "DataProcessor") {
521 }
522 else if(class_name == "DataReaderConf") {
524 }
525 else if(class_name == "DataReaderModule") {
527 }
528 else if(class_name == "DataRecorderConf") {
530 }
531 else if(class_name == "DataRecorderModule") {
533 }
534 else if(class_name == "DataStoreConf") {
536 }
537 else if(class_name == "DataSubscriberModule") {
539 }
540 else if(class_name == "DataWriterConf") {
542 }
543 else if(class_name == "DataWriterModule") {
545 }
546 else if(class_name == "FDDataHandlerModule") {
548 }
549 else if(class_name == "FDFakeReaderModule") {
551 }
552 else if(class_name == "FEMBSettings") {
554 }
555 else if(class_name == "FakeDataApplication") {
557 }
558 else if(class_name == "FakeDataProdConf") {
560 }
561 else if(class_name == "FakeDataProdModule") {
563 }
564 else if(class_name == "FakeDataReceiver") {
566 }
567 else if(class_name == "FakeDataSender") {
569 }
570 else if(class_name == "FakeHSIApplication") {
572 }
573 else if(class_name == "FakeHSIEventGeneratorConf") {
575 }
576 else if(class_name == "FakeHSIEventGeneratorModule") {
578 }
579 else if(class_name == "FakeSocketWriterModule") {
581 }
582 else if(class_name == "FelixCardControllerModule") {
584 }
585 else if(class_name == "FelixDataReceiver") {
587 }
588 else if(class_name == "FelixDataSender") {
590 }
591 else if(class_name == "FelixDetectorToDaqConnection") {
593 }
594 else if(class_name == "FelixInterface") {
596 }
597 else if(class_name == "FelixReaderConf") {
599 }
600 else if(class_name == "FelixReaderModule") {
602 }
603 else if(class_name == "FileReaderReceiver") {
605 }
606 else if(class_name == "FilenameParams") {
608 }
609 else if(class_name == "FixedTimeTCConf") {
611 }
612 else if(class_name == "FixedTimeTCMakerModule") {
614 }
615 else if(class_name == "FixedTimeTCMakerModuleConf") {
617 }
618 else if(class_name == "FragmentAggregatorConf") {
620 }
621 else if(class_name == "FragmentAggregatorModule") {
623 }
624 else if(class_name == "HDF5FileLayoutParams") {
626 }
627 else if(class_name == "HDF5PathParams") {
629 }
630 else if(class_name == "HSI2TCTranslatorConf") {
632 }
633 else if(class_name == "HSIDataHandlerModule") {
635 }
636 else if(class_name == "HSIEventSender") {
638 }
639 else if(class_name == "HSIEventToTCApplication") {
641 }
642 else if(class_name == "HSIFrameProcessor") {
644 }
645 else if(class_name == "HSIReadout") {
647 }
648 else if(class_name == "HSIReadoutConf") {
650 }
651 else if(class_name == "HSISignalWindow") {
653 }
654 else if(class_name == "HermesDataSender") {
656 }
657 else if(class_name == "HermesModule") {
659 }
660 else if(class_name == "HermesModuleConf") {
662 }
663 else if(class_name == "IpbusAddressTable") {
665 }
666 else if(class_name == "IpbusDevice") {
668 }
669 else if(class_name == "LatencyBuffer") {
671 }
672 else if(class_name == "MLTApplication") {
674 }
675 else if(class_name == "MLTConf") {
677 }
678 else if(class_name == "MLTModule") {
680 }
681 else if(class_name == "NICStatsConf") {
683 }
684 else if(class_name == "NP02ReadoutApplication") {
686 }
687 else if(class_name == "NWDetDataReceiver") {
689 }
690 else if(class_name == "NWDetDataSender") {
692 }
693 else if(class_name == "NetworkConnectionDescriptor") {
695 }
696 else if(class_name == "NetworkConnectionRule") {
698 }
699 else if(class_name == "NetworkDetectorToDaqConnection") {
701 }
702 else if(class_name == "PDSRawDataProcessor") {
704 }
705 else if(class_name == "ProcessingStep") {
707 }
708 else if(class_name == "QueueConnectionRule") {
710 }
711 else if(class_name == "QueueDescriptor") {
713 }
714 else if(class_name == "ROIGroupConf") {
716 }
717 else if(class_name == "RandomTCMakerConf") {
719 }
720 else if(class_name == "RandomTCMakerModule") {
722 }
723 else if(class_name == "RawDataProcessor") {
725 }
726 else if(class_name == "ReadoutApplication") {
728 }
729 else if(class_name == "ReadoutHost") {
731 }
732 else if(class_name == "RequestHandler") {
734 }
735 else if(class_name == "RoHwConfig") {
737 }
738 else if(class_name == "SNBBookkeeperApplication") {
740 }
741 else if(class_name == "SNBBookkeeperConf") {
743 }
744 else if(class_name == "SNBDataHandlerModule") {
746 }
747 else if(class_name == "SNBFileReaderConf") {
749 }
750 else if(class_name == "SNBFileReaderModule") {
752 }
753 else if(class_name == "SNBFileSourceParameters") {
755 }
756 else if(class_name == "SNBFileTransfer") {
758 }
759 else if(class_name == "SNBTransferApplication") {
761 }
762 else if(class_name == "SNBTransferBookkeeper") {
764 }
765 else if(class_name == "SNBTransferConf") {
767 }
768 else if(class_name == "SSPLEDCalibModule") {
770 }
771 else if(class_name == "SSPRegister") {
773 }
774 else if(class_name == "SamplesOverThresholdMinima") {
776 }
777 else if(class_name == "SmartDaqApplication") {
779 }
780 else if(class_name == "SocketDataSender") {
782 }
783 else if(class_name == "SocketDataWriterConf") {
785 }
786 else if(class_name == "SocketDataWriterModule") {
788 }
789 else if(class_name == "SocketReaderConf") {
791 }
792 else if(class_name == "SocketReaderModule") {
794 }
795 else if(class_name == "SocketReceiver") {
797 }
798 else if(class_name == "SocketWriterConf") {
800 }
801 else if(class_name == "SocketWriterModule") {
803 }
804 else if(class_name == "SourceIDConf") {
806 }
807 else if(class_name == "SourceIDToNetworkConnection") {
809 }
810 else if(class_name == "StandaloneTCMakerConf") {
812 }
813 else if(class_name == "StandaloneTCMakerModule") {
815 }
816 else if(class_name == "StreamEmulationParameters") {
818 }
819 else if(class_name == "SubdetectorReadoutWindowMap") {
821 }
822 else if(class_name == "TAAlgorithm") {
824 }
825 else if(class_name == "TADataProcessor") {
827 }
828 else if(class_name == "TAMakerADCSimpleWindowAlgorithm") {
830 }
831 else if(class_name == "TAMakerBundleNAlgorithm") {
833 }
834 else if(class_name == "TAMakerChannelAdjacencyAlgorithm") {
836 }
837 else if(class_name == "TAMakerChannelDistanceAlgorithm") {
839 }
840 else if(class_name == "TAMakerDBSCANAlgorithm") {
842 }
843 else if(class_name == "TAMakerHorizontalMuonAlgorithm") {
845 }
846 else if(class_name == "TAMakerMichelElectronAlgorithm") {
848 }
849 else if(class_name == "TAMakerPlaneCoincidenceAlgorithm") {
851 }
852 else if(class_name == "TAMakerPrescaleAlgorithm") {
854 }
855 else if(class_name == "TCAlgorithm") {
857 }
858 else if(class_name == "TCDataProcessor") {
860 }
861 else if(class_name == "TCMakerADCSimpleWindowAlgorithm") {
863 }
864 else if(class_name == "TCMakerBundleNAlgorithm") {
866 }
867 else if(class_name == "TCMakerChannelAdjacencyAlgorithm") {
869 }
870 else if(class_name == "TCMakerChannelDistanceAlgorithm") {
872 }
873 else if(class_name == "TCMakerDBSCANAlgorithm") {
875 }
876 else if(class_name == "TCMakerHorizontalMuonAlgorithm") {
878 }
879 else if(class_name == "TCMakerMichelElectronAlgorithm") {
881 }
882 else if(class_name == "TCMakerPlaneCoincidenceAlgorithm") {
884 }
885 else if(class_name == "TCMakerPrescaleAlgorithm") {
887 }
888 else if(class_name == "TCReadoutMap") {
890 }
891 else if(class_name == "TDEAMCModule") {
893 }
894 else if(class_name == "TDEAMCModuleConf") {
896 }
897 else if(class_name == "TDECrateApplication") {
899 }
900 else if(class_name == "TPCRawDataProcessor") {
902 }
903 else if(class_name == "TPDataProcessor") {
905 }
906 else if(class_name == "TPReplayApplication") {
908 }
909 else if(class_name == "TPReplayModule") {
911 }
912 else if(class_name == "TPReplayModuleConf") {
914 }
915 else if(class_name == "TPStreamConf") {
917 }
918 else if(class_name == "TPStreamWriterApplication") {
920 }
921 else if(class_name == "TPStreamWriterConf") {
923 }
924 else if(class_name == "TPStreamWriterModule") {
926 }
927 else if(class_name == "TRBConf") {
929 }
930 else if(class_name == "TRBModule") {
932 }
933 else if(class_name == "TRMonReqApplication") {
935 }
936 else if(class_name == "TRMonRequestorConf") {
938 }
939 else if(class_name == "TRMonRequestorModule") {
941 }
942 else if(class_name == "TdeAmcDetDataSender") {
944 }
945 else if(class_name == "TriggerApplication") {
947 }
948 else if(class_name == "TriggerBitword") {
950 }
951 else if(class_name == "TriggerDataHandlerModule") {
953 }
954 else if(class_name == "WIBModule") {
956 }
957 else if(class_name == "WIBModuleConf") {
959 }
960 else if(class_name == "WIBPulserSettings") {
962 }
963 else if(class_name == "WIBSettings") {
965 }
966 else if(class_name == "WIECApplication") {
968 }
969 else {
970 std::cerr << "ERROR: do not know how to dump object of " << class_name << " class\n";
971 return (EXIT_FAILURE);
972 }
973 }
974 }
975 catch (dunedaq::conffwk::Exception & ex) {
976 std::cerr << "Caught " << ex << std::endl;
977 return (EXIT_FAILURE);
978 }
979
980 return 0;
981}
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.
static void no_param(const char *s)