]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/CDB/AliCDBStorage.h
Correct cleaning of valid ids in QueryCDB
[u/mrichter/AliRoot.git] / STEER / CDB / AliCDBStorage.h
1 #ifndef ALI_CDB_STORAGE_H
2 #define ALI_CDB_STORAGE_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 AliCDBStorage                                            //
10 //  interface to specific storage classes                          //
11 //  (AliCDBGrid, AliCDBLocal, AliCDBDump)                          //
12 //                                                                 //
13 /////////////////////////////////////////////////////////////////////
14
15 #include "AliCDBId.h"
16 #include "AliCDBMetaData.h"
17 #include "AliCDBManager.h"
18
19 #include <TList.h>
20 #include <TObjArray.h>
21
22 class AliCDBEntry;
23 class AliCDBPath;
24 class AliCDBParam;
25 class TFile;
26
27 class AliCDBStorage: public TObject {
28
29   public:
30
31     AliCDBStorage();
32
33     void SetURI(const TString& uri) {fURI = uri;}
34     const TString& GetURI() const {return fURI;}
35     const TString& GetType() const {return fType;}
36     const TString& GetBaseFolder() const {return fBaseFolder;}
37     AliCDBManager::DataType GetDataType() const;
38
39
40     void ReadSelectionFromFile(const char *fileName);
41
42     void AddSelection(const AliCDBId& selection);
43
44     void AddSelection(const AliCDBPath& path, 
45         const AliCDBRunRange& runRange,
46         Int_t version,
47         Int_t subVersion = -1);
48
49     void AddSelection(const AliCDBPath& path,
50         Int_t firstRun,
51         Int_t lastRun,
52         Int_t version,
53         Int_t subVersion = -1);
54
55     void RemoveSelection(const AliCDBId& selection);
56
57     void RemoveSelection(const AliCDBPath& path,
58         const AliCDBRunRange& runRange);
59
60     void RemoveSelection(const AliCDBPath& path,
61         Int_t firstRun = -1,
62         Int_t lastRun = -1);
63
64     void RemoveSelection(int position);
65     void RemoveAllSelections();
66
67     void PrintSelectionList();
68
69     AliCDBEntry* Get(const AliCDBId& query);
70     AliCDBEntry* Get(const AliCDBPath& path, Int_t runNumber,
71         Int_t version = -1, Int_t subVersion = -1);
72     AliCDBEntry* Get(const AliCDBPath& path, const AliCDBRunRange& runRange,
73         Int_t version = -1, Int_t subVersion = -1);
74
75     TList* GetAll(const AliCDBId& query);
76     TList* GetAll(const AliCDBPath& path, Int_t runNumber, 
77         Int_t version = -1, Int_t subVersion = -1);
78     TList* GetAll(const AliCDBPath& path, const AliCDBRunRange& runRange,
79         Int_t version = -1, Int_t subVersion = -1);
80
81     AliCDBId* GetId(const AliCDBId& query);
82     AliCDBId* GetId(const AliCDBPath& path, Int_t runNumber,
83         Int_t version = -1, Int_t subVersion = -1);
84     AliCDBId* GetId(const AliCDBPath& path, const AliCDBRunRange& runRange,
85         Int_t version = -1, Int_t subVersion = -1);
86
87     Bool_t Put(TObject* object, AliCDBId& id,  AliCDBMetaData* metaData, const char* mirrors="",
88         AliCDBManager::DataType type=AliCDBManager::kPrivate);
89     Bool_t Put(AliCDBEntry* entry, const char* mirrors="", AliCDBManager::DataType type=AliCDBManager::kPrivate);
90
91     virtual void SetMirrorSEs(const char* mirrors);
92     virtual const char* GetMirrorSEs() const;
93
94     virtual Bool_t IsReadOnly() const = 0;
95     virtual Bool_t HasSubVersion() const = 0;
96     virtual Bool_t Contains(const char* path) const = 0;
97     virtual Bool_t IdToFilename(const AliCDBId& id, TString& filename) const = 0;
98
99     void QueryCDB(Int_t run, const char* pathFilter="*",
100         Int_t version=-1, AliCDBMetaData *mdFilter=0);
101     void PrintQueryCDB();
102     TObjArray* GetQueryCDBList() {return &fValidFileIds;}
103     virtual void SetRetry(Int_t nretry, Int_t initsec) = 0;
104
105   protected:
106
107     virtual ~AliCDBStorage();
108     void    GetSelection(/*const*/ AliCDBId* id);
109     virtual AliCDBEntry* GetEntry(const AliCDBId& query) = 0;
110     virtual AliCDBId* GetEntryId(const AliCDBId& query) = 0;
111     virtual TList* GetEntries(const AliCDBId& query) = 0;
112     virtual Bool_t PutEntry(AliCDBEntry* entry, const char* mirrors="") = 0;
113     virtual TList *GetIdListFromFile(const char* fileName)=0;
114     virtual void   QueryValidFiles() = 0;
115     void        LoadTreeFromFile(AliCDBEntry* entry) const;
116     //void      SetTreeToFile(AliCDBEntry* entry, TFile* file) const;
117
118     TObjArray fValidFileIds;    // list of Id's of the files valid for a given run (cached as fRun)
119     Int_t fRun;                 // run number, used to manage list of valid files
120     AliCDBPath fPathFilter;             // path filter, used to manage list of valid files
121     Int_t fVersion;                     // version, used to manage list of valid files
122     AliCDBMetaData* fMetaDataFilter; // metadata, used to manage list of valid files
123
124     TList fSelections;  // list of selection criteria
125     TString fURI;               // storage URI;
126     TString fType;    //! Local, Grid: base folder name - Dump: file name
127     TString fBaseFolder;    //! Local, Grid: base folder name - Dump: file name
128     Short_t    fNretry;              // Number of retries in opening the file
129     Short_t    fInitRetrySeconds;        // Seconds for first retry
130
131   private:
132     AliCDBStorage(const AliCDBStorage & source);
133     AliCDBStorage & operator=(const AliCDBStorage & source);
134
135     ClassDef(AliCDBStorage, 0);
136 };
137
138 #endif