]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliCDBManager.h
moved AliSelector, AliSelectorRL to STEER
[u/mrichter/AliRoot.git] / STEER / AliCDBManager.h
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
17 class AliCDBEntry;
18 class AliCDBId;
19 class AliCDBPath;
20 class AliCDBRunRange;
21 class AliCDBMetaData;
22 class AliCDBStorage;
23 class AliCDBStorageFactory;
24 class AliCDBParam;
25
26 class AliCDBManager: public TObject {
27
28  public:
29
30         void RegisterFactory(AliCDBStorageFactory* factory);
31
32         Bool_t HasStorage(const char* dbString) const;
33
34         AliCDBParam* CreateParameter(const char* dbString) const;
35
36         AliCDBStorage* GetStorage(const char* dbString);
37         AliCDBStorage* GetStorage(const AliCDBParam* param);
38         
39         TList* GetActiveStorages();
40
41         void SetDefaultStorage(const char* dbString);
42         void SetDefaultStorage(const AliCDBParam* param);
43         void SetDefaultStorage(AliCDBStorage *storage);
44         
45         Bool_t IsDefaultStorageSet() const {return fDefaultStorage != 0;}
46         AliCDBStorage* GetDefaultStorage() const {return fDefaultStorage;}
47         void UnsetDefaultStorage() {fDefaultStorage = 0x0;}
48         
49         void SetSpecificStorage(const char* calibType, const char* dbString);
50         void SetSpecificStorage(const char* calibType, AliCDBParam* param);
51
52         AliCDBStorage* GetSpecificStorage(const char* calibType);
53
54         void SetDrain(const char* dbString);
55         void SetDrain(const AliCDBParam* param);
56         void SetDrain(AliCDBStorage *storage);
57
58         Bool_t IsDrainSet() const {return fDrainStorage != 0;}
59
60         Bool_t Drain(AliCDBEntry* entry);
61
62         void UnsetDrain(){fDrainStorage = 0x0;}
63
64         AliCDBEntry* Get(const AliCDBId& query);
65         AliCDBEntry* Get(const AliCDBPath& path, Int_t runNumber=-1,
66                                 Int_t version = -1, Int_t subVersion = -1);
67         AliCDBEntry* Get(const AliCDBPath& path, const AliCDBRunRange& runRange,
68                                  Int_t version = -1, Int_t subVersion = -1);
69
70         TList* GetAll(const AliCDBId& query);
71         TList* GetAll(const AliCDBPath& path, Int_t runNumber=-1,
72                                 Int_t version = -1, Int_t subVersion = -1);
73         TList* GetAll(const AliCDBPath& path, const AliCDBRunRange& runRange,
74                                  Int_t version = -1, Int_t subVersion = -1); 
75
76         Bool_t Put(TObject* object, AliCDBId& id,  AliCDBMetaData* metaData);
77         Bool_t Put(AliCDBEntry* entry);
78                 
79         void SetCacheFlag(Bool_t cacheFlag) {fCache=cacheFlag;}
80         Bool_t GetCacheFlag() const {return fCache;}
81
82         void SetRun(Int_t run);
83         Int_t GetRun() const {return fRun;}
84
85         // AliCDBEntry* Get(const char* path);
86
87         void DestroyActiveStorages();
88         void DestroyActiveStorage(AliCDBStorage* storage);
89
90         void QueryCDB();
91
92         void Print(Option_t* option="") const;
93
94         static void Destroy();
95         ~AliCDBManager();
96
97         static AliCDBManager* Instance(); 
98
99  private:
100                 
101         AliCDBManager();
102         AliCDBManager(const AliCDBManager & source);
103         AliCDBManager & operator=(const AliCDBManager & source);
104
105         static AliCDBManager* fgInstance; // AliCDBManager instance
106         
107         AliCDBStorage* GetActiveStorage(const AliCDBParam* param);
108         void PutActiveStorage(AliCDBParam* param, AliCDBStorage* storage);
109
110         void ClearCache();
111         void CacheEntry(const char* path, AliCDBEntry* entry);
112         
113         AliCDBParam* SelectSpecificStorage(const TString& path);
114         
115
116         void Init();
117         
118         TList fFactories;               //! list of registered storage factories
119         TMap fActiveStorages;           //! list of active storages
120         TMap fSpecificStorages;         //! list of detector-specific storages
121
122         AliCDBStorage *fDefaultStorage; //! pointer to default storage
123         AliCDBStorage *fDrainStorage;   //! pointer to drain storage
124
125         TMap fEntryCache;       //! cache of the retrieved objects
126
127         Bool_t fCache;                  //! The cache flag
128         Int_t fRun;                     //! The run number
129
130         ClassDef(AliCDBManager, 0);
131 };
132
133
134 /////////////////////////////////////////////////////////////////////
135 //                                                                 //
136 //  class AliCDBStorageFactory                                     //
137 //                                                                 //
138 /////////////////////////////////////////////////////////////////////
139
140 class AliCDBParam;
141 class AliCDBStorageFactory: public TObject {
142         friend class AliCDBManager;
143         
144 public:
145         virtual ~AliCDBStorageFactory(){}
146         virtual Bool_t Validate(const char* dbString) = 0;
147         virtual AliCDBParam* CreateParameter(const char* dbString) = 0; 
148
149 protected:
150         virtual AliCDBStorage* Create(const AliCDBParam* param) = 0;
151
152         ClassDef(AliCDBStorageFactory, 0);
153 };
154
155 /////////////////////////////////////////////////////////////////////
156 //                                                                 //
157 //  class AliCDBParam                                              //
158 //                                                                 //
159 /////////////////////////////////////////////////////////////////////
160
161 class AliCDBParam: public TObject {
162
163 public:
164
165         AliCDBParam();
166         virtual ~AliCDBParam();
167
168         const TString& GetType() const {return fType;};
169         const TString& GetURI() const {return fURI;};
170
171         virtual AliCDBParam* CloneParam() const = 0;
172
173 protected:
174
175         void SetType(const char* type) {fType = type;};
176         void SetURI(const char* uri) {fURI = uri;};
177
178 private:
179
180         TString fType; //! CDB type
181         TString fURI;  //! CDB URI
182
183         ClassDef(AliCDBParam, 0);
184 };
185
186 #endif