CMS 3D CMS Logo

ODPedestalOffsetsDat.cc
Go to the documentation of this file.
1 #include <stdexcept>
2 #include <string>
4 
6 
7 using namespace std;
8 using namespace oracle::occi;
9 
11 {
12  m_env = nullptr;
13  m_conn = nullptr;
14  m_writeStmt = nullptr;
15  m_readStmt = nullptr;
16 
17  m_sm = 0;
18  m_fed = 0;
19  m_tt = 0;
20  m_xt = 0;
21  m_low = 0;
22  m_mid = 0;
23  m_high = 0;
24 }
25 
26 
27 
29 {
30 }
31 
32 
33 
36 {
37  this->checkConnection();
38 
39  try {
40  m_writeStmt = m_conn->createStatement();
41  m_writeStmt->setSQL("INSERT INTO "+getTable()+" (rec_id, sm_id, fed_id, tt_id, cry_id, low, mid, high) "
42  "VALUES (:1, :2, :3, :4, :5, :6, :7, :8 )");
43  } catch (SQLException &e) {
44  throw(std::runtime_error(std::string("ODPedestalOffsetsDat::prepareWrite(): ")+getOraMessage(&e)));
45  }
46 }
47 
48 
49 
51  noexcept(false)
52 {
53  this->checkConnection();
54 
55  try {
56  m_writeStmt->setInt(1, item->getId());
57  m_writeStmt->setInt(2, item->getSMId());
58  m_writeStmt->setInt(3, item->getFedId() );
59  m_writeStmt->setInt(4, item->getTTId() );
60  m_writeStmt->setInt(5, item->getCrystalId() );
61  m_writeStmt->setInt(6, item->getLow() );
62  m_writeStmt->setInt(7, item->getMid() );
63  m_writeStmt->setInt(8, item->getHigh() );
64 
65  m_writeStmt->executeUpdate();
66  } catch (SQLException &e) {
67  throw(std::runtime_error(std::string("ODPedestalOffsetsDat::writeDB(): ")+getOraMessage(&e)));
68  }
69 }
70 
71 
72 
73 void ODPedestalOffsetsDat::fetchData(std::vector< ODPedestalOffsetsDat >* p, ODFEPedestalOffsetInfo* iov)
74  noexcept(false)
75 {
76  this->checkConnection();
77 
78  iov->setConnection(m_env, m_conn);
79  int iovID = iov->fetchID();
80  if (!iovID) {
81  std::cout <<"ID not in the DB"<< endl;
82  return;
83  }
84 
85  try {
86  m_readStmt->setSQL("SELECT * FROM " + getTable() + " WHERE rec_id = :rec_id order by sm_id, fed_id, tt_id, cry_id");
87  m_readStmt->setInt(1, iovID);
88  ResultSet* rset = m_readStmt->executeQuery();
89 
90  // std::vector< ODPedestalOffsetsDat > p;
92  while(rset->next()) {
93  // dat.setId( rset->getInt(1) );
94  dat.setSMId( rset->getInt(2) );
95  dat.setFedId( rset->getInt(3) );
96  dat.setTTId( rset->getInt(4) );
97  dat.setCrystalId( rset->getInt(5) );
98  dat.setLow( rset->getInt(6) );
99  dat.setMid( rset->getInt(7) );
100  dat.setHigh( rset->getInt(8) );
101 
102  p->push_back( dat);
103 
104  }
105 
106 
107  } catch (SQLException &e) {
108  throw(std::runtime_error(std::string("ODPedestalOffsetsDat::fetchData(): ")+getOraMessage(&e)));
109  }
110 }
111 
112 // ************************************************************************ //
113 
114 void ODPedestalOffsetsDat::writeArrayDB(const std::vector< ODPedestalOffsetsDat >& data, ODFEPedestalOffsetInfo* iov)
115  noexcept(false)
116 {
117  this->checkConnection();
118 
119  int iovID = iov->fetchID();
120  if (!iovID) { throw(std::runtime_error("ODDelays::writeArrayDB: ODFEDelaysInfo not in DB")); }
121 
122 
123  int nrows=data.size();
124  int* ids= new int[nrows];
125  int* xx= new int[nrows];
126  int* yy= new int[nrows];
127  int* zz= new int[nrows];
128  int* st= new int[nrows];
129  int* xx1= new int[nrows];
130  int* yy1= new int[nrows];
131  int* zz1= new int[nrows];
132 
133 
134  ub2* ids_len= new ub2[nrows];
135  ub2* x_len= new ub2[nrows];
136  ub2* y_len= new ub2[nrows];
137  ub2* z_len= new ub2[nrows];
138  ub2* st_len= new ub2[nrows];
139  ub2* x1_len= new ub2[nrows];
140  ub2* y1_len= new ub2[nrows];
141  ub2* z1_len= new ub2[nrows];
142 
143  ODPedestalOffsetsDat dataitem;
144 
145  int n_data= (int) data.size();
146  for (int count = 0; count <n_data ; count++) {
147  dataitem=data[count];
148  ids[count]=iovID;
149  xx[count]=dataitem.getSMId();
150  yy[count]=dataitem.getFedId();
151  zz[count]=dataitem.getTTId();
152  st[count]=dataitem.getCrystalId();
153  xx1[count]=dataitem.getLow();
154  yy1[count]=dataitem.getMid();
155  zz1[count]=dataitem.getHigh();
156 
157 
158  ids_len[count]=sizeof(ids[count]);
159  x_len[count]=sizeof(xx[count]);
160  y_len[count]=sizeof(yy[count]);
161  z_len[count]=sizeof(zz[count]);
162  st_len[count]=sizeof(st[count]);
163  x1_len[count]=sizeof(xx1[count]);
164  y1_len[count]=sizeof(yy1[count]);
165  z1_len[count]=sizeof(zz1[count]);
166 
167 
168  }
169 
170 
171  try {
172  m_writeStmt->setDataBuffer(1, (dvoid*)ids, OCCIINT, sizeof(ids[0]),ids_len);
173  m_writeStmt->setDataBuffer(2, (dvoid*)xx, OCCIINT , sizeof(xx[0]), x_len );
174  m_writeStmt->setDataBuffer(3, (dvoid*)yy, OCCIINT , sizeof(yy[0]), y_len );
175  m_writeStmt->setDataBuffer(4, (dvoid*)zz, OCCIINT , sizeof(zz[0]), z_len );
176  m_writeStmt->setDataBuffer(5, (dvoid*)st, OCCIINT , sizeof(st[0]), st_len );
177  m_writeStmt->setDataBuffer(6, (dvoid*)xx1, OCCIINT , sizeof(xx1[0]), x1_len );
178  m_writeStmt->setDataBuffer(7, (dvoid*)yy1, OCCIINT , sizeof(yy1[0]), y1_len );
179  m_writeStmt->setDataBuffer(8, (dvoid*)zz1, OCCIINT , sizeof(zz1[0]), z1_len );
180 
181 
182  m_writeStmt->executeArrayUpdate(nrows);
183 
184  delete [] ids;
185  delete [] xx;
186  delete [] yy;
187  delete [] zz;
188  delete [] st;
189  delete [] xx1;
190  delete [] yy1;
191  delete [] zz1;
192 
193  delete [] ids_len;
194  delete [] x_len;
195  delete [] y_len;
196  delete [] z_len;
197  delete [] st_len;
198  delete [] x1_len;
199  delete [] y1_len;
200  delete [] z1_len;
201 
202  } catch (SQLException &e) {
203  throw(std::runtime_error(std::string("ODPedestalOffsetsDat::writeArrayDB(): ")+getOraMessage(&e)));
204  }
205 }
#define noexcept
void writeArrayDB(const std::vector< ODPedestalOffsetsDat > &data, ODFEPedestalOffsetInfo *iov) noexcept(false)
void writeDB(const ODPedestalOffsetsDat *item, ODFEPedestalOffsetInfo *iov) noexcept(false)
void fetchData(std::vector< ODPedestalOffsetsDat > *fillMap, ODFEPedestalOffsetInfo *iov) noexcept(false)
void prepareWrite() noexcept(false) override
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
oracle::occi::SQLException SQLException
Definition: IODConfig.h:22