Go to the documentation of this file.00001 #include <stdexcept>
00002 #include <string>
00003 #include "OnlineDB/Oracle/interface/Oracle.h"
00004
00005 #include "OnlineDB/EcalCondDB/interface/ODJBH4Config.h"
00006
00007 using namespace std;
00008 using namespace oracle::occi;
00009
00010 ODJBH4Config::ODJBH4Config()
00011 {
00012 m_env = NULL;
00013 m_conn = NULL;
00014 m_writeStmt = NULL;
00015 m_readStmt = NULL;
00016 m_config_tag="";
00017 m_ID=0;
00018 clear();
00019 }
00020
00021
00022
00023 ODJBH4Config::~ODJBH4Config()
00024 {
00025 }
00026
00027 void ODJBH4Config::clear(){
00028
00029 m_use_buffer=0;
00030 m_hal_mod_file="";
00031 m_hal_add_file="";
00032 m_hal_tab_file="";
00033 m_serial="";
00034 m_caen1="";
00035 m_caen2=0;
00036 m_caen3=0;
00037
00038 }
00039
00040
00041 int ODJBH4Config::fetchNextId() throw(std::runtime_error) {
00042
00043 int result=0;
00044 try {
00045 this->checkConnection();
00046
00047 m_readStmt = m_conn->createStatement();
00048 m_readStmt->setSQL("select ecal_JBH4_config_sq.NextVal from dual");
00049 ResultSet* rset = m_readStmt->executeQuery();
00050 while (rset->next ()){
00051 result= rset->getInt(1);
00052 }
00053 m_conn->terminateStatement(m_readStmt);
00054 return result;
00055
00056 } catch (SQLException &e) {
00057 throw(std::runtime_error("ODJBH4Config::fetchNextId(): "+e.getMessage()));
00058 }
00059
00060 }
00061
00062 void ODJBH4Config::prepareWrite()
00063 throw(std::runtime_error)
00064 {
00065 this->checkConnection();
00066 int next_id=fetchNextId();
00067
00068 try {
00069 m_writeStmt = m_conn->createStatement();
00070 m_writeStmt->setSQL("INSERT INTO ECAL_Jbh4_CONFIGURATION ( jbh4_configuration_id, jbh4_tag, "
00071 " useBuffer, halModuleFile, halAddressTableFile, halStaticTableFile, halcbd8210serialnumber, "
00072 " caenbridgetype, caenlinknumber, caenboardnumber) "
00073 " VALUES ( :1, :2, :3, :4, :5, :6, :7, :8 , :9, :10 )");
00074
00075 m_writeStmt->setInt(1, next_id);
00076 m_ID=next_id;
00077 } catch (SQLException &e) {
00078 throw(std::runtime_error("ODJBH4Config::prepareWrite(): "+e.getMessage()));
00079 }
00080 }
00081
00082
00083
00084 void ODJBH4Config::writeDB()
00085 throw(std::runtime_error)
00086 {
00087 this->checkConnection();
00088 this->checkPrepare();
00089
00090 try {
00091
00092
00093 m_writeStmt->setString(2, this->getConfigTag());
00094
00095 m_writeStmt->setInt(3, this->getUseBuffer());
00096 m_writeStmt->setString(4, this->getHalModuleFile() );
00097 m_writeStmt->setString(5, this->getHalAddressTableFile() );
00098 m_writeStmt->setString(6, this->getHalStaticTableFile() );
00099 m_writeStmt->setString(7, this->getCbd8210SerialNumber() );
00100 m_writeStmt->setString(8, this->getCaenBridgeType() );
00101 m_writeStmt->setInt(9, this->getCaenLinkNumber() );
00102 m_writeStmt->setInt(10, this->getCaenBoardNumber() );
00103
00104 m_writeStmt->executeUpdate();
00105
00106
00107 } catch (SQLException &e) {
00108 throw(std::runtime_error("ODJBH4Config::writeDB(): "+e.getMessage()));
00109 }
00110
00111 if (!this->fetchID()) {
00112 throw(std::runtime_error("ODJBH4Config::writeDB: Failed to write"));
00113 }
00114
00115 }
00116
00117
00118 void ODJBH4Config::fetchData(ODJBH4Config * result)
00119 throw(std::runtime_error)
00120 {
00121 this->checkConnection();
00122 result->clear();
00123 if(result->getId()==0){
00124 throw(std::runtime_error("ODJBH4Config::fetchData(): no Id defined for this ODJBH4Config "));
00125 }
00126
00127 try {
00128
00129 m_readStmt->setSQL("SELECT * FROM ECAL_Jbh4_CONFIGURATION "
00130 " where ( jbh4_configuration_id = :1 or jbh4_tag=:2 )");
00131 m_readStmt->setInt(1, result->getId());
00132 m_readStmt->setString(2, result->getConfigTag());
00133 ResultSet* rset = m_readStmt->executeQuery();
00134
00135 rset->next();
00136
00137 result->setId(rset->getInt(1));
00138 result->setConfigTag(rset->getString(2));
00139
00140 result->setUseBuffer( rset->getInt(3) );
00141 result->setHalModuleFile( rset->getString(4) );
00142 result->setHalAddressTableFile( rset->getString(5) );
00143 result->setHalStaticTableFile( rset->getString(6) );
00144 result->setCbd8210SerialNumber( rset->getString(7) );
00145 result->setCaenBridgeType( rset->getString(8) );
00146 result->setCaenLinkNumber( rset->getInt(9) );
00147 result->setCaenBoardNumber( rset->getInt(10) );
00148
00149 } catch (SQLException &e) {
00150 throw(std::runtime_error("ODJBH4Config::fetchData(): "+e.getMessage()));
00151 }
00152 }
00153
00154 int ODJBH4Config::fetchID() throw(std::runtime_error)
00155 {
00156
00157 if (m_ID!=0) {
00158 return m_ID;
00159 }
00160
00161 this->checkConnection();
00162
00163 try {
00164 Statement* stmt = m_conn->createStatement();
00165 stmt->setSQL("SELECT jbh4_configuration_id FROM ecal_jbh4_configuration "
00166 "WHERE jbh4_tag=:jbh4_tag ");
00167
00168
00169 stmt->setString(1, getConfigTag());
00170
00171 ResultSet* rset = stmt->executeQuery();
00172
00173 if (rset->next()) {
00174 m_ID = rset->getInt(1);
00175 } else {
00176 m_ID = 0;
00177 }
00178 m_conn->terminateStatement(stmt);
00179 } catch (SQLException &e) {
00180 throw(std::runtime_error("ODJBH4Config::fetchID: "+e.getMessage()));
00181 }
00182
00183 return m_ID;
00184 }