00001 #ifndef DBIVALIDITYREC_H
00002 #define DBIVALIDITYREC_H
00003
00026 #include "DatabaseInterface/Dbi.h"
00027 #include "DatabaseInterface/DbiTableRow.h"
00028 #include "Validity/VldRange.h"
00029 #include "Validity/VldTimeStamp.h"
00030
00031 #include <iosfwd>
00032 #include <string>
00033
00034 class DbiBinaryFile;
00035 class DbiTableProxy;
00036 class DbiValidityRec;
00037
00038 ostream& operator<<(ostream& s, const DbiValidityRec& vRec);
00039
00040 class DbiValidityRec : public DbiTableRow
00041 {
00042
00043
00044 public:
00045
00046
00047 DbiValidityRec(Int_t dbNo = -1, Bool_t isGap = kTRUE);
00048 DbiValidityRec(const DbiValidityRec& from);
00049 DbiValidityRec(const VldRange& range,
00050 Dbi::Task task,
00051 Int_t aggNo,
00052 UInt_t seqNo,
00053 Int_t dbNo = -1,
00054 Bool_t isGap = kFALSE,
00055 VldTimeStamp time = VldTimeStamp());
00056 virtual ~DbiValidityRec();
00057
00058
00059
00060 virtual DbiTableRow* CreateTableRow() const {
00061 return new DbiValidityRec; }
00062 Int_t GetAggregateNo() const { return fAggregateNo; }
00063 VldTimeStamp GetCreationDate() const { return fCreationDate; }
00064 UInt_t GetDbNo() const { return fDbNo; }
00065 VldTimeStamp GetInsertDate() const { return fInsertDate; }
00066 Dbi::Task GetTask() const { return fTask; }
00067 std::string GetL2CacheName() const;
00068 UInt_t GetSeqNo() const { return fSeqNo; }
00069 const DbiTableProxy* GetTableProxy() const { return fTableProxy; }
00070 const VldRange& GetVldRange() const { return fVldRange;}
00071 Bool_t HasExpired(const DbiValidityRec& other) const;
00072 Bool_t HasExpired(const VldContext& vc,
00073 const Dbi::Task& task) const;
00074 Bool_t IsCompatible(const VldContext& vc,
00075 const Dbi::Task& task) const;
00076 Bool_t IsGap() const { return fIsGap; }
00077
00078 static std::string GetL2CacheName(UInt_t seqLo, UInt_t seqHi, VldTimeStamp ts);
00079
00080
00081 void AndTimeWindow(const VldTimeStamp& start,
00082 const VldTimeStamp& end);
00083 void SetAggregateNo(Int_t aggNo) { fAggregateNo = aggNo; }
00084 void SetDbNo(Int_t dbNo) { fDbNo = dbNo; }
00085 void SetTableProxy(const DbiTableProxy* tp) { fTableProxy = tp; }
00086 void SetTimeWindow(const VldTimeStamp& start,
00087 const VldTimeStamp& end);
00088 void SetVldRange(const VldRange& range) { fVldRange=range;}
00089 void Trim(const VldTimeStamp& queryTime,
00090 const DbiValidityRec& other);
00091
00092
00093 virtual void Fill(DbiResultSet& rs,
00094 const DbiValidityRec* vrec);
00095 virtual void Store(DbiOutRowStream& ors,
00096 const DbiValidityRec* vrec) const;
00097 void Streamer(DbiBinaryFile& file);
00098
00099 private:
00100
00101
00102
00103
00107 Int_t fAggregateNo;
00108
00110 VldTimeStamp fCreationDate;
00111
00113 Int_t fDbNo;
00114
00116 VldTimeStamp fInsertDate;
00117
00119 Bool_t fIsGap;
00120
00122 Dbi::Task fTask;
00123
00125 Int_t fSeqNo;
00126
00128 const DbiTableProxy* fTableProxy;
00129
00131 VldRange fVldRange;
00132
00133 ClassDef(DbiValidityRec,0)
00134
00135 };
00136
00137
00138 #endif // DBIVALIDITYREC_H