1 #include "otsdaq-core/ConfigurationInterface/ConfigurationInterface.h"
2 #include "otsdaq-core/ConfigurationInterface/DatabaseConfigurationInterface.h"
3 #include "otsdaq-core/ConfigurationInterface/FileConfigurationInterface.h"
5 #include "otsdaq-core/Macros/CoutMacros.h"
6 #include "otsdaq-core/MessageFacility/MessageFacility.h"
15 #define DEBUG_CONFIGURATION true
19 bool ConfigurationInterface::theMode_ =
true;
20 bool ConfigurationInterface::theVersionTrackingEnabled_ =
true;
22 const std::string ConfigurationInterface::GROUP_METADATA_TABLE_NAME =
26 ConfigurationInterface::ConfigurationInterface() {}
33 if(theInstance_ != 0 &&
34 dynamic_cast<FileConfigurationInterface*>(theInstance_) == 0)
45 if(theInstance_ != 0 &&
46 dynamic_cast<DatabaseConfigurationInterface*>(theInstance_) == 0)
62 bool ConfigurationInterface::isVersionTrackingEnabled()
64 return ConfigurationInterface::theVersionTrackingEnabled_;
68 void ConfigurationInterface::setVersionTrackingEnabled(
bool setValue)
70 ConfigurationInterface::theVersionTrackingEnabled_ = setValue;
84 if(!temporaryVersion.isTemporaryVersion() ||
85 !configuration->isStored(temporaryVersion))
87 std::cout << __COUT_HDR_FL__
88 <<
"Invalid temporary version number: " << temporaryVersion
93 if(!ConfigurationInterface::isVersionTrackingEnabled())
95 newVersion = TableVersion::SCRATCH;
97 bool rewriteableExists =
false;
99 std::set<TableVersion> versions = getVersions(configuration);
100 if(newVersion == TableVersion::INVALID)
104 *(versions.rbegin()) !=
TableVersion(TableVersion::SCRATCH))
105 newVersion = TableVersion::getNextVersion(*(versions.rbegin()));
106 else if(versions.size() >
108 newVersion = TableVersion::getNextVersion(*(--(versions.rbegin())));
110 newVersion = TableVersion::DEFAULT;
111 std::cout << __COUT_HDR_FL__ <<
"Next available version number is " << newVersion
123 else if(versions.find(newVersion) != versions.end())
125 std::cout << __COUT_HDR_FL__ <<
"newVersion(" << newVersion <<
") already exists!"
127 rewriteableExists = newVersion == TableVersion::SCRATCH;
130 if(!rewriteableExists || ConfigurationInterface::isVersionTrackingEnabled())
132 __SS__ << (
"New version already exists!") << std::endl;
133 std::cout << __COUT_HDR_FL__ << ss.str();
138 std::cout << __COUT_HDR_FL__ <<
"Version number to save is " << newVersion
142 configuration->changeVersionAndActivateView(temporaryVersion, newVersion);
149 !ConfigurationInterface::isVersionTrackingEnabled() && rewriteableExists);