40{
41
42
43 const char * db_name = nullptr;
44 const char * object_id = nullptr;
45 const char * query = "";
46 std::string class_name;
47 bool init_children = false;
48
49 for(int i = 1; i < argc; i++) {
50 const char * cp = argv[i];
51 if(!strcmp(cp, "-h") || !strcmp(cp, "--help")) {
53 return 0;
54 }
55 if(!strcmp(cp, "-t") || !strcmp(cp, "--init-children")) {
56 init_children = true;
57 }
58 else if(!strcmp(cp, "-d") || !strcmp(cp, "--data")) {
59 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { db_name = argv[i]; }
60 }
61 else if(!strcmp(cp, "-c") || !strcmp(cp, "--class-name")) {
62 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { class_name = argv[i]; }
63 }
64 else if(!strcmp(cp, "-i") || !strcmp(cp, "--object-id")) {
65 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { object_id = argv[i]; }
66 }
67 else if(!strcmp(cp, "-q") || !strcmp(cp, "--query")) {
68 if(++i == argc || argv[i][0] ==
'-') {
no_param(cp); }
else { query = argv[i]; }
69 }
70 else {
71 std::cerr << "ERROR: bad parameter " << cp << std::endl;
73 return (EXIT_FAILURE);
74 }
75 }
76
77 if(db_name == nullptr) {
78 std::cerr << "ERROR: no database name provided\n";
79 return (EXIT_FAILURE);
80 }
81
82 if(class_name.empty()) {
83 std::cerr << "ERROR: no class name provided\n";
84 return (EXIT_FAILURE);
85 }
86
87 if(*query != 0 && object_id != nullptr) {
88 std::cerr << "ERROR: only one parameter -i or -q can be provided\n";
89 return (EXIT_FAILURE);
90 }
91
92
93std::cout << std::boolalpha;
94
95 try {
97
98 if(!conf.loaded()) {
99 std::cerr << "Can not load database: " << db_name << std::endl;
100 return (EXIT_FAILURE);
101 }
102
103 std::vector< dunedaq::conffwk::ConfigObject > objects;
104
105 if(object_id) {
107 try {
108 conf.get(class_name, object_id, obj, 1);
109 }
111 std::cerr << "Can not get object \'" << object_id << "\' of class \'" << class_name << "\':\n" << ex << std::endl;
112 return (EXIT_FAILURE);
113 }
114 objects.push_back(obj);
115 }
116 else {
117 try {
118 conf.get(class_name, objects, query, 1);
119 }
121 std::cerr << "Can not get objects of class \'" << class_name << "\':\n" << ex << std::endl;
122 return (EXIT_FAILURE);
123 }
124 }
125
126 struct SortByUId {
128 return (o1->
UID() < o2->
UID());
129 };
130 };
131
132 std::set< dunedaq::conffwk::ConfigObject *, SortByUId > sorted_objects;
133
134 for(auto& i : objects)
135 sorted_objects.insert(&i);
136
137 for(auto& i : sorted_objects) {
138 if(class_name == "ListRevModule") {
140 }
141 else if(class_name == "ListReverser") {
143 }
144 else if(class_name == "RandomDataListGenerator") {
146 }
147 else if(class_name == "RandomListGeneratorSet") {
149 }
150 else if(class_name == "ReversedListValidator") {
152 }
153 else {
154 std::cerr << "ERROR: do not know how to dump object of " << class_name << " class\n";
155 return (EXIT_FAILURE);
156 }
157 }
158 }
159 catch (dunedaq::conffwk::Exception & ex) {
160 std::cerr << "Caught " << ex << std::endl;
161 return (EXIT_FAILURE);
162 }
163
164 return 0;
165}
Represents database objects.
const std::string & UID() const noexcept
Return object identity.
Defines base class for cache of template objects.
Try to access non-existent object or class.
static void no_param(const char *s)