250int main(
int argc,
char *argv[])
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;
260 for(
int i = 1; i < argc; i++) {
261 const char * cp = argv[i];
262 if(!strcmp(cp,
"-h") || !strcmp(cp,
"--help")) {
266 if(!strcmp(cp,
"-t") || !strcmp(cp,
"--init-children")) {
267 init_children =
true;
269 else if(!strcmp(cp,
"-d") || !strcmp(cp,
"--data")) {
270 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { db_name = argv[i]; }
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]; }
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]; }
278 else if(!strcmp(cp,
"-q") || !strcmp(cp,
"--query")) {
279 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { query = argv[i]; }
282 std::cerr <<
"ERROR: bad parameter " << cp << std::endl;
284 return (EXIT_FAILURE);
288 if(db_name ==
nullptr) {
289 std::cerr <<
"ERROR: no database name provided\n";
290 return (EXIT_FAILURE);
293 if(class_name.empty()) {
294 std::cerr <<
"ERROR: no class name provided\n";
295 return (EXIT_FAILURE);
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);
304std::cout << std::boolalpha;
310 std::cerr <<
"Can not load database: " << db_name << std::endl;
311 return (EXIT_FAILURE);
314 std::vector< dunedaq::conffwk::ConfigObject > objects;
319 conf.
get(class_name, object_id, obj, 1);
322 std::cerr <<
"Can not get object \'" << object_id <<
"\' of class \'" << class_name <<
"\':\n" << ex << std::endl;
323 return (EXIT_FAILURE);
325 objects.push_back(obj);
329 conf.
get(class_name, objects, query, 1);
332 std::cerr <<
"Can not get objects of class \'" << class_name <<
"\':\n" << ex << std::endl;
333 return (EXIT_FAILURE);
339 return (o1->
UID() < o2->
UID());
343 std::set< dunedaq::conffwk::ConfigObject *, SortByUId > sorted_objects;
345 for(
auto& i : objects)
346 sorted_objects.insert(&i);
348 for(
auto& i : sorted_objects) {
349 if(class_name ==
"AVXAbsRunSumProcessor") {
352 else if(class_name ==
"AVXFixedPedestalSubtractProcessor") {
355 else if(class_name ==
"AVXFrugalPedestalSubtractProcessor") {
358 else if(class_name ==
"AVXRunSumProcessor") {
361 else if(class_name ==
"AVXThresholdProcessor") {
364 else if(class_name ==
"CIBApplication") {
367 else if(class_name ==
"CIBCalibrationStream") {
370 else if(class_name ==
"CIBConf") {
373 else if(class_name ==
"CIBModule") {
376 else if(class_name ==
"CIBTrigger") {
379 else if(class_name ==
"CIBTriggerReport") {
382 else if(class_name ==
"CIBoardConf") {
385 else if(class_name ==
"CRTBernReaderConf") {
388 else if(class_name ==
"CRTBernReaderModule") {
391 else if(class_name ==
"CRTGrenobleReaderConf") {
394 else if(class_name ==
"CRTGrenobleReaderModule") {
397 else if(class_name ==
"CRTReaderApplication") {
400 else if(class_name ==
"CRTReaderConf") {
403 else if(class_name ==
"CTBApplication") {
406 else if(class_name ==
"CTBCRTSubsystem") {
409 else if(class_name ==
"CTBCalibrationStream") {
412 else if(class_name ==
"CTBConf") {
415 else if(class_name ==
"CTBCountLLT") {
418 else if(class_name ==
"CTBHLT") {
421 else if(class_name ==
"CTBLLT") {
424 else if(class_name ==
"CTBMisc") {
427 else if(class_name ==
"CTBModule") {
430 else if(class_name ==
"CTBMonitorSocket") {
433 else if(class_name ==
"CTBPDSLLT") {
436 else if(class_name ==
"CTBPDSSubsystem") {
439 else if(class_name ==
"CTBPulser") {
442 else if(class_name ==
"CTBRandomTrigger") {
445 else if(class_name ==
"CTBReceiverSocket") {
448 else if(class_name ==
"CTBSocket") {
451 else if(class_name ==
"CTBSockets") {
454 else if(class_name ==
"CTBStatisticsSocket") {
457 else if(class_name ==
"CTBSubsystem") {
460 else if(class_name ==
"CTBTiming") {
463 else if(class_name ==
"CTBTrigger") {
466 else if(class_name ==
"CTBTriggerReport") {
469 else if(class_name ==
"CTBoardConf") {
472 else if(class_name ==
"ColdADCSettings") {
475 else if(class_name ==
"DFApplication") {
478 else if(class_name ==
"DFHWConf") {
481 else if(class_name ==
"DFOApplication") {
484 else if(class_name ==
"DFOConf") {
487 else if(class_name ==
"DFOModule") {
490 else if(class_name ==
"DPDKPortConfiguration") {
493 else if(class_name ==
"DPDKReaderConf") {
496 else if(class_name ==
"DPDKReaderModule") {
499 else if(class_name ==
"DPDKReceiver") {
502 else if(class_name ==
"DTSHSIApplication") {
505 else if(class_name ==
"DaphneApplication") {
508 else if(class_name ==
"DaphneConf") {
511 else if(class_name ==
"DaphneControllerModule") {
514 else if(class_name ==
"DaphneMapEntry") {
517 else if(class_name ==
"DaphneV2ADC") {
520 else if(class_name ==
"DaphneV2AFE") {
523 else if(class_name ==
"DaphneV2BoardConf") {
526 else if(class_name ==
"DaphneV2Channel") {
529 else if(class_name ==
"DaphneV2ControllerModule") {
532 else if(class_name ==
"DaphneV2LNA") {
535 else if(class_name ==
"DaphneV2PGA") {
538 else if(class_name ==
"DaphneV3ControllerModule") {
541 else if(class_name ==
"DataHandlerConf") {
544 else if(class_name ==
"DataHandlerModule") {
547 else if(class_name ==
"DataProcessor") {
550 else if(class_name ==
"DataReaderConf") {
553 else if(class_name ==
"DataReaderModule") {
556 else if(class_name ==
"DataRecorderConf") {
559 else if(class_name ==
"DataRecorderModule") {
562 else if(class_name ==
"DataStoreConf") {
565 else if(class_name ==
"DataSubscriberModule") {
568 else if(class_name ==
"DataWriterConf") {
571 else if(class_name ==
"DataWriterModule") {
574 else if(class_name ==
"FDDataHandlerModule") {
577 else if(class_name ==
"FDFakeReaderModule") {
580 else if(class_name ==
"FEMBSettings") {
583 else if(class_name ==
"FakeDataApplication") {
586 else if(class_name ==
"FakeDataProdConf") {
589 else if(class_name ==
"FakeDataProdModule") {
592 else if(class_name ==
"FakeDataReceiver") {
595 else if(class_name ==
"FakeDataSender") {
598 else if(class_name ==
"FakeHSIApplication") {
601 else if(class_name ==
"FakeHSIEventGeneratorConf") {
604 else if(class_name ==
"FakeHSIEventGeneratorModule") {
607 else if(class_name ==
"FakeSocketWriterModule") {
610 else if(class_name ==
"FelixCardControllerModule") {
613 else if(class_name ==
"FelixDataReceiver") {
616 else if(class_name ==
"FelixDataSender") {
619 else if(class_name ==
"FelixDetectorToDaqConnection") {
622 else if(class_name ==
"FelixInterface") {
625 else if(class_name ==
"FelixReaderConf") {
628 else if(class_name ==
"FelixReaderModule") {
631 else if(class_name ==
"FileReaderReceiver") {
634 else if(class_name ==
"FilenameParams") {
637 else if(class_name ==
"FixedTimeTCConf") {
640 else if(class_name ==
"FixedTimeTCMakerModule") {
643 else if(class_name ==
"FixedTimeTCMakerModuleConf") {
646 else if(class_name ==
"FragmentAggregatorConf") {
649 else if(class_name ==
"FragmentAggregatorModule") {
652 else if(class_name ==
"HDF5FileLayoutParams") {
655 else if(class_name ==
"HDF5PathParams") {
658 else if(class_name ==
"HSI2TCTranslatorConf") {
661 else if(class_name ==
"HSIDataHandlerModule") {
664 else if(class_name ==
"HSIEventSender") {
667 else if(class_name ==
"HSIEventToTCApplication") {
670 else if(class_name ==
"HSIFrameProcessor") {
673 else if(class_name ==
"HSIReadout") {
676 else if(class_name ==
"HSIReadoutConf") {
679 else if(class_name ==
"HSISignalWindow") {
682 else if(class_name ==
"HermesDataSender") {
685 else if(class_name ==
"HermesModule") {
688 else if(class_name ==
"HermesModuleConf") {
691 else if(class_name ==
"IpbusAddressTable") {
694 else if(class_name ==
"IpbusDevice") {
697 else if(class_name ==
"LatencyBuffer") {
700 else if(class_name ==
"MLTApplication") {
703 else if(class_name ==
"MLTConf") {
706 else if(class_name ==
"MLTModule") {
709 else if(class_name ==
"NICStatsConf") {
712 else if(class_name ==
"NP02ReadoutApplication") {
715 else if(class_name ==
"NWDetDataReceiver") {
718 else if(class_name ==
"NWDetDataSender") {
721 else if(class_name ==
"NetworkConnectionDescriptor") {
724 else if(class_name ==
"NetworkConnectionRule") {
727 else if(class_name ==
"NetworkDetectorToDaqConnection") {
730 else if(class_name ==
"PDSRawDataProcessor") {
733 else if(class_name ==
"ProcessingStep") {
736 else if(class_name ==
"QueueConnectionRule") {
739 else if(class_name ==
"QueueDescriptor") {
742 else if(class_name ==
"ROIGroupConf") {
745 else if(class_name ==
"RandomTCMakerConf") {
748 else if(class_name ==
"RandomTCMakerModule") {
751 else if(class_name ==
"RawDataProcessor") {
754 else if(class_name ==
"ReadoutApplication") {
757 else if(class_name ==
"ReadoutHost") {
760 else if(class_name ==
"RequestHandler") {
763 else if(class_name ==
"RoHwConfig") {
766 else if(class_name ==
"SNBBookkeeperApplication") {
769 else if(class_name ==
"SNBBookkeeperConf") {
772 else if(class_name ==
"SNBDataHandlerModule") {
775 else if(class_name ==
"SNBFileReaderConf") {
778 else if(class_name ==
"SNBFileReaderModule") {
781 else if(class_name ==
"SNBFileSourceParameters") {
784 else if(class_name ==
"SNBFileTransfer") {
787 else if(class_name ==
"SNBTransferApplication") {
790 else if(class_name ==
"SNBTransferBookkeeper") {
793 else if(class_name ==
"SNBTransferConf") {
796 else if(class_name ==
"SSPLEDCalibModule") {
799 else if(class_name ==
"SSPRegister") {
802 else if(class_name ==
"SamplesOverThresholdMinima") {
805 else if(class_name ==
"SmartDaqApplication") {
808 else if(class_name ==
"SocketDataSender") {
811 else if(class_name ==
"SocketDataWriterConf") {
814 else if(class_name ==
"SocketDataWriterModule") {
817 else if(class_name ==
"SocketReaderConf") {
820 else if(class_name ==
"SocketReaderModule") {
823 else if(class_name ==
"SocketReceiver") {
826 else if(class_name ==
"SocketWriterConf") {
829 else if(class_name ==
"SocketWriterModule") {
832 else if(class_name ==
"SourceIDConf") {
835 else if(class_name ==
"SourceIDToNetworkConnection") {
838 else if(class_name ==
"StandaloneTCMakerConf") {
841 else if(class_name ==
"StandaloneTCMakerModule") {
844 else if(class_name ==
"StreamEmulationParameters") {
847 else if(class_name ==
"SubdetectorReadoutWindowMap") {
850 else if(class_name ==
"TAAlgorithm") {
853 else if(class_name ==
"TADataProcessor") {
856 else if(class_name ==
"TAMakerADCSimpleWindowAlgorithm") {
859 else if(class_name ==
"TAMakerBundleNAlgorithm") {
862 else if(class_name ==
"TAMakerChannelAdjacencyAlgorithm") {
865 else if(class_name ==
"TAMakerChannelDistanceAlgorithm") {
868 else if(class_name ==
"TAMakerDBSCANAlgorithm") {
871 else if(class_name ==
"TAMakerHorizontalMuonAlgorithm") {
874 else if(class_name ==
"TAMakerMichelElectronAlgorithm") {
877 else if(class_name ==
"TAMakerPlaneCoincidenceAlgorithm") {
880 else if(class_name ==
"TAMakerPrescaleAlgorithm") {
883 else if(class_name ==
"TCAlgorithm") {
886 else if(class_name ==
"TCDataProcessor") {
889 else if(class_name ==
"TCMakerADCSimpleWindowAlgorithm") {
892 else if(class_name ==
"TCMakerBundleNAlgorithm") {
895 else if(class_name ==
"TCMakerChannelAdjacencyAlgorithm") {
898 else if(class_name ==
"TCMakerChannelDistanceAlgorithm") {
901 else if(class_name ==
"TCMakerDBSCANAlgorithm") {
904 else if(class_name ==
"TCMakerHorizontalMuonAlgorithm") {
907 else if(class_name ==
"TCMakerMichelElectronAlgorithm") {
910 else if(class_name ==
"TCMakerPlaneCoincidenceAlgorithm") {
913 else if(class_name ==
"TCMakerPrescaleAlgorithm") {
916 else if(class_name ==
"TCReadoutMap") {
919 else if(class_name ==
"TDEAMCModule") {
922 else if(class_name ==
"TDEAMCModuleConf") {
925 else if(class_name ==
"TDECrateApplication") {
928 else if(class_name ==
"TPCRawDataProcessor") {
931 else if(class_name ==
"TPDataProcessor") {
934 else if(class_name ==
"TPReplayApplication") {
937 else if(class_name ==
"TPReplayModule") {
940 else if(class_name ==
"TPReplayModuleConf") {
943 else if(class_name ==
"TPStreamConf") {
946 else if(class_name ==
"TPStreamWriterApplication") {
949 else if(class_name ==
"TPStreamWriterConf") {
952 else if(class_name ==
"TPStreamWriterModule") {
955 else if(class_name ==
"TRBConf") {
958 else if(class_name ==
"TRBModule") {
961 else if(class_name ==
"TRMonReqApplication") {
964 else if(class_name ==
"TRMonRequestorConf") {
967 else if(class_name ==
"TRMonRequestorModule") {
970 else if(class_name ==
"TdeAmcDetDataSender") {
973 else if(class_name ==
"TriggerApplication") {
976 else if(class_name ==
"TriggerBitword") {
979 else if(class_name ==
"TriggerDataHandlerModule") {
982 else if(class_name ==
"WIBModule") {
985 else if(class_name ==
"WIBModuleConf") {
988 else if(class_name ==
"WIBPulserSettings") {
991 else if(class_name ==
"WIBSettings") {
994 else if(class_name ==
"WIECApplication") {
998 std::cerr <<
"ERROR: do not know how to dump object of " << class_name <<
" class\n";
999 return (EXIT_FAILURE);
1003 catch (dunedaq::conffwk::Exception & ex) {
1004 std::cerr <<
"Caught " << ex << std::endl;
1005 return (EXIT_FAILURE);