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 "Validity/VldContext.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 VldContext& vc,
00052 const Dbi::Task& task,
00053 Int_t selectDbNo = -1,
00054 Bool_t findFullTimeWindow = true);
00055 DbiValidityRecBuilder(const DbiDBProxy& proxy,
00056 const string& context,
00057 const Dbi::Task& task);
00058 DbiValidityRecBuilder(const DbiValidityRec& vr,
00059 const std::string tableName);
00060
00061 virtual ~DbiValidityRecBuilder();
00062
00063
00064 std::string GetL2CacheName() const;
00065 Dbi::Task GetTask() const { return fTask; }
00066 UInt_t GetNumValidityRec() const {
00067 return fVRecs.size(); }
00069 Int_t IndexOfAggno(Int_t aggNo) const;
00070 Bool_t IsExtendedContext() const {
00071 return fIsExtendedContext; }
00072 const DbiValidityRec& GetValidityRec(Int_t rowNo) const;
00073 const DbiValidityRec& GetValidityRecFromAggNo(Int_t aggNo) const {
00074 return this->GetValidityRec(this->IndexOfAggno(aggNo)); }
00075 const DbiValidityRec& GetValidityRecFromSeqNo(UInt_t SeqNo) const;
00076 Bool_t NonAggregated() const {
00077 return ! this->IsExtendedContext()
00078 && this->GetNumValidityRec() == 1; }
00079
00080
00081
00082
00083 private:
00084
00085
00086
00088 UInt_t AddNewAgg(const DbiValidityRec& vrec,Int_t aggNo);
00090 UInt_t AddNewGap(Int_t aggNo);
00091
00092 void MakeGapRec(const VldContext& vc,
00093 const string& tableName,
00094 Bool_t findFullTimeWindow = true);
00095
00096
00097
00098 DbiValidityRec fGap;
00100 Bool_t fIsExtendedContext;
00101 Dbi::Task fTask;
00109
00110 std::vector<DbiValidityRec> fVRecs;
00112 std::map<Int_t,UInt_t> fAggNoToIndex;
00113
00114
00115 ClassDef(DbiValidityRecBuilder,0)
00116
00117 };
00118
00119
00120 #endif // DBIVALIDITYRECBUILDER_H