#include <sstream>
#include <TList.h>
#include "AliEMCALConfigHandler.h"
#include "AliEMCALConfiguration.h"
#include "AliJSONData.h"
ClassImp(AliEMCALConfigHandler)
AliEMCALConfigHandler::AliEMCALConfigHandler() :
TObject(),
fConfiguration(NULL)
{
fConfiguration = new TList;
fConfiguration->SetOwner();
}
AliEMCALConfigHandler::~AliEMCALConfigHandler() {
delete fConfiguration;
}
AliEMCALConfiguration *AliEMCALConfigHandler::CreateConfiguration(const char* name) {
AliEMCALConfiguration *config = FindConfiguration(name);
if(config)
this->Error("AliEMCALConfigHandler::CreateConfiguration", "Configuration with name %s already exists, not duplicating", name);
else{
config = new AliEMCALConfiguration(name);
fConfiguration->Add(config);
}
return config;
}
void AliEMCALConfigHandler::AddParam(const char* configName, const char* key,
AliJSONValue* value) {
AliEMCALConfiguration *config = FindConfiguration(configName);
if(!config){
this->Warning("AliEMCALConfigHandler", "Configuration with name %s does not exist, creating it", configName);
CreateConfiguration(configName);
}
config->AddParam(key, value);
}
const char *AliEMCALConfigHandler::GetConfigurationString() const {
std::stringstream jsonbuilder;
jsonbuilder << "{";
TIter confentries(fConfiguration);
bool isFirst = true;
for(TIter it = confentries.Begin(); it != confentries.End(); ++it){
AliEMCALConfiguration *conf = static_cast<AliEMCALConfiguration *>(*it);
if(!isFirst) jsonbuilder << ",";
jsonbuilder << "\"" << conf->GetName() << "\":" << conf->CreateJSONString();
if(isFirst) isFirst = false;
}
jsonbuilder << "}";
return jsonbuilder.str().c_str();
}
const char *AliEMCALConfigHandler::GetConfigurationString(const char* configname) const {
AliEMCALConfiguration *conf = FindConfiguration(configname);
if(!conf) return "";
return conf->CreateJSONString();
}
AliEMCALConfiguration* AliEMCALConfigHandler::FindConfiguration(const char* configName) const {
return dynamic_cast<AliEMCALConfiguration *>(fConfiguration->FindObject(configName));
}
AliEMCALConfigHandler.cxx:1 AliEMCALConfigHandler.cxx:2 AliEMCALConfigHandler.cxx:3 AliEMCALConfigHandler.cxx:4 AliEMCALConfigHandler.cxx:5 AliEMCALConfigHandler.cxx:6 AliEMCALConfigHandler.cxx:7 AliEMCALConfigHandler.cxx:8 AliEMCALConfigHandler.cxx:9 AliEMCALConfigHandler.cxx:10 AliEMCALConfigHandler.cxx:11 AliEMCALConfigHandler.cxx:12 AliEMCALConfigHandler.cxx:13 AliEMCALConfigHandler.cxx:14 AliEMCALConfigHandler.cxx:15 AliEMCALConfigHandler.cxx:16 AliEMCALConfigHandler.cxx:17 AliEMCALConfigHandler.cxx:18 AliEMCALConfigHandler.cxx:19 AliEMCALConfigHandler.cxx:20 AliEMCALConfigHandler.cxx:21 AliEMCALConfigHandler.cxx:22 AliEMCALConfigHandler.cxx:23 AliEMCALConfigHandler.cxx:24 AliEMCALConfigHandler.cxx:25 AliEMCALConfigHandler.cxx:26 AliEMCALConfigHandler.cxx:27 AliEMCALConfigHandler.cxx:28 AliEMCALConfigHandler.cxx:29 AliEMCALConfigHandler.cxx:30 AliEMCALConfigHandler.cxx:31 AliEMCALConfigHandler.cxx:32 AliEMCALConfigHandler.cxx:33 AliEMCALConfigHandler.cxx:34 AliEMCALConfigHandler.cxx:35 AliEMCALConfigHandler.cxx:36 AliEMCALConfigHandler.cxx:37 AliEMCALConfigHandler.cxx:38 AliEMCALConfigHandler.cxx:39 AliEMCALConfigHandler.cxx:40 AliEMCALConfigHandler.cxx:41 AliEMCALConfigHandler.cxx:42 AliEMCALConfigHandler.cxx:43 AliEMCALConfigHandler.cxx:44 AliEMCALConfigHandler.cxx:45 AliEMCALConfigHandler.cxx:46 AliEMCALConfigHandler.cxx:47 AliEMCALConfigHandler.cxx:48 AliEMCALConfigHandler.cxx:49 AliEMCALConfigHandler.cxx:50 AliEMCALConfigHandler.cxx:51 AliEMCALConfigHandler.cxx:52 AliEMCALConfigHandler.cxx:53 AliEMCALConfigHandler.cxx:54 AliEMCALConfigHandler.cxx:55 AliEMCALConfigHandler.cxx:56 AliEMCALConfigHandler.cxx:57 AliEMCALConfigHandler.cxx:58 AliEMCALConfigHandler.cxx:59 AliEMCALConfigHandler.cxx:60 AliEMCALConfigHandler.cxx:61 AliEMCALConfigHandler.cxx:62 AliEMCALConfigHandler.cxx:63 AliEMCALConfigHandler.cxx:64 AliEMCALConfigHandler.cxx:65 AliEMCALConfigHandler.cxx:66 AliEMCALConfigHandler.cxx:67 AliEMCALConfigHandler.cxx:68 AliEMCALConfigHandler.cxx:69 AliEMCALConfigHandler.cxx:70 AliEMCALConfigHandler.cxx:71 AliEMCALConfigHandler.cxx:72 AliEMCALConfigHandler.cxx:73