]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliCDBManager.h
New steering class ro run QA stand alone
[u/mrichter/AliRoot.git] / STEER / AliCDBManager.h
index cbfdd66f3a078b802cafe1e2fb7ea0cbcfa0fe62..a5f72a0fcf418d457b52235981a53e9359aeb5c8 100644 (file)
 #include <TMap.h>
 
 class AliCDBEntry;
+class AliCDBId;
+class AliCDBPath;
+class AliCDBRunRange;
+class AliCDBMetaData;
 class AliCDBStorage;
 class AliCDBStorageFactory;
 class AliCDBParam;
@@ -22,16 +26,20 @@ class AliCDBParam;
 class AliCDBManager: public TObject {
 
  public:
+       enum DataType {kCondition=0, kReference, kPrivate};
 
        void RegisterFactory(AliCDBStorageFactory* factory);
 
        Bool_t HasStorage(const char* dbString) const;
 
        AliCDBParam* CreateParameter(const char* dbString) const;
+       AliCDBParam* GetCondParam() const {return fCondParam;}
+       AliCDBParam* GetRefParam() const {return fRefParam;}
+       static const char* GetDataTypeName(DataType type);
 
        AliCDBStorage* GetStorage(const char* dbString);
        AliCDBStorage* GetStorage(const AliCDBParam* param);
-       
+
        TList* GetActiveStorages();
 
        void SetDefaultStorage(const char* dbString);
@@ -39,11 +47,22 @@ class AliCDBManager: public TObject {
        void SetDefaultStorage(AliCDBStorage *storage);
 
        Bool_t IsDefaultStorageSet() const {return fDefaultStorage != 0;}
-       
        AliCDBStorage* GetDefaultStorage() const {return fDefaultStorage;}
-
        void UnsetDefaultStorage() {fDefaultStorage = 0x0;}
 
+       void SetRemoteStorage(const char* dbString);
+       void SetRemoteStorage(const AliCDBParam* param);
+       void SetRemoteStorage(AliCDBStorage *storage);
+
+       Bool_t IsRemoteStorageSet() const {return fRemoteStorage != 0;}
+       AliCDBStorage* GetRemoteStorage() const {return fRemoteStorage;}
+       void UnsetRemoteStorage() {fRemoteStorage = 0x0;}
+
+       void SetSpecificStorage(const char* calibType, const char* dbString);
+       void SetSpecificStorage(const char* calibType, AliCDBParam* param);
+
+       AliCDBStorage* GetSpecificStorage(const char* calibType);
+
        void SetDrain(const char* dbString);
        void SetDrain(const AliCDBParam* param);
        void SetDrain(AliCDBStorage *storage);
@@ -54,29 +73,91 @@ class AliCDBManager: public TObject {
 
        void UnsetDrain(){fDrainStorage = 0x0;}
 
+       AliCDBEntry* Get(const AliCDBId& query);
+       AliCDBEntry* Get(const AliCDBPath& path, Int_t runNumber=-1,
+                               Int_t version = -1, Int_t subVersion = -1);
+       AliCDBEntry* Get(const AliCDBPath& path, const AliCDBRunRange& runRange,
+                                Int_t version = -1, Int_t subVersion = -1);
+
+       AliCDBId* GetId(const AliCDBId& query);
+       AliCDBId* GetId(const AliCDBPath& path, Int_t runNumber=-1,
+                               Int_t version = -1, Int_t subVersion = -1);
+       AliCDBId* GetId(const AliCDBPath& path, const AliCDBRunRange& runRange,
+                                Int_t version = -1, Int_t subVersion = -1);
+
+       TList* GetAll(const AliCDBId& query);
+       TList* GetAll(const AliCDBPath& path, Int_t runNumber=-1,
+                               Int_t version = -1, Int_t subVersion = -1);
+       TList* GetAll(const AliCDBPath& path, const AliCDBRunRange& runRange,
+                                Int_t version = -1, Int_t subVersion = -1); 
+
+       Bool_t Put(TObject* object, AliCDBId& id,
+                       AliCDBMetaData* metaData, DataType type=kPrivate);
+       Bool_t Put(AliCDBEntry* entry, DataType type=kPrivate);
+
+       void SetCacheFlag(Bool_t cacheFlag) {fCache=cacheFlag;}
+       Bool_t GetCacheFlag() const {return fCache;}
+
+       void SetRun(Int_t run);
+       Int_t GetRun() const {return fRun;}
+
        void DestroyActiveStorages();
        void DestroyActiveStorage(AliCDBStorage* storage);
-       
+
+       void QueryCDB();
+
+       void Print(Option_t* option="") const;
+
        static void Destroy();
        ~AliCDBManager();
 
-       static AliCDBManager* Instance(); 
+       void ClearCache();
+       void UnloadFromCache(const char* path);
+
+       Bool_t IsShortLived(const char* path);
+
+       static AliCDBManager* Instance();
 
  private:
-               
+
+       static TString fgkCondUri;      // URI of the Conditions data base folder
+       static TString fgkRefUri;       // URI of the Reference data base folder
+       AliCDBParam* fCondParam;        // Conditions data storage parameters
+       AliCDBParam* fRefParam;         // Reference data storage parameters
+
        AliCDBManager();
+       AliCDBManager(const AliCDBManager & source);
+       AliCDBManager & operator=(const AliCDBManager & source);
+
        static AliCDBManager* fgInstance; // AliCDBManager instance
        
        AliCDBStorage* GetActiveStorage(const AliCDBParam* param);
        void PutActiveStorage(AliCDBParam* param, AliCDBStorage* storage);
 
-       void Init();
+       void CacheEntry(const char* path, AliCDBEntry* entry);
+
+       AliCDBParam* SelectSpecificStorage(const TString& path);
        
+
+       void Init();
+       void InitShortLived();
+
+
        TList fFactories;               //! list of registered storage factories
        TMap fActiveStorages;           //! list of active storages
+       TMap fSpecificStorages;         //! list of detector-specific storages
+
        AliCDBStorage *fDefaultStorage; //! pointer to default storage
+       AliCDBStorage *fRemoteStorage;  //! pointer to remote storage
        AliCDBStorage *fDrainStorage;   //! pointer to drain storage
 
+       TMap fEntryCache;       //! cache of the retrieved objects
+
+       Bool_t fCache;                  //! The cache flag
+       Int_t fRun;                     //! The run number
+
+       TList* fShortLived;     //! List of short lived objects
+
        ClassDef(AliCDBManager, 0);
 };
 
@@ -92,6 +173,7 @@ class AliCDBStorageFactory: public TObject {
        friend class AliCDBManager;
        
 public:
+       virtual ~AliCDBStorageFactory(){}
        virtual Bool_t Validate(const char* dbString) = 0;
        virtual AliCDBParam* CreateParameter(const char* dbString) = 0; 
 
@@ -126,8 +208,8 @@ protected:
 
 private:
 
-       TString fType; // CDB type
-       TString fURI;  // CDB URI
+       TString fType; //! CDB type
+       TString fURI;  //! CDB URI
 
        ClassDef(AliCDBParam, 0);
 };