Line data Source code
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 24 : void SetURI(const TString& uri) {fURI = uri;}
34 26 : const TString& GetURI() const {return fURI;}
35 42 : const TString& GetType() const {return fType;}
36 0 : 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 0 : 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 128 : ClassDef(AliCDBStorage, 0);
136 : };
137 :
138 : #endif
|