CMS 3D CMS Logo

ODGolBiasCurrentDat.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 
18  m_gol = 0;
19  m_fed = 0;
20  m_tt = 0;
21  m_cur = 0;
22  m_pll_cur=0;
23  m_sta=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, fed_id, tt_id, gol_id, gol_current, pll_current, status ) "
42  "VALUES (:1, :2, :3, :4, :5 , :6, :7)");
43  } catch (SQLException &e) {
44  throw(std::runtime_error("ODGolBiasCurrentDat::prepareWrite(): "+e.getMessage()));
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->getFedId() );
58  m_writeStmt->setInt(3, item->getTTId() );
59  m_writeStmt->setInt(4, item->getGolId() );
60  m_writeStmt->setInt(5, item->getCurrent() );
61  m_writeStmt->setInt(6, item->getPLLCurrent() );
62  m_writeStmt->setInt(7, item->getStatus() );
63 
64 
65  m_writeStmt->executeUpdate();
66  } catch (SQLException &e) {
67  throw(std::runtime_error("ODGolBiasCurrentDat::writeDB(): "+e.getMessage()));
68  }
69 }
70 
71 
72 
73 void ODGolBiasCurrentDat::fetchData(std::vector< ODGolBiasCurrentDat >* p, ODGolBiasCurrentInfo* 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 fed_id, tt_id, gol_id ");
87  m_readStmt->setInt(1, iovID);
88  ResultSet* rset = m_readStmt->executeQuery();
89 
90  // std::vector< ODGolBiasCurrentDat > p;
92  while(rset->next()) {
93  // dat.setId( rset->getInt(1) );
94  dat.setFedId( rset->getInt(2) );
95  dat.setTTId( rset->getInt(3) );
96  dat.setGolId( rset->getInt(4) );
97  dat.setCurrent( rset->getInt(5) );
98  dat.setPLLCurrent( rset->getInt(6) );
99  dat.setStatus( rset->getInt(7) );
100 
101  p->push_back( dat);
102 
103  }
104 
105 
106  } catch (SQLException &e) {
107  throw(std::runtime_error("ODGolBiasCurrentDat::fetchData(): "+e.getMessage()));
108  }
109 }
110 
111 // ************************************************************************ //
112 
113 void ODGolBiasCurrentDat::writeArrayDB(const std::vector< ODGolBiasCurrentDat >& data, ODGolBiasCurrentInfo* iov)
114  noexcept(false)
115 {
116  this->checkConnection();
117 
118  int iovID = iov->fetchID();
119  if (!iovID) { throw(std::runtime_error("ODDelays::writeArrayDB: ODFEDelaysInfo not in DB")); }
120 
121 
122  int nrows=data.size();
123  int* ids= new int[nrows];
124  int* xx= new int[nrows];
125  int* yy= new int[nrows];
126  int* zz= new int[nrows];
127  int* ww= new int[nrows];
128  int* kk= new int[nrows];
129  int* st= new int[nrows];
130 
131 
132 
133  ub2* ids_len= new ub2[nrows];
134  ub2* x_len= new ub2[nrows];
135  ub2* y_len= new ub2[nrows];
136  ub2* z_len= new ub2[nrows];
137  ub2* w_len= new ub2[nrows];
138  ub2* k_len= new ub2[nrows];
139  ub2* st_len= new ub2[nrows];
140 
141  ODGolBiasCurrentDat dataitem;
142 
143 
144  for (int count = 0; count != (int)data.size(); count++) {
145  dataitem=data[count];
146  ids[count]=iovID;
147  xx[count]=dataitem.getFedId();
148  yy[count]=dataitem.getTTId();
149  zz[count]=dataitem.getGolId();
150  ww[count]=dataitem.getCurrent();
151  kk[count]=dataitem.getPLLCurrent();
152  st[count]=dataitem.getStatus();
153 
154 
155  ids_len[count]=sizeof(ids[count]);
156  x_len[count]=sizeof(xx[count]);
157  y_len[count]=sizeof(yy[count]);
158  z_len[count]=sizeof(zz[count]);
159  w_len[count]=sizeof(ww[count]);
160  k_len[count]=sizeof(kk[count]);
161  st_len[count]=sizeof(st[count]);
162 
163 
164  }
165 
166 
167  try {
168  m_writeStmt->setDataBuffer(1, (dvoid*)ids, OCCIINT, sizeof(ids[0]),ids_len);
169  m_writeStmt->setDataBuffer(2, (dvoid*)xx, OCCIINT , sizeof(xx[0]), x_len );
170  m_writeStmt->setDataBuffer(3, (dvoid*)yy, OCCIINT , sizeof(yy[0]), y_len );
171  m_writeStmt->setDataBuffer(4, (dvoid*)zz, OCCIINT , sizeof(zz[0]), z_len );
172  m_writeStmt->setDataBuffer(5, (dvoid*)ww, OCCIINT , sizeof(ww[0]), w_len );
173  m_writeStmt->setDataBuffer(6, (dvoid*)kk, OCCIINT , sizeof(kk[0]), k_len );
174  m_writeStmt->setDataBuffer(7, (dvoid*)st, OCCIINT , sizeof(st[0]), st_len );
175 
176 
177  m_writeStmt->executeArrayUpdate(nrows);
178 
179  delete [] ids;
180  delete [] xx;
181  delete [] yy;
182  delete [] zz;
183  delete [] ww;
184  delete [] kk;
185  delete [] st;
186 
187  delete [] ids_len;
188  delete [] x_len;
189  delete [] y_len;
190  delete [] z_len;
191  delete [] w_len;
192  delete [] k_len;
193  delete [] st_len;
194 
195 
196  } catch (SQLException &e) {
197  throw(std::runtime_error("ODGolBiasCurrentDat::writeArrayDB(): "+e.getMessage()));
198  }
199 }
void fetchData(std::vector< ODGolBiasCurrentDat > *fillMap, ODGolBiasCurrentInfo *iov) noexcept(false)
void writeDB(const ODGolBiasCurrentDat *item, ODGolBiasCurrentInfo *iov) noexcept(false)
void prepareWrite() noexcept(false) override
#define noexcept
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
oracle::occi::SQLException SQLException
Definition: IODConfig.h:22
void writeArrayDB(const std::vector< ODGolBiasCurrentDat > &data, ODGolBiasCurrentInfo *iov) noexcept(false)