CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes | Friends
CaliIOV Class Reference

#include <CaliIOV.h>

Inheritance diagram for CaliIOV:
IIOV IUniqueDBObject IDBObject

Public Member Functions

 CaliIOV ()
 
int fetchID () throw (std::runtime_error)
 
CaliTag getCaliTag () const
 
int getID ()
 
Tm getSince () const
 
Tm getTill () const
 
bool operator!= (const CaliIOV &m) const
 
bool operator== (const CaliIOV &m) const
 
void setByID (int id) throw (std::runtime_error)
 
void setCaliTag (CaliTag tag)
 
void setSince (Tm since)
 
void setTill (Tm till)
 
 ~CaliIOV ()
 
- Public Member Functions inherited from IDBObject
oracle::occi::Connection * getConn () const
 
oracle::occi::Environment * getEnv () const
 
void setConnection (oracle::occi::Environment *env, oracle::occi::Connection *conn)
 
virtual ~IDBObject ()
 

Private Member Functions

void setByTm (CaliTag *tag, Tm time) throw (std::runtime_error)
 
int writeDB () throw (std::runtime_error)
 

Private Attributes

CaliTag m_caliTag
 
Tm m_since
 
Tm m_till
 

Friends

class EcalCondDBInterface
 

Additional Inherited Members

- Static Public Attributes inherited from IDBObject
static int const ECALDB_NROWS =1024
 
- Protected Member Functions inherited from IDBObject
void checkConnection () const throw (std::runtime_error)
 
- Protected Attributes inherited from IUniqueDBObject
int m_ID
 
- Protected Attributes inherited from IDBObject
oracle::occi::Connection * m_conn
 
oracle::occi::Environment * m_env
 

Detailed Description

Definition at line 13 of file CaliIOV.h.

Constructor & Destructor Documentation

CaliIOV::CaliIOV ( )

Definition at line 12 of file CaliIOV.cc.

References NULL.

13 {
14  m_conn = NULL;
15  m_ID = 0;
16  m_since = Tm();
17  m_till = Tm();
18 }
oracle::occi::Connection * m_conn
Definition: IDBObject.h:39
Tm m_since
Definition: CaliIOV.h:48
#define NULL
Definition: scimark2.h:8
Tm m_till
Definition: CaliIOV.h:49
Definition: Tm.h:14
CaliIOV::~CaliIOV ( )

Definition at line 22 of file CaliIOV.cc.

23 {
24 }

Member Function Documentation

int CaliIOV::fetchID ( )
throw (std::runtime_error
)
virtual

Implements IUniqueDBObject.

Definition at line 79 of file CaliIOV.cc.

References cuy::dh, alignCSCRings::e, DateHandler::getPlusInfTm(), and DateHandler::tmToDate().

81 {
82  // Return from memory if available
83  if (m_ID) {
84  return m_ID;
85  }
86 
87  this->checkConnection();
88 
90  int tagID = m_caliTag.fetchID();
91  if (!tagID) {
92  return 0;
93  }
94 
96 
97  if (m_till.isNull()) {
98  m_till = dh.getPlusInfTm();
99  }
100 
101  try {
102  Statement* stmt = m_conn->createStatement();
103  stmt->setSQL("SELECT iov_id FROM cali_iov "
104  "WHERE tag_id = :tag_id AND "
105  "since = :since AND "
106  "till = :till");
107  stmt->setInt(1, tagID);
108  stmt->setDate(2, dh.tmToDate(m_since));
109  stmt->setDate(3, dh.tmToDate(m_till));
110 
111  ResultSet* rset = stmt->executeQuery();
112 
113  if (rset->next()) {
114  m_ID = rset->getInt(1);
115  } else {
116  m_ID = 0;
117  }
118  m_conn->terminateStatement(stmt);
119  } catch (SQLException &e) {
120  throw(std::runtime_error("CaliIOV::fetchID: "+e.getMessage()));
121  }
122 
123  return m_ID;
124 }
oracle::occi::Environment * m_env
Definition: IDBObject.h:38
oracle::occi::Connection * m_conn
Definition: IDBObject.h:39
Tm m_since
Definition: CaliIOV.h:48
oracle::occi::SQLException SQLException
Definition: HcalDbOmds.cc:22
Tm m_till
Definition: CaliIOV.h:49
int fetchID()
Definition: CaliTag.cc:114
oracle::occi::ResultSet ResultSet
Definition: HcalDbOmds.cc:21
int isNull() const
Definition: Tm.cc:63
void setConnection(oracle::occi::Environment *env, oracle::occi::Connection *conn)
Definition: IDBObject.h:23
CaliTag m_caliTag
Definition: CaliIOV.h:50
void checkConnection() const
Definition: IDBObject.h:41
tuple dh
Definition: cuy.py:353
CaliTag CaliIOV::getCaliTag ( ) const

Definition at line 72 of file CaliIOV.cc.

