ROOT logo
/*************************************************************************
 * * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
 * *                                                                        *
 * * Author: The ALICE Off-line Project.                                    *
 * * Contributors are mentioned in the code where appropriate.              *
 * *                                                                        *
 * * Permission to use, copy, modify and distribute this software and its   *
 * * documentation strictly for non-commercial purposes is hereby granted   *
 * * without fee, provided that the above copyright notice appears in all   *
 * * copies and that both the copyright notice and this permission notice   *
 * * appear in the supporting documentation. The authors make no claims     *
 * * about the suitability of this software for any purpose. It is          *
 * * provided "as is" without express or implied warranty.                  *
 * **************************************************************************/

////////////////////////////////////////////////////////////////////////////
//                                                                        //
//  The SAX XML file handler used in the CDBManager                       //
//                                                                        //
//  Author:                                                               //
//    Chiara Zampolli (Chiara.Zampolli@cern.ch)                           //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

#include <cstdlib>
#include <Riostream.h>

#include <TList.h>
#include <TObject.h>
#include <TXMLAttr.h>
#include <TSAXParser.h>

#include "AliLog.h"
#include "AliCDBHandler.h"

ClassImp(AliCDBHandler)

//_____________________________________________________________________________
AliCDBHandler::AliCDBHandler()
  :TObject(),
  fRun(-1),
  fStartRunRange(-1),
  fEndRunRange(-1),
  fOCDBFolder("")
{
  //
  // AliCDBHandler default constructor
  //
}

//_____________________________________________________________________________
AliCDBHandler::AliCDBHandler(Int_t run)
  :TObject(),
  fRun(run),
  fStartRunRange(-1),
  fEndRunRange(-1),
  fOCDBFolder("")
{
  //
  // AliCDBHandler constructor with requested run
  //
}

//_____________________________________________________________________________
  AliCDBHandler::AliCDBHandler(const AliCDBHandler &sh)
:TObject(sh),
  fRun(sh.fRun),
  fStartRunRange(sh.fStartRunRange),
  fEndRunRange(sh.fEndRunRange),
  fOCDBFolder(sh.fOCDBFolder)
{
  //
  // AliCDBHandler copy constructor
  //
}

//_____________________________________________________________________________
AliCDBHandler &AliCDBHandler::operator=(const AliCDBHandler &sh)
{
  //
  // Assignment operator
  //
  if (&sh == this) return *this;

  new (this) AliCDBHandler(sh);
  return *this;
}

//_____________________________________________________________________________
AliCDBHandler::~AliCDBHandler()
{
  //
  // AliCDBHandler destructor
  //	
}

//_____________________________________________________________________________
void AliCDBHandler::OnStartDocument()
{
  // if something should happen right at the beginning of the
  // XML document, this must happen here
  AliInfo("Reading XML file for LHCPeriod <-> Run Range correspondence");
}

//_____________________________________________________________________________
void AliCDBHandler::OnEndDocument()
{
  // if something should happen at the end of the XML document
  // this must be done here
}

//_____________________________________________________________________________
void AliCDBHandler::OnStartElement(const char *name, const TList *attributes)
{
  // when a new XML element is found, it is processed here

  // set the current system if necessary
  TString strName(name);
  AliDebug(2,Form("name = %s",strName.Data()));
  Int_t startRun=-1;
  Int_t endRun=-1;
  TXMLAttr* attr;
  TIter next(attributes);
  while ((attr = (TXMLAttr*) next())) {
    TString attrName = attr->GetName();
    AliDebug(2,Form("Name = %s",attrName.Data())); 
    if (attrName == "StartRunRange"){
      startRun = (Int_t)(((TString)(attr->GetValue())).Atoi());
      AliDebug(2,Form("startRun = %d",startRun));
    }
    if (attrName == "EndRunRange"){
      endRun = (Int_t)(((TString)(attr->GetValue())).Atoi());
      AliDebug(2,Form("endRun = %d",endRun));
    }				
    if (attrName == "OCDBFolder"){
      if (fRun>=startRun && fRun<=endRun && startRun!=-1 && endRun!=-1){
        fOCDBFolder = (TString)(attr->GetValue());
        AliDebug(2,Form("OCDBFolder = %s",fOCDBFolder.Data()));
        fStartRunRange = startRun;
        fEndRunRange = endRun;
      }
    }
  }	
  return;
}
//_____________________________________________________________________________
void AliCDBHandler::OnEndElement(const char *name)
{
  // do everything that needs to be done when an end tag of an element is found
  TString strName(name);
  AliDebug(2,Form("name = %s",strName.Data()));
}

