CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes | Friends
CaliTag Class Reference

#include <CaliTag.h>

Inheritance diagram for CaliTag:
ITag IUniqueDBObject IDBObject

Public Member Functions

 CaliTag ()
 
int fetchID () noexcept(false) override
 
std::string getDataType () const
 
std::string getGeneralTag () const
 
LocationDef getLocationDef () const
 
std::string getMethod () const
 
std::string getVersion () const
 
bool operator!= (const CaliTag &t) const
 
bool operator== (const CaliTag &t) const
 
void setByID (int id) noexcept(false) override
 
void setDataType (std::string dataType)
 
void setGeneralTag (std::string tag)
 
void setLocationDef (const LocationDef &locDef)
 
void setMethod (std::string method)
 
void setVersion (std::string version)
 
 ~CaliTag () override
 
- 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 fetchAllTags (std::vector< CaliTag > *fillVec) noexcept(false)
 
void fetchParentIDs (int *locId) noexcept(false)
 
int writeDB () noexcept(false)
 

Private Attributes

std::string m_dataType
 
std::string m_genTag
 
LocationDef m_locDef
 
std::string m_method
 
std::string m_version
 

Friends

class CaliIOV
 
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 noexcept(false)
 
- 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

Tag for Run information

Definition at line 13 of file CaliTag.h.

Constructor & Destructor Documentation

CaliTag::CaliTag ( )

Definition at line 9 of file CaliTag.cc.

10 {
11  m_env = nullptr;
12  m_conn = nullptr;
13  m_ID = 0;
14  m_genTag = "default";
16  m_method = "default";
17  m_version = "default";
18  m_dataType = "default";
19 }
std::string m_version
Definition: CaliTag.h:56
oracle::occi::Environment * m_env
Definition: IDBObject.h:38
oracle::occi::Connection * m_conn
Definition: IDBObject.h:39
std::string m_method
Definition: CaliTag.h:55
LocationDef m_locDef
Definition: CaliTag.h:54
std::string m_dataType
Definition: CaliTag.h:57
std::string m_genTag
Definition: CaliTag.h:53
CaliTag::~CaliTag ( )
override

Definition at line 23 of file CaliTag.cc.

24 {
25 }

Member Function Documentation

void CaliTag::fetchAllTags ( std::vector< CaliTag > *  fillVec)
privatenoexcept

Definition at line 238 of file CaliTag.cc.

References MillePedeFileConverter_cfg::e, setByID(), and IDBObject::setConnection().

240 {
241  this->checkConnection();
242  try {
243  Statement* stmt = m_conn->createStatement();
244  stmt->setSQL("SELECT tag_id FROM cali_tag ORDER BY tag_id");
245  ResultSet* rset = stmt->executeQuery();
246 
247  CaliTag dcutag;
248  dcutag.setConnection(m_env, m_conn);
249  while(rset->next()) {
250  dcutag.setByID( rset->getInt(1) );
251  fillVec->push_back( dcutag );
252  }
253  m_conn->terminateStatement(stmt);
254  } catch (SQLException &e) {
255  throw(std::runtime_error("CaliTag::fetchAllTags: "+e.getMessage()));
256  }
257 }
oracle::occi::Environment * m_env
Definition: IDBObject.h:38
oracle::occi::Connection * m_conn
Definition: IDBObject.h:39
void setByID(int id) noexcept(false) override
Definition: CaliTag.cc:160
void checkConnection() const noexcept(false)
Definition: IDBObject.h:41
void setConnection(oracle::occi::Environment *env, oracle::occi::Connection *conn)
Definition: IDBObject.h:23
int CaliTag::fetchID ( )
overridevirtualnoexcept

Implements IUniqueDBObject.

Definition at line 114 of file CaliTag.cc.

References MillePedeFileConverter_cfg::e.