73 {
74  return m_caliTag;
75 }
CaliTag m_caliTag
Definition: CaliIOV.h:50
int CaliIOV::getID ( )
inline

Definition at line 31 of file CaliIOV.h.

References IUniqueDBObject::m_ID.

31 { return m_ID;} ;
Tm CaliIOV::getSince ( ) const

Definition at line 38 of file CaliIOV.cc.

39 {
40  return m_since;
41 }
Tm m_since
Definition: CaliIOV.h:48
Tm CaliIOV::getTill ( ) const

Definition at line 55 of file CaliIOV.cc.

56 {
57  return m_till;
58 }
Tm m_till
Definition: CaliIOV.h:49
bool CaliIOV::operator!= ( const CaliIOV m) const
inline

Definition at line 43 of file CaliIOV.h.

References m.

43 { return !(*this == m); }
bool CaliIOV::operator== ( const CaliIOV m) const
inline

Definition at line 36 of file CaliIOV.h.

References m_caliTag, m_since, and m_till.

37  {
38  return ( m_caliTag == m.m_caliTag &&
39  m_since == m.m_since &&
40  m_till == m.m_till );
41  }
Tm m_since
Definition: CaliIOV.h:48
Tm m_till
Definition: CaliIOV.h:49
CaliTag m_caliTag
Definition: CaliIOV.h:50
void CaliIOV::setByID ( int  id)
throw (std::runtime_error
)
virtual

Implements IUniqueDBObject.

Definition at line 128 of file CaliIOV.cc.

References DateHandler::dateToTm(), cuy::dh, and alignCSCRings::e.

130 {
131  this->checkConnection();
132 
134 
135  try {
136  Statement* stmt = m_conn->createStatement();
137 
138  stmt->setSQL("SELECT tag_id, since, till FROM cali_iov WHERE iov_id = :1");
139  stmt->setInt(1, id);
140 
141  ResultSet* rset = stmt->executeQuery();
142  if (rset->next()) {
143  int tagID = rset->getInt(1);
144  Date since = rset->getDate(2);
145  Date till = rset->getDate(3);
146 
147  m_since = dh.dateToTm( since );
148  m_till = dh.dateToTm( till );
149 
151  m_caliTag.setByID(tagID);
152  m_ID = id;
153  } else {
154  throw(std::runtime_error("CaliTag::setByID: Given tag_id is not in the database"));
155  }
156 
157  m_conn->terminateStatement(stmt);
158  } catch (SQLException &e) {
159  throw(std::runtime_error("CaliTag::setByID: "+e.getMessage()));
160  }
161 }
oracle::occi::Environment * m_env
Definition: IDBObject.h:38
oracle::occi::Connection * m_conn
Definition: IDBObject.h:39
Tm m_since
Definition: CaliIOV.h:48
void setByID(int id)
Definition: CaliTag.cc:160
oracle::occi::SQLException SQLException
Definition: HcalDbOmds.cc:22
Tm m_till
Definition: CaliIOV.h:49
oracle::occi::ResultSet ResultSet
Definition: HcalDbOmds.cc:21
void setConnection(oracle::occi::Environment *env, oracle::occi::Connection *conn)
Definition: IDBObject.h:23
CaliTag m_caliTag
Definition: CaliIOV.h:50
void checkConnection() const
Definition: IDBObject.h:41
tuple dh
Definition: cuy.py:353
void CaliIOV::setByTm ( CaliTag tag,
Tm  time 
)
throw (std::runtime_error
)
private

Definition at line 215 of file CaliIOV.cc.

References DateHandler::dateToTm(), cuy::dh, alignCSCRings::e, GlobalPosition_Frontier_DevDB_cff::tag, and DateHandler::tmToDate().

Referenced by EcalCondDBInterface::fetchCaliIOV().

217 {
218  this->checkConnection();
219 
220  tag->setConnection(m_env, m_conn);
221  int tagID = tag->fetchID();
222 
223  if (!tagID) {
224  throw(std::runtime_error("CaliIOV::setByTm: Given CaliTag does not exist in the DB"));
225  }
226 
228 
229  Date eventDate = dh.tmToDate(eventTm);
230 
231  try {
232  Statement* stmt = m_conn->createStatement();
233 
234 
235  stmt->setSQL("SELECT iov_id, since, till FROM cali_iov "
236  "WHERE tag_id = :1 AND since <= :2 AND till > :3");
237  stmt->setInt(1, tagID);
238  stmt->setDate(2, eventDate);
239  stmt->setDate(3, eventDate);
240 
241  ResultSet* rset = stmt->executeQuery();
242  if (rset->next()) {
243  m_caliTag = *tag;
244 
245  m_ID = rset->getInt(1);
246  Date sinceDate = rset->getDate(2);
247  Date tillDate = rset->getDate(3);
248 
249  m_since = dh.dateToTm( sinceDate );
250  m_till = dh.dateToTm( tillDate );
251  } else {
252  throw(std::runtime_error("CaliIOV::setByTm: Given subrun is not in the database"));
253  }
254 
255  m_conn->terminateStatement(stmt);
256  } catch (SQLException &e) {
257  throw(std::runtime_error("CaliIOV::setByTm: "+e.getMessage()));
258  }
259 }
oracle::occi::Environment * m_env
Definition: IDBObject.h:38
oracle::occi::Connection * m_conn
Definition: IDBObject.h:39
Tm m_since
Definition: CaliIOV.h:48
oracle::occi::SQLException SQLException
Definition: HcalDbOmds.cc:22
Tm m_till
Definition: CaliIOV.h:49
int fetchID()
Definition: CaliTag.cc:114
oracle::occi::ResultSet ResultSet
Definition: HcalDbOmds.cc:21
void setConnection(oracle::occi::Environment *env, oracle::occi::Connection *conn)
Definition: IDBObject.h:23
CaliTag m_caliTag
Definition: CaliIOV.h:50
void checkConnection() const
Definition: IDBObject.h:41
tuple dh
Definition: cuy.py:353
void CaliIOV::setCaliTag ( CaliTag  tag)

