CMS 3D CMS Logo

MODDCCDetailsDat.cc
Go to the documentation of this file.
1 #include <stdexcept>
2 #include <string>
4 
7 
8 using namespace std;
9 using namespace oracle::occi;
10 
12  m_env = nullptr;
13  m_conn = nullptr;
14  m_writeStmt = nullptr;
15  m_readStmt = nullptr;
16 
17  m_qpll = 0;
18  m_opto = 0;
19  m_tout = 0;
20  m_head = 0;
21  m_evnu = 0;
22  m_bxnu = 0;
23  m_evpa = 0;
24  m_odpa = 0;
25  m_blsi = 0;
26  m_alff = 0;
27  m_fuff = 0;
28  m_fusu = 0;
29 }
30 
32 
34  this->checkConnection();
35 
36  try {
37  m_writeStmt = m_conn->createStatement();
38  m_writeStmt->setSQL(" INSERT INTO " + getTable() +
39  " (iov_id, logic_id, "
40  " qpll_error, optical_link, data_timeout, dcc_header, event_number, bx_number, "
41  " even_parity, odd_parity, block_size, almost_full_fifo, full_fifo, "
42  " forced_full_supp ) "
43  " VALUES (:iov_id, :logic_id, "
44  " :1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12 ) ");
45  } catch (SQLException& e) {
46  throw(std::runtime_error("MODDCCDetailsDat::prepareWrite(): " + e.getMessage()));
47  }
48 }
49 
50 void MODDCCDetailsDat::writeDB(const EcalLogicID* ecid, const MODDCCDetailsDat* item, MODRunIOV* iov) noexcept(false) {
51  this->checkConnection();
52  this->checkPrepare();
53 
54  int iovID = iov->fetchID();
55  if (!iovID) {
56  throw(std::runtime_error("MODDCCDetailsDat::writeDB: IOV not in DB"));
57  }
58 
59  int logicID = ecid->getLogicID();
60  if (!logicID) {
61  throw(std::runtime_error("MODDCCDetailsDat::writeDB: Bad EcalLogicID"));
62  }
63 
64  try {
65  m_writeStmt->setInt(1, iovID);
66  m_writeStmt->setInt(2, logicID);
67  m_writeStmt->setInt(3, item->getQPLL());
68  m_writeStmt->setInt(4, item->getOpticalLink());
69  m_writeStmt->setInt(5, item->getDataTimeout());
70  m_writeStmt->setInt(6, item->getHeader());
71  m_writeStmt->setInt(7, item->getEventNumber());
72  m_writeStmt->setInt(8, item->getBXNumber());
73  m_writeStmt->setInt(9, item->getEvenParity());
74  m_writeStmt->setInt(10, item->getOddParity());
75  m_writeStmt->setInt(11, item->getBlockSize());
76  m_writeStmt->setInt(12, item->getAlmostFullFIFO());
77  m_writeStmt->setInt(13, item->getFullFIFO());
78  m_writeStmt->setInt(14, item->getForcedFullSupp());
79 
80  m_writeStmt->executeUpdate();
81  } catch (SQLException& e) {
82  throw(std::runtime_error("MODDCCDetailsDat::writeDB(): " + e.getMessage()));
83  }
84 }
85 
86 void MODDCCDetailsDat::fetchData(std::map<EcalLogicID, MODDCCDetailsDat>* fillMap, MODRunIOV* iov) noexcept(false) {
87  this->checkConnection();
88  fillMap->clear();
89 
90  iov->setConnection(m_env, m_conn);
91  int iovID = iov->fetchID();
92  if (!iovID) {
93  // throw(std::runtime_error("MODDCCDetailsDat::writeDB: IOV not in DB"));
94  return;
95  }
96 
97  try {
98  m_readStmt->setSQL(
99  "SELECT cv.name, cv.logic_id, cv.id1, cv.id2, cv.id3, cv.maps_to, "
100  " d.qpll_error, d.optical_link, d.data_timeout, d.dcc_header, d.event_number, d.bx_number, d.even_parity, "
101  "d.odd_parity, d.block_size, d.almost_full_fifo, d.full_fifo, d.forced_full_supp "
102  "FROM channelview cv JOIN " +
103  getTable() +
104  " d "
105  "ON cv.logic_id = d.logic_id AND cv.name = cv.maps_to "
106  "WHERE d.iov_id = :iov_id");
107  m_readStmt->setInt(1, iovID);
108  ResultSet* rset = m_readStmt->executeQuery();
109 
110  std::pair<EcalLogicID, MODDCCDetailsDat> p;
111  MODDCCDetailsDat dat;
112  while (rset->next()) {
113  p.first = EcalLogicID(rset->getString(1), // name
114  rset->getInt(2), // logic_id
115  rset->getInt(3), // id1
116  rset->getInt(4), // id2
117  rset->getInt(5), // id3
118  rset->getString(6)); // maps_to
119 
120  dat.setQPLL(rset->getInt(7));
121  dat.setOpticalLink(rset->getInt(8));
122  dat.setDataTimeout(rset->getInt(9));
123  dat.setHeader(rset->getInt(10));
124  dat.setEventNumber(rset->getInt(11));
125  dat.setBXNumber(rset->getInt(12));
126  dat.setEvenParity(rset->getInt(13));
127  dat.setOddParity(rset->getInt(14));
128  dat.setBlockSize(rset->getInt(15));
129  dat.setAlmostFullFIFO(rset->getInt(16));
130  dat.setFullFIFO(rset->getInt(17));
131  dat.setForcedFullSupp(rset->getInt(18));
132 
133  p.second = dat;
134  fillMap->insert(p);
135  }
136  } catch (SQLException& e) {
137  throw(std::runtime_error("MODDCCDetailsDat::fetchData(): " + e.getMessage()));
138  }
139 }
140 
141 void MODDCCDetailsDat::writeArrayDB(const std::map<EcalLogicID, MODDCCDetailsDat>* data,
142  MODRunIOV* iov) noexcept(false) {
143  this->checkConnection();
144  this->checkPrepare();
145 
146  int iovID = iov->fetchID();
147  if (!iovID) {
148  throw(std::runtime_error("MODDCCDetailsDat::writeArrayDB: IOV not in DB"));
149  }
150 
151  int nrows = data->size();
152  int* ids = new int[nrows];
153  int* iovid_vec = new int[nrows];
154  int* xx1 = new int[nrows];
155  int* xx2 = new int[nrows];
156  int* xx3 = new int[nrows];
157  int* xx4 = new int[nrows];
158  int* xx5 = new int[nrows];
159  int* xx6 = new int[nrows];
160  int* xx7 = new int[nrows];
161  int* xx8 = new int[nrows];
162  int* xx9 = new int[nrows];
163  int* xx10 = new int[nrows];
164  int* xx11 = new int[nrows];
165  int* xx12 = new int[nrows];
166 
167  ub2* ids_len = new ub2[nrows];
168  ub2* iov_len = new ub2[nrows];
169  ub2* x1_len = new ub2[nrows];
170  ub2* x2_len = new ub2[nrows];
171  ub2* x3_len = new ub2[nrows];
172  ub2* x4_len = new ub2[nrows];
173  ub2* x5_len = new ub2[nrows];
174  ub2* x6_len = new ub2[nrows];
175  ub2* x7_len = new ub2[nrows];
176  ub2* x8_len = new ub2[nrows];
177  ub2* x9_len = new ub2[nrows];
178  ub2* x10_len = new ub2[nrows];
179  ub2* x11_len = new ub2[nrows];
180  ub2* x12_len = new ub2[nrows];
181 
182  const EcalLogicID* channel;
183  const MODDCCDetailsDat* dataitem;
184  int count = 0;
185  typedef map<EcalLogicID, MODDCCDetailsDat>::const_iterator CI;
186  for (CI p = data->begin(); p != data->end(); ++p) {
187  channel = &(p->first);
188  int logicID = channel->getLogicID();
189  if (!logicID) {
190  throw(std::runtime_error("MODDCCDetailsDat::writeArrayDB: Bad EcalLogicID"));
191  }
192  ids[count] = logicID;
193  iovid_vec[count] = iovID;
194 
195  dataitem = &(p->second);
196  // dataIface.writeDB( channel, dataitem, iov);
197  int x1 = dataitem->getQPLL();
198  int x2 = dataitem->getOpticalLink();
199  int x3 = dataitem->getDataTimeout();
200  int x4 = dataitem->getHeader();
201  int x5 = dataitem->getEventNumber();
202  int x6 = dataitem->getBXNumber();
203  int x7 = dataitem->getEvenParity();
204  int x8 = dataitem->getOddParity();
205  int x9 = dataitem->getBlockSize();
206  int x10 = dataitem->getAlmostFullFIFO();
207  int x11 = dataitem->getFullFIFO();
208  int x12 = dataitem->getForcedFullSupp();
209 
210  xx1[count] = x1;
211  xx2[count] = x2;
212  xx3[count] = x3;
213  xx4[count] = x4;
214  xx5[count] = x5;
215  xx6[count] = x6;
216  xx7[count] = x7;
217  xx8[count] = x8;
218  xx9[count] = x9;
219  xx10[count] = x10;
220  xx11[count] = x11;
221  xx12[count] = x12;
222 
223  ids_len[count] = sizeof(ids[count]);
224  iov_len[count] = sizeof(iovid_vec[count]);
225 
226  x1_len[count] = sizeof(xx1[count]);
227  x2_len[count] = sizeof(xx2[count]);
228  x3_len[count] = sizeof(xx3[count]);
229  x4_len[count] = sizeof(xx4[count]);
230  x5_len[count] = sizeof(xx5[count]);
231  x6_len[count] = sizeof(xx6[count]);
232  x7_len[count] = sizeof(xx7[count]);
233  x8_len[count] = sizeof(xx8[count]);
234  x9_len[count] = sizeof(xx9[count]);
235  x10_len[count] = sizeof(xx10[count]);
236  x11_len[count] = sizeof(xx11[count]);
237  x12_len[count] = sizeof(xx12[count]);
238 
239  count++;
240  }
241 
242  try {
243  m_writeStmt->setDataBuffer(1, (dvoid*)iovid_vec, OCCIINT, sizeof(iovid_vec[0]), iov_len);
244  m_writeStmt->setDataBuffer(2, (dvoid*)ids, OCCIINT, sizeof(ids[0]), ids_len);
245  m_writeStmt->setDataBuffer(3, (dvoid*)xx1, OCCIINT, sizeof(xx1[0]), x1_len);
246  m_writeStmt->setDataBuffer(4, (dvoid*)xx2, OCCIINT, sizeof(xx2[0]), x2_len);
247  m_writeStmt->setDataBuffer(5, (dvoid*)xx3, OCCIINT, sizeof(xx3[0]), x3_len);
248  m_writeStmt->setDataBuffer(6, (dvoid*)xx4, OCCIINT, sizeof(xx4[0]), x4_len);
249  m_writeStmt->setDataBuffer(7, (dvoid*)xx5, OCCIINT, sizeof(xx5[0]), x5_len);
250  m_writeStmt->setDataBuffer(8, (dvoid*)xx6, OCCIINT, sizeof(xx6[0]), x6_len);
251  m_writeStmt->setDataBuffer(9, (dvoid*)xx7, OCCIINT, sizeof(xx7[0]), x7_len);
252  m_writeStmt->setDataBuffer(10, (dvoid*)xx8, OCCIINT, sizeof(xx8[0]), x8_len);
253  m_writeStmt->setDataBuffer(11, (dvoid*)xx9, OCCIINT, sizeof(xx9[0]), x9_len);
254  m_writeStmt->setDataBuffer(12, (dvoid*)xx10, OCCIINT, sizeof(xx10[0]), x10_len);
255  m_writeStmt->setDataBuffer(13, (dvoid*)xx11, OCCIINT, sizeof(xx11[0]), x11_len);
256  m_writeStmt->setDataBuffer(14, (dvoid*)xx12, OCCIINT, sizeof(xx12[0]), x12_len);
257 
258  m_writeStmt->executeArrayUpdate(nrows);
259 
260  delete[] ids;
261  delete[] iovid_vec;
262  delete[] xx1;
263  delete[] xx2;
264  delete[] xx3;
265  delete[] xx4;
266  delete[] xx5;
267  delete[] xx6;
268  delete[] xx7;
269  delete[] xx8;
270  delete[] xx9;
271  delete[] xx10;
272  delete[] xx11;
273  delete[] xx12;
274 
275  delete[] ids_len;
276  delete[] iov_len;
277  delete[] x1_len;
278  delete[] x2_len;
279  delete[] x3_len;
280  delete[] x4_len;
281  delete[] x5_len;
282  delete[] x6_len;
283  delete[] x7_len;
284  delete[] x8_len;
285  delete[] x9_len;
286  delete[] x10_len;
287  delete[] x11_len;
288  delete[] x12_len;
289 
290  } catch (SQLException& e) {
291  throw(std::runtime_error("MonPedestalsDat::writeArrayDB(): " + e.getMessage()));
292  }
293 }
void fetchData(std::map< EcalLogicID, MODDCCDetailsDat > *fillMap, MODRunIOV *iov) noexcept(false)
int getForcedFullSupp() const
void setHeader(int x)
void setOddParity(int x)
void setBXNumber(int x)
int getBlockSize() const
void writeDB(const EcalLogicID *ecid, const MODDCCDetailsDat *item, MODRunIOV *iov) noexcept(false)
void setEventNumber(int x)
void setEvenParity(int x)
int getOddParity() const
int getDataTimeout() const
void setQPLL(int x)
int getBXNumber() const
void setFullFIFO(int x)
int getFullFIFO() const
int getLogicID() const
Definition: EcalLogicID.cc:28
void setDataTimeout(int x)
~MODDCCDetailsDat() override
void writeArrayDB(const std::map< EcalLogicID, MODDCCDetailsDat > *data, MODRunIOV *iov) noexcept(false)
int getOpticalLink() const
int getEventNumber() const
int getEvenParity() const
void setForcedFullSupp(int x)
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:80
int getHeader() const
int getQPLL() const
void setAlmostFullFIFO(int x)
int getAlmostFullFIFO() const
void prepareWrite() noexcept(false) override
void setOpticalLink(int x)
void setBlockSize(int x)