DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dbe::config::api::get::file Class Reference

#include <config_api_get.hpp>

Static Public Member Functions

static QStringList inclusions (QStringList const &candidates, QStringList files={})
static QStringList inclusions_singlefile (QString const &)

Detailed Description

Definition at line 44 of file config_api_get.hpp.

Member Function Documentation

◆ inclusions()

QStringList dbe::config::api::get::file::inclusions ( QStringList const & candidates,
QStringList files = {} )
static

Retrieve a list of files included from the database created from the given filename by parsin all the files included in the file and its inclusions.

Parameters
rootfilename
Returns
a list of files

Definition at line 233 of file config_api_get.cpp.

234{
235 if (candidates.isEmpty()) {
236 return files;
237 } else {
238 QStringList newcandidates = {};
239
240 for (QString const& fname : candidates) {
241 if (not(fname.endsWith("schema.xml") or files.contains(fname))) {
242 files.push_back(fname);
243 // Query the current file for other inclusions
244 std::list<std::string> configfiles;
245
246 try {
247 if (not(fname.contains("rdbconfig:") or fname.contains("roksconflibs:"))) {
248 // Process file based sources
249 dbaccessor::dbptr()->get_includes(fname.toStdString(), configfiles);
250 } else {
251 // Process other sources (e.g. Oracle and RDB )
252 dbaccessor::dbptr()->get_includes("", configfiles);
253 files.removeAll(fname); // Once used RDB / Oracle sources must be removed
254 }
255 } catch (dunedaq::conffwk::Exception const& ex) {
256 ERROR("Include did not succeed for ",
257 dbe::config::errors::parse(ex).c_str(),
258 "filename:",
259 fname.toStdString().c_str());
260 }
261
262 // Keep only files that have not already been processed
263 // i.e. they are not in the list of given files.
264 for (std::string const& configfile : configfiles) {
265 QString const& qconfigfile = QString::fromStdString(configfile);
266
267 if (not files.contains(qconfigfile)) {
268 newcandidates.push_back(qconfigfile);
269 }
270 }
271 }
272 }
273
274 return get::file::inclusions(newcandidates, files);
275 }
276}
static QStringList inclusions(QStringList const &candidates, QStringList files={})
static cptr< dunedaq::conffwk::Configuration > dbptr()
#define ERROR(...)
Definition messenger.hpp:90
std::string const parse(ers::Issue const &)

◆ inclusions_singlefile()

QStringList dbe::config::api::get::file::inclusions_singlefile ( QString const & FileName)
static

Retrieve a list of of files from a single file

Parameters
thefile name to process
Returns
the list of files

Definition at line 282 of file config_api_get.cpp.

283{
284 std::string dbname = FileName.toStdString();
285 std::list<std::string> incList;
286
287 QStringList dbfiles;
288
289 try {
290 dbaccessor::dbptr()->get_includes(dbname, incList);
291
292 for (std::string const& includeName : incList) {
293 dbfiles.push_back(QString(includeName.c_str()));
294 }
295 } catch (dunedaq::conffwk::Exception& ex) {
296 WARN("Include : Could not retrieve included files", dbe::config::errors::parse(ex).c_str());
297 }
298
299 return dbfiles;
300}
#define WARN(...)
Definition messenger.hpp:82

The documentation for this class was generated from the following files: