Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Related Pages

IOManagerDB.h

00001 #ifndef SCT_ARCHIVEFILE_IOMANAGERARCHIVEFILE_H
00002 #define SCT_ARCHIVEFILE_IOMANAGERARCHIVEFILE_H
00003 
00004 #include "Sct/Archive/IOManagerArchive.h"
00005 #include "Sct/IoExceptions.h"
00006 #include "Sct/LogicErrors.h"
00007 #include "SctData/ResultHeader.h"
00008 #include <mysql.h>
00009 #include "CalibrationController/IS/TestData.h"
00010 //#include "sqlplus.hh"
00011 
00012 class Sct::Serializable;
00013 //class MysqlQuery;
00014 
00015 namespace SctArchiving {
00017 class MysqlException : public Sct::IoException{
00018 public:
00019   MysqlException(const string& msg, const string& file, int line);
00020   MysqlException(const string& msg, const string& query, const string& file, int line);
00021   ~MysqlException() throw();
00022 private:
00023   MysqlException();
00024   std::string query;
00025 };
00026 
00027 class ZlibStringCompressor;
00034 class IOManagerDB : public Sct::Archive::IOManagerArchive {
00035 public:
00039   static IOManagerDB& instance();
00043   virtual void write(const Sct::Serializable& ob, const Sct::IOParams* params = 0) const;
00047   virtual shared_ptr<Sct::Serializable> read(const string& name, const Sct::IOParams* params = 0) const;
00048   virtual ~IOManagerDB();
00052   virtual std::string status() const;
00057   virtual void addRun(unsigned long runNumber);
00061   virtual bool runExists(unsigned long runNumber);
00066   virtual void addTest(const TestData& testdata, bool alsoAddScans);
00070   virtual bool testExists(const TestData& testdata);
00074   virtual void addScan(const TestData& testdata, unsigned scanNumber);
00078   virtual bool scanExists(const TestData& testdata, unsigned scanNumber);
00079 
00081   virtual std::string getLocationName();
00083   virtual void setLocationName(const std::string& locationName);
00085   static std::string convertToMysqlDateTimeFormat(const std::string& isotime);
00086 
00087  private:
00088   /* get the LocationID for this location */
00089   //int getLocationID();
00090 
00092   void checkForErrors(const string& msg, const string& file, int line);
00093 
00095   void checkForErrors(const string& msg, const string& query, const string& file, int line);
00096 
00097   IOManagerDB();  
00098   //MysqlQuery getQuery() const; ///< get a null query.
00099   static IOManagerDB* s_man; 
00100 
00103   boost::shared_ptr<ZlibStringCompressor> m_compressor;
00104   //AJB ONLY FOR MYSQL++ boost::shared_ptr<Connection> m_connection; ///< pointer to the database connection
00105 
00106   MYSQL* m_mysql; 
00107   
00111   static const SctData::ResultHeader& getHeader( const Sct::Serializable& ob);
00115   //void prepareInsertion(const Sct::Serializable& ob, MysqlQuery& q) const;
00120   //static std::string getQueryMatching(const string& name);
00124   static std::string getTable(const Sct::Serializable& ob);
00125 
00126   std::string m_locationName;
00127 };
00128 }
00129 #endif //SCT_ARCHIVEFILE_IOMANAGERARCHIVEFILE_H

Generated on Fri Sep 16 18:01:52 2005 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5