Bug corrected.
[u/mrichter/AliRoot.git] / STEER / AliCDBHandler.cxx
CommitLineData
7de84b33 1/*************************************************************************\r
2 * * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *\r
3 * * *\r
4 * * Author: The ALICE Off-line Project. *\r
5 * * Contributors are mentioned in the code where appropriate. *\r
6 * * *\r
7 * * Permission to use, copy, modify and distribute this software and its *\r
8 * * documentation strictly for non-commercial purposes is hereby granted *\r
9 * * without fee, provided that the above copyright notice appears in all *\r
10 * * copies and that both the copyright notice and this permission notice *\r
11 * * appear in the supporting documentation. The authors make no claims *\r
12 * * about the suitability of this software for any purpose. It is *\r
13 * * provided "as is" without express or implied warranty. *\r
14 * **************************************************************************/\r
15\r
16////////////////////////////////////////////////////////////////////////////\r
17// //\r
18// The SAX XML file handler used in the CDBManager //\r
19// //\r
20// Author: //\r
21// Chiara Zampolli (Chiara.Zampolli@cern.ch) //\r
22// //\r
23////////////////////////////////////////////////////////////////////////////\r
24\r
25#include <cstdlib>\r
26#include <Riostream.h>\r
27\r
28#include <TList.h>\r
29#include <TObject.h>\r
30#include <TXMLAttr.h>\r
31#include <TSAXParser.h>\r
32\r
33#include "AliLog.h"\r
34#include "AliCDBHandler.h"\r
35\r
36ClassImp(AliCDBHandler)\r
37\r
38 \r
39//_____________________________________________________________________________\r
40AliCDBHandler::AliCDBHandler()\r
41 :TObject(),\r
42 fRun(-1),\r
43 fStartRunRange(-1),\r
44 fEndRunRange(-1),\r
45 fOCDBFolder("")\r
46{\r
47 //\r
48 // AliCDBHandler default constructor\r
49 //\r
50}\r
51\r
52//_____________________________________________________________________________\r
53AliCDBHandler::AliCDBHandler(Int_t run)\r
54 :TObject(),\r
55 fRun(run),\r
56 fStartRunRange(-1),\r
57 fEndRunRange(-1),\r
58 fOCDBFolder("")\r
59{\r
60 //\r
61 // AliCDBHandler constructor with requested run\r
62 //\r
63}\r
64\r
65//_____________________________________________________________________________\r
66AliCDBHandler::AliCDBHandler(const AliCDBHandler &sh)\r
67 :TObject(sh),\r
68 fRun(sh.fRun),\r
69 fStartRunRange(sh.fStartRunRange),\r
70 fEndRunRange(sh.fEndRunRange),\r
71 fOCDBFolder(sh.fOCDBFolder)\r
72{\r
73 //\r
74 // AliCDBHandler copy constructor\r
75 //\r
76}\r
77\r
78//_____________________________________________________________________________\r
79AliCDBHandler &AliCDBHandler::operator=(const AliCDBHandler &sh)\r
80{\r
81 //\r
82 // Assignment operator\r
83 //\r
84 if (&sh == this) return *this;\r
85 \r
86 new (this) AliCDBHandler(sh);\r
87 return *this;\r
88}\r
89\r
90//_____________________________________________________________________________\r
91AliCDBHandler::~AliCDBHandler()\r
92{\r
93 //\r
94 // AliCDBHandler destructor\r
95 // \r
96}\r
97\r
98//_____________________________________________________________________________\r
99void AliCDBHandler::OnStartDocument()\r
100{\r
101 // if something should happen right at the beginning of the\r
102 // XML document, this must happen here\r
103 AliInfo("Reading XML file for LHCPerdiod <-> Run Range correspondance");\r
104}\r
105\r
106//_____________________________________________________________________________\r
107void AliCDBHandler::OnEndDocument()\r
108{\r
109 // if something should happen at the end of the XML document\r
110 // this must be done here\r
111}\r
112\r
113//_____________________________________________________________________________\r
114void AliCDBHandler::OnStartElement(const char *name, const TList *attributes)\r
115{\r
116 // when a new XML element is found, it is processed here\r
117\r
118 // set the current system if necessary\r
119 TString strName(name);\r
120 AliDebug(2,Form("name = %s",strName.Data()));\r
121 Int_t startRun=-1;\r
122 Int_t endRun=-1;\r
123 TXMLAttr* attr;\r
124 TIter next(attributes);\r
125 while ((attr = (TXMLAttr*) next())) {\r
126 TString attrName = attr->GetName();\r
127 AliDebug(2,Form("Name = %s",attrName.Data())); \r
128 if (attrName == "StartRunRange"){\r
129 startRun = (Int_t)(((TString)(attr->GetValue())).Atoi());\r
130 AliDebug(2,Form("startRun = %d",startRun));\r
131 }\r
132 if (attrName == "EndRunRange"){\r
133 endRun = (Int_t)(((TString)(attr->GetValue())).Atoi());\r
134 AliDebug(2,Form("endRun = %d",endRun));\r
135 } \r
136 if (attrName == "OCDBFolder"){\r
137 if (fRun>=startRun && fRun<=endRun && startRun!=-1 && endRun!=-1){\r
138 fOCDBFolder = (TString)(attr->GetValue());\r
139 AliDebug(2,Form("OCDBFolder = %s",fOCDBFolder.Data()));\r
140 fStartRunRange = startRun;\r
141 fEndRunRange = endRun;\r
142 }\r
143 }\r
144 } \r
145 return;\r
146}\r
147//_____________________________________________________________________________\r
148void AliCDBHandler::OnEndElement(const char *name)\r
149{\r
150 // do everything that needs to be done when an end tag of an element is found\r
151 TString strName(name);\r
152 AliDebug(2,Form("name = %s",strName.Data()));\r
153}\r
154\r
155//_____________________________________________________________________________\r
156void AliCDBHandler::OnCharacters(const char *characters)\r
157{\r
158 // copy the text content of an XML element\r
159 //fContent = characters;\r
160 TString strCharacters(characters);\r
161 AliDebug(2,Form("characters = %s",strCharacters.Data()));\r
162}\r
163\r
164//_____________________________________________________________________________\r
165void AliCDBHandler::OnComment(const char* /*text*/)\r
166{\r
167 // comments within the XML file are ignored\r
168}\r
169\r
170//_____________________________________________________________________________\r
171void AliCDBHandler::OnWarning(const char *text)\r
172{\r
173 // process warnings here\r
174 AliInfo(Form("Warning: %s",text));\r
175}\r
176\r
177//_____________________________________________________________________________\r
178void AliCDBHandler::OnError(const char *text)\r
179{\r
180 // process errors here\r
181 AliError(Form("Error: %s",text));\r
182}\r
183\r
184//_____________________________________________________________________________\r
185void AliCDBHandler::OnFatalError(const char *text)\r
186{\r
187 // process fatal errors here\r
188 AliFatal(Form("Fatal error: %s",text));\r
189}\r
190\r
191//_____________________________________________________________________________\r
192void AliCDBHandler::OnCdataBlock(const char* /*text*/, Int_t /*len*/)\r
193{\r
194 // process character data blocks here\r
195 // not implemented and should not be used here\r
196}\r
197\r