/search.css" rel="stylesheet" type="text/css"/> /search.js">
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; //Allow Resistry access to ctor/dtor. 00048 00049 public: 00050 00051 // State testing member functions 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 string GetExtraCondition() const { return fTableRow ? fTableRow->GetExtraCondition() : "" ; } 00060 // State changing member functions 00061 DbiCache* GetCache() { return fCache;} 00062 00063 // for efficient access to last validity in partial context 00064 const DbiValidityRecBuilder* MakeValidityRecBuilder(const string& context, 00065 const Dbi::SubSite& subsite, 00066 const Dbi::Task& task); 00067 const DbiValidityRec* LastValidityRec( const string& context, 00068 const Dbi::SubSite& subsite, 00069 const Dbi::Task& task); 00070 const DbiValidityRec* FirstValidityRec( const string& context, 00071 const Dbi::SubSite& subsite, 00072 const Dbi::Task& task); 00073 const DbiValidityRec* ValidityRec( const string& context, 00074 const Dbi::SubSite& subsite, 00075 const Dbi::Task& task, 00076 Int_t n ); 00077 00078 const DbiResult* Query(const Context& vc, 00079 const Dbi::SubSite& subsite, 00080 const Dbi::Task& task, 00081 Bool_t findFullTimeWindow = true); 00082 const DbiResult* Query(const string& context, 00083 const Dbi::SubSite& subsite, 00084 const Dbi::Task& task, 00085 const string& data, 00086 const string& fillOpts); 00087 const DbiResult* Query(UInt_t seqNo,UInt_t dbNo); 00088 const DbiResult* Query(const DbiValidityRec& vrec, 00089 Bool_t canReuse = kTRUE); 00090 TimeStamp QueryOverlayVersionDate(const DbiValidityRec& vrec, 00091 UInt_t dbNo, 00092 Bool_t timeStartFloored = kFALSE); 00093 void RefreshMetaData(); 00094 void SetSqlCondition(const string& sql); 00095 void SetOverlayOffsetSeconds(UInt_t secs); 00096 UInt_t GetOverlayOffsetSeconds(); 00097 Bool_t TableExists() const { return fExists; } 00098 00099 protected: 00100 00101 // Constructors (protected because created and owned by DbiTableProxyRegistry). 00102 DbiTableProxy(DbiCascader* cascader, 00103 const string& tableName, 00104 const string& vldSuffix, 00105 const DbiTableRow* tableRow); 00106 virtual ~DbiTableProxy(); 00107 00108 // State testing member functions 00109 00110 // State changing member functions 00111 00112 private: 00113 00114 // Disabled (not implemented) copy constructor and asignment. 00115 00116 DbiTableProxy(const DbiTableProxy&); 00117 DbiTableProxy& operator=(const DbiTableProxy&); 00118 00119 00120 // Level 2 (disk) cache management. 00121 Bool_t CanReadL2Cache() const; 00122 Bool_t CanWriteL2Cache() const; 00123 Bool_t RestoreFromL2Cache(const DbiValidityRecBuilder& builder); 00124 Bool_t SaveToL2Cache(const string& name, DbiResult& res); 00125 00126 // Data members (fMeta* must precede fDBProxy, it has to be created 00127 // first - see initialiser list) 00128 00129 00131 DbiCascader* fCascader; 00132 00134 DbiTableMetaData fMetaData; 00135 00137 DbiTableMetaData fMetaValid; 00138 00140 Bool_t fCanL2Cache; 00141 00143 DbiCache* fCache; 00144 00146 DbiDBProxy fDBProxy; 00147 00149 Bool_t fExists; 00150 00152 string fTableName; 00153 00155 DbiTableRow* fTableRow; 00156 00158 UInt_t fOverlayOffsetSeconds ; 00159 00160 // Removed: ClassDef(DbiTableProxy,0) // Object to query a specific table. 00161 00162 }; 00163 00164 00165 #endif // DBITABLEPROXY_H