Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

DbiResultPtr.h

Go to the documentation of this file.
00001 #ifndef DBIRESULTPTR_H
00002 #define DBIRESULTPTR_H
00003 
00028 #include <map>
00029 #include <string>
00030 using std::string;
00031 
00032 #include "DatabaseInterface/Dbi.h"
00033 #include "DatabaseInterface/DbiResult.h"
00034 #include "DatabaseInterface/DbiTableProxyRegistry.h"  //Only for cleaner
00035 #include "DatabaseInterface/DbiValidityRec.h"
00036 #include "Validity/VldContext.h"
00037 
00038 class DbiResult;
00039 class DbiResultKey;
00040 class DbiSqlContext;
00041 class DbiTableProxy;
00042 
00043 template <class T> class DbiResultPtr
00044 {
00045 
00046 public:
00047 
00048 // Constructors and destructors.
00049            DbiResultPtr();
00050            DbiResultPtr(const DbiResultPtr& that);
00051            DbiResultPtr(const VldContext& vc,
00052                         Dbi::Task task = Dbi::kDefaultTask,
00053                         Dbi::AbortTest abortTest = Dbi::kTableMissing,
00054                         Bool_t findFullTimeWindow = true);
00055            DbiResultPtr(const string& tableName,
00056                         const VldContext& vc,
00057                         Dbi::Task task = Dbi::kDefaultTask,
00058                         Dbi::AbortTest abortTest = Dbi::kTableMissing,
00059                         Bool_t findFullTimeWindow = true);
00060             DbiResultPtr(const string& tableName,
00061                          const DbiSqlContext& context,
00062                          const Dbi::Task& task = Dbi::kAnyTask, 
00063                          const string& data = "",
00064                          const string& fillOpts = "",
00065                          Dbi::AbortTest abortTest = Dbi::kTableMissing);
00066             DbiResultPtr(const string& tableName,
00067                          const DbiValidityRec& vrec,
00068                          Dbi::AbortTest abortTest = Dbi::kTableMissing);
00069             DbiResultPtr(const string& tableName,
00070                          UInt_t seqNo,
00071                          UInt_t dbNo,
00072                          Dbi::AbortTest abortTest = Dbi::kTableMissing);
00073    virtual ~DbiResultPtr();
00074 
00075 
00076 // State testing member functions
00077 const DbiResultKey* GetKey() const;
00078       UInt_t GetNumRows() const;
00079 const DbiResult* GetResult() const { return fResult; }
00080        Int_t GetResultID() const;
00081     const T* GetRow(UInt_t rowNum) const;
00082     const T* GetRowByIndex(UInt_t index) const;
00083     const DbiValidityRec* GetValidityRec(const DbiTableRow* row=0) const;
00084            DbiTableProxy& TableProxy() const;
00085                    Bool_t ResultsFromDb() const;
00086 
00087     static DbiTableProxy& GetTableProxy(); 
00088     static DbiTableProxy& GetTableProxy(const string& tableName);
00089 
00090 // State changing member functions
00091     UInt_t NextQuery(Bool_t forwards = kTRUE);
00092     UInt_t NewQuery(VldContext vc, 
00093                     Dbi::Task task=0,
00094                     Bool_t findFullTimeWindow = true);
00095     UInt_t NewQuery(const DbiSqlContext& context,
00096                     const Dbi::Task& task = 0, 
00097                     const string& data = "",
00098                     const string& fillOpts = "");
00099     UInt_t NewQuery(const DbiValidityRec& vrec);
00100     UInt_t NewQuery(UInt_t seqNo,UInt_t dbNo);
00101 
00102 
00103 private:  
00104   void Disconnect();
00105   void SetContext(const DbiValidityRec& vrec);
00106 Bool_t ApplyAbortTest();
00107 
00108 // 12 Jun 2002: Disabled (not implemented)  assignment
00109 DbiResultPtr& operator=(const DbiResultPtr&);
00110 
00111 
00112 // Data members
00113 
00115   Dbi::AbortTest fAbortTest;  
00116 
00118   DbiTableProxy& fTableProxy; 
00119 
00120 
00121 // State from last query.
00122 
00124 const DbiResult* fResult;     
00125 
00127   Detector::Detector_t fDetType;
00128 
00130   SimFlag::SimFlag_t fSimType;    
00131 
00132 #ifndef __CINT__ //  Hide map from CINT; it complains about missing Streamer() etc.
00133 static std::map<string,DbiTableProxy*> fgNameToProxy;
00134 #endif  // __CINT__      
00135 static             DbiTableProxy* fgTableProxy;
00136 
00137 ClassDefT(DbiResultPtr<T>,0)  // ResultPtr for specific database table. 
00138 
00139 };
00140 ClassDefT2(DbiResultPtr,T)
00141 
00142 #endif  // DBIRESULTPTR_H

Generated on Mon Feb 15 11:06:34 2010 for loon by  doxygen 1.3.9.1