ROOT logo
/*
 * AliEMCALConfigHandler.cxx
 *
 *  Created on: 06.11.2014
 *      Author: markusfasel
 */

#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