/search.css" rel="stylesheet" type="text/css"/> /search.js">
00001 00002 #ifndef DBIDBPROXY_H 00003 #define DBIDBPROXY_H 00004 00036 #include <string> 00037 using std::string; 00038 #include <list> 00039 #include <vector> 00040 00041 #include "DatabaseInterface/Dbi.h" 00042 00043 class DbiCascader; 00044 class DbiResultSet; 00045 class DbiTableMetaData; 00046 class DbiTableProxy; 00047 class Context; 00048 class TimeStamp; 00049 class DbiValidityRec; 00050 00051 class DbiDBProxy 00052 { 00053 00054 public: 00055 00056 #ifndef __CINT__ 00057 typedef const std::vector<UInt_t> SeqList_t; 00058 #endif 00059 00060 // Constructors. 00061 DbiDBProxy(DbiCascader& cascader, 00062 const string& tableName, 00063 const DbiTableMetaData* metaData, 00064 const DbiTableMetaData* metaValid, 00065 const DbiTableProxy* tableProxy); 00066 virtual ~DbiDBProxy(); 00067 00068 // State testing member functions 00069 UInt_t GetNumDb() const; 00070 const string& GetTableName() const { return fTableName; } 00071 const DbiTableProxy* GetTableProxy() const { return fTableProxy; } 00072 void StoreMetaData(DbiTableMetaData& metaData) const; 00073 Bool_t TableExists() const; 00074 00075 // Query (input) member functions 00076 00077 UInt_t FindSeqNoWithVersionDate( const TimeStamp& versionDate, 00078 const DbiValidityRec& vrec, 00079 UInt_t dbNo, 00080 UInt_t uniqingSiteMask=0, 00081 UInt_t uniqingSimMask=0, 00082 UInt_t excludingSeqno=0, 00083 UInt_t useTimeGate=0, 00084 Bool_t count=false 00085 ) const ; 00086 00087 UInt_t FindSeqNoWithVersionDate( const TimeStamp& versionDate, 00088 const Context& vc, 00089 const Dbi::SubSite& subsite, 00090 const Dbi::Task& task, 00091 UInt_t dbNo, 00092 UInt_t uniqingSiteMask, 00093 UInt_t uniqingSimMask, 00094 UInt_t excludingSeqno, 00095 UInt_t useTimeGate, 00096 Bool_t count 00097 ) const ; 00098 00099 00100 void FindTimeBoundaries(const Context& vc, 00101 const Dbi::SubSite& subsite, 00102 const Dbi::Task& task, 00103 UInt_t dbNo, 00104 TimeStamp earliestCreate, 00105 TimeStamp& start, 00106 TimeStamp& end) const; 00107 DbiResultSet* QueryAllValidities(UInt_t dbNo,UInt_t seqNo=0) const; 00108 DbiResultSet* QuerySeqNo(UInt_t seqNo,UInt_t dbNo) const; 00109 #ifndef __CINT__ 00110 00111 DbiResultSet* QuerySeqNos(SeqList_t& seqNos, 00112 UInt_t dbNo, 00113 const string& sqlData = "", 00114 const string& fillOpts = "") const; 00115 #endif 00116 DbiResultSet* QueryValidity(const Context& vc, 00117 const Dbi::SubSite& subsite, 00118 const Dbi::Task& task, 00119 UInt_t dbNo) const; 00120 DbiResultSet* QueryValidity(const string& context, 00121 const Dbi::SubSite& subsite, 00122 const Dbi::Task& task, 00123 UInt_t dbNo) const; 00124 DbiResultSet* QueryValidity(UInt_t seqNo, 00125 UInt_t dbNo) const; 00126 00127 // Store (output) member functions 00128 Bool_t ReplaceInsertDate(const TimeStamp& ts, 00129 UInt_t SeqNo, 00130 UInt_t dbNo) const; 00131 Bool_t RemoveSeqNo(UInt_t seqNo, 00132 UInt_t dbNo) const; 00133 Bool_t ReplaceSeqNo(UInt_t oldSeqNo, 00134 UInt_t newSeqNo, 00135 UInt_t dbNo) const; 00136 00137 // State changing member functions 00138 void SetSqlCondition(const string& sql) { 00139 fSqlCondition = sql; } 00140 00141 void SetExtraOrdering(const string& sql) { 00142 fExtraOrdering = sql; } 00143 // Getters 00144 00145 string GetSqlCondition(){ return fSqlCondition ; } 00146 00147 string GetExtraOrdering(){ return fExtraOrdering ; } 00148 00149 00150 private: 00151 00152 Bool_t ReplaceSeqNoOracle(UInt_t oldSeqNo, 00153 UInt_t newSeqNo, 00154 UInt_t dbNo) const; 00155 // Disabled (not implemented) copy constructor and asignment. 00156 00157 DbiDBProxy(const DbiDBProxy&); 00158 DbiDBProxy& operator=(const DbiDBProxy&); 00159 00160 // Data members 00161 00163 DbiCascader& fCascader; 00164 00166 const DbiTableMetaData* fMetaData; 00167 00169 const DbiTableMetaData* fMetaValid; 00170 00173 string fSqlCondition; 00174 00176 string fTableName; 00177 00179 const DbiTableProxy* fTableProxy; 00180 00182 string fVldSuffix; 00183 00186 string fExtraOrdering ; 00187 00188 // Removed: ClassDef(DbiDBProxy,0) // Proxy for physical database. 00189 00190 }; 00191 00192 #endif // DBIDBPROXY_H