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 VldContext;
00048 class VldTimeStamp;
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 fTableNameUc; }
00070 const DbiTableProxy* GetTableProxy() const { return fTableProxy; }
00071 void StoreMetaData(DbiTableMetaData& metaData) const;
00072 Bool_t TableExists(Int_t selectDbNo=-1) const;
00073
00074
00075 void FindTimeBoundaries(const VldContext& vc,
00076 const Dbi::Task& task,
00077 UInt_t dbNo,
00078 VldTimeStamp earliestCreate,
00079 VldTimeStamp& start,
00080 VldTimeStamp& end) const;
00081 DbiResultSet* QueryAllValidities(UInt_t dbNo,UInt_t seqNo=0) const;
00082 DbiResultSet* QuerySeqNo(UInt_t seqNo,UInt_t dbNo) const;
00083 #ifndef __CINT__
00084
00085 DbiResultSet* QuerySeqNos(SeqList_t& seqNos,
00086 UInt_t dbNo,
00087 const string& sqlData = "",
00088 const string& fillOpts = "") const;
00089 #endif
00090 DbiResultSet* QueryValidity(const VldContext& vc,
00091 const Dbi::Task& task,
00092 UInt_t dbNo) const;
00093 DbiResultSet* QueryValidity(const string& context,
00094 const Dbi::Task& task,
00095 UInt_t dbNo) const;
00096 DbiResultSet* QueryValidity(UInt_t seqNo,
00097 UInt_t dbNo) const;
00098
00099
00100 Bool_t ReplaceInsertDate(const VldTimeStamp& ts,
00101 UInt_t SeqNo,
00102 UInt_t dbNo) const;
00103 Bool_t RemoveSeqNo(UInt_t seqNo,
00104 UInt_t dbNo) const;
00105 Bool_t ReplaceSeqNo(UInt_t oldSeqNo,
00106 UInt_t newSeqNo,
00107 UInt_t dbNo) const;
00108
00109
00110 void SetSqlCondition(const string& sql) {
00111 fSqlCondition = sql; }
00112
00113 private:
00114
00115 Bool_t ReplaceSeqNoOracle(UInt_t oldSeqNo,
00116 UInt_t newSeqNo,
00117 UInt_t dbNo) const;
00118
00119
00120 DbiDBProxy(const DbiDBProxy&);
00121 DbiDBProxy& operator=(const DbiDBProxy&);
00122
00123
00124
00126 DbiCascader& fCascader;
00127
00129 const DbiTableMetaData* fMetaData;
00130
00132 const DbiTableMetaData* fMetaValid;
00133
00136 string fSqlCondition;
00137
00139 string fTableName;
00140
00142 string fTableNameUc;
00143
00145 const DbiTableProxy* fTableProxy;
00146
00148 string fVldSuffix;
00149
00150 ClassDef(DbiDBProxy,0)
00151
00152 };
00153
00154 #endif // DBIDBPROXY_H