9 using namespace oracle::occi;
14 m_writeStmt =
nullptr;
18 for (
int i = 0;
i < 1024;
i++) {
26 this->checkConnection();
29 m_writeStmt = m_conn->createStatement();
31 "INSERT INTO fe_lut_per_group_dat (lut_conf_id, group_id, "
32 " lut_id, lut_value ) "
33 "VALUES (:lut_conf_id, :group_id, "
34 ":lut_id, :lut_value )");
35 }
catch (SQLException&
e) {
36 throw(std::runtime_error(
std::string(
"FEConfigLUTGroupDat::prepareWrite(): ") + e.getMessage()));
43 this->checkConnection();
46 int iconfID = iconf->fetchID();
48 cout <<
"iconf=" << iconfID << endl;
51 throw(std::runtime_error(
"FEConfigLUTGroupDat::writeArrayDB: ICONF not in DB"));
55 int* iconfid_vec =
new int[nrows];
56 int* xx =
new int[nrows];
57 int* yy =
new int[nrows];
58 int* zz =
new int[nrows];
60 ub2* iconf_len =
new ub2[nrows];
61 ub2* x_len =
new ub2[nrows];
62 ub2* y_len =
new ub2[nrows];
63 ub2* z_len =
new ub2[nrows];
66 iconfid_vec[
count] = iconfID;
67 int x =
item->getLUTGroupId();
83 m_writeStmt->setDataBuffer(1, (dvoid*)iconfid_vec, OCCIINT,
sizeof(iconfid_vec[0]), iconf_len);
84 m_writeStmt->setDataBuffer(2, (dvoid*)xx, OCCIINT,
sizeof(xx[0]), x_len);
85 m_writeStmt->setDataBuffer(3, (dvoid*)yy, OCCIINT,
sizeof(yy[0]), y_len);
86 m_writeStmt->setDataBuffer(4, (dvoid*)zz, OCCIINT,
sizeof(zz[0]), z_len);
88 m_writeStmt->executeArrayUpdate(nrows);
100 }
catch (SQLException&
e) {
101 throw(std::runtime_error(
std::string(
"FEConfigLUTGroupDat::writeArrayDB(): ") + e.getMessage()));
107 this->checkConnection();
110 iconf->setConnection(m_env, m_conn);
111 int iconfID = iconf->fetchID();
113 throw(std::runtime_error(
"FEConfigLUTGroupDat::fetchData: ICONF not in DB"));
119 "SELECT d.group_id, d.lut_id, d.lut_value "
120 "FROM fe_lut_per_group_dat d "
121 "WHERE lut_conf_id = :lut_conf_id order by d.group_id, d.lut_id ");
122 m_readStmt->setInt(1, iconfID);
123 ResultSet* rset = m_readStmt->executeQuery();
126 std::pair<EcalLogicID, FEConfigLUTGroupDat>
p;
133 while (rset->next()) {
134 ig = rset->getInt(1);
135 int il = rset->getInt(2);
136 int ival = rset->getInt(3);
146 if (il == (nrows - 1)) {
151 }
catch (SQLException&
e) {
152 throw(std::runtime_error(
std::string(
"FEConfigLUTGroupDat::fetchData: ") + e.getMessage()));
158 this->checkConnection();
159 this->checkPrepare();
161 int iconfID = iconf->fetchID();
163 throw(std::runtime_error(
"FEConfigLUTGroupDat::writeArrayDB: ICONF not in DB"));
166 int nrows =
data->size() * 1024;
168 int* iconfid_vec =
new int[nrows];
169 int* xx =
new int[nrows];
170 int* yy =
new int[nrows];
171 int* zz =
new int[nrows];
173 ub2* iconf_len =
new ub2[nrows];
174 ub2* x_len =
new ub2[nrows];
175 ub2* y_len =
new ub2[nrows];
176 ub2* z_len =
new ub2[nrows];
180 typedef map<EcalLogicID, FEConfigLUTGroupDat>::const_iterator CI;
181 for (CI
p =
data->begin();
p !=
data->end(); ++
p) {
182 dataitem = &(
p->second);
185 for (
int i = 0;
i < 1024;
i++) {
186 iconfid_vec[
count] = iconfID;
194 iconf_len[
count] =
sizeof(iconfid_vec[
count]);
208 cout <<
"about to insert " << iconfid_vec[
i] <<
" " << xx[
i] <<
" " << yy[
i] <<
" " << zz[
i] << endl;
210 cout <<
"about to insert " << iconfid_vec[
i] <<
" " << xx[
i] <<
" " << yy[
i] <<
" " << zz[
i] << endl;
212 m_writeStmt->setDataBuffer(1, (dvoid*)iconfid_vec, OCCIINT,
sizeof(iconfid_vec[0]), iconf_len);
213 m_writeStmt->setDataBuffer(2, (dvoid*)xx, OCCIINT,
sizeof(xx[0]), x_len);
214 m_writeStmt->setDataBuffer(3, (dvoid*)yy, OCCIINT,
sizeof(yy[0]), y_len);
215 m_writeStmt->setDataBuffer(4, (dvoid*)zz, OCCIINT,
sizeof(zz[0]), z_len);
217 m_writeStmt->executeArrayUpdate(nrows);
219 delete[] iconfid_vec;
229 }
catch (SQLException&
e) {
230 throw(std::runtime_error(
std::string(
"FEConfigLUTGroupDat::writeArrayDB(): ") + e.getMessage()));
int getLUTGroupId() const
void setLUTGroupId(int x)
void writeArrayDB(const std::map< EcalLogicID, FEConfigLUTGroupDat > *data, FEConfigLUTInfo *iconf) noexcept(false)
void prepareWrite() noexcept(false) override
void fetchData(std::map< EcalLogicID, FEConfigLUTGroupDat > *fillMap, FEConfigLUTInfo *iconf) noexcept(false)
~FEConfigLUTGroupDat() override
void setLUTValue(int i, int x)
int getLUTValue(int i) const
void writeDB(const EcalLogicID *ecid, const FEConfigLUTGroupDat *item, FEConfigLUTInfo *iconf) noexcept(false)
static std::vector< std::string > checklist dat
char data[epos_bytes_allocation]