File indexing completed on 2023-03-17 11:15:22
0001 #include <string>
0002 #include "OnlineDB/Oracle/interface/Oracle.h"
0003
0004 #include "OnlineDB/EcalCondDB/interface/MonVersionDef.h"
0005
0006 using namespace std;
0007 using namespace oracle::occi;
0008
0009 MonVersionDef::MonVersionDef() {
0010 m_env = nullptr;
0011 m_conn = nullptr;
0012 m_ID = 0;
0013 m_monVer = "";
0014 m_desc = "";
0015 }
0016
0017 MonVersionDef::~MonVersionDef() {}
0018
0019 string MonVersionDef::getMonitoringVersion() const { return m_monVer; }
0020
0021 void MonVersionDef::setMonitoringVersion(string ver) {
0022 if (ver != m_monVer) {
0023 m_ID = 0;
0024 m_monVer = ver;
0025 }
0026 }
0027
0028 string MonVersionDef::getDescription() const { return m_desc; }
0029
0030 int MonVersionDef::fetchID() noexcept(false) {
0031
0032 if (m_ID) {
0033 return m_ID;
0034 }
0035
0036 this->checkConnection();
0037
0038 try {
0039 Statement* stmt = m_conn->createStatement();
0040 stmt->setSQL(
0041 "SELECT def_id FROM mon_version_def WHERE "
0042 "mon_ver = :1");
0043 stmt->setString(1, m_monVer);
0044
0045 ResultSet* rset = stmt->executeQuery();
0046
0047 if (rset->next()) {
0048 m_ID = rset->getInt(1);
0049 } else {
0050 m_ID = 0;
0051 }
0052 m_conn->terminateStatement(stmt);
0053 } catch (SQLException& e) {
0054 throw(std::runtime_error("MonVersionDef::fetchID: " + e.getMessage()));
0055 }
0056
0057 return m_ID;
0058 }
0059
0060 void MonVersionDef::setByID(int id) noexcept(false) {
0061 this->checkConnection();
0062
0063 try {
0064 Statement* stmt = m_conn->createStatement();
0065
0066 stmt->setSQL("SELECT mon_ver, description FROM mon_version_def WHERE def_id = :1");
0067 stmt->setInt(1, id);
0068
0069 ResultSet* rset = stmt->executeQuery();
0070 if (rset->next()) {
0071 m_monVer = rset->getString(1);
0072 m_desc = rset->getString(2);
0073 } else {
0074 throw(std::runtime_error("MonVersionDef::setByID: Given def_id is not in the database"));
0075 }
0076
0077 m_conn->terminateStatement(stmt);
0078 } catch (SQLException& e) {
0079 throw(std::runtime_error("MonVersionDef::setByID: " + e.getMessage()));
0080 }
0081 }
0082
0083 void MonVersionDef::fetchAllDefs(std::vector<MonVersionDef>* fillVec) noexcept(false) {
0084 this->checkConnection();
0085 try {
0086 Statement* stmt = m_conn->createStatement();
0087 stmt->setSQL("SELECT def_id FROM mon_version_def ORDER BY def_id");
0088 ResultSet* rset = stmt->executeQuery();
0089
0090 MonVersionDef monVersionDef;
0091 monVersionDef.setConnection(m_env, m_conn);
0092
0093 while (rset->next()) {
0094 monVersionDef.setByID(rset->getInt(1));
0095 fillVec->push_back(monVersionDef);
0096 }
0097 } catch (SQLException& e) {
0098 throw(std::runtime_error("MonVersionDef::fetchAllDefs: " + e.getMessage()));
0099 }
0100 }