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