1 #ifndef ALI_CDB_MANAGER_H
2 #define ALI_CDB_MANAGER_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 /////////////////////////////////////////////////////////////////////
9 // class AliCDBManager //
11 /////////////////////////////////////////////////////////////////////
23 class AliCDBStorageFactory;
26 class AliCDBManager: public TObject {
30 void RegisterFactory(AliCDBStorageFactory* factory);
32 Bool_t HasStorage(const char* dbString) const;
34 AliCDBParam* CreateParameter(const char* dbString) const;
36 AliCDBStorage* GetStorage(const char* dbString);
37 AliCDBStorage* GetStorage(const AliCDBParam* param);
39 TList* GetActiveStorages();
41 void SetDefaultStorage(const char* dbString);
42 void SetDefaultStorage(const AliCDBParam* param);
43 void SetDefaultStorage(AliCDBStorage *storage);
45 Bool_t IsDefaultStorageSet() const {return fDefaultStorage != 0;}
46 AliCDBStorage* GetDefaultStorage() const {return fDefaultStorage;}
47 void UnsetDefaultStorage() {fDefaultStorage = 0x0;}
49 void SetSpecificStorage(const char* calibType, const char* dbString);
50 void SetSpecificStorage(const char* calibType, AliCDBParam* param);
52 AliCDBStorage* GetSpecificStorage(const char* calibType);
54 void SetDrain(const char* dbString);
55 void SetDrain(const AliCDBParam* param);
56 void SetDrain(AliCDBStorage *storage);
58 Bool_t IsDrainSet() const {return fDrainStorage != 0;}
60 Bool_t Drain(AliCDBEntry* entry);
62 void UnsetDrain(){fDrainStorage = 0x0;}
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);
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);
76 Bool_t Put(TObject* object, AliCDBId& id, AliCDBMetaData* metaData);
77 Bool_t Put(AliCDBEntry* entry);
79 void SetCacheFlag(Bool_t cacheFlag) {fCache=cacheFlag;}
80 Bool_t GetCacheFlag() const {return fCache;}
82 void SetRun(Long64_t run);
83 Long64_t GetRun() const {return fRun;}
85 // AliCDBEntry* Get(const char* path);
87 void DestroyActiveStorages();
88 void DestroyActiveStorage(AliCDBStorage* storage);
92 void Print(Option_t* option="") const;
94 static void Destroy();
97 static AliCDBManager* Instance();
102 AliCDBManager(const AliCDBManager & source);
103 AliCDBManager & operator=(const AliCDBManager & source);
105 static AliCDBManager* fgInstance; // AliCDBManager instance
107 AliCDBStorage* GetActiveStorage(const AliCDBParam* param);
108 void PutActiveStorage(AliCDBParam* param, AliCDBStorage* storage);
111 void CacheEntry(const char* path, AliCDBEntry* entry);
113 AliCDBParam* SelectSpecificStorage(const TString& path);
118 TList fFactories; //! list of registered storage factories
119 TMap fActiveStorages; //! list of active storages
120 TMap fSpecificStorages; //! list of detector-specific storages
122 AliCDBStorage *fDefaultStorage; //! pointer to default storage
123 AliCDBStorage *fDrainStorage; //! pointer to drain storage
125 TMap fEntryCache; //! cache of the retrieved objects
127 Bool_t fCache; //! The cache flag
128 Long64_t fRun; //! The run number
130 ClassDef(AliCDBManager, 0);
134 /////////////////////////////////////////////////////////////////////
136 // class AliCDBStorageFactory //
138 /////////////////////////////////////////////////////////////////////
141 class AliCDBStorageFactory: public TObject {
142 friend class AliCDBManager;
145 virtual ~AliCDBStorageFactory(){}
146 virtual Bool_t Validate(const char* dbString) = 0;
147 virtual AliCDBParam* CreateParameter(const char* dbString) = 0;
150 virtual AliCDBStorage* Create(const AliCDBParam* param) = 0;
152 ClassDef(AliCDBStorageFactory, 0);
155 /////////////////////////////////////////////////////////////////////
157 // class AliCDBParam //
159 /////////////////////////////////////////////////////////////////////
161 class AliCDBParam: public TObject {
166 virtual ~AliCDBParam();
168 const TString& GetType() const {return fType;};
169 const TString& GetURI() const {return fURI;};
171 virtual AliCDBParam* CloneParam() const = 0;
175 void SetType(const char* type) {fType = type;};
176 void SetURI(const char* uri) {fURI = uri;};
180 TString fType; //! CDB type
181 TString fURI; //! CDB URI
183 ClassDef(AliCDBParam, 0);