CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 
42  throw(std::runtime_error)
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 
62  throw(std::runtime_error)
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  throw(std::runtime_error)
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;
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  throw(std::runtime_error)
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 setHeader(int x)
void writeDB(const EcalLogicID *ecid, const MODDCCDetailsDat *item, MODRunIOV *iov)
void setOddParity(int x)
void setBXNumber(int x)
void fetchData(std::map< EcalLogicID, MODDCCDetailsDat > *fillMap, MODRunIOV *iov)
void setEventNumber(int x)
void setEvenParity(int x)
#define NULL
Definition: scimark2.h:8
int getEventNumber() const
int getFullFIFO() const
oracle::occi::SQLException SQLException
Definition: HcalDbOmds.cc:27
void setQPLL(int x)
void setFullFIFO(int x)
int getBlockSize() const
int getAlmostFullFIFO() const
tuple iov
Definition: o2o.py:307
void setDataTimeout(int x)
int getQPLL() const
int getDataTimeout() const
int getLogicID() const
Definition: EcalLogicID.cc:41
int getForcedFullSupp() const
int getHeader() const
int getOpticalLink() const
void writeArrayDB(const std::map< EcalLogicID, MODDCCDetailsDat > *data, MODRunIOV *iov)
static std::vector< std::string > checklist dat
oracle::occi::ResultSet ResultSet
Definition: HcalDbOmds.cc:26
void setForcedFullSupp(int x)
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
void setAlmostFullFIFO(int x)
int getEvenParity() const
void setOpticalLink(int x)
void setBlockSize(int x)
int getBXNumber() const