/search.css" rel="stylesheet" type="text/css"/> /search.js">
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 // Typedefs and enums 00046 00047 enum { kMAX_AGGREGATE_NO = 1000 }; 00048 00049 // Constructors and destructors 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 // State testing member functions 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 // State changing member functions 00084 00085 00086 private: 00087 00088 // State changing member functions 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 // Data members 00100 00101 DbiValidityRec fGap; // Default (gap) validity record 00103 Bool_t fIsExtendedContext; 00104 Dbi::SubSite fSubSite; // Query subsite 00105 Dbi::Task fTask; // Query task 00113 00114 std::vector<DbiValidityRec> fVRecs; 00116 std::map<Int_t,UInt_t> fAggNoToIndex; 00117 00118 00119 // Removed: ClassDef(DbiValidityRecBuilder,0) // Creator of eff. ValidityRecs 00120 00121 }; 00122 00123 00124 #endif // DBIVALIDITYRECBUILDER_H