CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_13_patch3/src/OnlineDB/EcalCondDB/src/ODTTCciCycle.cc

Go to the documentation of this file.
00001 #include <stdexcept>
00002 #include "OnlineDB/Oracle/interface/Oracle.h"
00003 
00004 #include "OnlineDB/EcalCondDB/interface/ODTTCciCycle.h"
00005 
00006 using namespace std;
00007 using namespace oracle::occi;
00008 
00009 ODTTCciCycle::ODTTCciCycle()
00010 {
00011   m_env = NULL;
00012   m_conn = NULL;
00013   m_writeStmt = NULL;
00014   m_readStmt = NULL;
00015   //
00016   m_ID = 0;
00017   m_ttcci_config_id = 0;
00018 }
00019 
00020 
00021 ODTTCciCycle::~ODTTCciCycle()
00022 {
00023 }
00024 
00025 
00026 void ODTTCciCycle::prepareWrite()
00027   throw(std::runtime_error)
00028 {
00029   this->checkConnection();
00030 
00031   try {
00032     m_writeStmt = m_conn->createStatement();
00033     m_writeStmt->setSQL("INSERT INTO ECAL_TTCci_Cycle (cycle_id, ttcci_configuration_id ) "
00034                  "VALUES (:1, :2 )");
00035   } catch (SQLException &e) {
00036     throw(std::runtime_error("ODTTCciCycle::prepareWrite():  "+e.getMessage()));
00037   }
00038 }
00039 
00040 
00041 void ODTTCciCycle::writeDB()  throw(std::runtime_error)
00042 {
00043   this->checkConnection();
00044   this->checkPrepare();
00045 
00046   try {
00047 
00048     m_writeStmt->setInt(1, this->getId());
00049     m_writeStmt->setInt(2, this->getTTCciConfigurationID());
00050 
00051     m_writeStmt->executeUpdate();
00052 
00053 
00054   } catch (SQLException &e) {
00055     throw(std::runtime_error("ODTTCciCycle::writeDB:  "+e.getMessage()));
00056   }
00057 
00058   // Now get the ID
00059   if (!this->fetchID()) {
00060     throw(std::runtime_error("ODTTCciCycle::writeDB:  Failed to write"));
00061   }
00062   
00063  
00064 }
00065 
00066 void ODTTCciCycle::clear(){
00067   m_ttcci_config_id=0;
00068 }
00069 
00070 
00071 int ODTTCciCycle::fetchID()
00072   throw(std::runtime_error)
00073 {
00074   // Return from memory if available
00075   if (m_ID) {
00076     return m_ID;
00077   }
00078 
00079   this->checkConnection();
00080 
00081   try {
00082     Statement* stmt = m_conn->createStatement();
00083     stmt->setSQL("SELECT cycle_id, ttcci_configuration_id FROM ecal_ttcci_cycle "
00084                  "WHERE cycle_id = :1 ");
00085     stmt->setInt(1, m_ID);
00086     ResultSet* rset = stmt->executeQuery();
00087 
00088     if (rset->next()) {
00089       m_ID = rset->getInt(1);
00090       m_ttcci_config_id = rset->getInt(2);
00091     } else {
00092       m_ID = 0;
00093     }
00094     m_conn->terminateStatement(stmt);
00095   } catch (SQLException &e) {
00096     throw(std::runtime_error("ODTTCciCycle::fetchID:  "+e.getMessage()));
00097   }
00098 
00099   return m_ID;
00100 }
00101 
00102 
00103 
00104 void ODTTCciCycle::setByID(int id) 
00105   throw(std::runtime_error)
00106 {
00107    this->checkConnection();
00108 
00109 
00110   try {
00111     Statement* stmt = m_conn->createStatement();
00112     stmt->setSQL("SELECT cycle_id, ttcci_configuration_id FROM ecal_ttcci_cycle "
00113                  "WHERE cycle_id = :1 ");
00114     stmt->setInt(1, id);
00115     ResultSet* rset = stmt->executeQuery();
00116 
00117     if (rset->next()) {
00118       m_ID = rset->getInt(1);
00119       m_ttcci_config_id = rset->getInt(2);
00120     } else {
00121       m_ID = 0;
00122     }
00123     m_conn->terminateStatement(stmt);
00124   } catch (SQLException &e) {
00125     throw(std::runtime_error("ODTTCciCycle::fetchID:  "+e.getMessage()));
00126   }
00127 }
00128 
00129 
00130 
00131 void ODTTCciCycle::fetchData(ODTTCciCycle * result)
00132   throw(std::runtime_error)
00133 {
00134   this->checkConnection();
00135   result->clear();
00136 
00137   if(result->getId()==0){
00138     throw(std::runtime_error("ODTTCciConfig::fetchData(): no Id defined for this ODTTCciConfig "));
00139   }
00140 
00141   try {
00142 
00143     m_readStmt->setSQL("SELECT  ttcci_configuration_id FROM ecal_ttcci_cycle "
00144                  "WHERE cycle_id = :1 ");
00145 
00146     m_readStmt->setInt(1, result->getId());
00147     ResultSet* rset = m_readStmt->executeQuery();
00148 
00149     rset->next();
00150 
00151     result->setTTCciConfigurationID(       rset->getInt(1) );
00152 
00153   } catch (SQLException &e) {
00154     throw(std::runtime_error("ODTTCciCycle::fetchData():  "+e.getMessage()));
00155   }
00156 }
00157 
00158 
00159 void ODTTCciCycle::insertConfig()
00160   throw(std::runtime_error)
00161 {
00162   try {
00163 
00164     prepareWrite();
00165     writeDB();
00166     m_conn->commit();
00167     terminateWriteStatement();
00168   } catch (std::runtime_error &e) {
00169     m_conn->rollback();
00170     throw(e);
00171   } catch (...) {
00172     m_conn->rollback();
00173     throw(std::runtime_error("EcalCondDBInterface::insertDataSet:  Unknown exception caught"));
00174   }
00175 }