00001 #ifndef DBIVALIDITYREC_H
00002 #define DBIVALIDITYREC_H
00003
00026 #include "DatabaseInterface/Dbi.h"
00027 #include "DatabaseInterface/DbiTableRow.h"
00028 #include "Context/ContextRange.h"
00029 #include "Context/TimeStamp.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 ContextRange& range,
00050 Dbi::SubSite subsite,
00051 Dbi::Task task,
00052 Int_t aggNo,
00053 UInt_t seqNo,
00054 Int_t dbNo = -1,
00055 Bool_t isGap = kFALSE,
00056 TimeStamp time = TimeStamp());
00057 virtual ~DbiValidityRec();
00058
00059
00060
00061 virtual DbiTableRow* CreateTableRow() const {
00062 return new DbiValidityRec; }
00063 Int_t GetAggregateNo() const { return fAggregateNo; }
00064 TimeStamp GetVersionDate() const { return fVersionDate; }
00065 UInt_t GetDbNo() const { return fDbNo; }
00066 TimeStamp GetInsertDate() const { return fInsertDate; }
00067 Dbi::SubSite GetSubSite() const { return fSubSite; }
00068 Dbi::Task GetTask() const { return fTask; }
00069 std::string GetL2CacheName() const;
00070 UInt_t GetSeqNo() const { return fSeqNo; }
00071 const DbiTableProxy* GetTableProxy() const { return fTableProxy; }
00072 const ContextRange& GetContextRange() const { return fContextRange;}
00073 Bool_t HasExpired(const DbiValidityRec& other) const;
00074 Bool_t HasExpired(const Context& vc,
00075 const Dbi::SubSite& subsite,
00076 const Dbi::Task& task ) const;
00077 Bool_t IsCompatible(const Context& vc,
00078 const Dbi::SubSite& subsite,
00079 const Dbi::Task& task ) const;
00080 Bool_t IsGap() const { return fIsGap; }
00081
00082 static std::string GetL2CacheName(UInt_t seqLo, UInt_t seqHi, TimeStamp ts);
00083
00084
00085 void AndTimeWindow(const TimeStamp& start,
00086 const TimeStamp& end);
00087 void SetAggregateNo(Int_t aggNo) { fAggregateNo = aggNo; }
00088 void SetDbNo(Int_t dbNo) { fDbNo = dbNo; }
00089 void SetTableProxy(const DbiTableProxy* tp) { fTableProxy = tp; }
00090 void SetTimeWindow(const TimeStamp& start,
00091 const TimeStamp& end);
00092 void SetContextRange(const ContextRange& range) { fContextRange=range;}
00093 void Trim(const TimeStamp& queryTime,
00094 const DbiValidityRec& other);
00095
00096
00097 virtual void Fill(DbiResultSet& rs,
00098 const DbiValidityRec* vrec);
00099 virtual void Store(DbiOutRowStream& ors,
00100 const DbiValidityRec* vrec) const;
00101 void Streamer(DbiBinaryFile& file);
00102
00103 private:
00104
00105
00106
00107
00111 Int_t fAggregateNo;
00112
00114 TimeStamp fVersionDate;
00115
00117 Int_t fDbNo;
00118
00120 TimeStamp fInsertDate;
00121
00123 Bool_t fIsGap;
00124
00126 Dbi::SubSite fSubSite;
00127
00129 Dbi::Task fTask;
00130
00132 Int_t fSeqNo;
00133
00135 const DbiTableProxy* fTableProxy;
00136
00138 ContextRange fContextRange;
00139
00140
00141
00142 };
00143
00144
00145 #endif // DBIVALIDITYREC_H