CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ODTTCciCycle.cc
Go to the documentation of this file.
1 #include <stdexcept>
3 
5 
6 using namespace std;
7 using namespace oracle::occi;
8 
10 {
11  m_env = NULL;
12  m_conn = NULL;
13  m_writeStmt = NULL;
14  m_readStmt = NULL;
15  //
16  m_ID = 0;
17  m_ttcci_config_id = 0;
18 }
19 
20 
22 {
23 }
24 
25 
27  throw(std::runtime_error)
28 {
29  this->checkConnection();
30 
31  try {
32  m_writeStmt = m_conn->createStatement();
33  m_writeStmt->setSQL("INSERT INTO ECAL_TTCci_Cycle (cycle_id, ttcci_configuration_id ) "
34  "VALUES (:1, :2 )");
35  } catch (SQLException &e) {
36  throw(std::runtime_error("ODTTCciCycle::prepareWrite(): "+e.getMessage()));
37  }
38 }
39 
40 
41 void ODTTCciCycle::writeDB() throw(std::runtime_error)
42 {
43  this->checkConnection();
44  this->checkPrepare();
45 
46  try {
47 
48  m_writeStmt->setInt(1, this->getId());
49  m_writeStmt->setInt(2, this->getTTCciConfigurationID());
50 
51  m_writeStmt->executeUpdate();
52 
53 
54  } catch (SQLException &e) {
55  throw(std::runtime_error("ODTTCciCycle::writeDB: "+e.getMessage()));
56  }
57 
58  // Now get the ID
59  if (!this->fetchID()) {
60  throw(std::runtime_error("ODTTCciCycle::writeDB: Failed to write"));
61  }
62 
63 
64 }
65 
67  m_ttcci_config_id=0;
68 }
69 
70 
72  throw(std::runtime_error)
73 {
74  // Return from memory if available
75  if (m_ID) {
76  return m_ID;
77  }
78 
79  this->checkConnection();
80 
81  try {
82  Statement* stmt = m_conn->createStatement();
83  stmt->setSQL("SELECT cycle_id, ttcci_configuration_id FROM ecal_ttcci_cycle "
84  "WHERE cycle_id = :1 ");
85  stmt->setInt(1, m_ID);
86  ResultSet* rset = stmt->executeQuery();
87 
88  if (rset->next()) {
89  m_ID = rset->getInt(1);
90  m_ttcci_config_id = rset->getInt(2);
91  } else {
92  m_ID = 0;
93  }
94  m_conn->terminateStatement(stmt);
95  } catch (SQLException &e) {
96  throw(std::runtime_error("ODTTCciCycle::fetchID: "+e.getMessage()));
97  }
98 
99  return m_ID;
100 }
101 
102 
103 
105  throw(std::runtime_error)
106 {
107  this->checkConnection();
108 
109 
110  try {
111  Statement* stmt = m_conn->createStatement();
112  stmt->setSQL("SELECT cycle_id, ttcci_configuration_id FROM ecal_ttcci_cycle "
113  "WHERE cycle_id = :1 ");
114  stmt->setInt(1, id);
115  ResultSet* rset = stmt->executeQuery();
116 
117  if (rset->next()) {
118  m_ID = rset->getInt(1);
119  m_ttcci_config_id = rset->getInt(2);
120  } else {
121  m_ID = 0;
122  }
123  m_conn->terminateStatement(stmt);
124  } catch (SQLException &e) {
125  throw(std::runtime_error("ODTTCciCycle::fetchID: "+e.getMessage()));
126  }
127 }
128 
129 
130 
132  throw(std::runtime_error)
133 {
134  this->checkConnection();
135  result->clear();
136 
137  if(result->getId()==0){
138  throw(std::runtime_error("ODTTCciConfig::fetchData(): no Id defined for this ODTTCciConfig "));
139  }
140 
141  try {
142 
143  m_readStmt->setSQL("SELECT ttcci_configuration_id FROM ecal_ttcci_cycle "
144  "WHERE cycle_id = :1 ");
145 
146  m_readStmt->setInt(1, result->getId());
147  ResultSet* rset = m_readStmt->executeQuery();
148 
149  rset->next();
150 
151  result->setTTCciConfigurationID( rset->getInt(1) );
152 
153  } catch (SQLException &e) {
154  throw(std::runtime_error("ODTTCciCycle::fetchData(): "+e.getMessage()));
155  }
156 }
157 
158 
160  throw(std::runtime_error)
161 {
162  try {
163 
164  prepareWrite();
165  writeDB();
166  m_conn->commit();
167  terminateWriteStatement();
168  } catch (std::runtime_error &e) {
169  m_conn->rollback();
170  throw(e);
171  } catch (...) {
172  m_conn->rollback();
173  throw(std::runtime_error("EcalCondDBInterface::insertDataSet: Unknown exception caught"));
174  }
175 }
static unsigned int getId(void)
void fetchData(ODTTCciCycle *result)
#define NULL
Definition: scimark2.h:8
tuple result
Definition: query.py:137
void prepareWrite()
Definition: ODTTCciCycle.cc:26
void setByID(int id)
oracle::occi::Statement Statement
Definition: IODConfig.h:23
oracle::occi::ResultSet ResultSet
Definition: HcalDbOmds.cc:26
oracle::occi::SQLException SQLException
Definition: IODConfig.h:22
void insertConfig()
void writeDB()
Definition: ODTTCciCycle.cc:41