243int main(
int argc,
char *argv[])
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;
253 for(
int i = 1; i < argc; i++) {
254 const char * cp = argv[i];
255 if(!strcmp(cp,
"-h") || !strcmp(cp,
"--help")) {
259 if(!strcmp(cp,
"-t") || !strcmp(cp,
"--init-children")) {
260 init_children =
true;
262 else if(!strcmp(cp,
"-d") || !strcmp(cp,
"--data")) {
263 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { db_name = argv[i]; }
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]; }
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]; }
271 else if(!strcmp(cp,
"-q") || !strcmp(cp,
"--query")) {
272 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { query = argv[i]; }
275 std::cerr <<
"ERROR: bad parameter " << cp << std::endl;
277 return (EXIT_FAILURE);
281 if(db_name ==
nullptr) {
282 std::cerr <<
"ERROR: no database name provided\n";
283 return (EXIT_FAILURE);
286 if(class_name.empty()) {
287 std::cerr <<
"ERROR: no class name provided\n";
288 return (EXIT_FAILURE);
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);
297std::cout << std::boolalpha;
303 std::cerr <<
"Can not load database: " << db_name << std::endl;
304 return (EXIT_FAILURE);
307 std::vector< dunedaq::conffwk::ConfigObject > objects;
312 conf.
get(class_name, object_id, obj, 1);
315 std::cerr <<
"Can not get object \'" << object_id <<
"\' of class \'" << class_name <<
"\':\n" << ex << std::endl;
316 return (EXIT_FAILURE);
318 objects.push_back(obj);
322 conf.
get(class_name, objects, query, 1);
325 std::cerr <<
"Can not get objects of class \'" << class_name <<
"\':\n" << ex << std::endl;
326 return (EXIT_FAILURE);
332 return (o1->
UID() < o2->
UID());
336 std::set< dunedaq::conffwk::ConfigObject *, SortByUId > sorted_objects;
338 for(
auto& i : objects)
339 sorted_objects.insert(&i);
341 for(
auto& i : sorted_objects) {
342 if(class_name ==
"AVXAbsRunSumProcessor") {
345 else if(class_name ==
"AVXFixedPedestalSubtractProcessor") {
348 else if(class_name ==
"AVXFrugalPedestalSubtractProcessor") {
351 else if(class_name ==
"AVXRunSumProcessor") {
354 else if(class_name ==
"AVXThresholdProcessor") {
357 else if(class_name ==
"CRTBernReaderConf") {
360 else if(class_name ==
"CRTBernReaderModule") {
363 else if(class_name ==
"CRTGrenobleReaderConf") {
366 else if(class_name ==
"CRTGrenobleReaderModule") {
369 else if(class_name ==
"CRTReaderApplication") {
372 else if(class_name ==
"CRTReaderConf") {
375 else if(class_name ==
"CTBApplication") {
378 else if(class_name ==
"CTBCRTSubsystem") {
381 else if(class_name ==
"CTBCalibrationStream") {
384 else if(class_name ==
"CTBConf") {
387 else if(class_name ==
"CTBCountLLT") {
390 else if(class_name ==
"CTBHLT") {
393 else if(class_name ==
"CTBLLT") {
396 else if(class_name ==
"CTBMisc") {
399 else if(class_name ==
"CTBModule") {
402 else if(class_name ==
"CTBMonitorSocket") {
405 else if(class_name ==
"CTBPDSLLT") {
408 else if(class_name ==
"CTBPDSSubsystem") {
411 else if(class_name ==
"CTBPulser") {
414 else if(class_name ==
"CTBRandomTrigger") {
417 else if(class_name ==
"CTBReceiverSocket") {
420 else if(class_name ==
"CTBSocket") {
423 else if(class_name ==
"CTBSockets") {
426 else if(class_name ==
"CTBStatisticsSocket") {
429 else if(class_name ==
"CTBSubsystem") {
432 else if(class_name ==
"CTBTiming") {
435 else if(class_name ==
"CTBTrigger") {
438 else if(class_name ==
"CTBTriggerReport") {
441 else if(class_name ==
"CTBoardConf") {
444 else if(class_name ==
"ColdADCSettings") {
447 else if(class_name ==
"DFApplication") {
450 else if(class_name ==
"DFHWConf") {
453 else if(class_name ==
"DFOApplication") {
456 else if(class_name ==
"DFOConf") {
459 else if(class_name ==
"DFOModule") {
462 else if(class_name ==
"DPDKPortConfiguration") {
465 else if(class_name ==
"DPDKReaderConf") {
468 else if(class_name ==
"DPDKReaderModule") {
471 else if(class_name ==
"DPDKReceiver") {
474 else if(class_name ==
"DTSHSIApplication") {
477 else if(class_name ==
"DaphneApplication") {
480 else if(class_name ==
"DaphneConf") {
483 else if(class_name ==
"DaphneControllerModule") {
486 else if(class_name ==
"DaphneMapEntry") {
489 else if(class_name ==
"DaphneV2ADC") {
492 else if(class_name ==
"DaphneV2AFE") {
495 else if(class_name ==
"DaphneV2BoardConf") {
498 else if(class_name ==
"DaphneV2Channel") {
501 else if(class_name ==
"DaphneV2ControllerModule") {
504 else if(class_name ==
"DaphneV2LNA") {
507 else if(class_name ==
"DaphneV2PGA") {
510 else if(class_name ==
"DaphneV3ControllerModule") {
513 else if(class_name ==
"DataHandlerConf") {
516 else if(class_name ==
"DataHandlerModule") {
519 else if(class_name ==
"DataProcessor") {
522 else if(class_name ==
"DataReaderConf") {
525 else if(class_name ==
"DataReaderModule") {
528 else if(class_name ==
"DataRecorderConf") {
531 else if(class_name ==
"DataRecorderModule") {
534 else if(class_name ==
"DataStoreConf") {
537 else if(class_name ==
"DataSubscriberModule") {
540 else if(class_name ==
"DataWriterConf") {
543 else if(class_name ==
"DataWriterModule") {
546 else if(class_name ==
"FDDataHandlerModule") {
549 else if(class_name ==
"FDFakeReaderModule") {
552 else if(class_name ==
"FEMBSettings") {
555 else if(class_name ==
"FakeDataApplication") {
558 else if(class_name ==
"FakeDataProdConf") {
561 else if(class_name ==
"FakeDataProdModule") {
564 else if(class_name ==
"FakeDataReceiver") {
567 else if(class_name ==
"FakeDataSender") {
570 else if(class_name ==
"FakeHSIApplication") {
573 else if(class_name ==
"FakeHSIEventGeneratorConf") {
576 else if(class_name ==
"FakeHSIEventGeneratorModule") {
579 else if(class_name ==
"FakeSocketWriterModule") {
582 else if(class_name ==
"FelixCardControllerModule") {
585 else if(class_name ==
"FelixDataReceiver") {
588 else if(class_name ==
"FelixDataSender") {
591 else if(class_name ==
"FelixDetectorToDaqConnection") {
594 else if(class_name ==
"FelixInterface") {
597 else if(class_name ==
"FelixReaderConf") {
600 else if(class_name ==
"FelixReaderModule") {
603 else if(class_name ==
"FileReaderReceiver") {
606 else if(class_name ==
"FilenameParams") {
609 else if(class_name ==
"FixedTimeTCConf") {
612 else if(class_name ==
"FixedTimeTCMakerModule") {
615 else if(class_name ==
"FixedTimeTCMakerModuleConf") {
618 else if(class_name ==
"FragmentAggregatorConf") {
621 else if(class_name ==
"FragmentAggregatorModule") {
624 else if(class_name ==
"HDF5FileLayoutParams") {
627 else if(class_name ==
"HDF5PathParams") {
630 else if(class_name ==
"HSI2TCTranslatorConf") {
633 else if(class_name ==
"HSIDataHandlerModule") {
636 else if(class_name ==
"HSIEventSender") {
639 else if(class_name ==
"HSIEventToTCApplication") {
642 else if(class_name ==
"HSIFrameProcessor") {
645 else if(class_name ==
"HSIReadout") {
648 else if(class_name ==
"HSIReadoutConf") {
651 else if(class_name ==
"HSISignalWindow") {
654 else if(class_name ==
"HermesDataSender") {
657 else if(class_name ==
"HermesModule") {
660 else if(class_name ==
"HermesModuleConf") {
663 else if(class_name ==
"IpbusAddressTable") {
666 else if(class_name ==
"IpbusDevice") {
669 else if(class_name ==
"LatencyBuffer") {
672 else if(class_name ==
"MLTApplication") {
675 else if(class_name ==
"MLTConf") {
678 else if(class_name ==
"MLTModule") {
681 else if(class_name ==
"NICStatsConf") {
684 else if(class_name ==
"NP02ReadoutApplication") {
687 else if(class_name ==
"NWDetDataReceiver") {
690 else if(class_name ==
"NWDetDataSender") {
693 else if(class_name ==
"NetworkConnectionDescriptor") {
696 else if(class_name ==
"NetworkConnectionRule") {
699 else if(class_name ==
"NetworkDetectorToDaqConnection") {
702 else if(class_name ==
"PDSRawDataProcessor") {
705 else if(class_name ==
"ProcessingStep") {
708 else if(class_name ==
"QueueConnectionRule") {
711 else if(class_name ==
"QueueDescriptor") {
714 else if(class_name ==
"ROIGroupConf") {
717 else if(class_name ==
"RandomTCMakerConf") {
720 else if(class_name ==
"RandomTCMakerModule") {
723 else if(class_name ==
"RawDataProcessor") {
726 else if(class_name ==
"ReadoutApplication") {
729 else if(class_name ==
"ReadoutHost") {
732 else if(class_name ==
"RequestHandler") {
735 else if(class_name ==
"RoHwConfig") {
738 else if(class_name ==
"SNBBookkeeperApplication") {
741 else if(class_name ==
"SNBBookkeeperConf") {
744 else if(class_name ==
"SNBDataHandlerModule") {
747 else if(class_name ==
"SNBFileReaderConf") {
750 else if(class_name ==
"SNBFileReaderModule") {
753 else if(class_name ==
"SNBFileSourceParameters") {
756 else if(class_name ==
"SNBFileTransfer") {
759 else if(class_name ==
"SNBTransferApplication") {
762 else if(class_name ==
"SNBTransferBookkeeper") {
765 else if(class_name ==
"SNBTransferConf") {
768 else if(class_name ==
"SSPLEDCalibModule") {
771 else if(class_name ==
"SSPRegister") {
774 else if(class_name ==
"SamplesOverThresholdMinima") {
777 else if(class_name ==
"SmartDaqApplication") {
780 else if(class_name ==
"SocketDataSender") {
783 else if(class_name ==
"SocketDataWriterConf") {
786 else if(class_name ==
"SocketDataWriterModule") {
789 else if(class_name ==
"SocketReaderConf") {
792 else if(class_name ==
"SocketReaderModule") {
795 else if(class_name ==
"SocketReceiver") {
798 else if(class_name ==
"SocketWriterConf") {
801 else if(class_name ==
"SocketWriterModule") {
804 else if(class_name ==
"SourceIDConf") {
807 else if(class_name ==
"SourceIDToNetworkConnection") {
810 else if(class_name ==
"StandaloneTCMakerConf") {
813 else if(class_name ==
"StandaloneTCMakerModule") {
816 else if(class_name ==
"StreamEmulationParameters") {
819 else if(class_name ==
"SubdetectorReadoutWindowMap") {
822 else if(class_name ==
"TAAlgorithm") {
825 else if(class_name ==
"TADataProcessor") {
828 else if(class_name ==
"TAMakerADCSimpleWindowAlgorithm") {
831 else if(class_name ==
"TAMakerBundleNAlgorithm") {
834 else if(class_name ==
"TAMakerChannelAdjacencyAlgorithm") {
837 else if(class_name ==
"TAMakerChannelDistanceAlgorithm") {
840 else if(class_name ==
"TAMakerDBSCANAlgorithm") {
843 else if(class_name ==
"TAMakerHorizontalMuonAlgorithm") {
846 else if(class_name ==
"TAMakerMichelElectronAlgorithm") {
849 else if(class_name ==
"TAMakerPlaneCoincidenceAlgorithm") {
852 else if(class_name ==
"TAMakerPrescaleAlgorithm") {
855 else if(class_name ==
"TCAlgorithm") {
858 else if(class_name ==
"TCDataProcessor") {
861 else if(class_name ==
"TCMakerADCSimpleWindowAlgorithm") {
864 else if(class_name ==
"TCMakerBundleNAlgorithm") {
867 else if(class_name ==
"TCMakerChannelAdjacencyAlgorithm") {
870 else if(class_name ==
"TCMakerChannelDistanceAlgorithm") {
873 else if(class_name ==
"TCMakerDBSCANAlgorithm") {
876 else if(class_name ==
"TCMakerHorizontalMuonAlgorithm") {
879 else if(class_name ==
"TCMakerMichelElectronAlgorithm") {
882 else if(class_name ==
"TCMakerPlaneCoincidenceAlgorithm") {
885 else if(class_name ==
"TCMakerPrescaleAlgorithm") {
888 else if(class_name ==
"TCReadoutMap") {
891 else if(class_name ==
"TDEAMCModule") {
894 else if(class_name ==
"TDEAMCModuleConf") {
897 else if(class_name ==
"TDECrateApplication") {
900 else if(class_name ==
"TPCRawDataProcessor") {
903 else if(class_name ==
"TPDataProcessor") {
906 else if(class_name ==
"TPReplayApplication") {
909 else if(class_name ==
"TPReplayModule") {
912 else if(class_name ==
"TPReplayModuleConf") {
915 else if(class_name ==
"TPStreamConf") {
918 else if(class_name ==
"TPStreamWriterApplication") {
921 else if(class_name ==
"TPStreamWriterConf") {
924 else if(class_name ==
"TPStreamWriterModule") {
927 else if(class_name ==
"TRBConf") {
930 else if(class_name ==
"TRBModule") {
933 else if(class_name ==
"TRMonReqApplication") {
936 else if(class_name ==
"TRMonRequestorConf") {
939 else if(class_name ==
"TRMonRequestorModule") {
942 else if(class_name ==
"TdeAmcDetDataSender") {
945 else if(class_name ==
"TriggerApplication") {
948 else if(class_name ==
"TriggerBitword") {
951 else if(class_name ==
"TriggerDataHandlerModule") {
954 else if(class_name ==
"WIBModule") {
957 else if(class_name ==
"WIBModuleConf") {
960 else if(class_name ==
"WIBPulserSettings") {
963 else if(class_name ==
"WIBSettings") {
966 else if(class_name ==
"WIECApplication") {
970 std::cerr <<
"ERROR: do not know how to dump object of " << class_name <<
" class\n";
971 return (EXIT_FAILURE);
975 catch (dunedaq::conffwk::Exception & ex) {
976 std::cerr <<
"Caught " << ex << std::endl;
977 return (EXIT_FAILURE);