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

In This Package:

DbiTableProxyRegistry.h
Go to the documentation of this file.
00001 #ifndef DBITABLEPROXYREGISTRY_H
00002 #define DBITABLEPROXYREGISTRY_H
00003 
00025 #if !defined(__CINT__) || defined(__MAKECINT__)
00026 #include "Rtypes.h"
00027 #endif
00028 #include <map>
00029 #include <string>
00030 #include "DatabaseInterface/DbiRollbackDates.h"
00031 #include "DatabaseInterface/DbiExtraConditions.h"
00032 
00033 class DbiCascader;
00034 class DbiTableProxy;
00035 class DbiTableRow;
00036 class DbiValidate;
00037 class DbiSvc;
00038 class DybDbi;
00039 
00040 class DbiTableProxyRegistry 
00041 {
00042 
00043   friend class DybDbi;
00044   friend class DbiSvc;
00045   friend class DbiValidate;      //Allow DbiValidate access to dtor and 
00046                                  // fCascader
00047 public:
00048 
00049 // State testing member functions
00050       void ShowStatistics() const;
00051 
00052 // State changing member functions
00053 static DbiTableProxyRegistry& Instance();
00054 static       Bool_t IsActive() { return fgInstance ? kTRUE: kFALSE; }
00055 
00056 
00057 // Configuration calls:
00058                void ConfigExtraConditions(const std::string& str);
00059                void ClearExtraConditions();
00060 
00061                void ConfigRollback(const std::string& str);
00062                void ConfigRollback(const std::vector<std::string>& rollbacks);
00063                void ClearRollbackDates();
00064 
00065                void ConfigLevel2Cache(const std::string& cachedir="");
00066                void ConfigConnectionsPermanent(Bool_t permanent);
00067                void ConfigOrderContextQuery(Bool_t on);
00068 
00069        DbiExtraConditions& GetExtraConditions(){ return fExtraConditions ;} 
00070        DbiRollbackDates&   GetRollbackDates(){   return fRollbackDates ;} 
00071 
00072        DbiCascader& GetCascader() { return *fCascader; }
00073      DbiTableProxy& GetTableProxy(const std::string& tableName, 
00074                                   const DbiTableRow* tableRow) ;
00075              Bool_t HasRowCounter(const std::string& tableName); 
00076                void PurgeCaches();               
00077               void RefreshMetaData(const std::string& tableName);
00078               void SetSqlCondition(const std::string& sql="");    // global baseline condition
00079 
00080         std::string FormSqlCondition(DbiTableProxy* proxy) const; 
00081               void ShowSqlConditions() const;
00082 
00083 protected:
00084 
00085 // Constructors (protected because singleton).
00086            DbiTableProxyRegistry();
00087   virtual ~DbiTableProxyRegistry();
00088 
00089 private:
00090 
00091 // State changing member functions
00092 
00093 // Disabled (not implemented) copy constructor and asignment.
00094 
00095  DbiTableProxyRegistry(const DbiTableProxyRegistry&) {};
00096  DbiTableProxyRegistry& operator=(const DbiTableProxyRegistry&) { return *this; };
00097 
00098 // State testing member functions
00099                void ApplySqlCondition() const; 
00100                void ApplySqlCondition(DbiTableProxy* proxy) const; 
00101 
00102 // Data members
00103 // Helper class to handle deletion of singleton
00104 public:       // work around dicitonary problem see #470 comment 11 
00105  struct Cleaner {
00106    static int fgCount; // counts #includes
00107    Cleaner() { this->Increment(); }
00108    ~Cleaner() {
00109      if (--fgCount==0 && DbiTableProxyRegistry::fgInstance!=0) {
00110        delete DbiTableProxyRegistry::fgInstance;
00111        DbiTableProxyRegistry::fgInstance = 0;
00112      }
00113    }
00114    void Increment() { ++fgCount; };
00115  };
00116 private:
00117  friend class Cleaner;
00118 
00120   DbiCascader* fCascader;      
00121 
00123   std::string fSqlCondition;  
00124 
00125 #ifndef __CINT__  // Hide map from CINT; complains: missing Streamer() etc.
00126 
00127   std::map<std::string,DbiTableProxy*> fTPmap;         
00128 #endif  // __CINT__   
00129    
00131   DbiRollbackDates fRollbackDates; 
00132 
00134   DbiExtraConditions fExtraConditions; 
00135 
00136 
00138   static DbiTableProxyRegistry* fgInstance;     
00139 
00140 
00141 // Removed: ClassDef(DbiTableProxyRegistry,0)   // Singleton register DbiTableProxys.
00142 
00143 };
00144 
00145 
00146 #endif  // DBITABLEPROXYREGISTRY_H
| 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