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
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
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 }