00001 #ifndef DBIVALIDITYRECBUILDER_H
00002 #define DBIVALIDITYRECBUILDER_H
00003
00028 #include <string>
00029 #include <map>
00030 #include <vector>
00031
00032 #include "DatabaseInterface/Dbi.h"
00033 #include "DatabaseInterface/DbiValidityRec.h"
00034 #include "Context/Context.h"
00035
00036
00037 class DbiDBProxy;
00038
00039 class DbiValidityRecBuilder
00040 {
00041
00042
00043 public:
00044
00045
00046
00047 enum { kMAX_AGGREGATE_NO = 1000 };
00048
00049
00050 DbiValidityRecBuilder(const DbiDBProxy& proxy,
00051 const Context& vc,
00052 const Dbi::SubSite& subsite,
00053 const Dbi::Task& task,
00054 Int_t selectDbNo = -1,
00055 Bool_t findFullTimeWindow = true);
00056 DbiValidityRecBuilder(const DbiDBProxy& proxy,
00057 const std::string& context,
00058 const Dbi::SubSite& subsite,
00059 const Dbi::Task& task);
00060 DbiValidityRecBuilder(const DbiValidityRec& vr,
00061 const std::string tableName);
00062
00063 virtual ~DbiValidityRecBuilder();
00064
00065
00066 std::string GetL2CacheName() const;
00067 Dbi::Task GetTask() const { return fTask; }
00068 Dbi::SubSite GetSubSite() const { return fSubSite; }
00069 UInt_t GetNumValidityRec() const {
00070 return fVRecs.size(); }
00072 Int_t IndexOfAggno(Int_t aggNo) const;
00073 Bool_t IsExtendedContext() const {
00074 return fIsExtendedContext; }
00075 const DbiValidityRec& GetValidityRec(Int_t rowNo) const;
00076 const DbiValidityRec& GetValidityRecFromAggNo(Int_t aggNo) const {
00077 return this->GetValidityRec(this->IndexOfAggno(aggNo)); }
00078 const DbiValidityRec& GetValidityRecFromSeqNo(UInt_t SeqNo) const;
00079 Bool_t NonAggregated() const {
00080 return ! this->IsExtendedContext()
00081 && this->GetNumValidityRec() == 1; }
00082
00083
00084
00085
00086 private:
00087
00088
00089
00091 UInt_t AddNewAgg(const DbiValidityRec& vrec,Int_t aggNo);
00093 UInt_t AddNewGap(Int_t aggNo);
00094
00095 void MakeGapRec(const Context& vc,
00096 const std::string& tableName,
00097 Bool_t findFullTimeWindow = true);
00098
00099
00100
00101 DbiValidityRec fGap;
00103 Bool_t fIsExtendedContext;
00104 Dbi::SubSite fSubSite;
00105 Dbi::Task fTask;
00113
00114 std::vector<DbiValidityRec> fVRecs;
00116 std::map<Int_t,UInt_t> fAggNoToIndex;
00117
00118
00119
00120
00121 };
00122
00123
00124 #endif // DBIVALIDITYRECBUILDER_H