00001 #ifndef DBITABLEPROXY_H
00002 #define DBITABLEPROXY_H
00003
00025 #include <string>
00026 #include <sstream>
00027 using std::string;
00028
00029 #include "DatabaseInterface/Dbi.h"
00030 #include "DatabaseInterface/DbiDBProxy.h"
00031 #include "DatabaseInterface/DbiTableMetaData.h"
00032 #include "DatabaseInterface/DbiValidityRec.h"
00033 #include "Context/Context.h"
00034 #include "Context/TimeStamp.h"
00035
00036 class DbiCache;
00037 class DbiCascader;
00038 class DbiResult;
00039 class DbiTableProxyRegistry;
00040 class DbiTableRow;
00041 class DbiValidityRec;
00042 class DbiValidityRecBuilder;
00043
00044 class DbiTableProxy
00045 {
00046
00047 friend class DbiTableProxyRegistry;
00048
00049 public:
00050
00051
00052 const DbiDBProxy& GetDBProxy() const { return fDBProxy; }
00053 DbiCascader& GetCascader() { return *fCascader; }
00054 const DbiTableMetaData& GetMetaData() const { return fMetaData; }
00055 const DbiTableMetaData& GetMetaValid() const { return fMetaValid; }
00056 string GetRowName() const {
00057 return fTableRow ? fTableRow->name() : "Unknown";}
00058 string GetTableName() const { return fTableName;}
00059
00060 DbiCache* GetCache() { return fCache;}
00061 const DbiResult* Query(const Context& vc,
00062 const Dbi::SubSite& subsite,
00063 const Dbi::Task& task,
00064 Bool_t findFullTimeWindow = true);
00065 const DbiResult* Query(const string& context,
00066 const Dbi::SubSite& subsite,
00067 const Dbi::Task& task,
00068 const string& data,
00069 const string& fillOpts);
00070 const DbiResult* Query(UInt_t seqNo,UInt_t dbNo);
00071 const DbiResult* Query(const DbiValidityRec& vrec,
00072 Bool_t canReuse = kTRUE);
00073 TimeStamp QueryOverlayVersionDate(const DbiValidityRec& vrec,
00074 UInt_t dbNo);
00075 void RefreshMetaData();
00076 void SetSqlCondition(const string& sql);
00077 Bool_t TableExists() const { return fExists; }
00078
00079 protected:
00080
00081
00082 DbiTableProxy(DbiCascader* cascader,
00083 const string& tableName,
00084 const string& vldSuffix,
00085 const DbiTableRow* tableRow);
00086 virtual ~DbiTableProxy();
00087
00088
00089
00090
00091
00092 private:
00093
00094
00095
00096 DbiTableProxy(const DbiTableProxy&);
00097 DbiTableProxy& operator=(const DbiTableProxy&);
00098
00099
00100
00101 Bool_t CanReadL2Cache() const;
00102 Bool_t CanWriteL2Cache() const;
00103 Bool_t RestoreFromL2Cache(const DbiValidityRecBuilder& builder);
00104 Bool_t SaveToL2Cache(const string& name, DbiResult& res);
00105
00106
00107
00108
00109
00111 DbiCascader* fCascader;
00112
00114 DbiTableMetaData fMetaData;
00115
00117 DbiTableMetaData fMetaValid;
00118
00120 Bool_t fCanL2Cache;
00121
00123 DbiCache* fCache;
00124
00126 DbiDBProxy fDBProxy;
00127
00129 Bool_t fExists;
00130
00132 string fTableName;
00133
00135 DbiTableRow* fTableRow;
00136
00137
00138
00139 };
00140
00141
00142 #endif // DBITABLEPROXY_H