Definition at line 62 of file CaliIOV.cc.

References GlobalPosition_Frontier_DevDB_cff::tag.

63 {
64  if (tag != m_caliTag) {
65  m_ID = 0;
66  m_caliTag = tag;
67  }
68 }
CaliTag m_caliTag
Definition: CaliIOV.h:50
void CaliIOV::setSince ( Tm  since)

Definition at line 28 of file CaliIOV.cc.

29 {
30  if (since != m_since) {
31  m_ID = 0;
32  m_since = since;
33  }
34 }
Tm m_since
Definition: CaliIOV.h:48
void CaliIOV::setTill ( Tm  till)

Definition at line 45 of file CaliIOV.cc.

46 {
47  if (till != m_till) {
48  m_ID = 0;
49  m_till = till;
50  }
51 }
Tm m_till
Definition: CaliIOV.h:49
int CaliIOV::writeDB ( )
throw (std::runtime_error
)
private

Definition at line 165 of file CaliIOV.cc.

References cuy::dh, alignCSCRings::e, DateHandler::getPlusInfTm(), and DateHandler::tmToDate().

167 {
168  this->checkConnection();
169 
170  // Check if this IOV has already been written
171  if (this->fetchID()) {
172  return m_ID;
173  }
174 
176  int tagID = m_caliTag.writeDB();
177 
178  // Validate the data, use infinity-till convention
180 
181  if (m_since.isNull()) {
182  throw(std::runtime_error("CaliIOV::writeDB: Must setSince before writing"));
183  }
184 
185  if (m_till.isNull()) {
186  m_till = dh.getPlusInfTm();
187  }
188 
189  try {
190  Statement* stmt = m_conn->createStatement();
191 
192  stmt->setSQL("INSERT INTO cali_iov (iov_id, tag_id, since, till) "
193  "VALUES (cali_iov_sq.NextVal, :1, :2, :3)");
194  stmt->setInt(1, tagID);
195  stmt->setDate(2, dh.tmToDate(m_since));
196  stmt->setDate(3, dh.tmToDate(m_till));
197 
198  stmt->executeUpdate();
199 
200  m_conn->terminateStatement(stmt);
201  } catch (SQLException &e) {
202  throw(std::runtime_error("CaliIOV::writeDB: "+e.getMessage()));
203  }
204 
205  // Now get the ID
206  if (!this->fetchID()) {
207  throw(std::runtime_error("CaliIOV::writeDB: Failed to write"));
208  }
209 
210  return m_ID;
211 }
oracle::occi::Environment * m_env
Definition: IDBObject.h:38
oracle::occi::Connection * m_conn
Definition: IDBObject.h:39
Tm m_since
Definition: CaliIOV.h:48
oracle::occi::SQLException SQLException
Definition: HcalDbOmds.cc:22
Tm m_till
Definition: CaliIOV.h:49
int fetchID()
Definition: CaliIOV.cc:79
int writeDB()
Definition: CaliTag.cc:194
int isNull() const
Definition: Tm.cc:63
void setConnection(oracle::occi::Environment *env, oracle::occi::Connection *conn)
Definition: IDBObject.h:23
CaliTag m_caliTag
Definition: CaliIOV.h:50
void checkConnection() const
Definition: IDBObject.h:41
tuple dh
Definition: cuy.py:353

Friends And Related Function Documentation

friend class EcalCondDBInterface
friend

Definition at line 15 of file CaliIOV.h.

Member Data Documentation

CaliTag CaliIOV::m_caliTag
private

Definition at line 50 of file CaliIOV.h.

Referenced by operator==().

Tm CaliIOV::m_since
private

Definition at line 48 of file CaliIOV.h.

Referenced by operator==().

Tm CaliIOV::m_till
private

Definition at line 49 of file CaliIOV.h.

Referenced by operator==().