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