]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliCDBManager.h
Bug fix (Gustavo)
[u/mrichter/AliRoot.git] / STEER / AliCDBManager.h
CommitLineData
9e1ceb13 1#ifndef ALI_CDB_MANAGER_H
2#define ALI_CDB_MANAGER_H
3
4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
7/////////////////////////////////////////////////////////////////////
8// //
9// class AliCDBManager //
10// //
11/////////////////////////////////////////////////////////////////////
12
13#include <TObject.h>
14#include <TList.h>
15#include <TMap.h>
16
fdf65bb5 17class AliCDBEntry;
02c4845e 18class AliCDBId;
19class AliCDBPath;
20class AliCDBRunRange;
21class AliCDBMetaData;
9e1ceb13 22class AliCDBStorage;
23class AliCDBStorageFactory;
24class AliCDBParam;
25
26class AliCDBManager: public TObject {
27
28 public:
b8ec52f6 29 enum DataType {kCondition=0, kReference, kPrivate};
9e1ceb13 30
31 void RegisterFactory(AliCDBStorageFactory* factory);
32
fdf65bb5 33 Bool_t HasStorage(const char* dbString) const;
9e1ceb13 34
fdf65bb5 35 AliCDBParam* CreateParameter(const char* dbString) const;
b8ec52f6 36 AliCDBParam* GetCondParam() const {return fCondParam;}
37 AliCDBParam* GetRefParam() const {return fRefParam;}
38 static const char* GetDataTypeName(DataType type);
9e1ceb13 39
40 AliCDBStorage* GetStorage(const char* dbString);
41 AliCDBStorage* GetStorage(const AliCDBParam* param);
b8ec52f6 42
9e1ceb13 43 TList* GetActiveStorages();
44
45 void SetDefaultStorage(const char* dbString);
46 void SetDefaultStorage(const AliCDBParam* param);
47 void SetDefaultStorage(AliCDBStorage *storage);
9e1ceb13 48
02c4845e 49 Bool_t IsDefaultStorageSet() const {return fDefaultStorage != 0;}
fdf65bb5 50 AliCDBStorage* GetDefaultStorage() const {return fDefaultStorage;}
b05400be 51 void UnsetDefaultStorage() {fDefaultStorage = 0x0;}
b8ec52f6 52
024cf675 53 void SetSpecificStorage(const char* calibType, const char* dbString);
54 void SetSpecificStorage(const char* calibType, AliCDBParam* param);
02c4845e 55
024cf675 56 AliCDBStorage* GetSpecificStorage(const char* calibType);
9e1ceb13 57
58 void SetDrain(const char* dbString);
59 void SetDrain(const AliCDBParam* param);
60 void SetDrain(AliCDBStorage *storage);
61
fdf65bb5 62 Bool_t IsDrainSet() const {return fDrainStorage != 0;}
9e1ceb13 63
64 Bool_t Drain(AliCDBEntry* entry);
65
b05400be 66 void UnsetDrain(){fDrainStorage = 0x0;}
9e1ceb13 67
02c4845e 68 AliCDBEntry* Get(const AliCDBId& query);
62032124 69 AliCDBEntry* Get(const AliCDBPath& path, Int_t runNumber=-1,
02c4845e 70 Int_t version = -1, Int_t subVersion = -1);
71 AliCDBEntry* Get(const AliCDBPath& path, const AliCDBRunRange& runRange,
72 Int_t version = -1, Int_t subVersion = -1);
73
74 TList* GetAll(const AliCDBId& query);
62032124 75 TList* GetAll(const AliCDBPath& path, Int_t runNumber=-1,
02c4845e 76 Int_t version = -1, Int_t subVersion = -1);
77 TList* GetAll(const AliCDBPath& path, const AliCDBRunRange& runRange,
78 Int_t version = -1, Int_t subVersion = -1);
79
b8ec52f6 80 Bool_t Put(TObject* object, AliCDBId& id,
81 AliCDBMetaData* metaData, DataType type=kPrivate);
82 Bool_t Put(AliCDBEntry* entry, DataType type=kPrivate);
83
4b5e0dce 84 void SetCacheFlag(Bool_t cacheFlag) {fCache=cacheFlag;}
e1e6896f 85 Bool_t GetCacheFlag() const {return fCache;}
4b5e0dce 86
c3a7b59a 87 void SetRun(Int_t run);
88 Int_t GetRun() const {return fRun;}
4b5e0dce 89
024cf675 90 // AliCDBEntry* Get(const char* path);
02c4845e 91
9e1ceb13 92 void DestroyActiveStorages();
93 void DestroyActiveStorage(AliCDBStorage* storage);
917a098b 94
62032124 95 void QueryCDB();
96
917a098b 97 void Print(Option_t* option="") const;
98
9e1ceb13 99 static void Destroy();
100 ~AliCDBManager();
101
8e245d15 102 void ClearCache();
103
b05400be 104 static AliCDBManager* Instance();
9e1ceb13 105
106 private:
b8ec52f6 107
108 static TString fgkCondUri; // URI of the Conditions data base folder
109 static TString fgkRefUri; // URI of the Reference data base folder
110 AliCDBParam* fCondParam; // Conditions data storage parameters
111 AliCDBParam* fRefParam; // Reference data storage parameters
112
9e1ceb13 113 AliCDBManager();
fe12e09c 114 AliCDBManager(const AliCDBManager & source);
115 AliCDBManager & operator=(const AliCDBManager & source);
116
fdf65bb5 117 static AliCDBManager* fgInstance; // AliCDBManager instance
9e1ceb13 118
119 AliCDBStorage* GetActiveStorage(const AliCDBParam* param);
120 void PutActiveStorage(AliCDBParam* param, AliCDBStorage* storage);
917a098b 121
4b5e0dce 122 void CacheEntry(const char* path, AliCDBEntry* entry);
8e245d15 123
024cf675 124 AliCDBParam* SelectSpecificStorage(const TString& path);
125
9e1ceb13 126
127 void Init();
128
b05400be 129 TList fFactories; //! list of registered storage factories
130 TMap fActiveStorages; //! list of active storages
02c4845e 131 TMap fSpecificStorages; //! list of detector-specific storages
4b5e0dce 132
b05400be 133 AliCDBStorage *fDefaultStorage; //! pointer to default storage
134 AliCDBStorage *fDrainStorage; //! pointer to drain storage
9e1ceb13 135
4b5e0dce 136 TMap fEntryCache; //! cache of the retrieved objects
137
138 Bool_t fCache; //! The cache flag
c3a7b59a 139 Int_t fRun; //! The run number
4b5e0dce 140
9e1ceb13 141 ClassDef(AliCDBManager, 0);
142};
143
144
145/////////////////////////////////////////////////////////////////////
146// //
147// class AliCDBStorageFactory //
148// //
149/////////////////////////////////////////////////////////////////////
150
151class AliCDBParam;
152class AliCDBStorageFactory: public TObject {
153 friend class AliCDBManager;
154
155public:
e1e6896f 156 virtual ~AliCDBStorageFactory(){}
9e1ceb13 157 virtual Bool_t Validate(const char* dbString) = 0;
b05400be 158 virtual AliCDBParam* CreateParameter(const char* dbString) = 0;
9e1ceb13 159
160protected:
161 virtual AliCDBStorage* Create(const AliCDBParam* param) = 0;
162
163 ClassDef(AliCDBStorageFactory, 0);
164};
165
166/////////////////////////////////////////////////////////////////////
167// //
168// class AliCDBParam //
169// //
170/////////////////////////////////////////////////////////////////////
171
172class AliCDBParam: public TObject {
173
174public:
175
176 AliCDBParam();
177 virtual ~AliCDBParam();
178
179 const TString& GetType() const {return fType;};
180 const TString& GetURI() const {return fURI;};
181
182 virtual AliCDBParam* CloneParam() const = 0;
183
184protected:
185
186 void SetType(const char* type) {fType = type;};
187 void SetURI(const char* uri) {fURI = uri;};
188
189private:
190
917a098b 191 TString fType; //! CDB type
192 TString fURI; //! CDB URI
9e1ceb13 193
194 ClassDef(AliCDBParam, 0);
195};
196
197#endif