116 {
117  // Return tag from memory if available
118  if (m_ID) {
119  return m_ID;
120  }
121 
122  this->checkConnection();
123 
124  // fetch the parent IDs
125  int locID;
126  this->fetchParentIDs(&locID);
127 
128  // fetch this ID
129  try {
130  Statement* stmt = m_conn->createStatement();
131  stmt->setSQL("SELECT tag_id FROM cali_tag WHERE "
132  "gen_tag = :1 AND "
133  "location_id = :2 AND "
134  "method = :3 AND "
135  "version = :4 AND "
136  "data_type = :5");
137  stmt->setString(1, m_genTag);
138  stmt->setInt(2, locID);
139  stmt->setString(3, m_method);
140  stmt->setString(4, m_version);
141  stmt->setString(5, m_dataType);
142 
143  ResultSet* rset = stmt->executeQuery();
144 
145  if (rset->next()) {
146  m_ID = rset->getInt(1);
147  } else {
148  m_ID = 0;
149  }
150  m_conn->terminateStatement(stmt);
151  } catch (SQLException &e) {
152  throw(std::runtime_error("CaliTag::fetchID: "+e.getMessage()));
153  }
154 
155  return m_ID;
156 }
std::string m_version
Definition: CaliTag.h:56
oracle::occi::Connection * m_conn
Definition: IDBObject.h:39
std::string m_method
Definition: CaliTag.h:55
void fetchParentIDs(int *locId) noexcept(false)
Definition: CaliTag.cc:261
void checkConnection() const noexcept(false)
Definition: IDBObject.h:41
std::string m_dataType
Definition: CaliTag.h:57
std::string m_genTag
Definition: CaliTag.h:53
void CaliTag::fetchParentIDs ( int *  locId)
privatenoexcept

Definition at line 261 of file CaliTag.cc.

263 {
264  // get the location
266  *locID = m_locDef.fetchID();
267 
268  if (! *locID) {
269  throw(std::runtime_error("CaliTag::writeDB: Given location does not exist in DB"));
270  }
271 }
oracle::occi::Environment * m_env
Definition: IDBObject.h:38
oracle::occi::Connection * m_conn
Definition: IDBObject.h:39
LocationDef m_locDef
Definition: CaliTag.h:54
int fetchID() noexcept(false) override
Definition: LocationDef.cc:43
void setConnection(oracle::occi::Environment *env, oracle::occi::Connection *conn)
Definition: IDBObject.h:23
string CaliTag::getDataType ( ) const

Definition at line 97 of file CaliTag.cc.

98 {
99  return m_dataType;
100 }
std::string m_dataType
Definition: CaliTag.h:57
string CaliTag::getGeneralTag ( ) const

Definition at line 29 of file CaliTag.cc.

30 {
31  return m_genTag;
32 }
std::string m_genTag
Definition: CaliTag.h:53
LocationDef CaliTag::getLocationDef ( ) const

Definition at line 46 of file CaliTag.cc.

47 {
48  return m_locDef;
49 }
LocationDef m_locDef
Definition: CaliTag.h:54
string CaliTag::getMethod ( ) const

Definition at line 63 of file CaliTag.cc.

64 {
65  return m_method;
66 }
std::string m_method
Definition: CaliTag.h:55
string CaliTag::getVersion ( ) const

Definition at line 80 of file CaliTag.cc.

81 {
82  return m_version;
83 }
std::string m_version
Definition: CaliTag.h:56
bool CaliTag::operator!= ( const CaliTag t) const
inline

Definition at line 49 of file CaliTag.h.

References protons_cff::t.

49 { return !(*this == t); }
bool CaliTag::operator== ( const CaliTag t) const
inline

Definition at line 43 of file CaliTag.h.

References m_genTag, and m_locDef.

44  {
45  return (m_genTag == t.m_genTag &&
46  m_locDef == t.m_locDef);
47  }
LocationDef m_locDef
Definition: CaliTag.h:54
std::string m_genTag
Definition: CaliTag.h:53
void CaliTag::setByID ( int  id)
overridevirtualnoexcept

Implements IUniqueDBObject.

Definition at line 160 of file CaliTag.cc.

References MillePedeFileConverter_cfg::e, and triggerObjects_cff::id.

Referenced by fetchAllTags().

162 {
163  this->checkConnection();
164 
165  try {
166  Statement* stmt = m_conn->createStatement();
167 
168  stmt->setSQL("SELECT gen_tag, location_id, method, version, data_type "
169  "FROM cali_tag WHERE tag_id = :1");
170  stmt->setInt(1, id);
171 
172  ResultSet* rset = stmt->executeQuery();
173  if (rset->next()) {
174  m_genTag = rset->getString(1);
175  int locID = rset->getInt(2);
177  m_locDef.setByID(locID);
178  m_method = rset->getString(3);
179  m_version = rset->getString(4);
180  m_dataType = rset->getString(5);
181 
182  m_ID = id;
183  } else {
184  throw(std::runtime_error("CaliTag::setByID: Given tag_id is not in the database"));
185  }
186 
187  m_conn->terminateStatement(stmt);
188  } catch (SQLException &e) {
189  throw(std::runtime_error("CaliTag::setByID: "+e.getMessage()));
190  }
191 }
std::string m_version
Definition: CaliTag.h:56
oracle::occi::Environment * m_env
Definition: IDBObject.h:38
oracle::occi::Connection * m_conn
Definition: IDBObject.h:39
std::string m_method
Definition: CaliTag.h:55
void checkConnection() const noexcept(false)
Definition: IDBObject.h:41
void setByID(int id) noexcept(false) override
Definition: LocationDef.cc:76
LocationDef m_locDef
Definition: CaliTag.h:54
std::string m_dataType
Definition: CaliTag.h:57
std::string m_genTag
Definition: CaliTag.h:53
void setConnection(oracle::occi::Environment *env, oracle::occi::Connection *conn)
Definition: IDBObject.h:23
void CaliTag::setDataType ( std::string  dataType)

