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