222int main(
int argc,
char *argv[])
226 const char * db_name =
nullptr;
227 const char * object_id =
nullptr;
228 const char * query =
"";
229 std::string class_name;
230 bool init_children =
false;
232 for(
int i = 1; i < argc; i++) {
233 const char * cp = argv[i];
234 if(!strcmp(cp,
"-h") || !strcmp(cp,
"--help")) {
238 if(!strcmp(cp,
"-t") || !strcmp(cp,
"--init-children")) {
239 init_children =
true;
241 else if(!strcmp(cp,
"-d") || !strcmp(cp,
"--data")) {
242 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { db_name = argv[i]; }
244 else if(!strcmp(cp,
"-c") || !strcmp(cp,
"--class-name")) {
245 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { class_name = argv[i]; }
247 else if(!strcmp(cp,
"-i") || !strcmp(cp,
"--object-id")) {
248 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { object_id = argv[i]; }
250 else if(!strcmp(cp,
"-q") || !strcmp(cp,
"--query")) {
251 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { query = argv[i]; }
254 std::cerr <<
"ERROR: bad parameter " << cp << std::endl;
256 return (EXIT_FAILURE);
260 if(db_name ==
nullptr) {
261 std::cerr <<
"ERROR: no database name provided\n";
262 return (EXIT_FAILURE);
265 if(class_name.empty()) {
266 std::cerr <<
"ERROR: no class name provided\n";
267 return (EXIT_FAILURE);
270 if(*query != 0 && object_id !=
nullptr) {
271 std::cerr <<
"ERROR: only one parameter -i or -q can be provided\n";
272 return (EXIT_FAILURE);
276std::cout << std::boolalpha;
282 std::cerr <<
"Can not load database: " << db_name << std::endl;
283 return (EXIT_FAILURE);
286 std::vector< dunedaq::conffwk::ConfigObject > objects;
291 conf.
get(class_name, object_id, obj, 1);
294 std::cerr <<
"Can not get object \'" << object_id <<
"\' of class \'" << class_name <<
"\':\n" << ex << std::endl;
295 return (EXIT_FAILURE);
297 objects.push_back(obj);
301 conf.
get(class_name, objects, query, 1);
304 std::cerr <<
"Can not get objects of class \'" << class_name <<
"\':\n" << ex << std::endl;
305 return (EXIT_FAILURE);
311 return (o1->
UID() < o2->
UID());
315 std::set< dunedaq::conffwk::ConfigObject *, SortByUId > sorted_objects;
317 for(
auto& i : objects)
318 sorted_objects.insert(&i);
320 for(
auto& i : sorted_objects) {
321 if(class_name ==
"AVXAbsRunSumProcessor") {
324 else if(class_name ==
"AVXFixedPedestalSubtractProcessor") {
327 else if(class_name ==
"AVXFrugalPedestalSubtractProcessor") {
330 else if(class_name ==
"AVXRunSumProcessor") {
333 else if(class_name ==
"AVXThresholdProcessor") {
336 else if(class_name ==
"CRTBernReaderConf") {
339 else if(class_name ==
"CRTBernReaderModule") {
342 else if(class_name ==
"CRTGrenobleReaderConf") {
345 else if(class_name ==
"CRTGrenobleReaderModule") {
348 else if(class_name ==
"CRTReaderApplication") {
351 else if(class_name ==
"CRTReaderConf") {
354 else if(class_name ==
"CTBApplication") {
357 else if(class_name ==
"CTBCRTSubsystem") {
360 else if(class_name ==
"CTBCalibrationStream") {
363 else if(class_name ==
"CTBConf") {
366 else if(class_name ==
"CTBCountLLT") {
369 else if(class_name ==
"CTBHLT") {
372 else if(class_name ==
"CTBLLT") {
375 else if(class_name ==
"CTBMisc") {
378 else if(class_name ==
"CTBModule") {
381 else if(class_name ==
"CTBMonitorSocket") {
384 else if(class_name ==
"CTBPDSLLT") {
387 else if(class_name ==
"CTBPDSSubsystem") {
390 else if(class_name ==
"CTBPulser") {
393 else if(class_name ==
"CTBRandomTrigger") {
396 else if(class_name ==
"CTBReceiverSocket") {
399 else if(class_name ==
"CTBSocket") {
402 else if(class_name ==
"CTBSockets") {
405 else if(class_name ==
"CTBStatisticsSocket") {
408 else if(class_name ==
"CTBSubsystem") {
411 else if(class_name ==
"CTBTiming") {
414 else if(class_name ==
"CTBTrigger") {
417 else if(class_name ==
"CTBTriggerReport") {
420 else if(class_name ==
"CTBoardConf") {
423 else if(class_name ==
"ColdADCSettings") {
426 else if(class_name ==
"DFApplication") {
429 else if(class_name ==
"DFHWConf") {
432 else if(class_name ==
"DFOApplication") {
435 else if(class_name ==
"DFOConf") {
438 else if(class_name ==
"DFOModule") {
441 else if(class_name ==
"DPDKPortConfiguration") {
444 else if(class_name ==
"DPDKReaderConf") {
447 else if(class_name ==
"DPDKReaderModule") {
450 else if(class_name ==
"DPDKReceiver") {
453 else if(class_name ==
"DTSHSIApplication") {
456 else if(class_name ==
"DaphneApplication") {
459 else if(class_name ==
"DaphneConf") {
462 else if(class_name ==
"DaphneV2ADC") {
465 else if(class_name ==
"DaphneV2AFE") {
468 else if(class_name ==
"DaphneV2BoardConf") {
471 else if(class_name ==
"DaphneV2Channel") {
474 else if(class_name ==
"DaphneV2ControllerModule") {
477 else if(class_name ==
"DaphneV2LNA") {
480 else if(class_name ==
"DaphneV2PGA") {
483 else if(class_name ==
"DataHandlerConf") {
486 else if(class_name ==
"DataHandlerModule") {
489 else if(class_name ==
"DataProcessor") {
492 else if(class_name ==
"DataReaderConf") {
495 else if(class_name ==
"DataReaderModule") {
498 else if(class_name ==
"DataRecorderConf") {
501 else if(class_name ==
"DataRecorderModule") {
504 else if(class_name ==
"DataStoreConf") {
507 else if(class_name ==
"DataSubscriberModule") {
510 else if(class_name ==
"DataWriterConf") {
513 else if(class_name ==
"DataWriterModule") {
516 else if(class_name ==
"FDDataHandlerModule") {
519 else if(class_name ==
"FDFakeReaderModule") {
522 else if(class_name ==
"FEMBSettings") {
525 else if(class_name ==
"FakeDataApplication") {
528 else if(class_name ==
"FakeDataProdConf") {
531 else if(class_name ==
"FakeDataProdModule") {
534 else if(class_name ==
"FakeDataReceiver") {
537 else if(class_name ==
"FakeDataSender") {
540 else if(class_name ==
"FakeHSIApplication") {
543 else if(class_name ==
"FakeHSIEventGeneratorConf") {
546 else if(class_name ==
"FakeHSIEventGeneratorModule") {
549 else if(class_name ==
"FakeSocketWriterModule") {
552 else if(class_name ==
"FelixCardControllerModule") {
555 else if(class_name ==
"FelixDataReceiver") {
558 else if(class_name ==
"FelixDataSender") {
561 else if(class_name ==
"FelixDetectorToDaqConnection") {
564 else if(class_name ==
"FelixInterface") {
567 else if(class_name ==
"FelixReaderConf") {
570 else if(class_name ==
"FelixReaderModule") {
573 else if(class_name ==
"FilenameParams") {
576 else if(class_name ==
"FragmentAggregatorModule") {
579 else if(class_name ==
"HDF5FileLayoutParams") {
582 else if(class_name ==
"HDF5PathParams") {
585 else if(class_name ==
"HSI2TCTranslatorConf") {
588 else if(class_name ==
"HSIDataHandlerModule") {
591 else if(class_name ==
"HSIEventSender") {
594 else if(class_name ==
"HSIEventToTCApplication") {
597 else if(class_name ==
"HSIFrameProcessor") {
600 else if(class_name ==
"HSIReadout") {
603 else if(class_name ==
"HSIReadoutConf") {
606 else if(class_name ==
"HSISignalWindow") {
609 else if(class_name ==
"HermesDataSender") {
612 else if(class_name ==
"HermesModule") {
615 else if(class_name ==
"HermesModuleConf") {
618 else if(class_name ==
"IpbusAddressTable") {
621 else if(class_name ==
"IpbusDevice") {
624 else if(class_name ==
"LatencyBuffer") {
627 else if(class_name ==
"MLTApplication") {
630 else if(class_name ==
"MLTConf") {
633 else if(class_name ==
"MLTModule") {
636 else if(class_name ==
"NICStatsConf") {
639 else if(class_name ==
"NP02ReadoutApplication") {
642 else if(class_name ==
"NWDetDataReceiver") {
645 else if(class_name ==
"NWDetDataSender") {
648 else if(class_name ==
"NetworkConnectionDescriptor") {
651 else if(class_name ==
"NetworkConnectionRule") {
654 else if(class_name ==
"NetworkDetectorToDaqConnection") {
657 else if(class_name ==
"PDSRawDataProcessor") {
660 else if(class_name ==
"ProcessingStep") {
663 else if(class_name ==
"QueueConnectionRule") {
666 else if(class_name ==
"QueueDescriptor") {
669 else if(class_name ==
"ROIGroupConf") {
672 else if(class_name ==
"RandomTCMakerConf") {
675 else if(class_name ==
"RandomTCMakerModule") {
678 else if(class_name ==
"RawDataProcessor") {
681 else if(class_name ==
"ReadoutApplication") {
684 else if(class_name ==
"ReadoutHost") {
687 else if(class_name ==
"RequestHandler") {
690 else if(class_name ==
"RoHwConfig") {
693 else if(class_name ==
"SSPLEDCalibModule") {
696 else if(class_name ==
"SSPRegister") {
699 else if(class_name ==
"SamplesOverThresholdMinima") {
702 else if(class_name ==
"SmartDaqApplication") {
705 else if(class_name ==
"SocketDataSender") {
708 else if(class_name ==
"SocketDataWriterConf") {
711 else if(class_name ==
"SocketDataWriterModule") {
714 else if(class_name ==
"SocketReaderConf") {
717 else if(class_name ==
"SocketReaderModule") {
720 else if(class_name ==
"SocketReceiver") {
723 else if(class_name ==
"SocketWriterConf") {
726 else if(class_name ==
"SocketWriterModule") {
729 else if(class_name ==
"SourceIDConf") {
732 else if(class_name ==
"SourceIDToNetworkConnection") {
735 else if(class_name ==
"StandaloneTCMakerConf") {
738 else if(class_name ==
"StandaloneTCMakerModule") {
741 else if(class_name ==
"StreamEmulationParameters") {
744 else if(class_name ==
"SubdetectorReadoutWindowMap") {
747 else if(class_name ==
"TAAlgorithm") {
750 else if(class_name ==
"TADataProcessor") {
753 else if(class_name ==
"TAMakerADCSimpleWindowAlgorithm") {
756 else if(class_name ==
"TAMakerBundleNAlgorithm") {
759 else if(class_name ==
"TAMakerChannelAdjacencyAlgorithm") {
762 else if(class_name ==
"TAMakerChannelDistanceAlgorithm") {
765 else if(class_name ==
"TAMakerDBSCANAlgorithm") {
768 else if(class_name ==
"TAMakerHorizontalMuonAlgorithm") {
771 else if(class_name ==
"TAMakerMichelElectronAlgorithm") {
774 else if(class_name ==
"TAMakerPlaneCoincidenceAlgorithm") {
777 else if(class_name ==
"TAMakerPrescaleAlgorithm") {
780 else if(class_name ==
"TCAlgorithm") {
783 else if(class_name ==
"TCDataProcessor") {
786 else if(class_name ==
"TCMakerADCSimpleWindowAlgorithm") {
789 else if(class_name ==
"TCMakerBundleNAlgorithm") {
792 else if(class_name ==
"TCMakerChannelAdjacencyAlgorithm") {
795 else if(class_name ==
"TCMakerChannelDistanceAlgorithm") {
798 else if(class_name ==
"TCMakerDBSCANAlgorithm") {
801 else if(class_name ==
"TCMakerHorizontalMuonAlgorithm") {
804 else if(class_name ==
"TCMakerMichelElectronAlgorithm") {
807 else if(class_name ==
"TCMakerPlaneCoincidenceAlgorithm") {
810 else if(class_name ==
"TCMakerPrescaleAlgorithm") {
813 else if(class_name ==
"TCReadoutMap") {
816 else if(class_name ==
"TDEAMCModule") {
819 else if(class_name ==
"TDEAMCModuleConf") {
822 else if(class_name ==
"TDECrateApplication") {
825 else if(class_name ==
"TPCRawDataProcessor") {
828 else if(class_name ==
"TPDataProcessor") {
831 else if(class_name ==
"TPReplayApplication") {
834 else if(class_name ==
"TPReplayModule") {
837 else if(class_name ==
"TPReplayModuleConf") {
840 else if(class_name ==
"TPStreamConf") {
843 else if(class_name ==
"TPStreamWriterApplication") {
846 else if(class_name ==
"TPStreamWriterConf") {
849 else if(class_name ==
"TPStreamWriterModule") {
852 else if(class_name ==
"TRBConf") {
855 else if(class_name ==
"TRBModule") {
858 else if(class_name ==
"TdeAmcDetDataSender") {
861 else if(class_name ==
"TriggerApplication") {
864 else if(class_name ==
"TriggerBitword") {
867 else if(class_name ==
"TriggerDataHandlerModule") {
870 else if(class_name ==
"WIBModule") {
873 else if(class_name ==
"WIBModuleConf") {
876 else if(class_name ==
"WIBPulserSettings") {
879 else if(class_name ==
"WIBSettings") {
882 else if(class_name ==
"WIECApplication") {
886 std::cerr <<
"ERROR: do not know how to dump object of " << class_name <<
" class\n";
887 return (EXIT_FAILURE);
891 catch (dunedaq::conffwk::Exception & ex) {
892 std::cerr <<
"Caught " << ex << std::endl;
893 return (EXIT_FAILURE);