File indexing completed on 2024-04-06 12:23:03
0001 #include <stdexcept>
0002 #include <string>
0003 #include "OnlineDB/Oracle/interface/Oracle.h"
0004
0005 #include "OnlineDB/EcalCondDB/interface/FEConfigOddWeightModeDat.h"
0006 #include "OnlineDB/EcalCondDB/interface/FEConfigOddWeightInfo.h"
0007 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0008
0009 using namespace std;
0010 using namespace oracle::occi;
0011
0012 FEConfigOddWeightModeDat::FEConfigOddWeightModeDat() {
0013 m_env = nullptr;
0014 m_conn = nullptr;
0015 m_writeStmt = nullptr;
0016 m_readStmt = nullptr;
0017
0018 m_en_EB_flt = 0;
0019 m_en_EE_flt = 0;
0020 m_en_EB_pf = 0;
0021 m_en_EE_pf = 0;
0022 m_dis_EB_even_pf = 0;
0023 m_dis_EE_even_pf = 0;
0024 m_fe_EB_strout = 0;
0025 m_fe_EE_strout = 0;
0026 m_fe_EB_strib2 = 0;
0027 m_fe_EE_strib2 = 0;
0028 m_fe_EB_tcpout = 0;
0029 m_fe_EB_tcpib1 = 0;
0030 m_fe_EE_tcpout = 0;
0031 m_fe_EE_tcpib1 = 0;
0032 m_fe_par15 = 0;
0033 m_fe_par16 = 0;
0034 m_fe_par17 = 0;
0035 m_fe_par18 = 0;
0036 }
0037
0038 FEConfigOddWeightModeDat::~FEConfigOddWeightModeDat() {}
0039
0040 void FEConfigOddWeightModeDat::prepareWrite() noexcept(false) {
0041 this->checkConnection();
0042
0043 try {
0044 m_writeStmt = m_conn->createStatement();
0045 m_writeStmt->setSQL(
0046 "INSERT INTO " + getTable() +
0047 " (wei2_conf_id, "
0048 " enableEBOddFilter, enableEEOddFilter, enableEBOddPeakFinder,enableEEOddPeakFinder, disableEBEvenPeakFinder, "
0049 "DISABLEEEEVENPEAKFINDER, fenixEBStripOutput, fenixEEStripOutput, FenixEBStripInfoBit2, fenixEEStripInfobit2, "
0050 "EBfenixTcpOutput, EBfenixTCPInfobit1,EEFENIXTCPOUTPUT, EEFENIXTCPINFOBIT1 ,fenixpar15, fenixpar16, "
0051 "fenixpar17, fenixpar18 ) "
0052 "VALUES (:wei2_conf_id, "
0053 " :w1, :w2, :w3, :w4, :w5, :w6, :w7, :w8, :w9, :w10, :w11, :w12, :w13, :w14, :w15 , :w16, :w17, :w18 )");
0054 } catch (SQLException& e) {
0055 throw cms::Exception("SQLException") << "FEConfigOddWeightModeDat::prepareWrite(): " << e.getMessage();
0056 }
0057 }
0058
0059 void FEConfigOddWeightModeDat::writeDB(const EcalLogicID* ecid,
0060 const FEConfigOddWeightModeDat* item,
0061 FEConfigOddWeightInfo* iconf) noexcept(false) {
0062 this->checkConnection();
0063 this->checkPrepare();
0064
0065 int iconfID = iconf->fetchID();
0066 if (!iconfID) {
0067 throw(std::runtime_error("FEConfigOddWeightModeDat::writeDB: ICONF not in DB"));
0068 }
0069
0070 try {
0071 m_writeStmt->setInt(1, iconfID);
0072
0073 m_writeStmt->setInt(2, item->getFenixPar1());
0074 m_writeStmt->setInt(3, item->getFenixPar2());
0075 m_writeStmt->setInt(4, item->getFenixPar3());
0076 m_writeStmt->setInt(5, item->getFenixPar4());
0077 m_writeStmt->setInt(6, item->getFenixPar5());
0078 m_writeStmt->setInt(7, item->getFenixPar6());
0079 m_writeStmt->setInt(8, item->getFenixPar7());
0080 m_writeStmt->setInt(9, item->getFenixPar8());
0081 m_writeStmt->setInt(10, item->getFenixPar9());
0082 m_writeStmt->setInt(11, item->getFenixPar10());
0083 m_writeStmt->setInt(12, item->getFenixPar11());
0084 m_writeStmt->setInt(13, item->getFenixPar12());
0085 m_writeStmt->setInt(14, item->getFenixPar13());
0086 m_writeStmt->setInt(15, item->getFenixPar14());
0087 m_writeStmt->setInt(16, item->getFenixPar15());
0088 m_writeStmt->setInt(17, item->getFenixPar16());
0089 m_writeStmt->setInt(18, item->getFenixPar17());
0090 m_writeStmt->setInt(19, item->getFenixPar18());
0091
0092 m_writeStmt->executeUpdate();
0093 } catch (SQLException& e) {
0094 throw cms::Exception("SQLException") << "FEConfigOddWeightModeDat::writeDB(): " << e.getMessage();
0095 }
0096 }
0097
0098 void FEConfigOddWeightModeDat::fetchData(map<EcalLogicID, FEConfigOddWeightModeDat>* fillMap,
0099 FEConfigOddWeightInfo* iconf) noexcept(false) {
0100 this->checkConnection();
0101 fillMap->clear();
0102
0103 iconf->setConnection(m_env, m_conn);
0104 int iconfID = iconf->fetchID();
0105 if (!iconfID) {
0106 throw(std::runtime_error("FEConfigOddWeightModeDat::fetchData: ICONF not in DB"));
0107 return;
0108 }
0109
0110 try {
0111 m_readStmt->setSQL(
0112 "SELECT enableEBOddFilter, enableEEOddFilter, enableEBOddPeakFinder,enableEEOddPeakFinder, "
0113 "disableEBEvenPeakFinder, DISABLEEEEVENPEAKFINDER, fenixEBStripOutput, fenixEBStripOutput, "
0114 "FenixEBStripInfoBit2, fenixEEStripInfobit2, EBfenixTcpOutput, EBfenixTCPInfobit1,EEFENIXTCPOUTPUT, "
0115 "EEFENIXTCPINFOBIT1 ,fenixpar15, fenixpar16, fenixpar17, fenixpar18 "
0116 "FROM " +
0117 getTable() +
0118 " d "
0119 "WHERE wei2_conf_id = :wei2_conf_id ");
0120 m_readStmt->setInt(1, iconfID);
0121 ResultSet* rset = m_readStmt->executeQuery();
0122
0123 std::pair<EcalLogicID, FEConfigOddWeightModeDat> p;
0124 FEConfigOddWeightModeDat dat;
0125 int ig = -1;
0126 while (rset->next()) {
0127 ig++;
0128 p.first = EcalLogicID("Group_id",
0129 ig);
0130
0131 dat.setFenixPar1(rset->getInt(1));
0132 dat.setFenixPar2(rset->getInt(2));
0133 dat.setFenixPar3(rset->getInt(3));
0134 dat.setFenixPar4(rset->getInt(4));
0135 dat.setFenixPar5(rset->getInt(5));
0136 dat.setFenixPar6(rset->getInt(6));
0137 dat.setFenixPar7(rset->getInt(7));
0138 dat.setFenixPar8(rset->getInt(8));
0139 dat.setFenixPar9(rset->getInt(9));
0140 dat.setFenixPar10(rset->getInt(10));
0141 dat.setFenixPar11(rset->getInt(11));
0142 dat.setFenixPar12(rset->getInt(12));
0143 dat.setFenixPar13(rset->getInt(13));
0144 dat.setFenixPar14(rset->getInt(14));
0145 dat.setFenixPar15(rset->getInt(15));
0146 dat.setFenixPar16(rset->getInt(16));
0147 dat.setFenixPar17(rset->getInt(17));
0148 dat.setFenixPar18(rset->getInt(18));
0149
0150 p.second = dat;
0151 fillMap->insert(p);
0152 }
0153 } catch (SQLException& e) {
0154 throw cms::Exception("SQLException") << "FEConfigOddWeightModeDat::fetchData: " << e.getMessage();
0155 }
0156 }
0157
0158 void FEConfigOddWeightModeDat::writeArrayDB(const std::map<EcalLogicID, FEConfigOddWeightModeDat>* data,
0159 FEConfigOddWeightInfo* iconf) noexcept(false) {
0160 const EcalLogicID* channel;
0161 const FEConfigOddWeightModeDat* dataitem;
0162
0163 typedef map<EcalLogicID, FEConfigOddWeightModeDat>::const_iterator CI;
0164 for (CI p = data->begin(); p != data->end(); ++p) {
0165 channel = &(p->first);
0166 dataitem = &(p->second);
0167 writeDB(channel, dataitem, iconf);
0168 }
0169 }