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
00050 class DbiDBProxy
00051 {
00052
00053 public:
00054
00055 #ifndef __CINT__
00056 typedef const std::vector<UInt_t> SeqList_t;
00057 #endif
00058
00059
00060 DbiDBProxy(DbiCascader& cascader,
00061 const string& tableName,
00062 const DbiTableMetaData* metaData,
00063 const DbiTableMetaData* metaValid,
00064 const DbiTableProxy* tableProxy);
00065 virtual ~DbiDBProxy();
00066
00067
00068 UInt_t GetNumDb() const;
00069 const string& GetTableName() const { return fTableName; }
00070 const DbiTableProxy* GetTableProxy() const { return fTableProxy; }
00071 void StoreMetaData(DbiTableMetaData& metaData) const;
00072 Bool_t TableExists() const;
00073
00074
00075 void FindTimeBoundaries(const Context& vc,
00076 const Dbi::SubSite& subsite,
00077 const Dbi::Task& task,
00078 UInt_t dbNo,
00079 TimeStamp earliestCreate,
00080 TimeStamp& start,
00081 TimeStamp& end) const;
00082 DbiResultSet* QueryAllValidities(UInt_t dbNo,UInt_t seqNo=0) const;
00083 DbiResultSet* QuerySeqNo(UInt_t seqNo,UInt_t dbNo) const;
00084 #ifndef __CINT__
00086 DbiResultSet* QuerySeqNos(SeqList_t& seqNos,
00087 UInt_t dbNo,
00088 const string& sqlData = "",
00089 const string& fillOpts = "") const;
00090 #endif
00091 DbiResultSet* QueryValidity(const Context& vc,
00092 const Dbi::SubSite& subsite,
00093 const Dbi::Task& task,
00094 UInt_t dbNo) const;
00095 DbiResultSet* QueryValidity(const string& context,
00096 const Dbi::SubSite& subsite,
00097 const Dbi::Task& task,
00098 UInt_t dbNo) const;
00099 DbiResultSet* QueryValidity(UInt_t seqNo,
00100 UInt_t dbNo) const;
00101
00102
00103 Bool_t ReplaceInsertDate(const TimeStamp& ts,
00104 UInt_t SeqNo,
00105 UInt_t dbNo) const;
00106 Bool_t RemoveSeqNo(UInt_t seqNo,
00107 UInt_t dbNo) const;
00108 Bool_t ReplaceSeqNo(UInt_t oldSeqNo,
00109 UInt_t newSeqNo,
00110 UInt_t dbNo) const;
00111
00112
00113 void SetSqlCondition(const string& sql) {
00114 fSqlCondition = sql; }
00115
00116 private:
00117
00118 Bool_t ReplaceSeqNoOracle(UInt_t oldSeqNo,
00119 UInt_t newSeqNo,
00120 UInt_t dbNo) const;
00121
00122
00123 DbiDBProxy(const DbiDBProxy&);
00124 DbiDBProxy& operator=(const DbiDBProxy&);
00125
00126
00127
00129 DbiCascader& fCascader;
00130
00132 const DbiTableMetaData* fMetaData;
00133
00135 const DbiTableMetaData* fMetaValid;
00136
00139 string fSqlCondition;
00140
00142 string fTableName;
00143
00145 const DbiTableProxy* fTableProxy;
00146
00148 string fVldSuffix;
00149
00150
00151
00152 };
00153
00154 #endif // DBIDBPROXY_H