//_____________________________________________________________________________
void AliCDBHandler::OnCharacters(const char *characters)
{
  // copy the text content of an XML element
  //fContent = characters;
  TString strCharacters(characters);
  AliDebug(2,Form("characters = %s",strCharacters.Data()));
}

//_____________________________________________________________________________
void AliCDBHandler::OnComment(const char* /*text*/)
{
  // comments within the XML file are ignored
}

//_____________________________________________________________________________
void AliCDBHandler::OnWarning(const char *text)
{
  // process warnings here
  AliInfo(Form("Warning: %s",text));
}

//_____________________________________________________________________________
void AliCDBHandler::OnError(const char *text)
{
  // process errors here
  AliError(Form("Error: %s",text));
}

//_____________________________________________________________________________
void AliCDBHandler::OnFatalError(const char *text)
{
  // process fatal errors here
  AliFatal(Form("Fatal error: %s",text));
}

//_____________________________________________________________________________
void AliCDBHandler::OnCdataBlock(const char* /*text*/, Int_t /*len*/)
{
  // process character data blocks here
  // not implemented and should not be used here
}

 AliCDBHandler.cxx:1
 AliCDBHandler.cxx:2
 AliCDBHandler.cxx:3
 AliCDBHandler.cxx:4
 AliCDBHandler.cxx:5
 AliCDBHandler.cxx:6
 AliCDBHandler.cxx:7
 AliCDBHandler.cxx:8
 AliCDBHandler.cxx:9
 AliCDBHandler.cxx:10
 AliCDBHandler.cxx:11
 AliCDBHandler.cxx:12
 AliCDBHandler.cxx:13
 AliCDBHandler.cxx:14
 AliCDBHandler.cxx:15
 AliCDBHandler.cxx:16
 AliCDBHandler.cxx:17
 AliCDBHandler.cxx:18
 AliCDBHandler.cxx:19
 AliCDBHandler.cxx:20
 AliCDBHandler.cxx:21
 AliCDBHandler.cxx:22
 AliCDBHandler.cxx:23
 AliCDBHandler.cxx:24
 AliCDBHandler.cxx:25
 AliCDBHandler.cxx:26
 AliCDBHandler.cxx:27
 AliCDBHandler.cxx:28
 AliCDBHandler.cxx:29
 AliCDBHandler.cxx:30
 AliCDBHandler.cxx:31
 AliCDBHandler.cxx:32
 AliCDBHandler.cxx:33
 AliCDBHandler.cxx:34
 AliCDBHandler.cxx:35
 AliCDBHandler.cxx:36
 AliCDBHandler.cxx:37
 AliCDBHandler.cxx:38
 AliCDBHandler.cxx:39
 AliCDBHandler.cxx:40
 AliCDBHandler.cxx:41
 AliCDBHandler.cxx:42
 AliCDBHandler.cxx:43
 AliCDBHandler.cxx:44
 AliCDBHandler.cxx:45
 AliCDBHandler.cxx:46
 AliCDBHandler.cxx:47
 AliCDBHandler.cxx:48
 AliCDBHandler.cxx:49
 AliCDBHandler.cxx:50
 AliCDBHandler.cxx:51
 AliCDBHandler.cxx:52
 AliCDBHandler.cxx:53
 AliCDBHandler.cxx:54
 AliCDBHandler.cxx:55
 AliCDBHandler.cxx:56
 AliCDBHandler.cxx:57
 AliCDBHandler.cxx:58
 AliCDBHandler.cxx:59
 AliCDBHandler.cxx:60
 AliCDBHandler.cxx:61
 AliCDBHandler.cxx:62
 AliCDBHandler.cxx:63
 AliCDBHandler.cxx:64
 AliCDBHandler.cxx:65
 AliCDBHandler.cxx:66
 AliCDBHandler.cxx:67
 AliCDBHandler.cxx:68
 AliCDBHandler.cxx:69
 AliCDBHandler.cxx:70
 AliCDBHandler.cxx:71
 AliCDBHandler.cxx:72
 AliCDBHandler.cxx:73
 AliCDBHandler.cxx:74
 AliCDBHandler.cxx:75
 AliCDBHandler.cxx:76
 AliCDBHandler.cxx:77
 AliCDBHandler.cxx:78
 AliCDBHandler.cxx:79
 AliCDBHandler.cxx:80
 AliCDBHandler.cxx:81
 AliCDBHandler.cxx:82
 AliCDBHandler.cxx:83
 AliCDBHandler.cxx:84
 AliCDBHandler.cxx:85
 AliCDBHandler.cxx:86
 AliCDBHandler.cxx:87
 AliCDBHandler.cxx:88
 AliCDBHandler.cxx:89
 AliCDBHandler.cxx:90
 AliCDBHandler.cxx:91
 AliCDBHandler.cxx:92
 AliCDBHandler.cxx:93
 AliCDBHandler.cxx:94
 AliCDBHandler.cxx:95
 AliCDBHandler.cxx:96
 AliCDBHandler.cxx:97
 AliCDBHandler.cxx:98
 AliCDBHandler.cxx:99
 AliCDBHandler.cxx:100
 AliCDBHandler.cxx:101
 AliCDBHandler.cxx:102
 AliCDBHandler.cxx:103
 AliCDBHandler.cxx:104
 AliCDBHandler.cxx:105
 AliCDBHandler.cxx:106
 AliCDBHandler.cxx:107
 AliCDBHandler.cxx:108
 AliCDBHandler.cxx:109
 AliCDBHandler.cxx:110
 AliCDBHandler.cxx:111
 AliCDBHandler.cxx:112
 AliCDBHandler.cxx:113
 AliCDBHandler.cxx:114
 AliCDBHandler.cxx:115
 AliCDBHandler.cxx:116
 AliCDBHandler.cxx:117
 AliCDBHandler.cxx:118
 AliCDBHandler.cxx:119
 AliCDBHandler.cxx:120
 AliCDBHandler.cxx:121
 AliCDBHandler.cxx:122
 AliCDBHandler.cxx:123
 AliCDBHandler.cxx:124
 AliCDBHandler.cxx:125
 AliCDBHandler.cxx:126
 AliCDBHandler.cxx:127
 AliCDBHandler.cxx:128
 AliCDBHandler.cxx:129
 AliCDBHandler.cxx:130
 AliCDBHandler.cxx:131
 AliCDBHandler.cxx:132
 AliCDBHandler.cxx:133
 AliCDBHandler.cxx:134
 AliCDBHandler.cxx:135
 AliCDBHandler.cxx:136
 AliCDBHandler.cxx:137
 AliCDBHandler.cxx:138
 AliCDBHandler.cxx:139
 AliCDBHandler.cxx:140
 AliCDBHandler.cxx:141
 AliCDBHandler.cxx:142
 AliCDBHandler.cxx:143
 AliCDBHandler.cxx:144
 AliCDBHandler.cxx:145
 AliCDBHandler.cxx:146
 AliCDBHandler.cxx:147
 AliCDBHandler.cxx:148
 AliCDBHandler.cxx:149
 AliCDBHandler.cxx:150
 AliCDBHandler.cxx:151
 AliCDBHandler.cxx:152
 AliCDBHandler.cxx:153
 AliCDBHandler.cxx:154
 AliCDBHandler.cxx:155
 AliCDBHandler.cxx:156
 AliCDBHandler.cxx:157
 AliCDBHandler.cxx:158
 AliCDBHandler.cxx:159
 AliCDBHandler.cxx:160
 AliCDBHandler.cxx:161
 AliCDBHandler.cxx:162
 AliCDBHandler.cxx:163
 AliCDBHandler.cxx:164
 AliCDBHandler.cxx:165
 AliCDBHandler.cxx:166
 AliCDBHandler.cxx:167
 AliCDBHandler.cxx:168
 AliCDBHandler.cxx:169
 AliCDBHandler.cxx:170
 AliCDBHandler.cxx:171
 AliCDBHandler.cxx:172
 AliCDBHandler.cxx:173
 AliCDBHandler.cxx:174
 AliCDBHandler.cxx:175
 AliCDBHandler.cxx:176
 AliCDBHandler.cxx:177
 AliCDBHandler.cxx:178
 AliCDBHandler.cxx:179
 AliCDBHandler.cxx:180
 AliCDBHandler.cxx:181
 AliCDBHandler.cxx:182
 AliCDBHandler.cxx:183
 AliCDBHandler.cxx:184
 AliCDBHandler.cxx:185
 AliCDBHandler.cxx:186
 AliCDBHandler.cxx:187
 AliCDBHandler.cxx:188
 AliCDBHandler.cxx:189
 AliCDBHandler.cxx:190
 AliCDBHandler.cxx:191
 AliCDBHandler.cxx:192
 AliCDBHandler.cxx:193
 AliCDBHandler.cxx:194
 AliCDBHandler.cxx:195
 AliCDBHandler.cxx:196