Definition at line 104 of file CaliTag.cc.

References MergeFilesAndCalculateEfficiencies_cfg::dataType.

105 {
106  if (dataType != m_dataType) {
107  m_ID = 0;
109  }
110 }
std::string m_dataType
Definition: CaliTag.h:57
void CaliTag::setGeneralTag ( std::string  tag)

Definition at line 36 of file CaliTag.cc.

37 {
38  if (genTag != m_genTag) {
39  m_ID = 0;
40  m_genTag = genTag;
41  }
42 }
std::string m_genTag
Definition: CaliTag.h:53
void CaliTag::setLocationDef ( const LocationDef locDef)

Definition at line 53 of file CaliTag.cc.

54 {
55  if (locDef != m_locDef) {
56  m_ID = 0;
57  m_locDef = locDef;
58  }
59 }
LocationDef m_locDef
Definition: CaliTag.h:54
void CaliTag::setMethod ( std::string  method)

Definition at line 70 of file CaliTag.cc.

References AlcaSiPixelAliHarvester0T_cff::method.

71 {
72  if (method != m_method) {
73  m_ID = 0;
74  m_method = method;
75  }
76 }
std::string m_method
Definition: CaliTag.h:55
void CaliTag::setVersion ( std::string  version)

Definition at line 87 of file CaliTag.cc.

References jets_cff::version.

88 {
89  if (version != m_version) {
90  m_ID = 0;
92  }
93 }
std::string m_version
Definition: CaliTag.h:56
int CaliTag::writeDB ( )
privatenoexcept

Definition at line 194 of file CaliTag.cc.

References MillePedeFileConverter_cfg::e.

196 {
197  // see if this data is already in the DB
198  if (this->fetchID()) {
199  return m_ID;
200  }
201 
202  // check the connectioin
203  this->checkConnection();
204 
205  // fetch the parent IDs
206  int locID;
207  this->fetchParentIDs(&locID);
208 
209  // write new tag to the DB
210  try {
211  Statement* stmt = m_conn->createStatement();
212 
213  stmt->setSQL("INSERT INTO cali_tag (tag_id, gen_tag, location_id, method, version, data_type) "
214  "VALUES (cali_tag_sq.NextVal, :1, :2, :3, :4, :5)");
215  stmt->setString(1, m_genTag);
216  stmt->setInt(2, locID);
217  stmt->setString(3, m_method);
218  stmt->setString(4, m_version);
219  stmt->setString(5, m_dataType);
220 
221  stmt->executeUpdate();
222 
223  m_conn->terminateStatement(stmt);
224  } catch (SQLException &e) {
225  throw(std::runtime_error("CaliTag::writeDB: "+e.getMessage()));
226  }
227 
228  // now get the tag_id
229  if (!this->fetchID()) {
230  throw(std::runtime_error("CaliTag::writeDB: Failed to write"));
231  }
232 
233  return m_ID;
234 }
std::string m_version
Definition: CaliTag.h:56
oracle::occi::Connection * m_conn
Definition: IDBObject.h:39
std::string m_method
Definition: CaliTag.h:55
void fetchParentIDs(int *locId) noexcept(false)
Definition: CaliTag.cc:261
int fetchID() noexcept(false) override
Definition: CaliTag.cc:114
void checkConnection() const noexcept(false)
Definition: IDBObject.h:41
std::string m_dataType
Definition: CaliTag.h:57
std::string m_genTag
Definition: CaliTag.h:53

Friends And Related Function Documentation

friend class CaliIOV
friend

Definition at line 15 of file CaliTag.h.

friend class EcalCondDBInterface
friend

Definition at line 16 of file CaliTag.h.

Member Data Documentation

std::string CaliTag::m_dataType
private

Definition at line 57 of file CaliTag.h.

std::string CaliTag::m_genTag
private

Definition at line 53 of file CaliTag.h.

Referenced by operator==().

LocationDef CaliTag::m_locDef
private

Definition at line 54 of file CaliTag.h.

Referenced by operator==().

std::string CaliTag::m_method
private

Definition at line 55 of file CaliTag.h.

std::string CaliTag::m_version
private

Definition at line 56 of file CaliTag.h.