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