00001 #ifndef CondCore_Utilities_CondPyInterface_h 00002 #define CondCore_Utilities_CondPyInterface_h 00003 00004 /* common utilities of the CondCore Python buiding 00005 * 00006 */ 00007 00008 #include "CondCore/IOVService/interface/IOVProxy.h" 00009 #include "CondCore/DBCommon/interface/LogDBEntry.h" 00010 #include "CondCore/DBCommon/interface/DbConnection.h" 00011 #include "CondCore/DBCommon/interface/TagMetadata.h" 00012 00013 00014 #include<boost/shared_ptr.hpp> 00015 #include<string> 00016 #include<set> 00017 00018 namespace cond { 00019 00020 typedef std::set<cond::TagMetadata> GlobalTag; 00021 00022 00023 class Logger; 00024 00025 namespace impl { 00026 struct FWMagic; 00027 } 00028 00029 // initialize framework 00030 class FWIncantation { 00031 public: 00032 FWIncantation(); 00033 // FWIncantation(FWIncantation const & other ); 00034 ~FWIncantation(); 00035 00036 private: 00037 boost::shared_ptr<impl::FWMagic> magic; 00038 }; 00039 00040 // a readonly CondDB and its transaction 00041 class CondDB { 00042 public: 00043 CondDB(); 00044 CondDB(const CondDB & other); 00045 CondDB & operator=(const CondDB & other); 00046 CondDB(DbSession& session, boost::shared_ptr<cond::Logger> ilog ); 00047 ~CondDB(); 00048 std::string allTags() const; 00049 00050 IOVProxy iov(std::string const & tag) const; 00051 IOVProxy iovWithLib(std::string const & tag) const; 00052 00053 IOVElementProxy payLoad(std::string const & token) const; 00054 00055 std::string iovToken(std::string const & tag) const; 00056 00057 cond::LogDBEntry lastLogEntry(std::string const & tag) const; 00058 cond::LogDBEntry lastLogEntryOK(std::string const & tag) const; 00059 00060 void startTransaction() const; 00061 void startReadOnlyTransaction() const; 00062 void commitTransaction() const; 00063 00064 void closeSession() const; 00065 00066 DbSession& session() const { return me;} 00067 00068 private: 00069 mutable DbSession me; 00070 boost::shared_ptr<cond::Logger> logger; 00071 }; 00072 00073 // initializ cond, coral etc 00074 class RDBMS { 00075 public: 00076 RDBMS(); 00077 ~RDBMS(); 00078 explicit RDBMS(std::string const & authPath, bool debug=false); 00079 RDBMS(std::string const & user,std::string const & pass); 00080 void setLogger(std::string const & connstr); 00081 00082 CondDB getDB(std::string const & db); 00083 00084 CondDB getReadOnlyDB(std::string const & db); 00085 00086 GlobalTag const & globalTag(std::string const & connstr, 00087 std::string const & gname, 00088 std::string const & prefix, 00089 std::string const & postfix) const; 00090 00091 private: 00092 boost::shared_ptr<DbConnection> connection; 00093 boost::shared_ptr<cond::Logger> logger; 00094 GlobalTag m_globalTag; 00095 00096 }; 00097 00098 00099 } 00100 00101 00102 #endif // CondCore_Utilities_CondPyInterface_h