62b48224a5c923d519b876304ade83249ae98c70
[u/mrichter/AliRoot.git] / STEER / AliRunDataStorage.h
1 #ifndef ALIRUNDATASTORAGE_H
2 #define ALIRUNDATASTORAGE_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 ///
9 /// base class for data base access classes
10 ///
11
12 #include <TObject.h>
13 #include <TObjArray.h>
14
15 class TFile;
16 class AliMetaData;
17 class AliRunData;
18
19
20 class AliRunDataStorage: public TObject {
21 public:
22   virtual ~AliRunDataStorage();
23
24   const TObject*         Get(const char* name, Int_t runNumber);
25
26   Bool_t                 Put(const TObject* object, 
27                              const AliMetaData& metaData);
28
29   void                   Select(const AliMetaData& metaData);
30
31   Bool_t                 RecordToFile(const char* fileName = "DB.root");
32
33   static AliRunDataStorage* Instance();
34
35 protected:
36   AliRunDataStorage();
37
38   virtual AliRunData*    GetEntry(AliMetaData& metaData, Int_t runNumber) = 0;
39
40   virtual Bool_t         PutEntry(AliRunData* entry);
41
42   AliRunData*            GetCurrentEntry(const char* name) const
43     {return (AliRunData*) fEntries.FindObject(name);}
44
45 private:
46   AliRunDataStorage(const AliRunDataStorage& db);
47   AliRunDataStorage& operator = (const AliRunDataStorage& db);
48
49   TObjArray              fSelection;   //! meta data selection
50
51   TObjArray              fEntries;     //! array of current AliRunData objects
52   TFile*                 fRecordFile;  //! file for recorded entries
53
54   static AliRunDataStorage* fgInstance;   //! pointer to the DB instance
55
56   ClassDef(AliRunDataStorage, 0)     // base class for data base access classes
57 };
58
59 #endif