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 "Validity/VldContext.h"
00034 #include "Validity/VldTimeStamp.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->ClassName() : "Unknown";}
00058 string GetTableName() const { return fTableName;}
00059
00060 DbiCache* GetCache() { return fCache;}
00061 const DbiResult* Query(const VldContext& vc,
00062 const Dbi::Task& task,
00063 Bool_t findFullTimeWindow = true);
00064 const DbiResult* Query(const string& context,
00065 const Dbi::Task& task,
00066 const string& data,
00067 const string& fillOpts);
00068 const DbiResult* Query(UInt_t seqNo,UInt_t dbNo);
00069 const DbiResult* Query(const DbiValidityRec& vrec,
00070 Bool_t canReuse = kTRUE);
00071 VldTimeStamp QueryOverlayCreationDate(const DbiValidityRec& vrec,
00072 UInt_t dbNo);
00073 void RefreshMetaData();
00074 void SetSqlCondition(const string& sql);
00075 Bool_t TableExists() const { return fExists; }
00076
00077 protected:
00078
00079
00080 DbiTableProxy(DbiCascader* cascader,
00081 const string& tableName,
00082 const string& vldSuffix,
00083 const DbiTableRow* tableRow);
00084 virtual ~DbiTableProxy();
00085
00086
00087
00088
00089
00090 private:
00091
00092
00093
00094 DbiTableProxy(const DbiTableProxy&);
00095 DbiTableProxy& operator=(const DbiTableProxy&);
00096
00097
00098
00099 Bool_t CanReadL2Cache() const;
00100 Bool_t CanWriteL2Cache() const;
00101 Bool_t RestoreFromL2Cache(const DbiValidityRecBuilder& builder);
00102 Bool_t SaveToL2Cache(const string& name, DbiResult& res);
00103
00104
00105
00106
00107
00109 DbiCascader* fCascader;
00110
00112 DbiTableMetaData fMetaData;
00113
00115 DbiTableMetaData fMetaValid;
00116
00118 Bool_t fCanL2Cache;
00119
00121 DbiCache* fCache;
00122
00124 DbiDBProxy fDBProxy;
00125
00127 Bool_t fExists;
00128
00130 string fTableName;
00131
00133 DbiTableRow* fTableRow;
00134
00135 ClassDef(DbiTableProxy,0)
00136
00137 };
00138
00139
00140 #endif // DBITABLEPROXY_H