251{
252
253
254 const char * db_name = nullptr;
255 const char * object_id = nullptr;
256 const char * query = "";
257 std::string class_name;
258 bool init_children = false;
259
260 for(int i = 1; i < argc; i++) {
261 const char * cp = argv[i];
262 if(!strcmp(cp, "-h") || !strcmp(cp, "--help")) {
264 return 0;
265 }
266 if(!strcmp(cp, "-t") || !strcmp(cp, "--init-children")) {
267 init_children = true;
268 }
269 else if(!strcmp(cp, "-d") || !strcmp(cp, "--data")) {
270 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { db_name = argv[i]; }
271 }
272 else if(!strcmp(cp, "-c") || !strcmp(cp, "--class-name")) {
273 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { class_name = argv[i]; }
274 }
275 else if(!strcmp(cp, "-i") || !strcmp(cp, "--object-id")) {
276 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { object_id = argv[i]; }
277 }
278 else if(!strcmp(cp, "-q") || !strcmp(cp, "--query")) {
279 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { query = argv[i]; }
280 }
281 else {
282 std::cerr << "ERROR: bad parameter " << cp << std::endl;
284 return (EXIT_FAILURE);
285 }
286 }
287
288 if(db_name == nullptr) {
289 std::cerr << "ERROR: no database name provided\n";
290 return (EXIT_FAILURE);
291 }
292
293 if(class_name.empty()) {
294 std::cerr << "ERROR: no class name provided\n";
295 return (EXIT_FAILURE);
296 }
297
298 if(*query != 0 && object_id != nullptr) {
299 std::cerr << "ERROR: only one parameter -i or -q can be provided\n";
300 return (EXIT_FAILURE);
301 }
302
303
304std::cout << std::boolalpha;
305
306 try {
308
309 if(!conf.loaded()) {
310 std::cerr << "Can not load database: " << db_name << std::endl;
311 return (EXIT_FAILURE);
312 }
313
314 std::vector< dunedaq::conffwk::ConfigObject > objects;
315
316 if(object_id) {
318 try {
319 conf.get(class_name, object_id, obj, 1);
320 }
322 std::cerr << "Can not get object \'" << object_id << "\' of class \'" << class_name << "\':\n" << ex << std::endl;
323 return (EXIT_FAILURE);
324 }
325 objects.push_back(obj);
326 }
327 else {
328 try {
329 conf.get(class_name, objects, query, 1);
330 }
332 std::cerr << "Can not get objects of class \'" << class_name << "\':\n" << ex << std::endl;
333 return (EXIT_FAILURE);
334 }
335 }
336
337 struct SortByUId {
339 return (o1->
UID() < o2->
UID());
340 };
341 };
342
343 std::set< dunedaq::conffwk::ConfigObject *, SortByUId > sorted_objects;
344
345 for(auto& i : objects)
346 sorted_objects.insert(&i);
347
348 for(auto& i : sorted_objects) {
349 if(class_name == "AVXAbsRunSumProcessor") {
351 }
352 else if(class_name == "AVXFixedPedestalSubtractProcessor") {
354 }
355 else if(class_name == "AVXFrugalPedestalSubtractProcessor") {
357 }
358 else if(class_name == "AVXRunSumProcessor") {
360 }
361 else if(class_name == "AVXThresholdProcessor") {
363 }
364 else if(class_name == "CIBApplication") {
366 }
367 else if(class_name == "CIBCalibrationStream") {
369 }
370 else if(class_name == "CIBConf") {
372 }
373 else if(class_name == "CIBModule") {
375 }
376 else if(class_name == "CIBTrigger") {
378 }
379 else if(class_name == "CIBTriggerReport") {
381 }
382 else if(class_name == "CIBoardConf") {
384 }
385 else if(class_name == "CRTBernReaderConf") {
387 }
388 else if(class_name == "CRTBernReaderModule") {
390 }
391 else if(class_name == "CRTGrenobleReaderConf") {
393 }
394 else if(class_name == "CRTGrenobleReaderModule") {
396 }
397 else if(class_name == "CRTReaderApplication") {
399 }
400 else if(class_name == "CRTReaderConf") {
402 }
403 else if(class_name == "CTBApplication") {
405 }
406 else if(class_name == "CTBCRTSubsystem") {
408 }
409 else if(class_name == "CTBCalibrationStream") {
411 }
412 else if(class_name == "CTBConf") {
414 }
415 else if(class_name == "CTBCountLLT") {
417 }
418 else if(class_name == "CTBHLT") {
420 }
421 else if(class_name == "CTBLLT") {
423 }
424 else if(class_name == "CTBMisc") {
426 }
427 else if(class_name == "CTBModule") {
429 }
430 else if(class_name == "CTBMonitorSocket") {
432 }
433 else if(class_name == "CTBPDSLLT") {
435 }
436 else if(class_name == "CTBPDSSubsystem") {
438 }
439 else if(class_name == "CTBPulser") {
441 }
442 else if(class_name == "CTBRandomTrigger") {
444 }
445 else if(class_name == "CTBReceiverSocket") {
447 }
448 else if(class_name == "CTBSocket") {
450 }
451 else if(class_name == "CTBSockets") {
453 }
454 else if(class_name == "CTBStatisticsSocket") {
456 }
457 else if(class_name == "CTBSubsystem") {
459 }
460 else if(class_name == "CTBTiming") {
462 }
463 else if(class_name == "CTBTrigger") {
465 }
466 else if(class_name == "CTBTriggerReport") {
468 }
469 else if(class_name == "CTBoardConf") {
471 }
472 else if(class_name == "ColdADCSettings") {
474 }
475 else if(class_name == "DFApplication") {
477 }
478 else if(class_name == "DFHWConf") {
480 }
481 else if(class_name == "DFOApplication") {
483 }
484 else if(class_name == "DFOConf") {
486 }
487 else if(class_name == "DFOModule") {
489 }
490 else if(class_name == "DPDKPortConfiguration") {
492 }
493 else if(class_name == "DPDKReaderConf") {
495 }
496 else if(class_name == "DPDKReaderModule") {
498 }
499 else if(class_name == "DPDKReceiver") {
501 }
502 else if(class_name == "DTSHSIApplication") {
504 }
505 else if(class_name == "DaphneApplication") {
507 }
508 else if(class_name == "DaphneConf") {
510 }
511 else if(class_name == "DaphneControllerModule") {
513 }
514 else if(class_name == "DaphneMapEntry") {
516 }
517 else if(class_name == "DaphneV2ADC") {
519 }
520 else if(class_name == "DaphneV2AFE") {
522 }
523 else if(class_name == "DaphneV2BoardConf") {
525 }
526 else if(class_name == "DaphneV2Channel") {
528 }
529 else if(class_name == "DaphneV2ControllerModule") {
531 }
532 else if(class_name == "DaphneV2LNA") {
534 }
535 else if(class_name == "DaphneV2PGA") {
537 }
538 else if(class_name == "DaphneV3ControllerModule") {
540 }
541 else if(class_name == "DataHandlerConf") {
543 }
544 else if(class_name == "DataHandlerModule") {
546 }
547 else if(class_name == "DataProcessor") {
549 }
550 else if(class_name == "DataReaderConf") {
552 }
553 else if(class_name == "DataReaderModule") {
555 }
556 else if(class_name == "DataRecorderConf") {
558 }
559 else if(class_name == "DataRecorderModule") {
561 }
562 else if(class_name == "DataStoreConf") {
564 }
565 else if(class_name == "DataSubscriberModule") {
567 }
568 else if(class_name == "DataWriterConf") {
570 }
571 else if(class_name == "DataWriterModule") {
573 }
574 else if(class_name == "FDDataHandlerModule") {
576 }
577 else if(class_name == "FDFakeReaderModule") {
579 }
580 else if(class_name == "FEMBSettings") {
582 }
583 else if(class_name == "FakeDataApplication") {
585 }
586 else if(class_name == "FakeDataProdConf") {
588 }
589 else if(class_name == "FakeDataProdModule") {
591 }
592 else if(class_name == "FakeDataReceiver") {
594 }
595 else if(class_name == "FakeDataSender") {
597 }
598 else if(class_name == "FakeHSIApplication") {
600 }
601 else if(class_name == "FakeHSIEventGeneratorConf") {
603 }
604 else if(class_name == "FakeHSIEventGeneratorModule") {
606 }
607 else if(class_name == "FakeSocketWriterModule") {
609 }
610 else if(class_name == "FelixCardControllerModule") {
612 }
613 else if(class_name == "FelixDataReceiver") {
615 }
616 else if(class_name == "FelixDataSender") {
618 }
619 else if(class_name == "FelixDetectorToDaqConnection") {
621 }
622 else if(class_name == "FelixInterface") {
624 }
625 else if(class_name == "FelixReaderConf") {
627 }
628 else if(class_name == "FelixReaderModule") {
630 }
631 else if(class_name == "FileReaderReceiver") {
633 }
634 else if(class_name == "FilenameParams") {
636 }
637 else if(class_name == "FixedTimeTCConf") {
639 }
640 else if(class_name == "FixedTimeTCMakerModule") {
642 }
643 else if(class_name == "FixedTimeTCMakerModuleConf") {
645 }
646 else if(class_name == "FragmentAggregatorConf") {
648 }
649 else if(class_name == "FragmentAggregatorModule") {
651 }
652 else if(class_name == "HDF5FileLayoutParams") {
654 }
655 else if(class_name == "HDF5PathParams") {
657 }
658 else if(class_name == "HSI2TCTranslatorConf") {
660 }
661 else if(class_name == "HSIDataHandlerModule") {
663 }
664 else if(class_name == "HSIEventSender") {
666 }
667 else if(class_name == "HSIEventToTCApplication") {
669 }
670 else if(class_name == "HSIFrameProcessor") {
672 }
673 else if(class_name == "HSIReadout") {
675 }
676 else if(class_name == "HSIReadoutConf") {
678 }
679 else if(class_name == "HSISignalWindow") {
681 }
682 else if(class_name == "HermesDataSender") {
684 }
685 else if(class_name == "HermesModule") {
687 }
688 else if(class_name == "HermesModuleConf") {
690 }
691 else if(class_name == "IpbusAddressTable") {
693 }
694 else if(class_name == "IpbusDevice") {
696 }
697 else if(class_name == "LatencyBuffer") {
699 }
700 else if(class_name == "MLTApplication") {
702 }
703 else if(class_name == "MLTConf") {
705 }
706 else if(class_name == "MLTModule") {
708 }
709 else if(class_name == "NICStatsConf") {
711 }
712 else if(class_name == "NP02ReadoutApplication") {
714 }
715 else if(class_name == "NWDetDataReceiver") {
717 }
718 else if(class_name == "NWDetDataSender") {
720 }
721 else if(class_name == "NetworkConnectionDescriptor") {
723 }
724 else if(class_name == "NetworkConnectionRule") {
726 }
727 else if(class_name == "NetworkDetectorToDaqConnection") {
729 }
730 else if(class_name == "PDSRawDataProcessor") {
732 }
733 else if(class_name == "ProcessingStep") {
735 }
736 else if(class_name == "QueueConnectionRule") {
738 }
739 else if(class_name == "QueueDescriptor") {
741 }
742 else if(class_name == "ROIGroupConf") {
744 }
745 else if(class_name == "RandomTCMakerConf") {
747 }
748 else if(class_name == "RandomTCMakerModule") {
750 }
751 else if(class_name == "RawDataProcessor") {
753 }
754 else if(class_name == "ReadoutApplication") {
756 }
757 else if(class_name == "ReadoutHost") {
759 }
760 else if(class_name == "RequestHandler") {
762 }
763 else if(class_name == "RoHwConfig") {
765 }
766 else if(class_name == "SNBBookkeeperApplication") {
768 }
769 else if(class_name == "SNBBookkeeperConf") {
771 }
772 else if(class_name == "SNBDataHandlerModule") {
774 }
775 else if(class_name == "SNBFileReaderConf") {
777 }
778 else if(class_name == "SNBFileReaderModule") {
780 }
781 else if(class_name == "SNBFileSourceParameters") {
783 }
784 else if(class_name == "SNBFileTransfer") {
786 }
787 else if(class_name == "SNBTransferApplication") {
789 }
790 else if(class_name == "SNBTransferBookkeeper") {
792 }
793 else if(class_name == "SNBTransferConf") {
795 }
796 else if(class_name == "SSPLEDCalibModule") {
798 }
799 else if(class_name == "SSPRegister") {
801 }
802 else if(class_name == "SamplesOverThresholdMinima") {
804 }
805 else if(class_name == "SmartDaqApplication") {
807 }
808 else if(class_name == "SocketDataSender") {
810 }
811 else if(class_name == "SocketDataWriterConf") {
813 }
814 else if(class_name == "SocketDataWriterModule") {
816 }
817 else if(class_name == "SocketReaderConf") {
819 }
820 else if(class_name == "SocketReaderModule") {
822 }
823 else if(class_name == "SocketReceiver") {
825 }
826 else if(class_name == "SocketWriterConf") {
828 }
829 else if(class_name == "SocketWriterModule") {
831 }
832 else if(class_name == "SourceIDConf") {
834 }
835 else if(class_name == "SourceIDToNetworkConnection") {
837 }
838 else if(class_name == "StandaloneTCMakerConf") {
840 }
841 else if(class_name == "StandaloneTCMakerModule") {
843 }
844 else if(class_name == "StreamEmulationParameters") {
846 }
847 else if(class_name == "SubdetectorReadoutWindowMap") {
849 }
850 else if(class_name == "TAAlgorithm") {
852 }
853 else if(class_name == "TADataProcessor") {
855 }
856 else if(class_name == "TAMakerADCSimpleWindowAlgorithm") {
858 }
859 else if(class_name == "TAMakerBundleNAlgorithm") {
861 }
862 else if(class_name == "TAMakerChannelAdjacencyAlgorithm") {
864 }
865 else if(class_name == "TAMakerChannelDistanceAlgorithm") {
867 }
868 else if(class_name == "TAMakerDBSCANAlgorithm") {
870 }
871 else if(class_name == "TAMakerHorizontalMuonAlgorithm") {
873 }
874 else if(class_name == "TAMakerMichelElectronAlgorithm") {
876 }
877 else if(class_name == "TAMakerPlaneCoincidenceAlgorithm") {
879 }
880 else if(class_name == "TAMakerPrescaleAlgorithm") {
882 }
883 else if(class_name == "TCAlgorithm") {
885 }
886 else if(class_name == "TCDataProcessor") {
888 }
889 else if(class_name == "TCMakerADCSimpleWindowAlgorithm") {
891 }
892 else if(class_name == "TCMakerBundleNAlgorithm") {
894 }
895 else if(class_name == "TCMakerChannelAdjacencyAlgorithm") {
897 }
898 else if(class_name == "TCMakerChannelDistanceAlgorithm") {
900 }
901 else if(class_name == "TCMakerDBSCANAlgorithm") {
903 }
904 else if(class_name == "TCMakerHorizontalMuonAlgorithm") {
906 }
907 else if(class_name == "TCMakerMichelElectronAlgorithm") {
909 }
910 else if(class_name == "TCMakerPlaneCoincidenceAlgorithm") {
912 }
913 else if(class_name == "TCMakerPrescaleAlgorithm") {
915 }
916 else if(class_name == "TCReadoutMap") {
918 }
919 else if(class_name == "TDEAMCModule") {
921 }
922 else if(class_name == "TDEAMCModuleConf") {
924 }
925 else if(class_name == "TDECrateApplication") {
927 }
928 else if(class_name == "TPCRawDataProcessor") {
930 }
931 else if(class_name == "TPDataProcessor") {
933 }
934 else if(class_name == "TPReplayApplication") {
936 }
937 else if(class_name == "TPReplayModule") {
939 }
940 else if(class_name == "TPReplayModuleConf") {
942 }
943 else if(class_name == "TPStreamConf") {
945 }
946 else if(class_name == "TPStreamWriterApplication") {
948 }
949 else if(class_name == "TPStreamWriterConf") {
951 }
952 else if(class_name == "TPStreamWriterModule") {
954 }
955 else if(class_name == "TRBConf") {
957 }
958 else if(class_name == "TRBModule") {
960 }
961 else if(class_name == "TRMonReqApplication") {
963 }
964 else if(class_name == "TRMonRequestorConf") {
966 }
967 else if(class_name == "TRMonRequestorModule") {
969 }
970 else if(class_name == "TdeAmcDetDataSender") {
972 }
973 else if(class_name == "TriggerApplication") {
975 }
976 else if(class_name == "TriggerBitword") {
978 }
979 else if(class_name == "TriggerDataHandlerModule") {
981 }
982 else if(class_name == "WIBModule") {
984 }
985 else if(class_name == "WIBModuleConf") {
987 }
988 else if(class_name == "WIBPulserSettings") {
990 }
991 else if(class_name == "WIBSettings") {
993 }
994 else if(class_name == "WIECApplication") {
996 }
997 else {
998 std::cerr << "ERROR: do not know how to dump object of " << class_name << " class\n";
999 return (EXIT_FAILURE);
1000 }
1001 }
1002 }
1003 catch (dunedaq::conffwk::Exception & ex) {
1004 std::cerr << "Caught " << ex << std::endl;
1005 return (EXIT_FAILURE);
1006 }
1007
1008 return 0;
1009}
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)