00001 #include "otsdaq-core/ConfigurationPluginDataFormats/Configurations.h"
00002 #include "otsdaq-core/Macros/ConfigurationPluginMacros.h"
00003
00004 #include <iostream>
00005
00006 using namespace ots;
00007
00008
00009 Configurations::Configurations(void)
00010 : ConfigurationBase("Configurations")
00011 {
00013
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 }
00028
00029
00030 Configurations::~Configurations(void)
00031 {}
00032
00033
00034 void Configurations::init(ConfigurationManager *configManager)
00035 {
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 }
00048
00049
00050 bool Configurations::findKOC(ConfigurationGroupKey ConfigurationGroupKey, std::string koc) const
00051 {
00052 unsigned int tmpConfigurationGroupKey;
00053 std::string tmpKOC;
00054 for(unsigned int row=0; row<ConfigurationBase::activeConfigurationView_->getNumberOfRows(); row++)
00055 {
00056 ConfigurationBase::activeConfigurationView_->getValue(tmpConfigurationGroupKey,row,ConfigurationGroupKeyAlias);
00057 if(ConfigurationGroupKey == tmpConfigurationGroupKey)
00058 {
00059 ConfigurationBase::activeConfigurationView_->getValue(tmpKOC,row,KOC);
00060
00061 if(tmpKOC == koc)
00062 return true;
00063 }
00064 }
00065 std::cout << __COUT_HDR_FL__ << __PRETTY_FUNCTION__ << "ERROR: Can't find KOC " << koc << std::endl;
00066 return false;
00067 }
00068
00069
00070
00071
00072 ConfigurationVersion Configurations::getConditionVersion(const ConfigurationGroupKey &ConfigurationGroupKey,
00073 std::string koc) const
00074 {
00075 unsigned int tmpConfigurationGroupKey;
00076 std::string tmpKOC;
00077 unsigned int conditionVersion;
00078
00079 for(unsigned int row=0; row<ConfigurationBase::activeConfigurationView_->getNumberOfRows(); row++)
00080 {
00081 ConfigurationBase::activeConfigurationView_->getValue(tmpConfigurationGroupKey,row,ConfigurationGroupKeyAlias);
00082 if(ConfigurationGroupKey == tmpConfigurationGroupKey)
00083 {
00084 ConfigurationBase::activeConfigurationView_->getValue(tmpKOC,row,KOC);
00085 if(tmpKOC == koc)
00086 {
00087 ConfigurationBase::activeConfigurationView_->getValue(conditionVersion,row,ConditionVersion);
00088
00089 return ConfigurationVersion(conditionVersion);
00090 }
00091
00092 }
00093 }
00094 std::cout << __COUT_HDR_FL__ << "****************************************************************************************************************************" << std::endl;
00095 std::cout << __COUT_HDR_FL__ << "\tCan't find KOC " << koc << " with ConfigurationGroupKey " << ConfigurationGroupKey << " in the Configurations view" << std::endl;
00096 std::cout << __COUT_HDR_FL__ << "****************************************************************************************************************************" << std::endl;
00097 throw std::runtime_error("Could not find koc for ConfigurationGroupKey");
00098 return ConfigurationVersion();
00099 }
00100
00101
00102
00103
00104
00105 int Configurations::setConditionVersionForView (ConfigurationView* cfgView,
00106 ConfigurationGroupKey ConfigurationGroupKey, std::string koc, ConfigurationVersion newKOCVersion)
00107 {
00108
00109 unsigned int row = 0;
00110 unsigned int tmpConfigurationGroupKey;
00111 std::string tmpKOC;
00112 unsigned int tmpOldKOCVersion;
00113 for(row=0; row<cfgView->getNumberOfRows(); row++)
00114 {
00115 cfgView->getValue(tmpConfigurationGroupKey,row,Configurations::ConfigurationGroupKeyAlias);
00116 if(ConfigurationGroupKey == tmpConfigurationGroupKey)
00117 {
00118 cfgView->getValue(tmpKOC,row,Configurations::KOC);
00119 if(tmpKOC == koc)
00120 {
00121 cfgView->getValue(tmpOldKOCVersion,row,Configurations::ConditionVersion);
00122 std::cout << __COUT_HDR_FL__ << "Found ConfigKey(" <<
00123 ConfigurationGroupKey << ") and KOCAlias(" <<
00124 koc << ") pair." <<
00125 " Current version is: " << tmpOldKOCVersion <<
00126 " New version is: " << newKOCVersion << std::endl;
00127 if(newKOCVersion == tmpOldKOCVersion)
00128 return 1;
00129 break;
00130 }
00131
00132 }
00133 }
00134
00135
00136
00137 std::cout << __COUT_HDR_FL__ << "Row found is:" << row << std::endl;
00138 cfgView->setValue(newKOCVersion, row, Configurations::ConditionVersion);
00139 std::cout << __COUT_HDR_FL__ << "Version changed to:" << newKOCVersion << std::endl;
00140 return 0;
00141 }
00142
00143
00144
00145
00146
00147
00148
00149 std::set<std::string> Configurations::getListOfKocs(ConfigurationGroupKey ConfigurationGroupKey) const
00150 {
00151 std::set<std::string> kocs;
00152 getListOfKocsForView(ConfigurationBase::activeConfigurationView_,kocs,ConfigurationGroupKey);
00153 return kocs;
00154 }
00155
00156
00157
00158
00159
00160
00161 void Configurations::getListOfKocsForView(ConfigurationView* cfgView, std::set<std::string> &kocs,
00162 ConfigurationGroupKey ConfigurationGroupKey) const
00163 {
00164 if(!cfgView)
00165 {
00166 std::cout << __COUT_HDR_FL__ << "****************************************************************************************************************************" << std::endl;
00167 std::cout << __COUT_HDR_FL__ << "\tCan't find list of Kocs for null cfgView pointer" << std::endl;
00168 std::cout << __COUT_HDR_FL__ << "****************************************************************************************************************************" << std::endl;
00169 throw std::runtime_error("Null cfgView configuration view pointer");
00170 }
00171
00172 std::string tmpKOC;
00173 unsigned int tmpConfigurationGroupKey;
00174
00175 for(unsigned int row=0; row<cfgView->getNumberOfRows(); row++)
00176 {
00177 cfgView->getValue(tmpConfigurationGroupKey,row,ConfigurationGroupKeyAlias);
00178 if(ConfigurationGroupKey == ConfigurationGroupKey::INVALID ||
00179 ConfigurationGroupKey == tmpConfigurationGroupKey)
00180 {
00181 cfgView->getValue(tmpKOC,row,KOC);
00182 kocs.insert(tmpKOC);
00183 }
00184 }
00185 }
00186
00187
00188
00189
00190 DEFINE_OTS_CONFIGURATION(Configurations)