TDbiResultSetHandle.hxx

Go to the documentation of this file.
00001 #ifndef DBIRESULTSETHANDLE_H
00002 // this will switch users code from using TDbiResultSetHandle to TDbiResultSetHandle
00003 #define USE_NEW_DBI_API
00004 #define DBIRESULTSETHANDLE_H
00005 
00006 /**
00007  *
00008  * $Id: TDbiResultSetHandle.hxx,v 1.1 2011/01/18 05:49:20 finch Exp $
00009  *
00010  * \class TDbiResultSetHandle
00011  *
00012  *
00013  * \brief
00014  * <b>Concept</b>  Templated class of pointers to Result objects.
00015  *   ResultHandle objects are lightweight and provide type safe access
00016  *   to a specific table.
00017  *
00018  * \brief
00019  * <b>Purpose</b> ResultHandles are the primary application interface
00020  *  to the  TDbi.  Users instantiate ResultHandles with the information
00021  *   necessary define a table query and then interrogate the object
00022  *   for the results.
00023  *
00024  * Contact: A.Finch@lancaster.ac.uk
00025  *
00026  *
00027  */
00028 
00029 #include <map>
00030 #include <string>
00031 using std::string;
00032 
00033 #include "TDbi.hxx"
00034 #include "TDbiResultSet.hxx"
00035 #include "TDbiDatabaseManager.hxx"  //Only for cleaner
00036 #include "TDbiValidityRec.hxx"
00037 #include "TVldContext.hxx"
00038 
00039 class TDbiResultSet;
00040 class TDbiResultKey;
00041 class TDbiSqlContext;
00042 class TDbiTableProxy;
00043 
00044 template <class T> class TDbiResultSetHandle
00045 {
00046 
00047 public:
00048 
00049 // Constructors and destructors.
00050            TDbiResultSetHandle();
00051            TDbiResultSetHandle(const TDbiResultSetHandle& that);
00052            TDbiResultSetHandle(const TVldContext& vc,
00053                         TDbi::Task task = TDbi::kDefaultTask,
00054                         TDbi::AbortTest abortTest = TDbi::kTableMissing,
00055                         Bool_t findFullTimeWindow = true);
00056            TDbiResultSetHandle(const string& tableName,
00057                         const TVldContext& vc,
00058                         TDbi::Task task = TDbi::kDefaultTask,
00059                         TDbi::AbortTest abortTest = TDbi::kTableMissing,
00060                         Bool_t findFullTimeWindow = true);
00061             TDbiResultSetHandle(const string& tableName,
00062                          const TDbiSqlContext& context,
00063                          const TDbi::Task& task = TDbi::kAnyTask,
00064                          const string& data = "",
00065                          const string& fillOpts = "",
00066                          TDbi::AbortTest abortTest = TDbi::kTableMissing);
00067             TDbiResultSetHandle(const string& tableName,
00068                          const TDbiValidityRec& vrec,
00069                          TDbi::AbortTest abortTest = TDbi::kTableMissing);
00070             TDbiResultSetHandle(const string& tableName,
00071                          UInt_t seqNo,
00072                          UInt_t dbNo,
00073                          TDbi::AbortTest abortTest = TDbi::kTableMissing);
00074    virtual ~TDbiResultSetHandle();
00075 
00076 
00077 // State testing member functions
00078 const TDbiResultKey* GetKey() const;
00079       UInt_t GetNumRows() const;
00080 const TDbiResultSet* GetResult() const { return fResult; }
00081        Int_t GetResultID() const;
00082     const T* GetRow(UInt_t rowNum) const;
00083     const T* GetRowByIndex(UInt_t index) const;
00084     const TDbiValidityRec* GetValidityRec(const TDbiTableRow* row=0) const;
00085            TDbiTableProxy& TableProxy() const;
00086                    Bool_t ResultsFromDb() const;
00087 
00088     static TDbiTableProxy& GetTableProxy();
00089     static TDbiTableProxy& GetTableProxy(const string& tableName);
00090 
00091 // State changing member functions
00092     UInt_t NextQuery(Bool_t forwards = kTRUE);
00093     UInt_t NewQuery(TVldContext vc,
00094                     TDbi::Task task=0,
00095                     Bool_t findFullTimeWindow = true);
00096     UInt_t NewQuery(const TDbiSqlContext& context,
00097                     const TDbi::Task& task = 0,
00098                     const string& data = "",
00099                     const string& fillOpts = "");
00100     UInt_t NewQuery(const TDbiValidityRec& vrec);
00101     UInt_t NewQuery(UInt_t seqNo,UInt_t dbNo);
00102 
00103 
00104 private:
00105   void Disconnect();
00106   void SetContext(const TDbiValidityRec& vrec);
00107 Bool_t ApplyAbortTest();
00108 
00109 // 12 Jun 2002: Disabled (not implemented)  assignment
00110 
00111 
00112 // Data members
00113 
00114 /// Test which if failed triggers abort.
00115   TDbi::AbortTest fAbortTest;
00116 
00117 /// Proxy for associated database table.
00118   TDbiTableProxy& fTableProxy;
00119 
00120 
00121 // State from last query.
00122 
00123 /// Pointer to query result. May be zero!
00124 const TDbiResultSet* fResult;
00125 
00126 /// from query context.
00127   DbiDetector::Detector_t fDetType;
00128 
00129 /// from query context.
00130   DbiSimFlag::SimFlag_t fSimType;
00131 
00132 #ifndef __CINT__ //  Hide map from CINT; it complains about missing Streamer() etc.
00133 static std::map<string,TDbiTableProxy*> fgNameToProxy;
00134 #endif  // __CINT__
00135 static             TDbiTableProxy* fgTableProxy;
00136 
00137 ClassDefT(TDbiResultSetHandle<T>,0)  // ResultHandle for specific database table.
00138 
00139 };
00140 
00141 ClassDefT2(TDbiResultSetHandle,T)
00142 
00143 #endif  // DBIRESULTSETHANDLE_H
00144 

Generated on 11 Aug 2013 for SKDatabase by  doxygen 1.6.1