/search.css" rel="stylesheet" type="text/css"/> /search.js">
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

DbiWriter.h
Go to the documentation of this file.
00001 #ifndef DBIWRITER_H
00002 #define DBIWRITER_H
00003 
00032 #include <list>
00033 #include <string>
00034 
00035 #include "DatabaseInterface/Dbi.h"
00036 #include "DatabaseInterface/DbiLogEntry.h"
00037 #include "DatabaseInterface/DbiTableProxyRegistry.h"
00038 #include "Context/ContextRange.h"
00039 #include "Context/TimeStamp.h"
00040 
00041 class DbiSqlValPacket;
00042 class DbiTableProxy;
00043 class DbiValidityRec;
00044 
00045 template <class T> class DbiWriter
00046 {
00047 
00048 public:
00049 
00050 // Constructors and destructors.
00051            DbiWriter();
00052            DbiWriter(const ContextRange& vr,
00053                      Int_t aggNo,
00054                      Dbi::SubSite subsite,
00055                      Dbi::Task task,
00056                      TimeStamp versionDate,
00057                      const std::string& dbName,
00058                      const std::string& logComment = "",
00059                      const std::string& tableName = "");
00060            DbiWriter(const ContextRange& vr,
00061                      Int_t aggNo,
00062                      Dbi::SubSite subsite = 0,
00063                      Dbi::Task task = 0,
00064                      TimeStamp versionDate = TimeStamp(0,0),
00065                      UInt_t dbNo = 0,
00066                      const std::string& logComment = "",
00067                      const std::string& tableName = "");
00068            DbiWriter(const DbiValidityRec& vrec,
00069                      const std::string& dbName,
00070                      const std::string& logComment = "");
00071            DbiWriter(const DbiValidityRec& vrec,
00072                      UInt_t dbNo = 0,
00073                      const std::string& logComment = "");
00074 
00075   virtual ~DbiWriter();
00076 
00078        void Init(); 
00079 
00080 // State testing member functions
00081 
00082        DbiTableProxy& TableProxy() const;
00083 
00085           Bool_t IsOpen(Bool_t reportErrors = kTRUE) const;
00087           Bool_t CanOutput(Bool_t reportErrors = kTRUE) const;
00088 //     Number of SQL statements collected 
00089           UInt_t GetNumSqlStmts() const;
00090 //     ValidityRec, exposed for debugging
00091           DbiValidityRec* GetValidityRec() const;
00092 //     SEQNO from the last Close, exposed for debugging 
00093           UInt_t GetLastSeqnoClosed() const;
00094 
00095 // State changing member functions
00096 
00097     void SetDbNo(UInt_t dbNo) { fDbNo = dbNo;}
00098     void SetDbName(const string& dbName);
00099     void SetLogComment(const std::string& reason);
00100     // For setting of requireGlobal see DbiCascader::AllocateSeqNo
00101     void SetRequireGlobalSeqno(Int_t requireGlobal) {fRequireGlobalSeqno = requireGlobal;}
00102     void SetOverlayVersionDate() {fUseOverlayVersionDate = kTRUE;}
00103     
00104     // avoid versiondate crowding on the very first TIMESTART in always overlaying situation 
00105     //
00106     void   SetTimeStartFlooredVersionDate(Bool_t tfvd){ fTimeStartFlooredVersionDate = tfvd;}
00107     Bool_t GetTimeStartFlooredVersionDate(){     return fTimeStartFlooredVersionDate ; }
00108 
00109     //  switch on versionDate uniqing 
00110     //
00111     void SetRequireUniqueVersionDate(Bool_t requireUnique ){fRequireUniqueVersionDate = requireUnique ; } 
00112     Bool_t GetRequireUniqueVersionDate(){ return fRequireUniqueVersionDate ; } 
00113     //  
00114     //  versionDate uniqing config, 
00115     //     ctor defaults are full masks for the safest uniqing
00116     //     if will never need to read from a wider context than are writing into 
00117     //     then setting the uniqing masks to zero will perform uniqing only within 
00118     //     the specific written contexts 
00119     //
00120     void SetUniqueVersionDateSiteMask(UInt_t siteMask){fUniqueVersionDateSiteMask = siteMask ; } 
00121     void SetUniqueVersionDateSimMask( UInt_t simMask){ fUniqueVersionDateSimMask  = simMask ; } 
00122     UInt_t GetUniqueVersionDateSiteMask(){ return fUniqueVersionDateSiteMask ; } 
00123     UInt_t GetUniqueVersionDateSimMask(){  return fUniqueVersionDateSimMask  ; } 
00124 
00125 
00126 //  I/O functions
00127   void Abort() { Reset(); }
00128   Bool_t Close(const char* fileSpec=0);
00129   Bool_t Open(const ContextRange& vr,
00130             Int_t aggNo,
00131             Dbi::SubSite subsite,
00132             Dbi::Task task,
00133             TimeStamp versionDate,
00134             const string& dbName,
00135             const std::string& logComment = "");
00136    Bool_t Open(const ContextRange& vr,
00137             Int_t aggNo,
00138             Dbi::SubSite subsite = 0,
00139             Dbi::Task task = 0,
00140             TimeStamp versionDate = TimeStamp(),
00141             UInt_t dbNo = 0,
00142             const std::string& logComment = "");
00143  Bool_t Open(const DbiValidityRec& vrec,
00144              const string& dbName,
00145              const std::string& logComment = "");
00146  Bool_t Open(const DbiValidityRec& vrec,
00147               UInt_t dbNo = 0,
00148               const std::string& logComment = "");
00149 
00150   DbiWriter<T>& operator<<(const T& row);
00151 
00152 private:  
00153 
00154 // State testing member functions
00155 
00156   Bool_t NeedsLogEntry() const;
00157   Bool_t WritingToMaster() const;
00158 
00159 // State changing member functions
00160 
00161 DbiWriter(const DbiWriter&); // Forbidden
00162 DbiWriter& operator=(const DbiWriter&); // Forbidden
00163 
00164     void CompleteOpen(UInt_t dbNo = 0,
00165                       const std::string& logComment = "");
00166     void Reset();
00167 
00168 static DbiTableProxy& GetTableProxy();
00169 static DbiTableProxy& GetTableProxy(const std::string& tableName);
00170 
00171 // Data members
00172 
00174   Int_t fAggregateNo;   
00175 
00177   UInt_t fDbNo;          
00178 
00180   DbiSqlValPacket* fPacket;        
00181 
00183   Int_t fRequireGlobalSeqno;     
00184 
00186   DbiTableProxy* fTableProxy;    
00187 
00189   std::string fTableName;     
00190 
00192   Bool_t fUseOverlayVersionDate;
00193 
00195   DbiValidityRec* fValidRec;      
00196 
00198   DbiLogEntry fLogEntry;      
00199 
00201   UInt_t fLastSeqnoClosed;
00202 
00204   Bool_t fRequireUniqueVersionDate ;
00205   
00207   UInt_t fUniqueVersionDateSiteMask ; 
00208 
00210   UInt_t fUniqueVersionDateSimMask ; 
00211 
00213   Bool_t fTimeStartFlooredVersionDate ; 
00214 
00215 
00216 // Removed: ClassDefT(DbiWriter<T>,0)          // Writer for specific database table. 
00217 
00218 };
00219 // Removed: ClassDefT2(DbiWriter,T)
00220 
00221 #endif  // DBIWRITER_H
00222 
00223 
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Fri May 16 2014 09:56:45 for DatabaseInterface by doxygen 1.7.4