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

DbiResult.h

Go to the documentation of this file.
00001 #ifndef DBIRESULT_H
00002 #define DBIRESULT_H
00003 
00028 #include <map>
00029 #include <string>
00030 using std::string;
00031 
00032 #include "DatabaseInterface/Dbi.h"
00033 #include "DatabaseInterface/DbiExceptionLog.h"
00034 #include "DatabaseInterface/DbiValidityRec.h"
00035 
00036 typedef std::map<UInt_t,const DbiTableRow*> IndexToRow_t;
00037 
00038 class DbiBinaryFile;
00039 class DbiResultKey;
00040 class DbiResult;
00041 class DbiResultSet;
00042 class DbiTableRow;
00043 class VldContext;
00044 
00045 DbiBinaryFile& operator<<(DbiBinaryFile& bf, const DbiResult& res);    
00046 DbiBinaryFile& operator>>(DbiBinaryFile& bf, DbiResult& res);    
00047 
00048 class DbiResult
00049 {
00050 
00051 public:
00052 
00053 // Constructors and destructors.
00054            DbiResult(DbiResultSet* resultSet = 0, 
00055                      const DbiValidityRec* vrec = 0,
00056                      const string& sqlQualifiers = "");
00057   virtual ~DbiResult();
00058 
00059 // State testing member functions
00060  
00061  virtual                Bool_t CanReuse() const  { return fCanReuse; }
00062  virtual                Bool_t CanSave() const  { return kTRUE; }
00063  virtual                  void Connect() const { ++fNumClients; }
00064  virtual         DbiResultKey* CreateKey() const = 0;
00065  virtual                  void Disconnect() const { --fNumClients; } 
00066         const DbiExceptionLog& GetExceptionLog() const { return fExceptionLog; }
00067                          Int_t GetID() const { return fID; }
00068  virtual   const DbiResultKey* GetKey() const;
00069  virtual                UInt_t GetNumAggregates() const =0;
00070  virtual                UInt_t GetNumClients() const { 
00071                                                    return fNumClients; }
00072  virtual                UInt_t GetNumRows() const =0;
00073                  const string& GetSqlQualifiers() const { return fSqlQualifiers; }
00074  virtual    const DbiTableRow* GetTableRow(UInt_t rowNum) const =0;
00075  virtual    const DbiTableRow* GetTableRowByIndex(UInt_t index) const;
00076  virtual const DbiValidityRec& GetValidityRec(
00077                                   const DbiTableRow* /* row */ = 0) const { 
00078                                         return GetValidityRecGlobal(); }
00079  virtual const DbiValidityRec& GetValidityRecGlobal() const { 
00080                                                       return fEffVRec; }
00081                         Bool_t IsExtendedContext() const { 
00082                                        return this->GetSqlQualifiers() != ""; }
00083  virtual                Bool_t Owns(const DbiTableRow* /* row */) const { return kFALSE; }
00084                         Bool_t ResultsFromDb() const { return fResultsFromDb; }
00085  virtual         const string& TableName() const { return fTableName; }
00086 
00087 // State changing member functions
00088                           void CaptureExceptionLog(UInt_t startFrom);
00089 
00091  virtual                Bool_t CanDelete(const DbiResult* res = 0);
00092 
00095  virtual    Bool_t Satisfies(const VldContext& vc,
00096                              const Dbi::Task& task);
00099 virtual     Bool_t Satisfies(const string&) {return kFALSE;}
00100 virtual     Bool_t Satisfies(const DbiValidityRec&,
00101                              const string& = "") {return kFALSE;}
00102 
00104  virtual    void DeRegisterKey();
00105  virtual    void RegisterKey();
00106 
00107  virtual void Streamer(DbiBinaryFile& file);
00108  virtual void SetCanReuse(Bool_t reuse)  { fCanReuse = reuse ; }
00109 
00110 protected:
00111          void SetResultsFromDb() { fResultsFromDb = kTRUE; }
00112 
00113 // State testing member functions
00114 
00115          void BuildLookUpTable() const;
00116        Bool_t LookUpBuilt() const { return fIndexKeys.size() > 0; } 
00117 
00118 //  State changing member functions.
00119 
00120  virtual void SetTableName(const string& tableName)  { 
00121                                                fTableName = tableName; }
00122  virtual void SetValidityRec(const DbiValidityRec& vRec)  { 
00123                                                       fEffVRec = vRec; }
00124 
00125 
00126 private:  
00127 
00128 // Data members
00129 
00131   Int_t fID;            
00132 
00134   Bool_t fCanReuse;      
00135 
00137   DbiValidityRec fEffVRec;       
00138 
00140   mutable IndexToRow_t fIndexKeys;     
00141 
00143   const DbiResultKey* fKey;     
00144 
00146   Bool_t fResultsFromDb;
00148   mutable Int_t fNumClients;    
00149 
00151   string fTableName;     
00152 
00155   string fSqlQualifiers;
00156 
00158   DbiExceptionLog fExceptionLog;  
00159 
00160 
00162   static  Int_t fgLastID;            
00163 
00164 
00165 ClassDef(DbiResult,0)     //Abstract base representing query result 
00166 
00167 };
00168 
00169 
00170 #endif  // DBIRESULT_H

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