1 #include "otsdaq-core/ConfigurationInterface/FileConfigurationInterface.h"
2 #include "otsdaq-core/ConfigurationInterface/ConfigurationHandler.h"
3 #include "otsdaq-core/ConfigurationDataFormats/ConfigurationBase.h"
4 #include "otsdaq-core/MessageFacility/MessageFacility.h"
5 #include "otsdaq-core/Macros/CoutHeaderMacros.h"
10 #include "JSONConfigurationHandler.h.unused"
18 ConfigurationHandler::readXML (configuration, version);
26 auto versions = getVersions(configuration);
29 return *(versions.rbegin());
34 void FileConfigurationInterface::saveActiveVersion(
const ConfigurationBase* configuration,
bool overwrite)
const
36 ConfigurationHandler::writeXML(configuration);
41 std::set<ConfigurationVersion> FileConfigurationInterface::getVersions(
const ConfigurationBase* configuration)
const
43 std::string configDir = ConfigurationHandler::getXMLDir(configuration);
44 std::cout << __COUT_HDR_FL__ <<
"ConfigurationDir: " << configDir << std::endl;
49 if((dp = opendir(configDir.c_str())) == 0)
51 std::cout << __COUT_HDR_FL__<<
"ERROR:(" << errno <<
"). Can't open directory: " << configDir << std::endl;
52 throw std::runtime_error(
"Error in File Interface getVersion!");
55 const unsigned char isDir = 0x4;
59 std::string::const_iterator it;
61 std::set<ConfigurationVersion> dirNumbers;
63 while ((dirp = readdir(dp)) != 0)
65 if(dirp->d_type == isDir && dirp->d_name[0] !=
'.' )
67 dirName = dirp->d_name;
71 while (it != dirName.end() && std::isdigit(*it))
74 if(dirName.empty() || it != dirName.end())
76 std::cout << __COUT_HDR_FL__ <<
"WARNING: there is a non numeric directory in " << configDir <<
" called " << dirName
77 <<
" please remove it from there since only numeric directories are considered." << std::endl;