2 * AliEMCALConfiguration.cxx
4 * Created on: 06.11.2014
12 #include "AliJSONReader.h"
13 #include "AliEMCALConfiguration.h"
14 #include "AliJSONData.h"
17 AliEMCALConfiguration::AliEMCALConfiguration(const char* name) :
25 AliEMCALConfiguration::~AliEMCALConfiguration() {
26 if(!fParams) delete fParams;
29 void AliEMCALConfiguration::AddParam(const char* name,
30 AliJSONValue* value) {
31 AliJSONData *entry = dynamic_cast<AliJSONData *>(fParams->FindObject(name));
32 if(entry) entry->SetValue(value);
33 else fParams->Add(new AliJSONData(name, value));
36 void AliEMCALConfiguration::Build(const char *jsonstring) {
38 Build(parser.Decode(jsonstring));
41 void AliEMCALConfiguration::Build(TList *entries){
42 TIter objects(entries);
43 for(TIter entry = objects.Begin(); entry != objects.End(); ++entry){
44 AliJSONData *val = dynamic_cast<AliJSONData *>(*entry);
48 TList *conf = dynamic_cast<TList *>(*entry);
50 AliEMCALConfiguration *daughter = new AliEMCALConfiguration(conf->GetName());
51 daughter->Build(conf);
52 fParams->Add(daughter);
58 void AliEMCALConfiguration::Print(Option_t * /*value*/) const {
59 std::cout << "Configuration " << GetName() << ":" << std::endl;
60 std::cout << "=================================================" << std::endl;
61 TIter parIter(fParams);
62 AliJSONData *conf(NULL);
63 while((conf = dynamic_cast<AliJSONData *>(parIter()))){
64 std::cout << "Key " << conf->GetName() << ", value " << conf->GetValue()->ToString() << std::endl;
66 std::cout << "=================================================" << std::endl;
68 void AliEMCALConfiguration::AddConfiguration(AliEMCALConfiguration* conf) {
72 AliJSONValue* AliEMCALConfiguration::GetValue(const char *key) const {
73 AliJSONData *val = dynamic_cast<AliJSONData *>(fParams->FindObject(key));
75 return val->GetValue();
78 const char* AliEMCALConfiguration::CreateJSONString() const {
79 std::stringstream jsonbuilder;
81 TIter confentries(fParams);
83 for(TIter it = confentries.Begin(); it != confentries.End(); ++it){
84 AliEMCALConfiguration *conf = dynamic_cast<AliEMCALConfiguration *>(*it);
86 if(!isFirst) jsonbuilder << ",";
87 jsonbuilder << "\"" << conf->GetName() << "\":" << conf->CreateJSONString();
89 AliJSONData *obj = dynamic_cast<AliJSONData *>(*it);
91 if(!isFirst) jsonbuilder << ",";
92 jsonbuilder << obj->ToString();
95 if(isFirst) isFirst = false;
99 char * result = new char[jsonbuilder.str().length()];
100 strcpy(result, jsonbuilder.str().c_str());
104 std::ostream &operator<<(std::ostream & os, const AliEMCALConfiguration &conf){
105 os << conf.CreateJSONString();