255{
256
257
258 const char * db_name = nullptr;
259 const char * object_id = nullptr;
260 const char * query = "";
261 std::string class_name;
262 bool init_children = false;
263
264 for(int i = 1; i < argc; i++) {
265 const char * cp = argv[i];
266 if(!strcmp(cp, "-h") || !strcmp(cp, "--help")) {
268 return 0;
269 }
270 if(!strcmp(cp, "-t") || !strcmp(cp, "--init-children")) {
271 init_children = true;
272 }
273 else if(!strcmp(cp, "-d") || !strcmp(cp, "--data")) {
274 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { db_name = argv[i]; }
275 }
276 else if(!strcmp(cp, "-c") || !strcmp(cp, "--class-name")) {
277 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { class_name = argv[i]; }
278 }
279 else if(!strcmp(cp, "-i") || !strcmp(cp, "--object-id")) {
280 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { object_id = argv[i]; }
281 }
282 else if(!strcmp(cp, "-q") || !strcmp(cp, "--query")) {
283 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { query = argv[i]; }
284 }
285 else {
286 std::cerr << "ERROR: bad parameter " << cp << std::endl;
288 return (EXIT_FAILURE);
289 }
290 }
291
292 if(db_name == nullptr) {
293 std::cerr << "ERROR: no database name provided\n";
294 return (EXIT_FAILURE);
295 }
296
297 if(class_name.empty()) {
298 std::cerr << "ERROR: no class name provided\n";
299 return (EXIT_FAILURE);
300 }
301
302 if(*query != 0 && object_id != nullptr) {
303 std::cerr << "ERROR: only one parameter -i or -q can be provided\n";
304 return (EXIT_FAILURE);
305 }
306
307
308std::cout << std::boolalpha;
309
310 try {
312
313 if(!conf.loaded()) {
314 std::cerr << "Can not load database: " << db_name << std::endl;
315 return (EXIT_FAILURE);
316 }
317
318 std::vector< dunedaq::conffwk::ConfigObject > objects;
319
320 if(object_id) {
322 try {
323 conf.get(class_name, object_id, obj, 1);
324 }
325 catch (dunedaq::conffwk::NotFound & ex) {
326 std::cerr << "Can not get object \'" << object_id << "\' of class \'" << class_name << "\':\n" << ex << std::endl;
327 return (EXIT_FAILURE);
328 }
329 objects.push_back(obj);
330 }
331 else {
332 try {
333 conf.get(class_name, objects, query, 1);
334 }
335 catch (dunedaq::conffwk::NotFound & ex) {
336 std::cerr << "Can not get objects of class \'" << class_name << "\':\n" << ex << std::endl;
337 return (EXIT_FAILURE);
338 }
339 }
340
341 struct SortByUId {
342 bool operator() (const dunedaq::conffwk::ConfigObject * o1, const dunedaq::conffwk::ConfigObject * o2) const {
343 return (o1->
UID() < o2->
UID());
344 };
345 };
346
347 std::set< dunedaq::conffwk::ConfigObject *, SortByUId > sorted_objects;
348
349 for(auto& i : objects)
350 sorted_objects.insert(&i);
351
352 for(auto& i : sorted_objects) {
353 if(class_name == "AVXAbsRunSumProcessor") {
355 }
356 else if(class_name == "AVXFixedPedestalSubtractProcessor") {
358 }
359 else if(class_name == "AVXFrugalPedestalSubtractProcessor") {
361 }
362 else if(class_name == "AVXRunSumProcessor") {
364 }
365 else if(class_name == "AVXThresholdProcessor") {
367 }
368 else if(class_name == "CIBApplication") {
370 }
371 else if(class_name == "CIBCalibrationStream") {
373 }
374 else if(class_name == "CIBConf") {
376 }
377 else if(class_name == "CIBModule") {
379 }
380 else if(class_name == "CIBTrigger") {
382 }
383 else if(class_name == "CIBTriggerReport") {
385 }
386 else if(class_name == "CIBoardConf") {
388 }
389 else if(class_name == "CRTBernFrameBuilderConf") {
391 }
392 else if(class_name == "CRTBernFrameBuilderModule") {
394 }
395 else if(class_name == "CRTFrameBuilderApplication") {
397 }
398 else if(class_name == "CRTFrameBuilderConf") {
400 }
401 else if(class_name == "CRTGrenobleFrameBuilderConf") {
403 }
404 else if(class_name == "CRTGrenobleFrameBuilderModule") {
406 }
407 else if(class_name == "CTBApplication") {
409 }
410 else if(class_name == "CTBCRTSubsystem") {
412 }
413 else if(class_name == "CTBCalibrationStream") {
415 }
416 else if(class_name == "CTBConf") {
418 }
419 else if(class_name == "CTBCountLLT") {
421 }
422 else if(class_name == "CTBHLT") {
424 }
425 else if(class_name == "CTBLLT") {
427 }
428 else if(class_name == "CTBMisc") {
430 }
431 else if(class_name == "CTBModule") {
433 }
434 else if(class_name == "CTBMonitorSocket") {
436 }
437 else if(class_name == "CTBPDSLLT") {
439 }
440 else if(class_name == "CTBPDSSubsystem") {
442 }
443 else if(class_name == "CTBPulser") {
445 }
446 else if(class_name == "CTBRandomTrigger") {
448 }
449 else if(class_name == "CTBReceiverSocket") {
451 }
452 else if(class_name == "CTBSocket") {
454 }
455 else if(class_name == "CTBSockets") {
457 }
458 else if(class_name == "CTBStatisticsSocket") {
460 }
461 else if(class_name == "CTBSubsystem") {
463 }
464 else if(class_name == "CTBTiming") {
466 }
467 else if(class_name == "CTBTrigger") {
469 }
470 else if(class_name == "CTBTriggerReport") {
472 }
473 else if(class_name == "CTBoardConf") {
475 }
476 else if(class_name == "ColdADCSettings") {
478 }
479 else if(class_name == "DFApplication") {
481 }
482 else if(class_name == "DFHWConf") {
484 }
485 else if(class_name == "DFOApplication") {
487 }
488 else if(class_name == "DFOConf") {
490 }
491 else if(class_name == "DFOModule") {
493 }
494 else if(class_name == "DPDKPortConfiguration") {
496 }
497 else if(class_name == "DPDKReaderConf") {
499 }
500 else if(class_name == "DPDKReaderModule") {
502 }
503 else if(class_name == "DPDKReceiver") {
505 }
506 else if(class_name == "DTSHSIApplication") {
508 }
509 else if(class_name == "DaphneApplication") {
511 }
512 else if(class_name == "DaphneConf") {
514 }
515 else if(class_name == "DaphneControllerModule") {
517 }
518 else if(class_name == "DaphneMapEntry") {
520 }
521 else if(class_name == "DaphneV2ADC") {
523 }
524 else if(class_name == "DaphneV2AFE") {
526 }
527 else if(class_name == "DaphneV2BoardConf") {
529 }
530 else if(class_name == "DaphneV2Channel") {
532 }
533 else if(class_name == "DaphneV2ControllerModule") {
535 }
536 else if(class_name == "DaphneV2LNA") {
538 }
539 else if(class_name == "DaphneV2PGA") {
541 }
542 else if(class_name == "DaphneV3ControllerModule") {
544 }
545 else if(class_name == "DataHandlerConf") {
547 }
548 else if(class_name == "DataHandlerModule") {
550 }
551 else if(class_name == "DataMoveCallbackConf") {
553 }
554 else if(class_name == "DataMoveCallbackDescriptor") {
556 }
557 else if(class_name == "DataProcessor") {
559 }
560 else if(class_name == "DataReaderConf") {
562 }
563 else if(class_name == "DataReaderModule") {
565 }
566 else if(class_name == "DataRecorderConf") {
568 }
569 else if(class_name == "DataRecorderModule") {
571 }
572 else if(class_name == "DataStoreConf") {
574 }
575 else if(class_name == "DataSubscriberModule") {
577 }
578 else if(class_name == "DataWriterConf") {
580 }
581 else if(class_name == "DataWriterModule") {
583 }
584 else if(class_name == "DetectorFrameBuilderConf") {
586 }
587 else if(class_name == "DetectorFrameBuilderModule") {
589 }
590 else if(class_name == "FDDataHandlerModule") {
592 }
593 else if(class_name == "FDFakeReaderModule") {
595 }
596 else if(class_name == "FEMBSettings") {
598 }
599 else if(class_name == "FakeDataApplication") {
601 }
602 else if(class_name == "FakeDataProdConf") {
604 }
605 else if(class_name == "FakeDataProdModule") {
607 }
608 else if(class_name == "FakeDataReceiver") {
610 }
611 else if(class_name == "FakeDataSender") {
613 }
614 else if(class_name == "FakeHSIApplication") {
616 }
617 else if(class_name == "FakeHSIEventGeneratorConf") {
619 }
620 else if(class_name == "FakeHSIEventGeneratorModule") {
622 }
623 else if(class_name == "FelixCardControllerModule") {
625 }
626 else if(class_name == "FelixDataReceiver") {
628 }
629 else if(class_name == "FelixDataSender") {
631 }
632 else if(class_name == "FelixDetectorToDaqConnection") {
634 }
635 else if(class_name == "FelixInterface") {
637 }
638 else if(class_name == "FelixReaderConf") {
640 }
641 else if(class_name == "FelixReaderModule") {
643 }
644 else if(class_name == "FileReaderReceiver") {
646 }
647 else if(class_name == "FilenameParams") {
649 }
650 else if(class_name == "FixedTimeTCConf") {
652 }
653 else if(class_name == "FixedTimeTCMakerModule") {
655 }
656 else if(class_name == "FixedTimeTCMakerModuleConf") {
658 }
659 else if(class_name == "FragmentAggregatorConf") {
661 }
662 else if(class_name == "FragmentAggregatorModule") {
664 }
665 else if(class_name == "HDF5FileLayoutParams") {
667 }
668 else if(class_name == "HDF5PathParams") {
670 }
671 else if(class_name == "HSI2TCTranslatorConf") {
673 }
674 else if(class_name == "HSIDataHandlerModule") {
676 }
677 else if(class_name == "HSIEventSender") {
679 }
680 else if(class_name == "HSIEventToTCApplication") {
682 }
683 else if(class_name == "HSIFrameProcessor") {
685 }
686 else if(class_name == "HSIReadout") {
688 }
689 else if(class_name == "HSIReadoutConf") {
691 }
692 else if(class_name == "HSISignalWindow") {
694 }
695 else if(class_name == "HermesDataSender") {
697 }
698 else if(class_name == "HermesModule") {
700 }
701 else if(class_name == "HermesModuleConf") {
703 }
704 else if(class_name == "IpbusAddressTable") {
706 }
707 else if(class_name == "IpbusDevice") {
709 }
710 else if(class_name == "LatencyBuffer") {
712 }
713 else if(class_name == "MLTApplication") {
715 }
716 else if(class_name == "MLTConf") {
718 }
719 else if(class_name == "MLTModule") {
721 }
722 else if(class_name == "NICStatsConf") {
724 }
725 else if(class_name == "NP02ReadoutApplication") {
727 }
728 else if(class_name == "NWDetDataReceiver") {
730 }
731 else if(class_name == "NWDetDataSender") {
733 }
734 else if(class_name == "NetworkConnectionDescriptor") {
736 }
737 else if(class_name == "NetworkConnectionRule") {
739 }
740 else if(class_name == "NetworkDetectorToDaqConnection") {
742 }
743 else if(class_name == "PDSRawDataProcessor") {
745 }
746 else if(class_name == "ProcessingStep") {
748 }
749 else if(class_name == "QueueConnectionRule") {
751 }
752 else if(class_name == "QueueDescriptor") {
754 }
755 else if(class_name == "ROIGroupConf") {
757 }
758 else if(class_name == "RandomTCMakerConf") {
760 }
761 else if(class_name == "RandomTCMakerModule") {
763 }
764 else if(class_name == "RawDataProcessor") {
766 }
767 else if(class_name == "ReadoutApplication") {
769 }
770 else if(class_name == "ReadoutHost") {
772 }
773 else if(class_name == "RequestHandler") {
775 }
776 else if(class_name == "RoHwConfig") {
778 }
779 else if(class_name == "SNBBookkeeperApplication") {
781 }
782 else if(class_name == "SNBBookkeeperConf") {
784 }
785 else if(class_name == "SNBDataHandlerModule") {
787 }
788 else if(class_name == "SNBFileReaderConf") {
790 }
791 else if(class_name == "SNBFileReaderModule") {
793 }
794 else if(class_name == "SNBFileSourceParameters") {
796 }
797 else if(class_name == "SNBFileTransfer") {
799 }
800 else if(class_name == "SNBTransferApplication") {
802 }
803 else if(class_name == "SNBTransferBookkeeper") {
805 }
806 else if(class_name == "SNBTransferConf") {
808 }
809 else if(class_name == "SSPLEDCalibModule") {
811 }
812 else if(class_name == "SSPRegister") {
814 }
815 else if(class_name == "SamplesOverThresholdMinima") {
817 }
818 else if(class_name == "SmartDaqApplication") {
820 }
821 else if(class_name == "SocketDataSender") {
823 }
824 else if(class_name == "SocketDataWriterConf") {
826 }
827 else if(class_name == "SocketDataWriterModule") {
829 }
830 else if(class_name == "SocketDetectorToDaqConnection") {
832 }
833 else if(class_name == "SocketReaderConf") {
835 }
836 else if(class_name == "SocketReaderModule") {
838 }
839 else if(class_name == "SocketReceiver") {
841 }
842 else if(class_name == "SocketWriterConf") {
844 }
845 else if(class_name == "SocketWriterModule") {
847 }
848 else if(class_name == "SourceIDConf") {
850 }
851 else if(class_name == "SourceIDToNetworkConnection") {
853 }
854 else if(class_name == "StandaloneTCMakerConf") {
856 }
857 else if(class_name == "StandaloneTCMakerModule") {
859 }
860 else if(class_name == "StreamEmulationParameters") {
862 }
863 else if(class_name == "SubdetectorReadoutWindowMap") {
865 }
866 else if(class_name == "TAAlgorithm") {
868 }
869 else if(class_name == "TADataProcessor") {
871 }
872 else if(class_name == "TAMakerADCSimpleWindowAlgorithm") {
874 }
875 else if(class_name == "TAMakerBundleNAlgorithm") {
877 }
878 else if(class_name == "TAMakerChannelAdjacencyAlgorithm") {
880 }
881 else if(class_name == "TAMakerChannelDistanceAlgorithm") {
883 }
884 else if(class_name == "TAMakerDBSCANAlgorithm") {
886 }
887 else if(class_name == "TAMakerHorizontalMuonAlgorithm") {
889 }
890 else if(class_name == "TAMakerMichelElectronAlgorithm") {
892 }
893 else if(class_name == "TAMakerPlaneCoincidenceAlgorithm") {
895 }
896 else if(class_name == "TAMakerPrescaleAlgorithm") {
898 }
899 else if(class_name == "TCAlgorithm") {
901 }
902 else if(class_name == "TCDataProcessor") {
904 }
905 else if(class_name == "TCMakerADCSimpleWindowAlgorithm") {
907 }
908 else if(class_name == "TCMakerBundleNAlgorithm") {
910 }
911 else if(class_name == "TCMakerChannelAdjacencyAlgorithm") {
913 }
914 else if(class_name == "TCMakerChannelDistanceAlgorithm") {
916 }
917 else if(class_name == "TCMakerDBSCANAlgorithm") {
919 }
920 else if(class_name == "TCMakerHorizontalMuonAlgorithm") {
922 }
923 else if(class_name == "TCMakerMichelElectronAlgorithm") {
925 }
926 else if(class_name == "TCMakerPlaneCoincidenceAlgorithm") {
928 }
929 else if(class_name == "TCMakerPrescaleAlgorithm") {
931 }
932 else if(class_name == "TCReadoutMap") {
934 }
935 else if(class_name == "TDEAMCModule") {
937 }
938 else if(class_name == "TDEAMCModuleConf") {
940 }
941 else if(class_name == "TDECrateApplication") {
943 }
944 else if(class_name == "TPCRawDataProcessor") {
946 }
947 else if(class_name == "TPDataProcessor") {
949 }
950 else if(class_name == "TPReplayApplication") {
952 }
953 else if(class_name == "TPReplayModule") {
955 }
956 else if(class_name == "TPReplayModuleConf") {
958 }
959 else if(class_name == "TPStreamConf") {
961 }
962 else if(class_name == "TPStreamWriterApplication") {
964 }
965 else if(class_name == "TPStreamWriterConf") {
967 }
968 else if(class_name == "TPStreamWriterModule") {
970 }
971 else if(class_name == "TRBConf") {
973 }
974 else if(class_name == "TRBModule") {
976 }
977 else if(class_name == "TRMonReqApplication") {
979 }
980 else if(class_name == "TRMonRequestorConf") {
982 }
983 else if(class_name == "TRMonRequestorModule") {
985 }
986 else if(class_name == "TdeAmcDetDataSender") {
988 }
989 else if(class_name == "TriggerApplication") {
991 }
992 else if(class_name == "TriggerBitword") {
994 }
995 else if(class_name == "TriggerDataHandlerModule") {
997 }
998 else if(class_name == "WIBModule") {
1000 }
1001 else if(class_name == "WIBModuleConf") {
1003 }
1004 else if(class_name == "WIBPulserSettings") {
1006 }
1007 else if(class_name == "WIBSettings") {
1009 }
1010 else if(class_name == "WIECApplication") {
1012 }
1013 else {
1014 std::cerr << "ERROR: do not know how to dump object of " << class_name << " class\n";
1015 return (EXIT_FAILURE);
1016 }
1017 }
1018 }
1019 catch (dunedaq::conffwk::Exception & ex) {
1020 std::cerr << "Caught " << ex << std::endl;
1021 return (EXIT_FAILURE);
1022 }
1023
1024 return 0;
1025}
Represents database objects.
const std::string & UID() const noexcept
Return object identity.
Defines base class for cache of template objects.
static void no_param(const char *s)