CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ODLTCCycle.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_ltc_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_LTC_Cycle (cycle_id, ltc_configuration_id ) "
34  "VALUES (:1, :2 )");
35  } catch (SQLException &e) {
36  throw(std::runtime_error("ODLTCCycle::prepareWrite(): "+e.getMessage()));
37  }
38 }
39 
40 
41 void ODLTCCycle::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->getLTCConfigurationID());
50 
51  m_writeStmt->executeUpdate();
52 
53 
54  } catch (SQLException &e) {
55  throw(std::runtime_error("ODLTCCycle::writeDB: "+e.getMessage()));
56  }
57 
58  // Now get the ID
59  if (!this->fetchID()) {
60  throw(std::runtime_error("ODLTCCycle::writeDB: Failed to write"));
61  }
62 
63 
64 }
65 
67  m_ltc_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, ltc_configuration_id FROM ecal_ltc_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_ltc_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("ODLTCCycle::fetchID: "+e.getMessage()));
97  }
98 
99  return m_ID;
100 }
101 
102 
103 
104 void ODLTCCycle::setByID(int id)
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, ltc_configuration_id FROM ecal_ltc_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_ltc_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("ODLTCCycle::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("ODLTCConfig::fetchData(): no Id defined for this ODLTCConfig "));
139  }
140 
141  try {
142 
143  m_readStmt->setSQL("SELECT ltc_configuration_id FROM ecal_ltc_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->setLTCConfigurationID( rset->getInt(1) );
152 
153  } catch (SQLException &e) {
154  throw(std::runtime_error("ODLTCCycle::fetchData(): "+e.getMessage()));
155  }
156 }
157 
159  throw(std::runtime_error)
160 {
161  try {
162 
163  prepareWrite();
164  writeDB();
165  m_conn->commit();
166  terminateWriteStatement();
167  } catch (std::runtime_error &e) {
168  m_conn->rollback();
169  throw(e);
170  } catch (...) {
171  m_conn->rollback();
172  throw(std::runtime_error("EcalCondDBInterface::insertDataSet: Unknown exception caught"));
173  }
174 }
175 
static unsigned int getId(void)
int fetchID()
Definition: ODLTCCycle.cc:71
#define NULL
Definition: scimark2.h:8
void prepareWrite()
Definition: ODLTCCycle.cc:26
void writeDB()
Definition: ODLTCCycle.cc:41
tuple result
Definition: query.py:137
void setByID(int id)
Definition: ODLTCCycle.cc:104
oracle::occi::Statement Statement
Definition: IODConfig.h:23
void insertConfig()
Definition: ODLTCCycle.cc:158
void clear()
Definition: ODLTCCycle.cc:66
oracle::occi::ResultSet ResultSet
Definition: HcalDbOmds.cc:26
oracle::occi::SQLException SQLException
Definition: IODConfig.h:22
void fetchData(ODLTCCycle *result)
Definition: ODLTCCycle.cc:131